From 404093ca6bf6d521631b863aae92ea4ebc333bb3 Mon Sep 17 00:00:00 2001
From: songhuangfeng123 <shf18767906695@163.com>
Date: 星期五, 08 七月 2022 17:10:00 +0800
Subject: [PATCH] 应急预案修改 删除

---
 emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyPlanServiceImpl.java |  327 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 286 insertions(+), 41 deletions(-)

diff --git a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyPlanServiceImpl.java b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyPlanServiceImpl.java
index 2a3b615..5aad17f 100644
--- a/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyPlanServiceImpl.java
+++ b/emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyPlanServiceImpl.java
@@ -4,13 +4,14 @@
 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.EmergencyPlanStatus;
 import com.gkhy.safePlatform.emergency.enums.EmergencyResultCodes;
 import com.gkhy.safePlatform.emergency.excepiton.EmergencyException;
-import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyPlanReqDTO;
+import com.gkhy.safePlatform.emergency.model.dto.req.*;
 import com.gkhy.safePlatform.emergency.model.dto.resp.*;
 import com.gkhy.safePlatform.emergency.query.EmergencyPlanQuery;
 import com.gkhy.safePlatform.emergency.query.db.EmergencyPlanDBQuery;
@@ -21,8 +22,10 @@
 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("emergencyPlanService")
 public class EmergencyPlanServiceImpl implements EmergencyPlanService {
@@ -78,58 +81,74 @@
         emergencyPlanInfoService.addEmergencyPlan(emergencyPlanInfo);
         // 新增应急预案区域表
         if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getAreaList())){
-            List<EmergencyPlanAreaInfo> emergencyPlanAreaInfoList = BeanCopyUtils.copyBeanList(emergencyPlanReqDTO.getAreaList(),EmergencyPlanAreaInfo.class);
-            emergencyPlanAreaInfoList.forEach(EmergencyPlanAreaInfo->{
-                EmergencyPlanAreaInfo.setDelFlag(false);
-                EmergencyPlanAreaInfo.setCreateUid(uid);
-                EmergencyPlanAreaInfo.setGmtCreate(nowDate);
-                EmergencyPlanAreaInfo.setPlanId(emergencyPlanInfo.getId());
-            });
-            for (EmergencyPlanAreaInfo emergencyPlanAreaInfo : emergencyPlanAreaInfoList){
-                emergencyPlanAreaInfoService.addEmergencyPlanArea(emergencyPlanAreaInfo);
-            }
+            addEmergencyPlanArea(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getAreaList());
         }
         // 新增应急预案适用部门表
         if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getDeptList())){
-            List<EmergencyPlanDepartmentInfo> emergencyPlanDepartmentInfoList = BeanCopyUtils.copyBeanList(emergencyPlanReqDTO.getDeptList(),EmergencyPlanDepartmentInfo.class);
-            emergencyPlanDepartmentInfoList.forEach(EmergencyPlanDepartmentInfo->{
-                EmergencyPlanDepartmentInfo.setDelFlag(false);
-                EmergencyPlanDepartmentInfo.setCreateUid(uid);
-                EmergencyPlanDepartmentInfo.setGmtCreate(nowDate);
-                EmergencyPlanDepartmentInfo.setPlanId(emergencyPlanInfo.getId());
-            });
-            for (EmergencyPlanDepartmentInfo emergencyPlanDepartmentInfo : emergencyPlanDepartmentInfoList){
-                emergencyPlanDepartmentInfoService.addEmergencyPlanDepartment(emergencyPlanDepartmentInfo);
-            }
+            addEmergencyPlanDepartment(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getDeptList());
         }
         // 新增应急预案附件表
         if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getFileList())){
-            List<EmergencyPlanFileInfo> emergencyPlanFileInfoList = BeanCopyUtils.copyBeanList(emergencyPlanReqDTO.getFileList(),EmergencyPlanFileInfo.class);
-            emergencyPlanFileInfoList.forEach(EmergencyPlanFileInfo->{
-                EmergencyPlanFileInfo.setDelFlag(false);
-                EmergencyPlanFileInfo.setCreateUid(uid);
-                EmergencyPlanFileInfo.setGmtCreate(nowDate);
-                EmergencyPlanFileInfo.setPlanId(emergencyPlanInfo.getId());
-            });
-            for (EmergencyPlanFileInfo emergencyPlanFileInfo : emergencyPlanFileInfoList){
-                emergencyPlanFileInfoService.addEmergencyPlanFile(emergencyPlanFileInfo);
-            }
+            addEmergencyPlanFile(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getFileList());
         }
         // 新增应急预案应急队伍表
         if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getTeamList())){
-            List<EmergencyPlanTeamInfo> emergencyPlanTeamInfoList = BeanCopyUtils.copyBeanList(emergencyPlanReqDTO.getTeamList(),EmergencyPlanTeamInfo.class);
-            emergencyPlanTeamInfoList.forEach(EmergencyPlanTeamInfo->{
-                EmergencyPlanTeamInfo.setDelFlag(false);
-                EmergencyPlanTeamInfo.setCreateUid(uid);
-                EmergencyPlanTeamInfo.setGmtCreate(nowDate);
-                EmergencyPlanTeamInfo.setPlanId(emergencyPlanInfo.getId());
-            });
-            for (EmergencyPlanTeamInfo emergencyPlanTeamInfo : emergencyPlanTeamInfoList){
-                emergencyPlanTeamInfoService.addEmergencyPlanTeam(emergencyPlanTeamInfo);
-            }
+            addEmergencyPlanTeam(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getTeamList());
         }
 
         return new ResultVO<>(ResultCodes.OK);
