From 37b0d2560607d1e0bfd5247a59a154704cac60f8 Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: 星期四, 07 十一月 2024 09:17:43 +0800
Subject: [PATCH] 修改暂存和详情暂时及列表数据处理

---
 src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 153 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java
index 02e1d60..548068d 100644
--- a/src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java
@@ -13,13 +13,12 @@
 import com.gkhy.labRiskManage.commons.exception.BusinessException;
 import com.gkhy.labRiskManage.commons.model.PageQuery;
 import com.gkhy.labRiskManage.commons.utils.BeanCopyUtils;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
 import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAssessLog;
 import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentInfo;
-import com.gkhy.labRiskManage.domain.experiment.enums.ExperimentStatusEnum;
-import com.gkhy.labRiskManage.domain.experiment.enums.ExperimentTagEnum;
+import com.gkhy.labRiskManage.domain.experiment.enums.*;
 import com.gkhy.labRiskManage.domain.experiment.model.bo.*;
-import com.gkhy.labRiskManage.domain.experiment.enums.HazardousWasteEnum;
-import com.gkhy.labRiskManage.domain.experiment.enums.TimeoutEnum;
+import com.gkhy.labRiskManage.domain.experiment.model.dto.ExperimentAndTypeDTO;
 import com.gkhy.labRiskManage.domain.experiment.model.dto.ExperimentInfoDTO;
 import com.gkhy.labRiskManage.domain.experiment.service.*;
 import com.gkhy.labRiskManage.domain.riskReport.entity.ReportRiskAssessInfo;
@@ -57,6 +56,8 @@
     private ExperimentAppConverter experimentAppConverter;
     @Autowired
     private ExperimentAssessLogService experimentAssessLogService;
+    @Autowired
+    private ExperimentAndTypeService experimentAndTypeService;
     @Transactional
     @Override
     public int save(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO) {
@@ -80,9 +81,14 @@
         if(!CollectionUtils.isEmpty(experimentInsertReqBO.getSiteList())){
             siteIds = experimentInsertReqBO.getSiteList().stream().map(ExperimentAndSiteInsertReqBO::getSiteId).collect(Collectors.toList());
         }
+        //实验类型中间表
+        List<Long> typeIds = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getTypeList())){
+            typeIds = experimentInsertReqBO.getTypeList().stream().map(ExperimentAndTypeInsertReqBO::getTypeId).collect(Collectors.toList());
+        }
         //危废中间表
         List<ExperimentHazardousWasteAppInsertBO> hazardousWasteInsertBOList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(experimentAppInsertBO.getHazardousWasteList())){
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getHazardousWasteList())){
             hazardousWasteInsertBOList = experimentAppConverter.getHazardousWasteInsertBOList(experimentInsertReqBO.getHazardousWasteList(),experimentInfoDTO.getId());
         }
         //应急演练
@@ -90,10 +96,14 @@
         if(!CollectionUtils.isEmpty(experimentInsertReqBO.getEmergencyList())){
             experimentAndEmergencyAppInsertBOList = experimentAppConverter.getExperimentAndEmergencyAppInsertBOList(experimentInsertReqBO.getEmergencyList(), experimentInfoDTO.getId());
         }
+        // 暂存清空了之前绑定数据
+        dealDelete(experimentInfoDTO.getId(),currentUserId);
+
         experimentAndDeviceService.saveBatch(currentUserId,deviceAppInsertBOList);
         experimentAndStuffService.saveBatch(currentUserId,stuffInsertBOList);
         experimentAndPersonService.saveBatch(currentUserId,personIds,experimentInfoDTO.getId());
         experimentAndSiteService.saveBatch(currentUserId, siteIds, experimentInfoDTO.getId());
+        experimentAndTypeService.saveBatch(currentUserId, typeIds, experimentInfoDTO.getId());
         experimentHazardousWasteService.saveBatch(currentUserId,hazardousWasteInsertBOList);
         experimentAndEmergencyService.saveBatch(currentUserId,experimentAndEmergencyAppInsertBOList);
         Integer code = StatusEnum.SUCCESS.getCode();
