From 208b6439eb8e63b6485240a8b466ebdcfd08c57a Mon Sep 17 00:00:00 2001 From: songhuangfeng123 <shf18767906695@163.com> Date: 星期一, 05 九月 2022 11:27:23 +0800 Subject: [PATCH] 应急统计 --- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java | 2 emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/req/EmergencyExecuteNumRPCReq.java | 10 +- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java | 23 +++++ emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml | 23 +++++ emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java | 5 + emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java | 3 emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java | 118 +++++++++++++++++++++++------ 7 files changed, 153 insertions(+), 31 deletions(-) diff --git a/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/req/EmergencyExecuteNumRPCReq.java b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/req/EmergencyExecuteNumRPCReq.java index 3e4b6ce..74af133 100644 --- a/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/req/EmergencyExecuteNumRPCReq.java +++ b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/req/EmergencyExecuteNumRPCReq.java @@ -14,7 +14,7 @@ private Integer year; // 月 - private Integer mouth; + private Integer month; public Long getDeptId() { return deptId; @@ -32,11 +32,11 @@ this.year = year; } - public Integer getMouth() { - return mouth; + public Integer getMonth() { + return month; } - public void setMouth(Integer mouth) { - this.mouth = mouth; + public void setMonth(Integer month) { + this.month = month; } } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java index 75222f6..ababe29 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java @@ -46,9 +46,32 @@ /** * 应急演练次数统计图 */ + @RequestMapping(value = "/getTimeByDeptId",method = RequestMethod.POST) + public SearchResultVO<EmergencyExecuteTimeRPCResp> getTimeByDeptId(@RequestBody EmergencyExecuteTimeRPCReq query){ + return emergencyCountService.getTimeByDeptId(query); + } + + /** + * 应急演练次数统计图 + */ + @RequestMapping(value = "/getTimeByDeptIds",method = RequestMethod.POST) + public SearchResultVO<List<EmergencyExecuteTimeRPCResp>> getTimeByDeptIds(@RequestBody EmergencyExecuteTimeRPCReq query){ + return emergencyCountService.getTimeByDeptIds(query); + } + + /** + * 应急演练次数统计图 + */ @RequestMapping(value = "/getNumByDeptId",method = RequestMethod.POST) public SearchResultVO<EmergencyExecuteNumRPCResp> getNumByDeptId(@RequestBody EmergencyExecuteNumRPCReq query){ return emergencyCountService.getNumByDeptId(query); } + /** + * 应急演练次数统计图 + */ + @RequestMapping(value = "/getNumByDeptIds",method = RequestMethod.POST) + public SearchResultVO<List<EmergencyExecuteNumRPCResp>> getNumByDeptIds(@RequestBody EmergencyExecuteNumRPCReq query){ + return emergencyCountService.getNumByDeptIds(query); + } } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java index 78e9378..6461374 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java @@ -30,5 +30,7 @@ List<EmergencyDrillExecuteCountData> selectByYearAndDept(@Param("startTime") String startTime ,@Param("endTime")String endTime ,@Param("deptIds")List<Long> deptIds); + List<EmergencyDrillExecuteCountData> selectByDayAndDept(@Param("startTime") String startTime ,@Param("endTime")String endTime ,@Param("deptIds")List<Long> deptIds); + String selectEmergencyDrillExecuteIntervalTimeByDeptId(@Param("deptId")Long deptId); } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java index 86d5fa5..6169166 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java @@ -28,5 +28,8 @@ List<EmergencyDrillExecuteCountData> selectByYearAndDept(String startTime ,String endTime ,List<Long> deptIds); + List<EmergencyDrillExecuteCountData> selectByDayAndDept(String startTime, String endTime, List<Long> deptIds); + String selectEmergencyDrillExecuteIntervalTimeByDeptId(Long deptId); + } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java index 042d6b5..ba01a35 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java @@ -63,6 +63,11 @@ } @Override + public List<EmergencyDrillExecuteCountData> selectByDayAndDept(String startTime, String endTime, List<Long> deptIds) { + return emergencyDrillExecuteInfoRepository.selectByDayAndDept(startTime,endTime,deptIds); + } + + @Override public String selectEmergencyDrillExecuteIntervalTimeByDeptId(Long deptId) { return emergencyDrillExecuteInfoRepository.selectEmergencyDrillExecuteIntervalTimeByDeptId(deptId); } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java index 63a3827..e865b2a 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java @@ -7,6 +7,7 @@ import com.gkhy.safePlatform.commons.exception.BusinessException; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; +import com.gkhy.safePlatform.commons.utils.StringUtils; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.emergency.entity.*; @@ -23,11 +24,11 @@ import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencySuppliesInfoService; import com.gkhy.safePlatform.emergency.utils.TimeUtils; -import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import sun.security.pkcs11.wrapper.CK_SSL3_KEY_MAT_OUT; import java.text.SimpleDateFormat; import java.util.*; @@ -47,17 +48,13 @@ @Override public SearchResultVO<EmergencyExecuteTimeRPCResp> getTimeByDeptId(EmergencyExecuteTimeRPCReq query) { EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp = new EmergencyExecuteTimeRPCResp(); - // 获取id对应的部门 DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId()); - emergencyExecuteTimeRPCResp.setDeptId(depInfoRPCRespDTO.getDepId()); emergencyExecuteTimeRPCResp.setDeptName(depInfoRPCRespDTO.getDepName()); emergencyExecuteTimeRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel()); - String lastTime = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteIntervalTimeByDeptId(query.getDeptId()); - emergencyExecuteTimeRPCResp.setLastTime(lastTime); - emergencyExecuteTimeRPCResp.setDays(TimeUtils.differentDays(lastTime, TimeUtils.formatDate(new Date()))); + getSingleTimeData(emergencyExecuteTimeRPCResp); return new SearchResultVO<>( false, null, @@ -72,6 +69,18 @@ @Override public SearchResultVO<List<EmergencyExecuteTimeRPCResp>> getTimeByDeptIds(EmergencyExecuteTimeRPCReq query) { List<EmergencyExecuteTimeRPCResp> list = new ArrayList<>(); + + // 获取该部门及其子部门的所有信息 + List<DepInfoRPCRespDTO> depList = getDepListInfoByDepId(query.getDeptId()); + for (DepInfoRPCRespDTO depInfoRPCRespDTO : depList){ + EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp = new EmergencyExecuteTimeRPCResp(); + emergencyExecuteTimeRPCResp.setDeptId(depInfoRPCRespDTO.getDepId()); + emergencyExecuteTimeRPCResp.setDeptName(depInfoRPCRespDTO.getDepName()); + emergencyExecuteTimeRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel()); + + getSingleTimeData(emergencyExecuteTimeRPCResp); + list.add(emergencyExecuteTimeRPCResp); + } return new SearchResultVO<>( false, null, @@ -83,6 +92,15 @@ ); } + private void getSingleTimeData(EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp){ + // 查询该部门最后一次演练时间 + String lastTime = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteIntervalTimeByDeptId(emergencyExecuteTimeRPCResp.getDeptId()); + if (StringUtils.isNotBlank(lastTime)){ + emergencyExecuteTimeRPCResp.setLastTime(lastTime); + emergencyExecuteTimeRPCResp.setDays(TimeUtils.differentDays(lastTime, TimeUtils.formatDate(new Date()))); + } + } + @Override public SearchResultVO<EmergencyExecuteNumRPCResp> getNumByDeptId(EmergencyExecuteNumRPCReq query) { if (query.getYear()==null){ @@ -91,27 +109,11 @@ EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp = new EmergencyExecuteNumRPCResp(); // 获取id对应的部门 DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId()); - emergencyExecuteNumRPCResp.setDeptId(depInfoRPCRespDTO.getDepId()); emergencyExecuteNumRPCResp.setDeptName(depInfoRPCRespDTO.getDepName()); emergencyExecuteNumRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel()); - // 查到该年度对应月份的数据 - List<Map<String,String>> mapList = new ArrayList<>(); - String startTime = TimeUtils.getYearFirst(query.getYear()); - String endTime = TimeUtils.getYearLast(query.getYear()); - List<Long> deptIds = new ArrayList<>(); - deptIds.add(query.getDeptId()); - List<EmergencyDrillExecuteCountData> emergencyDrillExecuteCountDataList = emergencyDrillExecuteInfoService.selectByMonthAndDept(startTime, endTime, deptIds); - if (!emergencyDrillExecuteCountDataList.isEmpty()){ - for (EmergencyDrillExecuteCountData emergencyDrillExecuteCountData : emergencyDrillExecuteCountDataList){ - Map<String ,String> map = new HashMap<>(); - map.put("name",emergencyDrillExecuteCountData.getName()); - map.put("num",emergencyDrillExecuteCountData.getNum().toString()); - mapList.add(map); - } - } - emergencyExecuteNumRPCResp.setData(mapList); + getSingleNumData(emergencyExecuteNumRPCResp,query); return new SearchResultVO<>( false, @@ -126,10 +128,63 @@ @Override public SearchResultVO<List<EmergencyExecuteNumRPCResp>> getNumByDeptIds(EmergencyExecuteNumRPCReq query) { - return null; + List<EmergencyExecuteNumRPCResp> list = new ArrayList<>(); + + // 获取该部门及其子部门的所有信息 + List<DepInfoRPCRespDTO> deptList = getDepListInfoByDepId(query.getDeptId()); + + for (DepInfoRPCRespDTO depInfoRPCRespDTO : deptList){ + EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp = new EmergencyExecuteNumRPCResp(); + emergencyExecuteNumRPCResp.setDeptId(depInfoRPCRespDTO.getDepId()); + emergencyExecuteNumRPCResp.setDeptName(depInfoRPCRespDTO.getDepName()); + emergencyExecuteNumRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel()); + + getSingleNumData(emergencyExecuteNumRPCResp,query); + list.add(emergencyExecuteNumRPCResp); + } + return new SearchResultVO<>( + false, + null, + null, + null, + (long) list.size(), + list, + ResultCodes.OK + ); } - public DepInfoRPCRespDTO getDepInfoByDepId(Long deptId) { + private void getSingleNumData(EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp,EmergencyExecuteNumRPCReq query){ + List<Long> deptIds = new ArrayList<>(); + deptIds.add(emergencyExecuteNumRPCResp.getDeptId()); + + List<Map<String,String>> mapList = new ArrayList<>(); + List<EmergencyDrillExecuteCountData> emergencyDrillExecuteCountDataList = new ArrayList<>(); + + String startTime ; + String endTime ; + if (query.getMonth()==null){ + // 查该年度12个月份的 + startTime = TimeUtils.getYearFirst(query.getYear()); + endTime = TimeUtils.getYearLast(query.getYear()); + emergencyDrillExecuteCountDataList= emergencyDrillExecuteInfoService.selectByMonthAndDept(startTime, endTime, deptIds); + }else{ + // 查该年度指定月份的 + startTime = TimeUtils.getMonthFirst(query.getYear(),query.getMonth()); + endTime = TimeUtils.getMonthLast(query.getYear(),query.getMonth()); + emergencyDrillExecuteCountDataList= emergencyDrillExecuteInfoService.selectByDayAndDept(startTime, endTime, deptIds); + } + if (!emergencyDrillExecuteCountDataList.isEmpty()){ + for (EmergencyDrillExecuteCountData emergencyDrillExecuteCountData : emergencyDrillExecuteCountDataList){ + Map<String ,String> map = new HashMap<>(); + map.put("name",emergencyDrillExecuteCountData.getName()); + map.put("num",emergencyDrillExecuteCountData.getNum().toString()); + mapList.add(map); + } + } + emergencyExecuteNumRPCResp.setData(mapList); + } + + private DepInfoRPCRespDTO getDepInfoByDepId(Long deptId) { DepInfoRPCRespDTO dep = new DepInfoRPCRespDTO(); ResultVO<DepInfoRPCRespDTO> rpcResult = accountDepartmentService.getDepInfoByDepId(deptId); if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) { @@ -142,6 +197,19 @@ return dep; } + private List<DepInfoRPCRespDTO> getDepListInfoByDepId(Long deptId){ + List<DepInfoRPCRespDTO> depList = new ArrayList<>(); + ResultVO<List<DepInfoRPCRespDTO>> rpcResult = accountDepartmentService.listDepAndSubDepByDepId(deptId); + if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) { + if (rpcResult.getData() != null) { + depList = (List<DepInfoRPCRespDTO>)rpcResult.getData(); + } + } else { + throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST); + } + return depList; + } + @Override public ResultVO<EmergencyDrillExecuteCountRespDTO> countEmergencyDrillExecute(EmergencyDrillExecuteCountQuery query) { diff --git a/emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml b/emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml index 6a40c03..9c3a4a6 100644 --- a/emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml +++ b/emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml @@ -173,10 +173,31 @@ DATE_FORMAT( a.gmt_create, '%Y' ) </select> + <select id="selectByDayAndDept" resultMap="emergencyDrillExecuteCountChart"> + SELECT + count( 0 ) AS num, + DATE_FORMAT( a.gmt_create, '%Y-%m-%d' ) AS `name` + FROM + `emergency_drill_execute` a + LEFT JOIN emergency_drill_plan b ON a.drill_plan_id = b.id + WHERE + a.del_flag = 0 + AND a.gmt_create <![CDATA[ >= ]]> #{startTime} + AND a.gmt_create <![CDATA[ <= ]]> #{endTime} + <if test="deptIds != null " > + and b.department_id in + <foreach item="id" collection="deptIds" open="(" separator="," close=")"> + #{id} + </foreach> + </if> + GROUP BY + DATE_FORMAT( a.gmt_create, '%Y-%m-%d' ) + </select> + <select id="selectEmergencyDrillExecuteIntervalTimeByDeptId" resultType="java.lang.String"> SELECT - DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d' ) AS lastTime + DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d %H:%i:%s' ) AS lastTime FROM `emergency_drill_execute` a INNER JOIN emergency_drill_plan b ON a.drill_plan_id = b.id -- Gitblit v1.9.2