+    }
+
+    private void addEmergencyPlanArea(Long uid,Long planId, Date nowDate,List<EmergencyPlanAreaReqDTO> emergencyPlanAreaReqDTOList){
+        List<EmergencyPlanAreaInfo> emergencyPlanAreaInfoList = BeanCopyUtils.copyBeanList(emergencyPlanAreaReqDTOList,EmergencyPlanAreaInfo.class);
+        emergencyPlanAreaInfoList.forEach(EmergencyPlanAreaInfo->{
+            EmergencyPlanAreaInfo.setDelFlag(false);
+            EmergencyPlanAreaInfo.setCreateUid(uid);
+            EmergencyPlanAreaInfo.setGmtCreate(nowDate);
+            EmergencyPlanAreaInfo.setPlanId(planId);
+        });
+        for (EmergencyPlanAreaInfo emergencyPlanAreaInfo : emergencyPlanAreaInfoList){
+            emergencyPlanAreaInfoService.addEmergencyPlanArea(emergencyPlanAreaInfo);
+        }
+    }
+
+    private void addEmergencyPlanDepartment(Long uid,Long planId, Date nowDate,List<EmergencyPlanDepartmentReqDTO> emergencyPlanDepartmentReqDTOList){
+        List<EmergencyPlanDepartmentInfo> emergencyPlanDepartmentInfoList = BeanCopyUtils.copyBeanList(emergencyPlanDepartmentReqDTOList,EmergencyPlanDepartmentInfo.class);
+        emergencyPlanDepartmentInfoList.forEach(EmergencyPlanDepartmentInfo->{
+            EmergencyPlanDepartmentInfo.setDelFlag(false);
+            EmergencyPlanDepartmentInfo.setCreateUid(uid);
+            EmergencyPlanDepartmentInfo.setGmtCreate(nowDate);
+            EmergencyPlanDepartmentInfo.setPlanId(planId);
+        });
+        for (EmergencyPlanDepartmentInfo emergencyPlanDepartmentInfo : emergencyPlanDepartmentInfoList){
+            emergencyPlanDepartmentInfoService.addEmergencyPlanDepartment(emergencyPlanDepartmentInfo);
+        }
+    }
+
+    private void addEmergencyPlanFile(Long uid,Long planId, Date nowDate,List<EmergencyPlanFileReqDTO> emergencyPlanFileReqDTOList){
+        List<EmergencyPlanFileInfo> emergencyPlanFileInfoList = BeanCopyUtils.copyBeanList(emergencyPlanFileReqDTOList,EmergencyPlanFileInfo.class);
+        emergencyPlanFileInfoList.forEach(EmergencyPlanFileInfo->{
+            EmergencyPlanFileInfo.setDelFlag(false);
+            EmergencyPlanFileInfo.setCreateUid(uid);
+            EmergencyPlanFileInfo.setGmtCreate(nowDate);
+            EmergencyPlanFileInfo.setPlanId(planId);
+        });
+        for (EmergencyPlanFileInfo emergencyPlanFileInfo : emergencyPlanFileInfoList){
+            emergencyPlanFileInfoService.addEmergencyPlanFile(emergencyPlanFileInfo);
+        }
+    }
+
+    private void addEmergencyPlanTeam(Long uid,Long planId, Date nowDate,List<EmergencyPlanTeamReqDTO> emergencyPlanTeamReqDTOList){
+        List<EmergencyPlanTeamInfo> emergencyPlanTeamInfoList = BeanCopyUtils.copyBeanList(emergencyPlanTeamReqDTOList,EmergencyPlanTeamInfo.class);
+        emergencyPlanTeamInfoList.forEach(EmergencyPlanTeamInfo->{
+            EmergencyPlanTeamInfo.setDelFlag(false);
+            EmergencyPlanTeamInfo.setCreateUid(uid);
+            EmergencyPlanTeamInfo.setGmtCreate(nowDate);
+            EmergencyPlanTeamInfo.setPlanId(planId);
+        });
+        for (EmergencyPlanTeamInfo emergencyPlanTeamInfo : emergencyPlanTeamInfoList){
+            emergencyPlanTeamInfoService.addEmergencyPlanTeam(emergencyPlanTeamInfo);
+        }
     }
 
     @Override
@@ -169,4 +188,230 @@
             return new ResultVO<>(ResultCodes.OK,emergencyPlanDetailRespDTO);
         }
     }
+
+    @Override
+    public ResultVO updateEmergencyPlan(Long uid, EmergencyPlanReqDTO emergencyPlanReqDTO) {
+        Date nowDate = new Date();
+        // 查询是否存在
+        EmergencyPlanInfoDetailDO emergencyPlanInfoDetailDO = emergencyPlanInfoService.selectEmergencyPlanById(emergencyPlanReqDTO.getId());
+        if (emergencyPlanInfoDetailDO==null){
+            throw new EmergencyException(EmergencyResultCodes.PLAN_NOT_EXIST);
+        }else{
+            EmergencyPlanInfo emergencyPlanInfo = new EmergencyPlanInfo();
+            BeanUtils.copyProperties(emergencyPlanReqDTO,emergencyPlanInfo);
+            emergencyPlanInfo.setUpdateUid(uid);
+            emergencyPlanInfo.setGmtModitify(new Date());
+            emergencyPlanInfoService.updateEmergencyPlan(emergencyPlanInfo);
+
+            // 更新应急预案区域表
+            if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getAreaList())){
+                updateEmergencyPlanArea(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getAreaList());
+            }
+            // 更新应急预案适用部门表
+            if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getDeptList())){
+                updateEmergencyPlanDepartment(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getDeptList());
+            }
+            // 更新应急预案附件表
+            if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getFileList())){
+                updateEmergencyPlanFile(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getFileList());
+            }
+            // 更新应急预案应急队伍表
+            if (!CollectionUtils.isEmpty(emergencyPlanReqDTO.getTeamList())){
+                updateEmergencyPlanTeam(uid,emergencyPlanInfo.getId(),nowDate,emergencyPlanReqDTO.getTeamList());
+            }
+
+            return new ResultVO<>(ResultCodes.OK);
+        }
+    }
+
+    private void updateEmergencyPlanArea(Long uid, Long planId, Date nowDate, List<EmergencyPlanAreaReqDTO> areaReqDTOList) {
+        List<EmergencyPlanAreaInfoDO> emergencyPlanAreaInfoDOList = emergencyPlanAreaInfoService.selectEmergencyPlanAreaByPlanId(planId);
+        List<Long> oldIdsList = emergencyPlanAreaInfoDOList.stream().map(EmergencyPlanAreaInfoDO::getId).collect(Collectors.toList());
+        List<Long> newIdsList = new ArrayList<>();
+
+        //新增的区域集合
+        List<EmergencyPlanAreaInfo> addList = new ArrayList<>();
+        //删除的区域集合(id)
+        List<Long> deleteList = new ArrayList<>();
+        for (EmergencyPlanAreaReqDTO emergencyPlanAreaReqDTO : areaReqDTOList){
+            //如果不存在id则表示页面新增的附件
+            if (emergencyPlanAreaReqDTO.getId() == null){
+                EmergencyPlanAreaInfo emergencyPlanAreaInfo = new EmergencyPlanAreaInfo();
+                BeanUtils.copyProperties(emergencyPlanAreaReqDTO,emergencyPlanAreaInfo);
+                emergencyPlanAreaInfo.setDelFlag(false);
+                emergencyPlanAreaInfo.setGmtCreate(nowDate);
+                emergencyPlanAreaInfo.setCreateUid(uid);
+                emergencyPlanAreaInfo.setPlanId(planId);
+                addList.add(emergencyPlanAreaInfo);
+            }
+            //如果存在id则判断页面是否删除
+            else{
+                newIdsList.add(emergencyPlanAreaReqDTO.getId());
+            }
+        }
+        for (Long oldId : oldIdsList){
+            if (!newIdsList.contains(oldId)){
+                deleteList.add(oldId);
+            }
+        }
+        if (!CollectionUtils.isEmpty(addList)){
+            for (EmergencyPlanAreaInfo emergencyPlanAreaInfo : addList){
+                emergencyPlanAreaInfoService.addEmergencyPlanArea(emergencyPlanAreaInfo);
+            }
+        }
+        if (!CollectionUtils.isEmpty(deleteList)){
+            emergencyPlanAreaInfoService.deleteEmergencyPlanAreaByIds(deleteList);
+        }
+    }
+
+    private void updateEmergencyPlanDepartment(Long uid, Long planId, Date nowDate, List<EmergencyPlanDepartmentReqDTO> departmentReqDTOList) {
+        List<EmergencyPlanDepartmentInfoDO> emergencyPlanDepartmentInfoDOList = emergencyPlanDepartmentInfoService.selectEmergencyPlanDepartmentByPlanId(planId);
+        List<Long> oldIdsList = emergencyPlanDepartmentInfoDOList.stream().map(EmergencyPlanDepartmentInfoDO::getId).collect(Collectors.toList());
+        List<Long> newIdsList = new ArrayList<>();
+
+        //新增的区域集合
+        List<EmergencyPlanDepartmentInfo> addList = new ArrayList<>();
+        //删除的区域集合(id)
+        List<Long> deleteList = new ArrayList<>();
+        for (EmergencyPlanDepartmentReqDTO emergencyPlanDepartmentReqDTO : departmentReqDTOList){
+            //如果不存在id则表示页面新增的附件
+            if (emergencyPlanDepartmentReqDTO.getId() == null){
+                EmergencyPlanDepartmentInfo emergencyPlanDepartmentInfo = new EmergencyPlanDepartmentInfo();
+                BeanUtils.copyProperties(emergencyPlanDepartmentReqDTO,emergencyPlanDepartmentInfo);
+                emergencyPlanDepartmentInfo.setDelFlag(false);
+                emergencyPlanDepartmentInfo.setGmtCreate(nowDate);
+                emergencyPlanDepartmentInfo.setCreateUid(uid);
+                emergencyPlanDepartmentInfo.setPlanId(planId);
+                addList.add(emergencyPlanDepartmentInfo);
+            }
+            //如果存在id则判断页面是否删除
+            else{
+                newIdsList.add(emergencyPlanDepartmentReqDTO.getId());
+            }
+        }
+        for (Long oldId : oldIdsList){
+            if (!newIdsList.contains(oldId)){
+                deleteList.add(oldId);
+            }
+        }
+        if (!CollectionUtils.isEmpty(addList)){
+            for (EmergencyPlanDepartmentInfo emergencyPlanDepartmentInfo : addList){
+                emergencyPlanDepartmentInfoService.addEmergencyPlanDepartment(emergencyPlanDepartmentInfo);
+            }
+        }
+        if (!CollectionUtils.isEmpty(deleteList)){
+            emergencyPlanDepartmentInfoService.deleteEmergencyPlanDepartmentByIds(deleteList);
+        }
+    }
+
+    private void updateEmergencyPlanFile(Long uid, Long planId, Date nowDate, List<EmergencyPlanFileReqDTO> fileReqDTOList) {
+        List<EmergencyPlanFileInfoDO> emergencyPlanFileInfoDOList = emergencyPlanFileInfoService.selectEmergencyPlanFileByPlanId(planId);
+        List<Long> oldIdsList = emergencyPlanFileInfoDOList.stream().map(EmergencyPlanFileInfoDO::getId).collect(Collectors.toList());
+        List<Long> newIdsList = new ArrayList<>();
+
+        //新增的区域集合
+        List<EmergencyPlanFileInfo> addList = new ArrayList<>();
+        //删除的区域集合(id)
+        List<Long> deleteList = new ArrayList<>();
+        for (EmergencyPlanFileReqDTO emergencyPlanFileReqDTO : fileReqDTOList){
+            //如果不存在id则表示页面新增的附件
+            if (emergencyPlanFileReqDTO.getId() == null){
+                EmergencyPlanFileInfo emergencyPlanFileInfo = new EmergencyPlanFileInfo();
+                BeanUtils.copyProperties(emergencyPlanFileReqDTO,emergencyPlanFileInfo);
+                emergencyPlanFileInfo.setDelFlag(false);
+                emergencyPlanFileInfo.setGmtCreate(nowDate);
+                emergencyPlanFileInfo.setCreateUid(uid);
+                emergencyPlanFileInfo.setPlanId(planId);
+                addList.add(emergencyPlanFileInfo);
+            }
+            //如果存在id则判断页面是否删除
+            else{
+                newIdsList.add(emergencyPlanFileReqDTO.getId());
+            }
+        }
+        for (Long oldId : oldIdsList){
+            if (!newIdsList.contains(oldId)){
+                deleteList.add(oldId);
+            }
+        }
+        if (!CollectionUtils.isEmpty(addList)){
+            for (EmergencyPlanFileInfo emergencyPlanFileInfo : addList){
+                emergencyPlanFileInfoService.addEmergencyPlanFile(emergencyPlanFileInfo);
+            }
+        }
+        if (!CollectionUtils.isEmpty(deleteList)){
+            emergencyPlanFileInfoService.deleteEmergencyPlanFileByIds(deleteList);
+        }
+    }
+
+    private void updateEmergencyPlanTeam(Long uid, Long planId, Date nowDate, List<EmergencyPlanTeamReqDTO> teamReqDTOList) {
+        List<EmergencyPlanTeamInfoDO> emergencyPlanTeamInfoDOList = emergencyPlanTeamInfoService.selectEmergencyPlanTeamByPlanId(planId);
+        List<Long> oldIdsList = emergencyPlanTeamInfoDOList.stream().map(EmergencyPlanTeamInfoDO::getId).collect(Collectors.toList());
+        List<Long> newIdsList = new ArrayList<>();
+
+        //新增的区域集合
+        List<EmergencyPlanTeamInfo> addList = new ArrayList<>();
+        //删除的区域集合(id)
+        List<Long> deleteList = new ArrayList<>();
+        for (EmergencyPlanTeamReqDTO emergencyPlanTeamReqDTO : teamReqDTOList){
+            //如果不存在id则表示页面新增的附件
+            if (emergencyPlanTeamReqDTO.getId() == null){
+                EmergencyPlanTeamInfo emergencyPlanTeamInfo = new EmergencyPlanTeamInfo();
+                BeanUtils.copyProperties(emergencyPlanTeamReqDTO,emergencyPlanTeamInfo);
+                emergencyPlanTeamInfo.setDelFlag(false);
+                emergencyPlanTeamInfo.setGmtCreate(nowDate);
+                emergencyPlanTeamInfo.setCreateUid(uid);
+                emergencyPlanTeamInfo.setPlanId(planId);
+                addList.add(emergencyPlanTeamInfo);
+            }
+            //如果存在id则判断页面是否删除
+            else{
+                newIdsList.add(emergencyPlanTeamReqDTO.getId());
+            }
+        }
+        for (Long oldId : oldIdsList){
+            if (!newIdsList.contains(oldId)){
+                deleteList.add(oldId);
+            }
+        }
+        if (!CollectionUtils.isEmpty(addList)){
+            for (EmergencyPlanTeamInfo emergencyPlanTeamInfo : addList){
+                emergencyPlanTeamInfoService.addEmergencyPlanTeam(emergencyPlanTeamInfo);
+            }
+        }
+        if (!CollectionUtils.isEmpty(deleteList)){
+            emergencyPlanTeamInfoService.deleteEmergencyPlanTeamByIds(deleteList);
+        }
+    }
+
+    @Override
+    public ResultVO batchDeleteEmergencyPlan(String ids) {
+        if (StringUtils.isBlank(ids)) {
+            throw new EmergencyException(EmergencyResultCodes.PLAN_NOT_EXIST);
+        } else {
+            String[] idArr = ids.split(",");
+            for (String id : idArr) {
+                deleteEmergencyPlan(Long.valueOf(id));
+            }
+            return new ResultVO(ResultCodes.OK);
+        }
+    }
+
+    private void deleteEmergencyPlan(Long id) {
+        //查询是否存在
+        EmergencyPlanInfoDetailDO emergencyPlanInfoDetailDO = emergencyPlanInfoService.selectEmergencyPlanById(id);
+        if (emergencyPlanInfoDetailDO==null){
+            throw new EmergencyException(EmergencyResultCodes.PLAN_NOT_EXIST);
+        }else{
+            Long PlanId = emergencyPlanInfoDetailDO.getId();
+            //删除区域
+            emergencyPlanAreaInfoService.deleteEmergencyPlanAreaByPlanId(PlanId);
+            //删除适用部门
+            emergencyPlanDepartmentInfoService.deleteEmergencyPlanDepartmentByPlanId(PlanId);
+            //删除附件
+            emergencyPlanFileInfoService.deleteEmergencyPlanFileByPlanId(PlanId);
+            //删除应急队伍
+            emergencyPlanTeamInfoService.deleteEmergencyPlanTeamByPlanId(PlanId);
+        }
+    }
 }

--
Gitblit v1.9.2