@@ -102,6 +112,31 @@
         }
         return code;
     }
+
+    @Override
+    @Transactional
+    public int temporary(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO) {
+
+//        if(ExperimentStagingEnum.SAVE.getValue().equals(experimentInsertReqBO.getStagingTag())){
+//            throw new BusinessException(this.getClass(),ResultCode.PARAM_ERROR_NULL.getCode(),"已保存数据不可操作暂存!");
+//        }
+
+        //实验基础信息
+        ExperimentAppInsertBO experimentAppInsertBO = new ExperimentAppInsertBO();
+        BeanUtils.copyProperties(experimentInsertReqBO,experimentAppInsertBO);
+        ExperimentInfoDTO experimentInfoDTO = experimentInfoService.temporary(currentUserId,experimentAppInsertBO);
+
+        //删除业务数据
+        dealDelete(experimentInfoDTO.getId(),currentUserId);
+        temporary(currentUserId,experimentInsertReqBO,experimentInfoDTO.getId(),experimentAppInsertBO);
+
+        Integer code = StatusEnum.SUCCESS.getCode();
+        if(ObjectUtils.isEmpty(experimentInfoDTO)){
+            code = StatusEnum.FAIL.getCode();
+        }
+        return code;
+    }
+
     @Transactional
     @Override
     public int developSave(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO) {
@@ -126,7 +161,7 @@
         }
         //危废中间表
         List<ExperimentHazardousWasteAppInsertBO> hazardousWasteInsertBOList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(experimentAppInsertBO.getHazardousWasteList())){
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getHazardousWasteList())){
             hazardousWasteInsertBOList = experimentAppConverter.getHazardousWasteInsertBOList(experimentInsertReqBO.getHazardousWasteList(),experimentInfoDTO.getId());
         }
         //应急演练
@@ -134,11 +169,20 @@
         if(!CollectionUtils.isEmpty(experimentInsertReqBO.getEmergencyList())){
             experimentAndEmergencyAppInsertBOList = experimentAppConverter.getExperimentAndEmergencyAppInsertBOList(experimentInsertReqBO.getEmergencyList(), experimentInfoDTO.getId());
         }
+        //实验类型中间表
+        List<Long> typeIds = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getTypeList())){
+            typeIds = experimentInsertReqBO.getTypeList().stream().map(ExperimentAndTypeInsertReqBO::getTypeId).collect(Collectors.toList());
+        }
+
+        // 暂存清空了之前绑定数据
+        dealDelete(experimentInfoDTO.getId(),currentUserId);
 
         experimentAndDeviceService.saveBatch(currentUserId,deviceAppInsertBOList);
         experimentAndStuffService.saveBatch(currentUserId,stuffInsertBOList);
         experimentAndPersonService.saveBatch(currentUserId,personIds,experimentInfoDTO.getId());
         experimentAndSiteService.saveBatch(currentUserId, siteIds, experimentInfoDTO.getId());
+        experimentAndTypeService.saveBatch(currentUserId, typeIds, experimentInfoDTO.getId());
         experimentHazardousWasteService.saveBatch(currentUserId,hazardousWasteInsertBOList);
         experimentAndEmergencyService.saveBatch(currentUserId,experimentAndEmergencyAppInsertBOList);
         Integer code = StatusEnum.SUCCESS.getCode();
@@ -146,6 +190,88 @@
             code = StatusEnum.FAIL.getCode();
         }
         return code;
