From 0414ddb0b2b3a7199ae6181a770f97ac140dbd73 Mon Sep 17 00:00:00 2001 From: zhangf <1603559716@qq.com> Date: 星期三, 08 五月 2024 16:46:22 +0800 Subject: [PATCH] spi统计 --- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java | 112 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 78 insertions(+), 34 deletions(-) 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 3509e45..24c9560 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 @@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -372,7 +373,7 @@ * 查询部门及其子级部门最后一次演练时间 * 后面按部门等级划分 */ - public EmergencyExecuteTimeRespDTO getLastTimeByDeptIds(Long deptId){ + public List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastTimeByDeptIds(Long deptId){ if(null == deptId){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); @@ -384,22 +385,58 @@ .stream() .map(dep -> dep.getDepId()) .collect(Collectors.toList()); - //过滤出传入部门的信息 - List<DepInfoRPCRespDTO> selectDepList = depInfoList - .stream() - .filter(dep -> dep.getDepId().equals(deptId)) - .collect(Collectors.toList()); // 查询该部门ids最后一次演练时间 - String lastTime = emergencyDrillExecuteInfoService.getLastTimeByDeptIds(deptIdList); + List<EmergencyDrillExecuteLastTimeDO> executeLastTimeDOS = emergencyDrillExecuteInfoService.getLastTimeByDeptIds(deptIdList); + List<EmergencyExecuteDepLevelLasTimeRespDTO> depLevelRespDTOList = new ArrayList<>(); + //循环部门等级 + for(DepartmentLevelEnum departmentLevelEnum : DepartmentLevelEnum.values()){ + //数据填充 + EmergencyExecuteDepLevelLasTimeRespDTO depLevelRespDTO = new EmergencyExecuteDepLevelLasTimeRespDTO(); + depLevelRespDTO.setDepLevel(departmentLevelEnum.getCode()); - //填充数据 - EmergencyExecuteTimeRespDTO respDTO = new EmergencyExecuteTimeRespDTO(); - respDTO.setDepId(deptId); - respDTO.setLastPricticeTime(StringUtils.isBlank(lastTime) == true ? "" : lastTime); - if(selectDepList.size()>0){ - respDTO.setDepLevel(selectDepList.get(0).getDepLevel()); + //该等级下的部门数据 + List<DepInfoRPCRespDTO> selectDepList = depInfoList + .stream() + .filter(dep -> dep.getDepLevel().equals(departmentLevelEnum.getCode())) + .collect(Collectors.toList()); + //获取该部门等级下部门演练数据 + List<EmergencyDrillExecuteLastTimeDO> selectExeList = executeLastTimeDOS + .stream() + .filter(exe -> selectDepList.stream().map(dep -> dep.getDepId()).collect(Collectors.toList()).contains(exe.getDeptId())) + .collect(Collectors.toList()); + //获取该等级最后一次演练时间 + String lastTime = getLastPracticeTime(selectExeList); + depLevelRespDTO.setLastPricateTime(lastTime); + depLevelRespDTOList.add(depLevelRespDTO); } - return respDTO; + return depLevelRespDTOList; + } + //获取最大日期 + private String getLastPracticeTime(List<EmergencyDrillExecuteLastTimeDO> selectExeList){ + String lastTime = ""; + if(selectExeList.size()>0){ + SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Collections.sort(selectExeList, new Comparator<EmergencyDrillExecuteLastTimeDO>(){ + @Override + public int compare(EmergencyDrillExecuteLastTimeDO timeDO01, EmergencyDrillExecuteLastTimeDO timeDO02) { + + int flag = -1; + try { + Date date1 = sdft.parse(timeDO01.getLastTime()); + Date date2 = sdft.parse(timeDO02.getLastTime()); + if(date1.before(date2)){ + flag=1; + } + } catch (ParseException e) { + e.printStackTrace(); + } + return flag; + } //compare + }); + EmergencyDrillExecuteLastTimeDO lastTimeDO = selectExeList.get(0); + lastTime = lastTimeDO.getLastTime(); + } + return lastTime; } @Override public EmergencyExecuteLastTimeRespDTO getLastPracticeTimeByDeptIdAndTime(EmergencyDrillTimeQuery query) { @@ -411,8 +448,6 @@ } //通过RPC获取部门相关数据 DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId()); - List<Long> idList = new ArrayList<>(); - idList.add(query.getDeptId()); //开始时间结束时间 String startTime; String endTime; @@ -424,7 +459,7 @@ endTime = TimeUtils.getMonthLast(query.getYear(),query.getMonth()); } // 查询该部门最后一次演练时间 - String lastTime = emergencyDrillExecuteInfoService.getLastTimeByDeptIdsAndTime(idList,startTime,endTime); + String lastTime = emergencyDrillExecuteInfoService.getLastTimeByDeptIdAndTime(query.getDeptId(), startTime,endTime); //填充数据 EmergencyExecuteLastTimeRespDTO respDTO = new EmergencyExecuteLastTimeRespDTO(); respDTO.setDepId(depInfoRPCRespDTO.getDepId()); @@ -436,7 +471,7 @@ } @Override - public EmergencyExecuteLastTimeRespDTO getLastPracticeTimeByDeptIdsAndTime(EmergencyDrillTimeQuery query) { + public List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastPracticeTimeByDeptIdsAndTime(EmergencyDrillTimeQuery query) { if(null == query.getDeptId()){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL,"部门id不可为空"); } @@ -450,11 +485,6 @@ .stream() .map(dep -> dep.getDepId()) .collect(Collectors.toList()); - //过滤出传入部门的信息 - List<DepInfoRPCRespDTO> selectDepList = depInfoList - .stream() - .filter(dep -> dep.getDepId().equals(query.getDeptId())) - .collect(Collectors.toList()); //开始时间结束时间 String startTime; String endTime; @@ -466,18 +496,32 @@ endTime = TimeUtils.getMonthLast(query.getYear(),query.getMonth()); } // 查询该部门ids最后一次演练时间 - String lastTime = emergencyDrillExecuteInfoService.getLastTimeByDeptIdsAndTime(deptIdList,startTime,endTime); - - //填充数据 - EmergencyExecuteLastTimeRespDTO respDTO = new EmergencyExecuteLastTimeRespDTO(); - respDTO.setDepId(query.getDeptId()); - respDTO.setYear(query.getYear()); - respDTO.setMonth(query.getMonth()); - respDTO.setLastPricticeTime(StringUtils.isBlank(lastTime) == true ? "" : lastTime); - if(selectDepList.size()>0){ - respDTO.setDepLevel(selectDepList.get(0).getDepLevel()); + List<EmergencyDrillExecuteLastTimeDO> executeLastTimeDOS = emergencyDrillExecuteInfoService.getLastTimeByDeptIdsAndTime(deptIdList,startTime,endTime); + List<EmergencyExecuteDepLevelLasTimeRespDTO> depLevelRespDTOList = new ArrayList<>(); + //循环部门等级 + for(DepartmentLevelEnum departmentLevelEnum : DepartmentLevelEnum.values()){ + //数据填充 + EmergencyExecuteDepLevelLasTimeRespDTO depLevelRespDTO = new EmergencyExecuteDepLevelLasTimeRespDTO(); + depLevelRespDTO.setDepLevel(departmentLevelEnum.getCode()); + depLevelRespDTO.setYear(query.getYear()); + depLevelRespDTO.setMonth(query.getMonth()); + //该等级下的部门数据 + List<DepInfoRPCRespDTO> selectDepList = depInfoList + .stream() + .filter(dep -> dep.getDepLevel().equals(departmentLevelEnum.getCode())) + .collect(Collectors.toList()); + //获取该部门等级下部门演练数据 + List<EmergencyDrillExecuteLastTimeDO> selectExeList = executeLastTimeDOS + .stream() + .filter(exe -> selectDepList.stream().map(dep -> dep.getDepId()).collect(Collectors.toList()).contains(exe.getDeptId())) + .collect(Collectors.toList()); + //获取该等级最后一次演练时间 + String lastTime = getLastPracticeTime(selectExeList); + depLevelRespDTO.setLastPricateTime(lastTime); + depLevelRespDTOList.add(depLevelRespDTO); } - return respDTO; + + return depLevelRespDTOList; } /** * 根据部门id和指定年份 统计演练数据 -- Gitblit v1.9.2