From cd02923a7ce1ffa004b3abbb7af67ab6173dd99d Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期一, 25 三月 2024 10:59:40 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/safePlatform-out into zf
---
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