+    }
+
+    @Override
+    @Transactional
+    public int developTemporary(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO) {
+        //实验基础信息
+        ExperimentAppInsertBO experimentAppInsertBO = new ExperimentAppInsertBO();
+        BeanUtils.copyProperties(experimentInsertReqBO,experimentAppInsertBO);
+        ExperimentInfoDTO experimentInfoDTO = experimentInfoService.developTemporary(currentUserId,experimentAppInsertBO);
+        //处理中间表数据
+        dealDelete(experimentInfoDTO.getId(),currentUserId);
+
+        temporary(currentUserId,experimentInsertReqBO,experimentInfoDTO.getId(),experimentAppInsertBO);
+
+
+        Integer code = StatusEnum.SUCCESS.getCode();
+        if(ObjectUtils.isEmpty(experimentInfoDTO)){
+            code = StatusEnum.FAIL.getCode();
+        }
+        return code;
+    }
+
+
+    /**
+     * 处理删除
+     * @param id
+     * @param currentUserId
+     */
+    private void dealDelete(Long id ,Long currentUserId){
+        experimentAndTypeService.deleteByExperimentId(id);
+        experimentAndDeviceService.deleteByExperimentId(id,currentUserId);
+        experimentHazardousWasteService.deleteByExperimentId(id,currentUserId);
+        experimentAndPersonService.deleteByExperimentId(id,currentUserId);
+        experimentAndStuffService.deleteByExperimentId(id,currentUserId);
+        experimentAndSiteService.deleteByExperimentId(id);
+        experimentAndEmergencyService.deleteByExperimentId(id);
+    }
+
+    /**
+     * 处理中间表数据
+     * @param currentUserId
+     * @param experimentInsertReqBO
+     * @param experimentAppInsertBO
+     */
+    private void temporary(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO,Long id ,ExperimentAppInsertBO experimentAppInsertBO) {
+        if (!CollectionUtils.isEmpty(experimentInsertReqBO.getDeviceList())){
+            //设备中间表
+            List<ExperimentAndDeviceAppInsertBO> deviceAppInsertBOList = experimentAppConverter.getDeviceInsertBOList(experimentInsertReqBO.getDeviceList(),id);
+            experimentAndDeviceService.saveBatch(currentUserId,deviceAppInsertBOList);
+        }
+
+        if (!CollectionUtils.isEmpty(experimentInsertReqBO.getStuffList())) {
+            //材料中间表
+            List<ExperimentAndStuffAppInsertBO> stuffInsertBOList = experimentAppConverter.getStuffInsertBOList(experimentInsertReqBO.getStuffList(), id);
+            experimentAndStuffService.saveBatch(currentUserId,stuffInsertBOList);
+        }
+        //实验人员
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getPersons())){
+            List<Long> personIds =  experimentInsertReqBO.getPersons().stream().map(ExperimentAndPersonInsertReqBO::getPersonId).collect(Collectors.toList());
+            experimentAndPersonService.saveBatch(currentUserId,personIds,id);
+        }
+        //实验地点中间表
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getSiteList())){
+            List<Long> siteIds = experimentInsertReqBO.getSiteList().stream().map(ExperimentAndSiteInsertReqBO::getSiteId).collect(Collectors.toList());
+            experimentAndSiteService.saveBatch(currentUserId, siteIds, id);
+        }
+        //实验类型中间表
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getTypeList())){
+            List<Long> typeIds = experimentInsertReqBO.getTypeList().stream().map(ExperimentAndTypeInsertReqBO::getTypeId).collect(Collectors.toList());
+            experimentAndTypeService.saveBatch(currentUserId, typeIds, id);
+        }
+        //危废中间表
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getHazardousWasteList())){
+            List<ExperimentHazardousWasteAppInsertBO> hazardousWasteInsertBOList = experimentAppConverter.getHazardousWasteInsertBOList(experimentInsertReqBO.getHazardousWasteList(),id);
+            experimentHazardousWasteService.saveBatch(currentUserId,hazardousWasteInsertBOList);
+        }
+        //应急演练
+        if(!CollectionUtils.isEmpty(experimentInsertReqBO.getEmergencyList())){
+            List<ExperimentAndEmergencyAppInsertBO> experimentAndEmergencyAppInsertBOList = experimentAppConverter.getExperimentAndEmergencyAppInsertBOList(experimentInsertReqBO.getEmergencyList(), id);
+            experimentAndEmergencyService.saveBatch(currentUserId,experimentAndEmergencyAppInsertBOList);
+        }
+
     }
     @Transactional
     @Override
@@ -189,6 +315,11 @@
                 experimentInfo.setAssessLevel(byExperimentId.getAssessLevel());
                 experimentInfo.setAssessTime(byExperimentId.getAssessTime());
             }
