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); 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; } } 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()); 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); } 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; } } 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); } 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); } 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); } 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); 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和指定年份 统计演练数据 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>