Commit aba32d0f authored by 鲍德's avatar 鲍德

巡查文档导出

parent 9c86ee2f
...@@ -47,6 +47,12 @@ ...@@ -47,6 +47,12 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- io常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.censoft.censoftrongtong.controller; package com.censoft.censoftrongtong.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.censoft.censoftrongtong.domain.LedgerBuilding; import com.censoft.censoftrongtong.domain.LedgerBuilding;
import com.censoft.censoftrongtong.domain.RiskPlan; import com.censoft.censoftrongtong.domain.RiskPlan;
...@@ -7,8 +8,16 @@ import com.censoft.censoftrongtong.domain.dto.LedgerFloorDto; ...@@ -7,8 +8,16 @@ import com.censoft.censoftrongtong.domain.dto.LedgerFloorDto;
import com.censoft.censoftrongtong.domain.dto.RiskInherentListExportDto; import com.censoft.censoftrongtong.domain.dto.RiskInherentListExportDto;
import com.censoft.censoftrongtong.domain.dto.RiskNotificationExportWordDto; import com.censoft.censoftrongtong.domain.dto.RiskNotificationExportWordDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto;
import com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO;
import com.censoft.censoftrongtong.domain.vo.RiskTypeExportVO;
import com.censoft.censoftrongtong.enums.RiskPlanStatusType; import com.censoft.censoftrongtong.enums.RiskPlanStatusType;
import com.censoft.censoftrongtong.service.*; import com.censoft.censoftrongtong.service.*;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.ChartMultiSeriesRenderData;
import com.deepoove.poi.data.Charts;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
...@@ -20,13 +29,19 @@ import com.ruoyi.common.utils.WordUtil; ...@@ -20,13 +29,19 @@ import com.ruoyi.common.utils.WordUtil;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -243,4 +258,112 @@ public class RiskPlanController extends BaseController ...@@ -243,4 +258,112 @@ public class RiskPlanController extends BaseController
public R<List<LedgerFloorDto>> getFloorListByBuildingId(@PathVariable("buildingId") Long buildingId) { public R<List<LedgerFloorDto>> getFloorListByBuildingId(@PathVariable("buildingId") Long buildingId) {
return R.ok(ledgerFloorService.getFloorListByBuildingId(buildingId)); return R.ok(ledgerFloorService.getFloorListByBuildingId(buildingId));
} }
@Log(title = "现状风险巡查用户请假", businessType = BusinessType.INSERT)
@PostMapping("/advise")
public AjaxResult advise(@RequestBody RiskPlan reqVO) {
RiskPlan riskPlan = riskPlanService.selectRiskPlanById(reqVO.getId());
riskPlan.setRemark(reqVO.getValue());
riskPlanService.updateRiskPlan(riskPlan);
return AjaxResult.success();
}
@GetMapping("/export/{id}")
public void export(@PathVariable("id") Long id,HttpServletResponse response) {
//模板地址,存放在resources目录下
String filePath = "templates/word/风险评估报告模板.docx";
//使用poi-tl进行模板处理
ConfigureBuilder builder = Configure.builder();
builder.useSpringEL(true);
//执行循环策略
LoopRowTableRenderPolicy strategy = new LoopRowTableRenderPolicy();
//绑定集合对象
//builder.bind("riskTypeList", strategy);
builder.bind("table", strategy);
//获取模板文件流
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
assert inputStream != null;
//组装数据
RiskPlanExportVO data = riskPlanService.riskPlanExport(id);
Map<String,Object> map = BeanUtil.beanToMap(data);
//第一个图标: 风险点分级统计数量图
ChartMultiSeriesRenderData chart = Charts
.ofMultiSeries("风险点分级统计数量图", new String[] { "重大风险", "较大风险", "一般风险", "低风险" })
.addSeries("riskType", new Integer[] { Integer.parseInt(data.getZdCount()), Integer.parseInt(data.getJdCount()),
Integer.parseInt(data.getYbCount()),Integer.parseInt(data.getDCount())})
.create();
map.put("riskType",chart);
//第二个图表:不同事故类型对应的风险点数量统计图
String[] riskPointName = new String[]{};
Integer[] riskPointNum = new Integer[]{};
if(!CollectionUtils.isEmpty(data.getRiskTypeList())){
int size = data.getRiskTypeList().size();
riskPointName = new String[size];
riskPointNum = new Integer[size];
List<RiskTypeExportVO> riskTypeList = data.getRiskTypeList().stream()
.sorted(Comparator.comparing(RiskTypeExportVO::getRiskTypeNum).reversed())
.collect(Collectors.toList());
//占多数的风险点数量
int maxRiskPointNum = 0;
//风险点类型总数
int totalRiskPointNum = 0;
//占多数风险点名称
String maxRiskPointName = "";
//占对数比例
String maxRiskRate = "";
for (int i = 0; i < size; i++) {
RiskTypeExportVO riskType = riskTypeList.get(i);
riskPointNum[i] = riskType.getRiskTypeNum();
riskPointName[i] = riskType.getRiskTypeName();
totalRiskPointNum += riskType.getRiskTypeNum();
}
if(size >3){
maxRiskPointNum = riskTypeList.get(0).getRiskTypeNum() + riskTypeList.get(1).getRiskTypeNum()
+riskTypeList.get(2).getRiskTypeNum();
maxRiskPointName = riskTypeList.get(0).getRiskTypeName() + ","+ riskTypeList.get(1).getRiskTypeName()+","
+riskTypeList.get(2).getRiskTypeName();
}else{
maxRiskPointNum = riskTypeList.get(0).getRiskTypeNum();
maxRiskPointName = riskTypeList.get(0).getRiskTypeName();
}
maxRiskRate = new BigDecimal(maxRiskPointNum).divide(new BigDecimal(totalRiskPointNum))
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toString();
map.put("maxRiskRate",maxRiskRate+"%");
map.put("totalRiskPointNum",totalRiskPointNum);
map.put("maxRiskPointName",maxRiskPointName);
};
ChartMultiSeriesRenderData chart2 = Charts
.ofMultiSeries("不同事故类型对应的风险点数量统计图",riskPointName)
.addSeries("riskPoint", riskPointNum)
.create();
map.put("riskPoint",chart2);
XWPFTemplate render = XWPFTemplate.compile(inputStream, builder.build()).render(map);
// 设置强制下载不打开org.apache.poi.xwpf.usermodel.XWPFDocument
response.setContentType("application/force-download");
response.addHeader("Access-Control-Expose-Headers", " Content-Disposition");
//导出为word
response.addHeader("Content-Disposition", "attachment; fileName=xsss.docx");
try {
render.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
//导出为pdf
// response.addHeader("Content-Disposition", "attachment; fileName=" + new String(("导出模板.pdf").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
// BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
// //设置临时文件的地址
// String tempPath = UUID.randomUUID() + ".docx";
// //根据模板生成临时文件
// render.writeToFile(tempPath);
// //将docx流转换为pdf流
// FileInputStream fileInputStream = new FileInputStream(tempPath);
// WordConvertPdf.getPdfStreamByWordStream(fileInputStream, outputStream);
// outputStream.flush();
// outputStream.close();
// fileInputStream.close();
// //删除临时文件
// File tempFile = new File(tempPath);
// Files.delete(tempFile.toPath());
// log.debug("删除临时word文件:{}", tempPath);
}
} }
...@@ -147,24 +147,4 @@ public class LawList extends BaseEntityClean ...@@ -147,24 +147,4 @@ public class LawList extends BaseEntityClean
{ {
return lawFiles; return lawFiles;
} }
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("type", getType())
.append("sketch", getSketch())
.append("range", getRangeInfo())
.append("normativeReferences", getNormativeReferences())
.append("issueDate", getIssueDate())
.append("implementationDate", getImplementationDate())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("lawFiles", getLawFiles())
.toString();
}
} }
...@@ -121,7 +121,7 @@ public class RiskPlan extends BaseEntityClean ...@@ -121,7 +121,7 @@ public class RiskPlan extends BaseEntityClean
@TableField(exist = false) @TableField(exist = false)
private String leaderUserName; private String leaderUserName;
/** 值 */
@TableField(exist = false)
private String value;
} }
package com.censoft.censoftrongtong.domain.vo;
import lombok.Data;
import java.util.List;
@Data
public class RiskPlanExportVO {
private String projectName;
private String createDeptName;
private String createTime;
private String createUserName;
private String address;
private String buildCount;
private String buildArea;
private String buildName;
private String floorCount;
private String inherentCount;
private String inherentType;
private String business;
private String status;
private String inherentTypeCount;
private String zdCount;
private String jdCount;
private String ybCount;
private String dCount;
private String zjdInherentType;
private String zdRisk;
private String jdRisk;
private String riskColor;
private String riskLevel;
private String zd;
private String zdNum;
private String jd;
private String jdNum;
private String yb;
private String ybNum;
private String d;
private String dNum;
private String advise;
private List<RiskTypeExportVO> riskTypeList;
}
package com.censoft.censoftrongtong.domain.vo;
import lombok.Data;
@Data
public class RiskTypeExportVO {
private String riskTypeName;
private int riskTypeNum;
}
...@@ -2,6 +2,7 @@ package com.censoft.censoftrongtong.mapper; ...@@ -2,6 +2,7 @@ package com.censoft.censoftrongtong.mapper;
import com.censoft.censoftrongtong.domain.RiskPlan; import com.censoft.censoftrongtong.domain.RiskPlan;
import com.censoft.censoftrongtong.domain.dto.*; import com.censoft.censoftrongtong.domain.dto.*;
import com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO;
import com.github.yulichang.base.MPJBaseMapper; import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -79,4 +80,8 @@ public interface RiskPlanMapper extends MPJBaseMapper<RiskPlan> ...@@ -79,4 +80,8 @@ public interface RiskPlanMapper extends MPJBaseMapper<RiskPlan>
,@Param("status") String status,@Param("result") String result); ,@Param("status") String status,@Param("result") String result);
List<RiskPlanAppListDto> getRiskPlanAppListDtoListByCreateUserDeptId(@Param("deptId") Long deptId,@Param("name") String name); List<RiskPlanAppListDto> getRiskPlanAppListDtoListByCreateUserDeptId(@Param("deptId") Long deptId,@Param("name") String name);
RiskPlanExportVO riskPlanExport(RiskPlan riskPlan);
List<String> riskPlanRoomName(@Param("planId") Long planId,@Param("level") String level);
} }
...@@ -6,6 +6,7 @@ import com.censoft.censoftrongtong.domain.dto.RiskPlanAppApproveDto; ...@@ -6,6 +6,7 @@ import com.censoft.censoftrongtong.domain.dto.RiskPlanAppApproveDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppDetailsDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppDetailsDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppListDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppListDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto;
import com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO;
import com.censoft.censoftrongtong.enums.RiskPlanStatusType; import com.censoft.censoftrongtong.enums.RiskPlanStatusType;
import com.github.yulichang.base.MPJBaseService; import com.github.yulichang.base.MPJBaseService;
...@@ -85,4 +86,6 @@ public interface IRiskPlanService extends MPJBaseService<RiskPlan> ...@@ -85,4 +86,6 @@ public interface IRiskPlanService extends MPJBaseService<RiskPlan>
List<RiskPlanAppListDto> getRiskPlanAppListDtoListByCreateUserDeptId(Long deptId,String name); List<RiskPlanAppListDto> getRiskPlanAppListDtoListByCreateUserDeptId(Long deptId,String name);
int updateRiskPlanById(RiskPlan riskPlan); int updateRiskPlanById(RiskPlan riskPlan);
RiskPlanExportVO riskPlanExport(Long id);
} }
...@@ -5,20 +5,22 @@ import com.censoft.censoftrongtong.domain.dto.RiskPlanAppApproveDto; ...@@ -5,20 +5,22 @@ import com.censoft.censoftrongtong.domain.dto.RiskPlanAppApproveDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppDetailsDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppDetailsDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppListDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppListDto;
import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto; import com.censoft.censoftrongtong.domain.dto.RiskPlanAppTaskDetailsDto;
import com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO;
import com.censoft.censoftrongtong.domain.vo.RiskTypeExportVO;
import com.censoft.censoftrongtong.enums.RiskPlanStatusType; import com.censoft.censoftrongtong.enums.RiskPlanStatusType;
import com.censoft.censoftrongtong.mapper.RiskPlanMapper; import com.censoft.censoftrongtong.mapper.RiskPlanMapper;
import com.censoft.censoftrongtong.service.*; import com.censoft.censoftrongtong.service.*;
import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.base.MPJBaseServiceImpl;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.SysDeptMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
/** /**
* 风险计划Service业务层处理 * 风险计划Service业务层处理
* *
...@@ -27,7 +29,7 @@ import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; ...@@ -27,7 +29,7 @@ import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
*/ */
@Service @Service
public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, RiskPlan> implements IRiskPlanService { public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, RiskPlan> implements IRiskPlanService {
@Autowired @Resource
private RiskPlanMapper riskPlanMapper; private RiskPlanMapper riskPlanMapper;
@Resource @Resource
...@@ -44,6 +46,8 @@ public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, Risk ...@@ -44,6 +46,8 @@ public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, Risk
@Resource @Resource
private ILedgerProjectService ledgerProjectService; private ILedgerProjectService ledgerProjectService;
@Resource
private SysDeptMapper sysDeptMapper;
/** /**
* 查询风险计划 * 查询风险计划
...@@ -395,4 +399,56 @@ public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, Risk ...@@ -395,4 +399,56 @@ public class RiskPlanServiceImpl extends MPJBaseServiceImpl<RiskPlanMapper, Risk
String formattedNumber = String.format("%03d", randomNumber); // 格式化为三位数,不足三位前面补0 String formattedNumber = String.format("%03d", randomNumber); // 格式化为三位数,不足三位前面补0
return DateUtils.dateTimeNow() + formattedNumber; return DateUtils.dateTimeNow() + formattedNumber;
} }
@Override
public RiskPlanExportVO riskPlanExport(Long id) {
//查询计划详情
RiskPlan riskPlan = selectRiskPlanById(id);
//初始化响应对象
RiskPlanExportVO vo = riskPlanMapper.riskPlanExport(riskPlan);
vo.setAdvise(riskPlan.getRemark());
//风险类型
if(!StringUtils.isEmpty(vo.getZjdInherentType())){
//重大 较大风险类型
Set<String> zjdInherentTypeSet = new HashSet<>(Arrays.asList(vo.getZjdInherentType().split(",")));
vo.setZjdInherentType(zjdInherentTypeSet.toString());
//所有风险的数量
List<RiskTypeExportVO> riskTypeList = new ArrayList<>();
for(String inherentType : vo.getInherentType().split(",")){
AtomicBoolean falg = new AtomicBoolean(false);
riskTypeList.forEach(riskType ->{
if(inherentType.equals(riskType.getRiskTypeName())){
riskType.setRiskTypeNum(riskType.getRiskTypeNum()+1);
falg.set(true);
}
});
if(!falg.get()){
RiskTypeExportVO riskType = new RiskTypeExportVO();
riskType.setRiskTypeName(inherentType);
riskType.setRiskTypeNum(1);
riskTypeList.add(riskType);
}
}
//风险类型
Set<String> inherentTypeSet = new HashSet<>(Arrays.asList(vo.getInherentType().split(",")));
vo.setInherentType(inherentTypeSet.toString());
vo.setInherentTypeCount(String.valueOf(inherentTypeSet.size()));
vo.setRiskTypeList(riskTypeList);
}
//查询所有的风险
List<String> zd = riskPlanMapper.riskPlanRoomName(id,"重大风险");
List<String> jd = riskPlanMapper.riskPlanRoomName(id,"较大风险");
List<String> yb = riskPlanMapper.riskPlanRoomName(id,"一般风险");
List<String> d = riskPlanMapper.riskPlanRoomName(id,"低风险");
vo.setZd(zd.toString());
vo.setJd(jd.toString());
vo.setYb(yb.toString());
vo.setD(d.toString());
vo.setZdNum(String.valueOf(zd.size()));
vo.setJdNum(String.valueOf(jd.size()));
vo.setYbNum(String.valueOf(yb.size()));
vo.setDNum(String.valueOf(d.size()));
return vo;
}
} }
...@@ -364,4 +364,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -364,4 +364,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<select id="riskPlanExport" parameterType="com.censoft.censoftrongtong.domain.RiskPlan"
resultType="com.censoft.censoftrongtong.domain.vo.RiskPlanExportVO">
select
a.name projectName,
(SELECT dept_name from sys_dept where dept_id = #{createDeptId}) createDeptName,
(select nick_name from sys_user where user_id = #{createUserId}) createUserName,
DATE_FORMAT(#{createTime},'%Y年%m月%d日')createTime,
CASE WHEN a.province = a.city THEN CONCAT(a.city,a.address)
ELSE CONCAT(a.province,a.city,a.address) END address,
(select COUNT(1) from ledger_building b where a.id = b.project_id and b.`status` = '0') buildCount,
(select sum(area) from ledger_building b where a.id = b.project_id and b.`status` = '0') buildArea,
(select GROUP_CONCAT(b.`name`) from ledger_building b where a.id = b.project_id and b.`status` = '0' )buildName,
(select COUNT(1) from ledger_floor b where b.`status` = '0' and b.building_id in (select id from ledger_building c where c.project_id = a.id and c.`status` = '0')) floorCount,
(select COUNT(1) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0') inherentCount,
(select GROUP_CONCAT(type) from risk_plan_inherent_list b where b.plan_id = 149 and b.del_flag = '0')inherentType,
(select count(1) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0' and b.`level` = '重大风险' ) zdCount,
(select count(1) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0' and b.`level` = '较大风险' ) jdCount,
(select count(1) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0' and b.`level` = '一般风险' ) ybCount,
(select count(1) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0' and b.`level` = '低风险' ) dCount,
(select GROUP_CONCAT(type) from risk_plan_inherent_list b where b.plan_id = #{id} and b.del_flag = '0' and (b.`level` = '重大风险' or b.`level` = '较大风险' ) ) zjdInherentType,
(select GROUP_CONCAT(type) from risk_plan_inherent_list b where b.plan_id = 149 and b.del_flag = '0' and b.`level` = "重大风险" ) zdRisk,
(select GROUP_CONCAT(type) from risk_plan_inherent_list b where b.plan_id = 149 and b.del_flag = '0' and b.`level` = "较大风险" ) jdRisk,
a.business,
a.risk_color riskColor,
a.risk_level riskLevel,
CASE WHEN a.`status` = '0' THEN '正常'
ELSE '停业' END status
from ledger_project a
where a.id = 1947
</select>
<select id="riskPlanRoomName" resultType="java.lang.String">
SELECT
CONCAT(c.name,b.name,a.name)
FROM
ledger_room a
INNER JOIN ledger_floor b on a.floor_id = b.id and b.`status` = '0'
INNER JOIN ledger_building c on b.building_id = c.id and c.`status` = '0'
where a.`status` = '0'
and a.id in
(select room_id from risk_plan_inherent_list where plan_id = #{planId} and del_flag = '0' and `level` = #{level})
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -25,12 +25,14 @@ ...@@ -25,12 +25,14 @@
<pagehelper.boot.version>1.4.6</pagehelper.boot.version> <pagehelper.boot.version>1.4.6</pagehelper.boot.version>
<fastjson.version>2.0.25</fastjson.version> <fastjson.version>2.0.25</fastjson.version>
<oshi.version>6.4.0</oshi.version> <oshi.version>6.4.0</oshi.version>
<commons.io.version>2.11.0</commons.io.version> <commons.io.version>2.13.0</commons.io.version>
<commons.collections.version>3.2.2</commons.collections.version> <commons.collections.version>3.2.2</commons.collections.version>
<poi.version>4.1.2</poi.version> <poi.version>5.2.5</poi.version>
<velocity.version>2.3</velocity.version> <velocity.version>2.3</velocity.version>
<jwt.version>0.9.1</jwt.version> <jwt.version>0.9.1</jwt.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version> <mybatis-plus.version>3.5.2</mybatis-plus.version>
<poi-tl.version>1.11.1</poi-tl.version>
<hutool-all.version>5.8.16</hutool-all.version>
</properties> </properties>
<!-- 依赖声明 --> <!-- 依赖声明 -->
...@@ -198,6 +200,18 @@ ...@@ -198,6 +200,18 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- 工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<!-- poi-->
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>${poi-tl.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
......
...@@ -149,6 +149,17 @@ ...@@ -149,6 +149,17 @@
<artifactId>spring-boot-starter-freemarker</artifactId> <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency> </dependency>
<!-- 工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- poi-->
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment