From 80b96d6b2541ddd581bc9bdf1ecfcb566e06a478 Mon Sep 17 00:00:00 2001 From: zhangfeng <1603559716@qq.com> Date: 星期三, 12 十月 2022 17:07:38 +0800 Subject: [PATCH] 修改应急演练查询接口 --- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/EmergencyCountService.java | 4 emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/model/dto/resp/EmergencyExecuteDepLevelLasTimeRespDTO.java | 44 +++++++ emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/repository/EmergencyDrillExecuteInfoRepository.java | 6 emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/controller/EmergencyCountController.java | 4 emergency/emergency-service/src/main/resources/config/mapper/emergency/EmergencyDrillExecuteInfoMapper.xml | 32 ++++- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/impl/EmergencyDrillExecuteInfoServiceImpl.java | 12 + emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/EmergencyRpcAPi.java | 4 emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/resp/EmergencyExecuteDepLevelLasTimeRPCRespDTO.java | 44 +++++++ emergency/emergency-rpc-provider/src/main/java/com/gkhy/safePlatform/emergency/rpc/provider/EmergencyRpcProvider.java | 37 +++-- emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/baseService/EmergencyDrillExecuteInfoService.java | 6 emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyCountServiceImpl.java | 112 +++++++++++++----- 11 files changed, 237 insertions(+), 68 deletions(-) diff --git a/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/EmergencyRpcAPi.java b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/EmergencyRpcAPi.java index 401dd5c..d54c4dc 100644 --- a/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/EmergencyRpcAPi.java +++ b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/EmergencyRpcAPi.java @@ -40,13 +40,13 @@ ResultVO<EmergencyExecuteTimeRPCRespDTO> getExecuteLastTimeByDeptId(Long depId); // RPC接口--2、传入部门ID,查询该部门以及子级部门中最后一次完成应急演练的时间 - ResultVO<EmergencyExecuteTimeRPCRespDTO> getExecuteLastTimeByDeptIds(Long depId); + ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> getExecuteLastTimeByDeptIds(Long depId); // RPC接口--1、传入部门ID,指定年份,月份,查询该部门最后一次完成应急演练的时间 ResultVO<EmergencyExecuteLastTimeRPCRespDTO> getExecuteLastTimeByDeptIdAndTime(EmergencydrillTimeRPCReq query); // RPC接口--2、传入部门ID,,指定年份,月份,查询该部门以及子级部门中最后一次完成应急演练的时间 - ResultVO<EmergencyExecuteLastTimeRPCRespDTO> getExecuteLastTimeByDeptIdsAndTime(EmergencydrillTimeRPCReq query); + ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> getExecuteLastTimeByDeptIdsAndTime(EmergencydrillTimeRPCReq query); // RPC接口--3、传入部门ID,指定月份 ,统计演练次数 ResultVO<StatisticsDepLevelMonthEexcuteRPCRespDTO> getExecuteCountByDeptIdAndMonth(EmergencyExecuteCountRPCReq query); diff --git a/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/resp/EmergencyExecuteDepLevelLasTimeRPCRespDTO.java b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/resp/EmergencyExecuteDepLevelLasTimeRPCRespDTO.java new file mode 100644 index 0000000..7921aca --- /dev/null +++ b/emergency/emergency-rpc-api/src/main/java/com/gkhy/safePlatform/emergency/rpc/api/model/dto/resp/EmergencyExecuteDepLevelLasTimeRPCRespDTO.java @@ -0,0 +1,44 @@ +package com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp; + +public class EmergencyExecuteDepLevelLasTimeRPCRespDTO { + //部门等级 + private Byte depLevel; + //年 + private Integer year; + //月 + private Integer month; + //最后一次演练时间 + private String LastPricateTime; + + public Byte getDepLevel() { + return depLevel; + } + + public void setDepLevel(Byte depLevel) { + this.depLevel = depLevel; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getMonth() { + return month; + } + + public void setMonth(Integer month) { + this.month = month; + } + + public String getLastPricateTime() { + return LastPricateTime; + } + + public void setLastPricateTime(String lastPricateTime) { + LastPricateTime = lastPricateTime; + } +} diff --git a/emergency/emergency-rpc-provider/src/main/java/com/gkhy/safePlatform/emergency/rpc/provider/EmergencyRpcProvider.java b/emergency/emergency-rpc-provider/src/main/java/com/gkhy/safePlatform/emergency/rpc/provider/EmergencyRpcProvider.java index bcc3210..52220f8 100644 --- a/emergency/emergency-rpc-provider/src/main/java/com/gkhy/safePlatform/emergency/rpc/provider/EmergencyRpcProvider.java +++ b/emergency/emergency-rpc-provider/src/main/java/com/gkhy/safePlatform/emergency/rpc/provider/EmergencyRpcProvider.java @@ -127,15 +127,20 @@ return result; } @Override - public ResultVO<EmergencyExecuteTimeRPCRespDTO> getExecuteLastTimeByDeptIds(Long depId) { - ResultVO<EmergencyExecuteTimeRPCRespDTO> result = new ResultVO<>(ResultCodes.OK); + public ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> getExecuteLastTimeByDeptIds(Long depId) { + ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> result = new ResultVO<>(ResultCodes.OK); try{ - EmergencyExecuteTimeRPCRespDTO lastTimeRPCResp = new EmergencyExecuteTimeRPCRespDTO(); - EmergencyExecuteTimeRespDTO timeRespDTO = emergencyCountService.getLastTimeByDeptIds(depId); - if(null != timeRespDTO){ - BeanUtils.copyProperties(timeRespDTO,lastTimeRPCResp); + List<EmergencyExecuteDepLevelLasTimeRespDTO> lasTimeRespDTOS = emergencyCountService.getLastTimeByDeptIds(depId); + List<EmergencyExecuteDepLevelLasTimeRPCRespDTO> timeRPCRespDTOS = new ArrayList<>(); + + for(EmergencyExecuteDepLevelLasTimeRespDTO timeRespDTO:lasTimeRespDTOS){ + if(timeRespDTO != null){ + EmergencyExecuteDepLevelLasTimeRPCRespDTO timeRPCRespDTO = new EmergencyExecuteDepLevelLasTimeRPCRespDTO(); + BeanUtils.copyProperties(timeRespDTO,timeRPCRespDTO); + timeRPCRespDTOS.add(timeRPCRespDTO); + } } - result.setData(lastTimeRPCResp); + result.setData(timeRPCRespDTOS); }catch (EmergencyException e){ result.setCode(e.getCode()); result.setMsg(e.getMessage()); @@ -171,20 +176,24 @@ } @Override - public ResultVO<EmergencyExecuteLastTimeRPCRespDTO> getExecuteLastTimeByDeptIdsAndTime(EmergencydrillTimeRPCReq query) { - ResultVO<EmergencyExecuteLastTimeRPCRespDTO> result = new ResultVO<>(ResultCodes.OK); + public ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> getExecuteLastTimeByDeptIdsAndTime(EmergencydrillTimeRPCReq query) { + ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> result = new ResultVO<>(ResultCodes.OK); EmergencyDrillTimeQuery timeQuery = new EmergencyDrillTimeQuery(); timeQuery.setDeptId(query.getDeptId()); timeQuery.setYear(query.getYear()); timeQuery.setMonth(query.getMonth()); try{ - EmergencyExecuteLastTimeRPCRespDTO lastTimeRPCResp = new EmergencyExecuteLastTimeRPCRespDTO(); - EmergencyExecuteLastTimeRespDTO timeRespDTO = emergencyCountService.getLastPracticeTimeByDeptIdsAndTime(timeQuery); - if(null != timeRespDTO){ - BeanUtils.copyProperties(timeRespDTO,lastTimeRPCResp); + List<EmergencyExecuteDepLevelLasTimeRPCRespDTO> levelLasTimeRPCRespDTOS = new ArrayList<>(); + List<EmergencyExecuteDepLevelLasTimeRespDTO> lasTimeRespDTOS = emergencyCountService.getLastPracticeTimeByDeptIdsAndTime(timeQuery); + for(EmergencyExecuteDepLevelLasTimeRespDTO lastTimeRPCRespDTO :lasTimeRespDTOS){ + if(null != lastTimeRPCRespDTO){ + EmergencyExecuteDepLevelLasTimeRPCRespDTO levelLasTimeRPCRespDTO = new EmergencyExecuteDepLevelLasTimeRPCRespDTO(); + BeanUtils.copyProperties(lastTimeRPCRespDTO,levelLasTimeRPCRespDTO); + levelLasTimeRPCRespDTOS.add(levelLasTimeRPCRespDTO); + } } - result.setData(lastTimeRPCResp); + result.setData(levelLasTimeRPCRespDTOS); }catch (EmergencyException e){ result.setCode(e.getCode()); result.setMsg(e.getMessage()); 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 7573261..bd0dd04 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 @@ -91,7 +91,7 @@ * 根据部门以及子级部门查询最后一次完成应急演练的时间 */ @RequestMapping(value = "/getLastTimeByDeptIds",method = RequestMethod.POST) - public EmergencyExecuteTimeRespDTO getLastTimeByDeptIds(@RequestBody JSONObject jsonObject){ + public List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastTimeByDeptIds(@RequestBody JSONObject jsonObject){ Long deptId = jsonObject.getLong("deptId"); return emergencyCountService.getLastTimeByDeptIds(deptId); } @@ -107,7 +107,7 @@ * 根据部门以及子级部门,年份月份,查询最后一次完成应急演练的时间 */ @RequestMapping(value = "/getLastTimeByDeptIdsAndTime",method = RequestMethod.POST) - public EmergencyExecuteLastTimeRespDTO getLastTimeByDeptIdsAndTime(@RequestBody EmergencyDrillTimeQuery query){ + public List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastTimeByDeptIdsAndTime(@RequestBody EmergencyDrillTimeQuery query){ return emergencyCountService.getLastPracticeTimeByDeptIdsAndTime(query); } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/model/dto/resp/EmergencyExecuteDepLevelLasTimeRespDTO.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/model/dto/resp/EmergencyExecuteDepLevelLasTimeRespDTO.java new file mode 100644 index 0000000..d7ebb61 --- /dev/null +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/model/dto/resp/EmergencyExecuteDepLevelLasTimeRespDTO.java @@ -0,0 +1,44 @@ +package com.gkhy.safePlatform.emergency.model.dto.resp; + +public class EmergencyExecuteDepLevelLasTimeRespDTO { + //部门等级 + private Byte depLevel; + //年 + private Integer year; + //月 + private Integer month; + //最后一次演练时间 + private String LastPricateTime; + + public Byte getDepLevel() { + return depLevel; + } + + public void setDepLevel(Byte depLevel) { + this.depLevel = depLevel; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getMonth() { + return month; + } + + public void setMonth(Integer month) { + this.month = month; + } + + public String getLastPricateTime() { + return LastPricateTime; + } + + public void setLastPricateTime(String lastPricateTime) { + LastPricateTime = lastPricateTime; + } +} 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 9cff90a..872ecdb 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 @@ -38,7 +38,7 @@ String getLastTimeByDeptId(@Param("deptId")Long deptId); - String getLastTimeByDeptIds(@Param("deptIdList")List<Long> deptIdList); + List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIds(@Param("deptIdList")List<Long> deptIdList); List<EmergencyExecuteCountDO> getCountByDeptIdsAndTime(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("deptIds")List<Long> deptIds); @@ -46,5 +46,7 @@ List<EmergencyExecuteCountDO> getCountByDeptIdAndYear(@Param("year")Integer year, @Param("deptId")Long deptId); - String getLastTimeByDeptIdsAndTime(@Param("deptIdList")List<Long> deptIdList, @Param("startTime")String startTime, @Param("endTime")String endTime); + List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIdsAndTime(@Param("deptIdList")List<Long> deptIdList, @Param("startTime")String startTime, @Param("endTime")String endTime); + + String getLastTimeByDeptIdAndTime(@Param("deptId")Long deptId, @Param("startTime")String startTime, @Param("endTime")String endTime); } diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/EmergencyCountService.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/EmergencyCountService.java index 8f3858b..b329447 100644 --- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/EmergencyCountService.java +++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/EmergencyCountService.java @@ -39,7 +39,7 @@ //根据部门id查询最后一次完成应急演练的时间 EmergencyExecuteTimeRespDTO getLastTimeByDeptId(Long deptId); //根据部门id查询该部门以及其子级部门最后一次完成应急演练的时间 - EmergencyExecuteTimeRespDTO getLastTimeByDeptIds(Long deptId); + List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastTimeByDeptIds(Long deptId); /** * 根据部门id统计指定年份的应急演练数据 * @param query @@ -69,6 +69,6 @@ EmergencyExecuteLastTimeRespDTO getLastPracticeTimeByDeptIdAndTime(EmergencyDrillTimeQuery query); - EmergencyExecuteLastTimeRespDTO getLastPracticeTimeByDeptIdsAndTime(EmergencyDrillTimeQuery query); + List<EmergencyExecuteDepLevelLasTimeRespDTO> getLastPracticeTimeByDeptIdsAndTime(EmergencyDrillTimeQuery query); } 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 60764b7..06ea050 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 @@ -36,11 +36,13 @@ String getLastTimeByDeptId(Long deptId); - String getLastTimeByDeptIds(List<Long> deptIdList); + List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIds(List<Long> deptIdList); List<EmergencyExecuteCountDO> getCountByDeptIdsAndTime(String startTime, String endTime, List<Long> deptId); EmergencyExecuteCountDO getCountByDeptIdAndMonth(Integer year,Integer month, Long deptId); List<EmergencyExecuteCountDO> getCountByDeptIdAndYear(Integer year, Long deptId); - String getLastTimeByDeptIdsAndTime(List<Long> deptIdList,String startTime,String endTime); + List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIdsAndTime(List<Long> deptIdList,String startTime,String endTime); + + String getLastTimeByDeptIdAndTime(Long deptId, String startTime, String endTime); } 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 b7c5a9e..1627f7e 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 @@ -89,14 +89,14 @@ } @Override - public String getLastTimeByDeptIds(List<Long> deptIdList) { + public List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIds(List<Long> deptIdList) { if(null == deptIdList || deptIdList.size() == 0){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); } return baseMapper.getLastTimeByDeptIds(deptIdList); } @Override - public String getLastTimeByDeptIdsAndTime(List<Long> deptIdList,String startTime,String endTime) { + public List<EmergencyDrillExecuteLastTimeDO> getLastTimeByDeptIdsAndTime(List<Long> deptIdList,String startTime,String endTime) { if(null == deptIdList || deptIdList.size() == 0 || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); } @@ -104,6 +104,14 @@ } @Override + public String getLastTimeByDeptIdAndTime(Long deptId, String startTime, String endTime) { + if(null == deptId || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)){ + throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); + } + return baseMapper.getLastTimeByDeptIdAndTime(deptId,startTime,endTime); + } + + @Override public List<EmergencyExecuteCountDO> getCountByDeptIdsAndTime(String startTime, String endTime, List<Long> deptIds) { if(null == deptIds || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime) || deptIds.size() == 0){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); 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和指定年份 统计演练数据 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 55c1692..3d18dba 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 @@ -242,16 +242,19 @@ AND a.del_flag = 0 AND b.department_id = #{deptId} </select> <!--根据部门及其子级获取--> - <select id="getLastTimeByDeptIds" resultType="java.lang.String"> + <select id="getLastTimeByDeptIds" resultType="com.gkhy.safePlatform.emergency.entity.EmergencyDrillExecuteLastTimeDO"> SELECT - DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d %H:%i:%s' ) AS lastTime + DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d %H:%i:%s' ) AS lastTime, + b.department_id AS deptId FROM - `emergency_drill_execute` a - INNER JOIN emergency_drill_plan b ON a.drill_plan_id = b.id - AND a.del_flag = 0 AND b.department_id IN + `emergency_drill_execute` a + INNER JOIN emergency_drill_plan b ON a.drill_plan_id = b.id + AND a.del_flag = 0 AND b.department_id IN <foreach collection="deptIdList" item="deptId" open="(" close=")" separator=","> #{deptId} </foreach> + GROUP BY + b.department_id </select> <select id="getCountByDeptIdsAndTime" resultType="com.gkhy.safePlatform.emergency.entity.EmergencyExecuteCountDO"> SELECT @@ -304,9 +307,10 @@ DATE_FORMAT( a.gmt_create, '%Y-%m' ), DATE_FORMAT(a.gmt_create,'%m') </select> - <select id="getLastTimeByDeptIdsAndTime" resultType="java.lang.String"> + <select id="getLastTimeByDeptIdsAndTime" resultType="com.gkhy.safePlatform.emergency.entity.EmergencyDrillExecuteLastTimeDO"> SELECT - DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d %H:%i:%s' ) AS lastTime + DATE_FORMAT( max( a.gmt_create ), '%Y-%m-%d %H:%i:%s' ) AS lastTime, + b.department_id AS deptId FROM `emergency_drill_execute` a INNER JOIN emergency_drill_plan b ON a.drill_plan_id = b.id @@ -317,6 +321,18 @@ <foreach collection="deptIdList" item="deptId" open="(" close=")" separator=","> #{deptId} </foreach> + GROUP BY + b.department_id </select> - + <select id="getLastTimeByDeptIdAndTime" resultType="java.lang.String"> + SELECT + 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 + AND a.del_flag = 0 + AND DATE( a.gmt_create ) BETWEEN #{startTime} + AND #{endTime} + AND b.department_id = #{deptId} + </select> </mapper> -- Gitblit v1.9.2