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.EmergencyDrillEvaluationFileReqDTO; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillEvaluationReqDTO; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillEvaluationUserReqDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillEvaluationDetailRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillEvaluationFileRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillEvaluationPageRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyDrillEvaluationUserRespDTO; import com.gkhy.safePlatform.emergency.query.EmergencyDrillEvaluationQuery; import com.gkhy.safePlatform.emergency.query.db.EmergencyDrillEvaluationDBQuery; import com.gkhy.safePlatform.emergency.service.EmergencyDrillEvaluationService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillEvaluationFileInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillEvaluationInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillEvaluationUserInfoService; 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("emergencyDrillEvaluationService") public class EmergencyDrillEvaluationServiceImpl implements EmergencyDrillEvaluationService { @Autowired private EmergencyDrillEvaluationInfoService emergencyDrillEvaluationInfoService; @Autowired private EmergencyDrillEvaluationFileInfoService emergencyDrillEvaluationFileInfoService; @Autowired private EmergencyDrillEvaluationUserInfoService emergencyDrillEvaluationUserInfoService; @Autowired private EmergencyDrillPlanInfoService emergencyDrillPlanInfoService; @Override public SearchResultVO> selectEmergencyDrillEvaluationList(PageQuery query) { Long pageIndex = query.getPageIndex(); Long pageSize = query.getPageSize(); Page page = new Page<>(pageIndex, pageSize); EmergencyDrillEvaluationDBQuery emergencyDrillEvaluationDBQuery = new EmergencyDrillEvaluationDBQuery(); if (query.getSearchParams() != null) { BeanUtils.copyProperties(query.getSearchParams(), emergencyDrillEvaluationDBQuery); } List emergencyDrillEvaluationListDoInfoList = emergencyDrillEvaluationInfoService.selectEmergencyDrillEvaluationList(page, emergencyDrillEvaluationDBQuery); List respList = BeanCopyUtils.copyBeanList(emergencyDrillEvaluationListDoInfoList, EmergencyDrillEvaluationPageRespDTO.class); return new SearchResultVO<>( true, pageIndex, pageSize, page.getTotal(), respList, ResultCodes.OK ); } @Override public ResultVO addEmergencyDrillEvaluation(Long uid, EmergencyDrillEvaluationReqDTO emergencyDrillEvaluationReqDTO) { // 判断请求中是否存在演练计划id if (emergencyDrillEvaluationReqDTO.getDrillPlanId() == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NULL); } else { EmergencyDrillPlanInfoDetailDO emergencyDrillPlanInfoDetailDO = emergencyDrillPlanInfoService.selectEmergencyDrillPlanById(emergencyDrillEvaluationReqDTO.getDrillPlanId()); // 判断是否存在该演练计划 if (emergencyDrillPlanInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NOT_EXIST); } else { Date nowDate = new Date(); // 新增应急演练实施评价 EmergencyDrillEvaluationInfo emergencyDrillEvaluationInfo = new EmergencyDrillEvaluationInfo(); BeanUtils.copyProperties(emergencyDrillEvaluationReqDTO, emergencyDrillEvaluationInfo); emergencyDrillEvaluationInfo.setDelFlag(false); emergencyDrillEvaluationInfo.setCreateUid(uid); emergencyDrillEvaluationInfo.setGmtCreate(nowDate); emergencyDrillEvaluationInfoService.addEmergencyDrillEvaluation(emergencyDrillEvaluationInfo); // 新增急演练实施评价附件表 if (!CollectionUtils.isEmpty(emergencyDrillEvaluationReqDTO.getFileList())) { addEmergencyDrillEvaluationFile(uid, emergencyDrillEvaluationInfo.getId(), nowDate, emergencyDrillEvaluationReqDTO.getFileList()); } // 新增急演练计划应急人员表 if (!CollectionUtils.isEmpty(emergencyDrillEvaluationReqDTO.getUserList())) { addEmergencyDrillEvaluationUser(uid, emergencyDrillEvaluationInfo.getId(), nowDate, emergencyDrillEvaluationReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } } private void addEmergencyDrillEvaluationFile(Long uid, Long DrillEvaluationId, Date nowDate, List emergencyDrillEvaluationFileReqDTOList) { List emergencyDrillEvaluationFileInfoList = BeanCopyUtils.copyBeanList(emergencyDrillEvaluationFileReqDTOList, EmergencyDrillEvaluationFileInfo.class); emergencyDrillEvaluationFileInfoList.forEach(EmergencyDrillEvaluationFileInfo -> { EmergencyDrillEvaluationFileInfo.setDelFlag(false); EmergencyDrillEvaluationFileInfo.setCreateUid(uid); EmergencyDrillEvaluationFileInfo.setGmtCreate(nowDate); EmergencyDrillEvaluationFileInfo.setDrillEvaluationId(DrillEvaluationId); }); for (EmergencyDrillEvaluationFileInfo emergencyDrillEvaluationFileInfo : emergencyDrillEvaluationFileInfoList) { emergencyDrillEvaluationFileInfoService.addEmergencyDrillEvaluationFile(emergencyDrillEvaluationFileInfo); } } private void addEmergencyDrillEvaluationUser(Long uid, Long DrillEvaluationId, Date nowDate, List emergencyDrillEvaluationUserReqDTOList) { List emergencyDrillEvaluationUserInfoList = BeanCopyUtils.copyBeanList(emergencyDrillEvaluationUserReqDTOList, EmergencyDrillEvaluationUserInfo.class); emergencyDrillEvaluationUserInfoList.forEach(EmergencyDrillEvaluationUserInfo -> { EmergencyDrillEvaluationUserInfo.setDelFlag(false); EmergencyDrillEvaluationUserInfo.setCreateUid(uid); EmergencyDrillEvaluationUserInfo.setGmtCreate(nowDate); EmergencyDrillEvaluationUserInfo.setDrillEvaluationId(DrillEvaluationId); }); for (EmergencyDrillEvaluationUserInfo emergencyDrillEvaluationUserInfo : emergencyDrillEvaluationUserInfoList) { emergencyDrillEvaluationUserInfoService.addEmergencyDrillEvaluationUser(emergencyDrillEvaluationUserInfo); } } @Override public ResultVO getEmergencyDrillEvaluationById(Long id) { EmergencyDrillEvaluationDetailRespDTO emergencyDrillEvaluationDetailRespDTO = new EmergencyDrillEvaluationDetailRespDTO(); // 查询是否存在 EmergencyDrillEvaluationInfoDetailDO emergencyDrillEvaluationInfoDetailDO = emergencyDrillEvaluationInfoService.selectEmergencyDrillEvaluationById(id); if (emergencyDrillEvaluationInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EVALUATION_NOT_EXIST); } else { BeanUtils.copyProperties(emergencyDrillEvaluationInfoDetailDO, emergencyDrillEvaluationDetailRespDTO); // 查找对应的人员 List emergencyDrillEvaluationUserInfoDOList = emergencyDrillEvaluationUserInfoService.selectEmergencyDrillEvaluationUserByDrillEvaluationId(id); if (!CollectionUtils.isEmpty(emergencyDrillEvaluationUserInfoDOList)) { List emergencyUserUserRespDTOList = BeanCopyUtils.copyBeanList(emergencyDrillEvaluationUserInfoDOList, EmergencyDrillEvaluationUserRespDTO.class); emergencyDrillEvaluationDetailRespDTO.setUserList(emergencyUserUserRespDTOList); } // 查找对应的附件 List emergencyDrillEvaluationFileInfoDOList = emergencyDrillEvaluationFileInfoService.selectEmergencyDrillEvaluationFileByDrillEvaluationId(id); if (!CollectionUtils.isEmpty(emergencyDrillEvaluationFileInfoDOList)) { List emergencyUserFileRespDTOList = BeanCopyUtils.copyBeanList(emergencyDrillEvaluationFileInfoDOList, EmergencyDrillEvaluationFileRespDTO.class); emergencyDrillEvaluationDetailRespDTO.setFileList(emergencyUserFileRespDTOList); } return new ResultVO<>(ResultCodes.OK, emergencyDrillEvaluationDetailRespDTO); } } @Override public ResultVO updateEmergencyDrillEvaluation(Long uid, EmergencyDrillEvaluationReqDTO emergencyDrillEvaluationReqDTO) { Date nowDate = new Date(); // 查询是否存在 EmergencyDrillEvaluationInfoDetailDO emergencyDrillEvaluationInfoDetailDO = emergencyDrillEvaluationInfoService.selectEmergencyDrillEvaluationById(emergencyDrillEvaluationReqDTO.getId()); if (emergencyDrillEvaluationInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EVALUATION_NOT_EXIST); } else { EmergencyDrillEvaluationInfo emergencyDrillEvaluationInfo = new EmergencyDrillEvaluationInfo(); BeanUtils.copyProperties(emergencyDrillEvaluationReqDTO, emergencyDrillEvaluationInfo); emergencyDrillEvaluationInfo.setUpdateUid(uid); emergencyDrillEvaluationInfo.setGmtModitify(nowDate); emergencyDrillEvaluationInfoService.updateEmergencyDrillEvaluation(emergencyDrillEvaluationInfo); // 更新急演练计划附件表 if (!CollectionUtils.isEmpty(emergencyDrillEvaluationReqDTO.getFileList())) { updateEmergencyDrillEvaluationFile(uid, emergencyDrillEvaluationInfo.getId(), nowDate, emergencyDrillEvaluationReqDTO.getFileList()); } // 更新急演练计划应急队伍表 if (!CollectionUtils.isEmpty(emergencyDrillEvaluationReqDTO.getUserList())) { updateEmergencyDrillEvaluationUser(uid, emergencyDrillEvaluationInfo.getId(), nowDate, emergencyDrillEvaluationReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } private void updateEmergencyDrillEvaluationFile(Long uid, Long DrillEvaluationId, Date nowDate, List fileReqDTOList) { List emergencyDrillEvaluationFileInfoDOList = emergencyDrillEvaluationFileInfoService.selectEmergencyDrillEvaluationFileByDrillEvaluationId(DrillEvaluationId); List oldIdsList = emergencyDrillEvaluationFileInfoDOList.stream().map(EmergencyDrillEvaluationFileInfoDO::getId).collect(Collectors.toList()); List newIdsList = new ArrayList<>(); //新增的区域集合 List addList = new ArrayList<>(); //删除的区域集合(id) List deleteList = new ArrayList<>(); for (EmergencyDrillEvaluationFileReqDTO emergencyDrillEvaluationFileReqDTO : fileReqDTOList) { //如果不存在id则表示页面新增的附件 if (emergencyDrillEvaluationFileReqDTO.getId() == null) { EmergencyDrillEvaluationFileInfo emergencyDrillEvaluationFileInfo = new EmergencyDrillEvaluationFileInfo(); BeanUtils.copyProperties(emergencyDrillEvaluationFileReqDTO, emergencyDrillEvaluationFileInfo); emergencyDrillEvaluationFileInfo.setDelFlag(false); emergencyDrillEvaluationFileInfo.setGmtCreate(nowDate); emergencyDrillEvaluationFileInfo.setCreateUid(uid); emergencyDrillEvaluationFileInfo.setDrillEvaluationId(DrillEvaluationId); addList.add(emergencyDrillEvaluationFileInfo); } //如果存在id则判断页面是否删除 else { newIdsList.add(emergencyDrillEvaluationFileReqDTO.getId()); } } for (Long oldId : oldIdsList) { if (!newIdsList.contains(oldId)) { deleteList.add(oldId); } } if (!CollectionUtils.isEmpty(addList)) { for (EmergencyDrillEvaluationFileInfo emergencyDrillEvaluationFileInfo : addList) { emergencyDrillEvaluationFileInfoService.addEmergencyDrillEvaluationFile(emergencyDrillEvaluationFileInfo); } } if (!CollectionUtils.isEmpty(deleteList)) { emergencyDrillEvaluationFileInfoService.deleteEmergencyDrillEvaluationFileByIds(deleteList); } } private void updateEmergencyDrillEvaluationUser(Long uid, Long DrillEvaluationId, Date nowDate, List UserReqDTOList) { List emergencyDrillEvaluationUserInfoDOList = emergencyDrillEvaluationUserInfoService.selectEmergencyDrillEvaluationUserByDrillEvaluationId(DrillEvaluationId); List oldIdsList = emergencyDrillEvaluationUserInfoDOList.stream().map(EmergencyDrillEvaluationUserInfoDO::getId).collect(Collectors.toList()); List newIdsList = new ArrayList<>(); //新增的区域集合 List addList = new ArrayList<>(); //删除的区域集合(id) List deleteList = new ArrayList<>(); for (EmergencyDrillEvaluationUserReqDTO emergencyDrillEvaluationUserReqDTO : UserReqDTOList) { //如果不存在id则表示页面新增的附件 if (emergencyDrillEvaluationUserReqDTO.getId() == null) { EmergencyDrillEvaluationUserInfo emergencyDrillEvaluationUserInfo = new EmergencyDrillEvaluationUserInfo(); BeanUtils.copyProperties(emergencyDrillEvaluationUserReqDTO, emergencyDrillEvaluationUserInfo); emergencyDrillEvaluationUserInfo.setDelFlag(false); emergencyDrillEvaluationUserInfo.setGmtCreate(nowDate); emergencyDrillEvaluationUserInfo.setCreateUid(uid); emergencyDrillEvaluationUserInfo.setDrillEvaluationId(DrillEvaluationId); addList.add(emergencyDrillEvaluationUserInfo); } //如果存在id则判断页面是否删除 else { newIdsList.add(emergencyDrillEvaluationUserReqDTO.getId()); } } for (Long oldId : oldIdsList) { if (!newIdsList.contains(oldId)) { deleteList.add(oldId); } } if (!CollectionUtils.isEmpty(addList)) { for (EmergencyDrillEvaluationUserInfo emergencyDrillEvaluationUserInfo : addList) { emergencyDrillEvaluationUserInfoService.addEmergencyDrillEvaluationUser(emergencyDrillEvaluationUserInfo); } } if (!CollectionUtils.isEmpty(deleteList)) { emergencyDrillEvaluationUserInfoService.deleteEmergencyDrillEvaluationUserByIds(deleteList); } } @Override public ResultVO batchDeleteEmergencyDrillEvaluation(String ids) { if (StringUtils.isBlank(ids)) { throw new EmergencyException(EmergencyResultCodes.DRILL_EVALUATION_NULL); } else { String[] idArr = ids.split(","); for (String id : idArr) { deleteEmergencyDrillEvaluation(Long.valueOf(id)); } return new ResultVO(ResultCodes.OK); } } private void deleteEmergencyDrillEvaluation(Long id) { //查询是否存在 EmergencyDrillEvaluationInfoDetailDO emergencyDrillEvaluationInfoDetailDO = emergencyDrillEvaluationInfoService.selectEmergencyDrillEvaluationById(id); if (emergencyDrillEvaluationInfoDetailDO == null) { throw new EmergencyException(EmergencyResultCodes.DRILL_EVALUATION_NOT_EXIST); } else { Long DrillEvaluationId = emergencyDrillEvaluationInfoDetailDO.getId(); emergencyDrillEvaluationInfoService.deleteEmergencyDrillEvaluation(DrillEvaluationId); //删除附件 emergencyDrillEvaluationFileInfoService.deleteEmergencyDrillEvaluationFileByDrillEvaluationId(DrillEvaluationId); //删除应急队伍 emergencyDrillEvaluationUserInfoService.deleteEmergencyDrillEvaluationUserByDrillEvaluationId(DrillEvaluationId); } } }