+            List<ExperimentAndTypeDTO> types = experimentInfo.getTypes();
+            if (!CollectionUtils.isEmpty(types)){
+                String collect = types.stream().map(type -> type.getTypeName()).collect(Collectors.joining(","));
+                experimentInfo.setExperimentTypeName(collect);
+            }
         }
 
         result.setData(experimentInfoAppQueryDTOS);
@@ -206,6 +337,7 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public int deleteById(Long id, Long currentUserId) {
+
         experimentInfoService.deleteById(id,currentUserId);
         experimentAndDeviceService.deleteByExperimentId(id,currentUserId);
         experimentHazardousWasteService.deleteByExperimentId(id,currentUserId);
@@ -213,6 +345,7 @@
         experimentAndStuffService.deleteByExperimentId(id,currentUserId);
         experimentAndSiteService.deleteByExperimentId(id);
         experimentAndEmergencyService.deleteByExperimentId(id);
+        experimentAndTypeService.deleteByExperimentId(id);
         return StatusEnum.SUCCESS.getCode();
     }
 
@@ -275,7 +408,8 @@
             BeanUtils.copyProperties(searchResult,result);
         }
         List<ExperimentInfoDTO> experimentInfoDTOS = (List<ExperimentInfoDTO>)searchResult.getData();
-        List<ExperimentInfoAppQueryDTO> experimentInfoAppQueryDTOS = BeanCopyUtils.copyBeanList(experimentInfoDTOS, ExperimentInfoAppQueryDTO.class);
+
+        List<ExperimentInfoAppQueryDTO> experimentInfoAppQueryDTOS = BeanCopyUtils.list2OtherList(experimentInfoDTOS, ExperimentInfoAppQueryDTO.class);
 
         for (ExperimentInfoAppQueryDTO experimentInfo : experimentInfoAppQueryDTOS) {
             List<ExperimentAssessLog> assessLogs = experimentAssessLogService.getAssessLogs(experimentInfo.getExperimentCode());
@@ -287,6 +421,12 @@
                 experimentInfo.setAssessLevel(byExperimentId.getAssessLevel());
                 experimentInfo.setAssessTime(byExperimentId.getAssessTime());
             }
+            List<ExperimentAndTypeDTO> types = experimentInfo.getTypes();
+            if (!CollectionUtils.isEmpty(types)){
+                String collect = types.stream().map(type -> type.getTypeName()).collect(Collectors.joining(","));
+                experimentInfo.setExperimentTypeName(collect);
+            }
+
         }
 
         result.setData(experimentInfoAppQueryDTOS);
@@ -311,7 +451,7 @@
             BeanUtils.copyProperties(searchResult,result);
         }
         List<ExperimentInfoDTO> experimentInfoDTOS = (List<ExperimentInfoDTO>)searchResult.getData();
-        List<ExperimentInfoAppQueryDTO> experimentInfoAppQueryDTOS = BeanCopyUtils.copyBeanList(experimentInfoDTOS, ExperimentInfoAppQueryDTO.class);
+        List<ExperimentInfoAppQueryDTO> experimentInfoAppQueryDTOS = BeanCopyUtils.list2OtherList(experimentInfoDTOS, ExperimentInfoAppQueryDTO.class);
 
         for (ExperimentInfoAppQueryDTO experimentInfo : experimentInfoAppQueryDTOS) {
             List<ExperimentAssessLog> assessLogs = experimentAssessLogService.getAssessLogs(experimentInfo.getExperimentCode());
@@ -323,6 +463,11 @@
                 experimentInfo.setAssessLevel(byExperimentId.getAssessLevel());
                 experimentInfo.setAssessTime(byExperimentId.getAssessTime());
             }
+            List<ExperimentAndTypeDTO> types = experimentInfo.getTypes();
+            if (!CollectionUtils.isEmpty(types)){
+                String collect = types.stream().map(type -> type.getTypeName()).collect(Collectors.joining(","));
+                experimentInfo.setExperimentTypeName(collect);
+            }
         }
 
         result.setData(experimentInfoAppQueryDTOS);

--
Gitblit v1.9.2