package com.gkhy.safePlatform.emergency.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gkhy.safePlatform.commons.enums.ResultCodes; 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.*; import com.gkhy.safePlatform.emergency.enums.EmergencyResultCodes; import com.gkhy.safePlatform.emergency.excepiton.EmergencyException; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillExecuteReqDTO; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillExecuteUserReqDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillExecuteDetailRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillExecutePageRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillExecuteUserRespDTO; import com.gkhy.safePlatform.emergency.query.EmergencyDrillExecuteQuery; import com.gkhy.safePlatform.emergency.query.db.EmergencyDrillExecuteDBQuery; import com.gkhy.safePlatform.emergency.service.EmergencyDrillExecuteService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteUserInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillPlanInfoService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service("emergencyDrillExecuteService") public class EmergencyDrillExecuteServiceImpl implements EmergencyDrillExecuteService { @Autowired private EmergencyDrillExecuteInfoService emergencyDrillExecuteInfoService; @Autowired private EmergencyDrillExecuteUserInfoService emergencyDrillExecuteUserInfoService; @Autowired private EmergencyDrillPlanInfoService emergencyDrillPlanInfoService; @Override public SearchResultVO> selectEmergencyDrillExecuteList(PageQuery query) { Long pageIndex = query.getPageIndex(); Long pageSize = query.getPageSize(); Page page = new Page<>(pageIndex, pageSize); EmergencyDrillExecuteDBQuery emergencyDrillExecuteDBQuery = new EmergencyDrillExecuteDBQuery(); if (query.getSearchParams() != null) { BeanUtils.copyProperties(query.getSearchParams(), emergencyDrillExecuteDBQuery); } List emergencyDrillExecuteListDoInfoList = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteList(page, emergencyDrillExecuteDBQuery); List respList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteListDoInfoList, EmergencyDrillExecutePageRespDTO.class); return new SearchResultVO<>( true, pageIndex, pageSize, page.getTotal(), respList, ResultCodes.OK ); } @Override public ResultVO addEmergencyDrillExecute(Long uid, EmergencyDrillExecuteReqDTO emergencyDrillExecuteReqDTO) { // 判断请求中是否存在演练计划id if (emergencyDrillExecuteReqDTO.getDrillPlanId() == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NULL); } else { EmergencyDrillPlanInfoDetailDO emergencyDrillPlanInfoDetailDO = emergencyDrillPlanInfoService.selectEmergencyDrillPlanById(emergencyDrillExecuteReqDTO.getDrillPlanId()); // 判断是否存在该演练计划 if (emergencyDrillPlanInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NOT_EXIST); } else { Date nowDate = new Date(); // 新增应急演练计划实施 EmergencyDrillExecuteInfo emergencyDrillExecuteInfo = new EmergencyDrillExecuteInfo(); BeanUtils.copyProperties(emergencyDrillExecuteReqDTO, emergencyDrillExecuteInfo); emergencyDrillExecuteInfo.setDelFlag(false); emergencyDrillExecuteInfo.setCreateUid(uid); emergencyDrillExecuteInfo.setGmtCreate(nowDate); emergencyDrillExecuteInfo.setStatus(true); emergencyDrillExecuteInfoService.addEmergencyDrillExecute(emergencyDrillExecuteInfo); // 新增应急演练计划实施实际到场人员表 if (!CollectionUtils.isEmpty(emergencyDrillExecuteReqDTO.getUserList())) { addEmergencyDrillExecuteUser(uid, emergencyDrillExecuteInfo.getId(), nowDate, emergencyDrillExecuteReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } } private void addEmergencyDrillExecuteUser(Long uid, Long DrillExecuteId, Date nowDate, List emergencyDrillExecuteUserReqDTOList) { List emergencyDrillExecuteUserInfoList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteUserReqDTOList, EmergencyDrillExecuteUserInfo.class); emergencyDrillExecuteUserInfoList.forEach(EmergencyDrillExecuteUserInfo -> { EmergencyDrillExecuteUserInfo.setDelFlag(false); EmergencyDrillExecuteUserInfo.setCreateUid(uid); EmergencyDrillExecuteUserInfo.setGmtCreate(nowDate); EmergencyDrillExecuteUserInfo.setDrillExecuteId(DrillExecuteId); }); for (EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo : emergencyDrillExecuteUserInfoList) { emergencyDrillExecuteUserInfoService.addEmergencyDrillExecuteUser(emergencyDrillExecuteUserInfo); } } @Override public ResultVO getEmergencyDrillExecuteById(Long id) { EmergencyDrillExecuteDetailRespDTO emergencyDrillExecuteDetailRespDTO = new EmergencyDrillExecuteDetailRespDTO(); // 查询是否存在应急演练计划实施 EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(id); if (emergencyDrillExecuteInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST); } else { BeanUtils.copyProperties(emergencyDrillExecuteInfoDetailDO, emergencyDrillExecuteDetailRespDTO); // 查找对应的人员 List emergencyDrillExecuteUserInfoDOList = emergencyDrillExecuteUserInfoService.selectEmergencyDrillExecuteUserByDrillExecuteId(id); if (!CollectionUtils.isEmpty(emergencyDrillExecuteUserInfoDOList)) { List emergencyUserUserRespDTOList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteUserInfoDOList, EmergencyDrillExecuteUserRespDTO.class); emergencyDrillExecuteDetailRespDTO.setUserList(emergencyUserUserRespDTOList); } return new ResultVO<>(ResultCodes.OK, emergencyDrillExecuteDetailRespDTO); } } @Override public ResultVO updateEmergencyDrillExecute(Long uid, EmergencyDrillExecuteReqDTO emergencyDrillExecuteReqDTO) { Date nowDate = new Date(); // 查询是否存在应急演练计划实施 EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(emergencyDrillExecuteReqDTO.getId()); if (emergencyDrillExecuteInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST); } else { EmergencyDrillExecuteInfo emergencyDrillExecuteInfo = new EmergencyDrillExecuteInfo(); BeanUtils.copyProperties(emergencyDrillExecuteReqDTO, emergencyDrillExecuteInfo); emergencyDrillExecuteInfo.setUpdateUid(uid); emergencyDrillExecuteInfo.setGmtModitify(nowDate); emergencyDrillExecuteInfoService.updateEmergencyDrillExecute(emergencyDrillExecuteInfo); // 更新急演练计划应急队伍表 if (!CollectionUtils.isEmpty(emergencyDrillExecuteReqDTO.getUserList())) { updateEmergencyDrillExecuteUser(uid, emergencyDrillExecuteInfo.getId(), nowDate, emergencyDrillExecuteReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } private void updateEmergencyDrillExecuteUser(Long uid, Long DrillExecuteId, Date nowDate, List UserReqDTOList) { List emergencyDrillExecuteUserInfoDOList = emergencyDrillExecuteUserInfoService.selectEmergencyDrillExecuteUserByDrillExecuteId(DrillExecuteId); List oldIdsList = emergencyDrillExecuteUserInfoDOList.stream().map(EmergencyDrillExecuteUserInfoDO::getId).collect(Collectors.toList()); List newIdsList = new ArrayList<>(); //新增的区域集合 List addList = new ArrayList<>(); //删除的区域集合(id) List deleteList = new ArrayList<>(); for (EmergencyDrillExecuteUserReqDTO emergencyDrillExecuteUserReqDTO : UserReqDTOList) { //如果不存在id则表示页面新增的附件 if (emergencyDrillExecuteUserReqDTO.getId() == null) { EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo = new EmergencyDrillExecuteUserInfo(); BeanUtils.copyProperties(emergencyDrillExecuteUserReqDTO, emergencyDrillExecuteUserInfo); emergencyDrillExecuteUserInfo.setDelFlag(false); emergencyDrillExecuteUserInfo.setGmtCreate(nowDate); emergencyDrillExecuteUserInfo.setCreateUid(uid); emergencyDrillExecuteUserInfo.setDrillExecuteId(DrillExecuteId); addList.add(emergencyDrillExecuteUserInfo); } //如果存在id则判断页面是否删除 else { newIdsList.add(emergencyDrillExecuteUserReqDTO.getId()); } } for (Long oldId : oldIdsList) { if (!newIdsList.contains(oldId)) { deleteList.add(oldId); } } if (!CollectionUtils.isEmpty(addList)) { for (EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo : addList) { emergencyDrillExecuteUserInfoService.addEmergencyDrillExecuteUser(emergencyDrillExecuteUserInfo); } } if (!CollectionUtils.isEmpty(deleteList)) { emergencyDrillExecuteUserInfoService.deleteEmergencyDrillExecuteUserByIds(deleteList); } } @Override public ResultVO batchDeleteEmergencyDrillExecute(String ids) { if (StringUtils.isBlank(ids)) { throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NULL); } else { String[] idArr = ids.split(","); for (String id : idArr) { deleteEmergencyDrillExecute(Long.valueOf(id)); } return new ResultVO(ResultCodes.OK); } } private void deleteEmergencyDrillExecute(Long id) { //查询是否存在 EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(id); if (emergencyDrillExecuteInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST); } else { Long DrillExecuteId = emergencyDrillExecuteInfoDetailDO.getId(); emergencyDrillExecuteInfoService.deleteEmergencyDrillExecute(DrillExecuteId); //删除人员 emergencyDrillExecuteUserInfoService.deleteEmergencyDrillExecuteUserByDrillExecuteId(DrillExecuteId); } } }