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/dto/dto/ExperimentInfoAppQueryDTO.java         |   29 +
 src/main/java/com/gkhy/labRiskManage/domain/experiment/converter/ExperimentInfoDomainConverter.java        |   15 +
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndSite.java                       |    2 
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentInfoRespDTO.java         |   11 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndEmergency.java                  |    2 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentHazardousWaste.java                |    2 
 src/main/java/com/gkhy/labRiskManage/domain/basic/service/impl/BasicExperimentTypeServiceImpl.java         |   19 +
 pom.xml                                                                                                    |    5 
 src/main/java/com/gkhy/labRiskManage/application/experiment/service/ExperimentAppService.java              |    5 
 src/main/java/com/gkhy/labRiskManage/application/experiment/service/impl/ExperimentAppServiceImpl.java     |  161 ++++++++++
 src/main/resources/config/redisson-dev.yml                                                                 |    5 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndType.java                       |   43 +++
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentAndTypeInsertReqBO.java   |   20 +
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentInsertReqBO.java          |   13 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentAndTypeService.java               |   20 +
 src/main/java/com/gkhy/labRiskManage/domain/riskReport/entity/RiskAssessPlan.java                          |    2 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentInfoDTO.java                    |    7 
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/ExperimentInfoController.java               |   19 +
 src/main/resources/config/application.yaml                                                                 |    2 
 src/main/java/com/gkhy/labRiskManage/domain/basic/repository/jpa/BasicExperimentTypeRepository.java        |    6 
 src/main/java/com/gkhy/labRiskManage/config/serializa/JacksonConfiguration.java                            |    2 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndTypeServiceImpl.java      |   85 ++++++
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/converter/ExperimentApiConverter.java       |    6 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndDevice.java                     |    2 
 src/main/java/com/gkhy/labRiskManage/application/experiment/dto/bo/ExperimentAppInsertBO.java              |    3 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndPerson.java                     |    2 
 src/main/resources/config/application-dev.yaml                                                             |   12 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndEmergencyServiceImpl.java |    2 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndStuff.java                      |    2 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentInfoService.java                  |    5 
 src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentAndTypeRespDTO.java      |   20 +
 src/main/java/com/gkhy/labRiskManage/commons/utils/BeanCopyUtils.java                                      |   15 +
 src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentAndTypeDTO.java                 |   18 +
 src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentInfoServiceImpl.java         |  142 +++++++---
 src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentInfo.java                          |    9 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/repository/jpa/ExperimentAndTypeRepository.java     |   27 +
 src/main/java/com/gkhy/labRiskManage/domain/basic/service/BasicExperimentTypeService.java                  |    5 
 src/main/java/com/gkhy/labRiskManage/domain/experiment/enums/ExperimentStagingEnum.java                    |   62 ++++
 38 files changed, 743 insertions(+), 64 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0f925bb..a56997b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,11 @@
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.31</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.83</version>
+        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>com.baomidou</groupId>-->
 <!--            <artifactId>mybatis-plus-boot-starter</artifactId>-->
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/ExperimentInfoController.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/ExperimentInfoController.java
index d9f28ad..24830b9 100644
--- a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/ExperimentInfoController.java
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/ExperimentInfoController.java
@@ -51,6 +51,16 @@
         experimentAppService.save(getCurrentUserId(),experimentInsertReqBO);
         return result;
     }
+
+    @PostMapping(value = "/temporary")
+    public Result temporary(@RequestBody ExperimentInsertReqBO experimentInsertReqBO){
+        Result result = new Result();
+        result.setCode(ResultCode.OK);
+        result.setMsg("暂存成功");
+        experimentAppService.temporary(getCurrentUserId(),experimentInsertReqBO);
+        return result;
+    }
+
     /**
      * 录入信息
      * @param experimentInsertReqBO
@@ -65,6 +75,15 @@
         return result;
     }
 
+    @PostMapping(value = "develop/temporary")
+    public Result developTemporary(@RequestBody ExperimentInsertReqBO experimentInsertReqBO){
+        Result result = new Result();
+        result.setCode(ResultCode.OK);
+        result.setMsg("暂存成功");
+        experimentAppService.developTemporary(getCurrentUserId(),experimentInsertReqBO);
+        return result;
+    }
+
     @PostMapping(value = "rectify/save")
     public Result rectifySave(@RequestBody ExperimentInsertReqBO experimentInsertReqBO){
         Result result = new Result();
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/converter/ExperimentApiConverter.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/converter/ExperimentApiConverter.java
index 4862bf5..6046455 100644
--- a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/converter/ExperimentApiConverter.java
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/converter/ExperimentApiConverter.java
@@ -30,6 +30,12 @@
             for (ExperimentInfoAppQueryDTO experimentInfoAppQueryDTO:experimentInfoAppQueryDTOList){
                 ExperimentInfoRespDTO experimentInfoRespDTO = new ExperimentInfoRespDTO();
                 BeanUtils.copyProperties(experimentInfoAppQueryDTO,experimentInfoRespDTO);
+                //实验类型
+                List<ExperimentAndTypeRespDTO> typeRespDTOs = new ArrayList<>();
+                if(!ObjectUtils.isEmpty(experimentInfoAppQueryDTO.getTypes())){
+                    typeRespDTOs = BeanCopyUtils.copyBeanList(experimentInfoAppQueryDTO.getTypes(),ExperimentAndTypeRespDTO.class);
+                }
+                experimentInfoRespDTO.setTypeList(typeRespDTOs);
                 //实验场所
                 List<ExperimentAndSiteRespDTO> siteRespDTOs = new ArrayList<>();
                 if(!ObjectUtils.isEmpty(experimentInfoAppQueryDTO.getSites())){
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentAndTypeInsertReqBO.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentAndTypeInsertReqBO.java
new file mode 100644
index 0000000..c33cdc8
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentAndTypeInsertReqBO.java
@@ -0,0 +1,20 @@
+package com.gkhy.labRiskManage.api.controller.experiment.dto.req;
+
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/3/20
+ * @time: 14:54
+ */
+@Data
+public class ExperimentAndTypeInsertReqBO {
+
+    private Long typeId;
+    /**
+     * 类型名称
+     */
+    private String typeName;
+
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentInsertReqBO.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentInsertReqBO.java
index 393ba27..0ee9811 100644
--- a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentInsertReqBO.java
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/req/ExperimentInsertReqBO.java
@@ -29,7 +29,6 @@
      */
     private Long liabilityUserId;
     private String liabilityUserPhone;
-
     /**
      * 安全负责人id
      */
@@ -135,6 +134,10 @@
      * 措施
      */
     private String measure;
+    /**
+     * 暂存保存:1-保存;2-暂存
+     */
+    private Byte stagingTag;
 
     /**
      * 危废情况
@@ -160,8 +163,16 @@
 
    private List<ExperimentAndSiteInsertReqBO> siteList;
 
+
+    /**
+     * 实验类型
+     */
+
+    private List<ExperimentAndTypeInsertReqBO> typeList;
+
     /**
      * 演练情况
      */
     private List<ExperimentAndEmergencyInsertReqBO> emergencyList;
+
 }
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentAndTypeRespDTO.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentAndTypeRespDTO.java
new file mode 100644
index 0000000..28d7efb
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentAndTypeRespDTO.java
@@ -0,0 +1,20 @@
+package com.gkhy.labRiskManage.api.controller.experiment.dto.resp;
+
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2022/12/28
+ * @time: 15:24
+ */
+@Data
+public class ExperimentAndTypeRespDTO {
+    private Long typeId;
+    /**
+     * 类型名称
+     */
+    private String typeName;
+
+
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentInfoRespDTO.java b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentInfoRespDTO.java
index 84ade6d..44859c4 100644
--- a/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentInfoRespDTO.java
+++ b/src/main/java/com/gkhy/labRiskManage/api/controller/experiment/dto/resp/ExperimentInfoRespDTO.java
@@ -31,6 +31,10 @@
      */
     private Byte experimentType;
     /**
+     * 实验类型名称
+     */
+    private String experimentTypeName;
+    /**
      * 实验负责人id
      */
     private Long liabilityUserId;
@@ -202,6 +206,13 @@
      */
     private String assessPerson;
 
+    /**
+     * 暂存保存:1-保存;2-暂存
+     */
+    private Byte stagingTag;
+
+    private List<ExperimentAndTypeRespDTO> typeList;
+
     private List<ExperimentAndSiteRespDTO> siteList;
 
     private List<ExperimentAndPersonRespDTO> persons;
diff --git a/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/bo/ExperimentAppInsertBO.java b/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/bo/ExperimentAppInsertBO.java
index c851118..75df63d 100644
--- a/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/bo/ExperimentAppInsertBO.java
+++ b/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/bo/ExperimentAppInsertBO.java
@@ -16,6 +16,9 @@
  */
 @Data
 public class ExperimentAppInsertBO {
+
+    private Long id;
+
     /**
      * 实验名称
      */
diff --git a/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/dto/ExperimentInfoAppQueryDTO.java b/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/dto/ExperimentInfoAppQueryDTO.java
index af88864..0fac529 100644
--- a/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/dto/ExperimentInfoAppQueryDTO.java
+++ b/src/main/java/com/gkhy/labRiskManage/application/experiment/dto/dto/ExperimentInfoAppQueryDTO.java
@@ -2,9 +2,15 @@
 
 
 import com.gkhy.labRiskManage.api.controller.experiment.dto.resp.ExperimentAndEmergencyRespDTO;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
 import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAssessLog;
+import com.gkhy.labRiskManage.domain.experiment.model.dto.ExperimentAndTypeDTO;
 import lombok.Data;
 
+import javax.persistence.CascadeType;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -30,6 +36,10 @@
      * 实验类型:1-化学类;2-生物类;3-辐射类;4-机电类;5-特种设备类;6-其它类
      */
     private Byte experimentType;
+    /**
+     * 实验类型名称
+     */
+    private String experimentTypeName;
     /**
      * 实验负责人id
      */
@@ -204,12 +214,25 @@
      * 填报人
      */
     private String assessPerson;
+    /**
+     * 暂存保存:1-保存;2-暂存
+     */
+    private Byte stagingTag;
+
+
+    private List<ExperimentAndTypeDTO> types;
+
+    private List<ExperimentAndSiteAppQueryDTO> sites;
+
+    private List<ExperimentAndDeviceAppQueryDTO> devices;
 
     private List<ExperimentAndPersonAppQueryDTO> persons;
-    private List<ExperimentAndDeviceAppQueryDTO> devices;
-    private List<ExperimentAndStuffAppQueryDTO> stuffs;
+
     private List<ExperimentHazardousWasteAppQueryDTO> wastes;
-    private List<ExperimentAndSiteAppQueryDTO> sites;
+
+    private List<ExperimentAndStuffAppQueryDTO> stuffs;
+
+
     /**
      * 演练情况
      */
diff --git a/src/main/java/com/gkhy/labRiskManage/application/experiment/service/ExperimentAppService.java b/src/main/java/com/gkhy/labRiskManage/application/experiment/service/ExperimentAppService.java
index 2a75299..c0c18fa 100644
--- a/src/main/java/com/gkhy/labRiskManage/application/experiment/service/ExperimentAppService.java
+++ b/src/main/java/com/gkhy/labRiskManage/application/experiment/service/ExperimentAppService.java
@@ -12,8 +12,13 @@
 
 public interface ExperimentAppService {
     int save(Long currentUserId, ExperimentInsertReqBO experimentAppInsertBO);
+
+    int temporary(Long currentUserId, ExperimentInsertReqBO experimentAppInsertBO);
+
     int developSave(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO);
 
+    int developTemporary(Long currentUserId, ExperimentInsertReqBO experimentInsertReqBO);
+
     int deleteById(Long id, Long currentUserId);
 
     int updateDevelop(Long currentUserId, List<ExperimentAppDevelopUpdateBO> appDevelopUpdateBOList);
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);
diff --git a/src/main/java/com/gkhy/labRiskManage/commons/utils/BeanCopyUtils.java b/src/main/java/com/gkhy/labRiskManage/commons/utils/BeanCopyUtils.java
index 765c291..eba99e8 100644
--- a/src/main/java/com/gkhy/labRiskManage/commons/utils/BeanCopyUtils.java
+++ b/src/main/java/com/gkhy/labRiskManage/commons/utils/BeanCopyUtils.java
@@ -1,5 +1,6 @@
 package com.gkhy.labRiskManage.commons.utils;
 
+import com.alibaba.fastjson.*;
 import com.gkhy.labRiskManage.api.controller.basic.dto.respDto.*;
 import com.gkhy.labRiskManage.api.controller.riskReport.dto.respDto.*;
 import com.gkhy.labRiskManage.application.basic.dto.bo.BasicExperimentPersonAppQueryBO;
@@ -13,6 +14,8 @@
 import com.gkhy.labRiskManage.domain.riskReport.model.dto.RiskAssessPlanQueryDTO;
 import org.springframework.beans.BeanUtils;
 
+
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -64,6 +67,18 @@
                 .collect(Collectors.toList());
     }
 
+
+
+    public static <T> List<T> list2OtherList(List originList,Class<T> tClass){
+        List<T> list = new ArrayList<>();
+        for (Object info : originList) {
+            T t = JSON.parseObject(JSON.toJSONString(info),tClass);
+            list.add(t);
+        }
+        return list;
+    }
+
+
     public static Object copyDeviceAppQueryList(Object data, Class<BasicExperimentDeviceAppQueryDTO> basicExperimentDeviceAppQueryDTOClass) {
         return data;
     }
diff --git a/src/main/java/com/gkhy/labRiskManage/config/serializa/JacksonConfiguration.java b/src/main/java/com/gkhy/labRiskManage/config/serializa/JacksonConfiguration.java
index e97eb66..70ae101 100644
--- a/src/main/java/com/gkhy/labRiskManage/config/serializa/JacksonConfiguration.java
+++ b/src/main/java/com/gkhy/labRiskManage/config/serializa/JacksonConfiguration.java
@@ -1,6 +1,7 @@
 package com.gkhy.labRiskManage.config.serializa;
 
 
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
@@ -27,6 +28,7 @@
         javaTimeModule.addSerializer(LocalDateTime.class,
                 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         mapper.registerModule(javaTimeModule);
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
         return mapper;
     }
 }
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/basic/repository/jpa/BasicExperimentTypeRepository.java b/src/main/java/com/gkhy/labRiskManage/domain/basic/repository/jpa/BasicExperimentTypeRepository.java
index 426bcf3..d5b2409 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/basic/repository/jpa/BasicExperimentTypeRepository.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/basic/repository/jpa/BasicExperimentTypeRepository.java
@@ -1,5 +1,6 @@
 package com.gkhy.labRiskManage.domain.basic.repository.jpa;
 
+import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentSite;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentType;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -20,5 +21,10 @@
      */
     @Query(value = "select t from BasicExperimentType t where t.deleteStatus = 0")
     List<BasicExperimentType> listType();
+    /**
+     * 基础实验类型 - 通过id列表查询
+     * */
+    @Query(value = "select t from BasicExperimentType t where t.id in (?1) and t.deleteStatus = 0")
+    List<BasicExperimentType> batchById(List<Long> ids);
 }
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/basic/service/BasicExperimentTypeService.java b/src/main/java/com/gkhy/labRiskManage/domain/basic/service/BasicExperimentTypeService.java
index 3dd6d30..b07acea 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/basic/service/BasicExperimentTypeService.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/basic/service/BasicExperimentTypeService.java
@@ -1,6 +1,7 @@
 package com.gkhy.labRiskManage.domain.basic.service;
 
 
+import com.gkhy.labRiskManage.domain.basic.model.dto.SiteQueryDTO;
 import com.gkhy.labRiskManage.domain.basic.model.dto.TypeListDTO;
 
 import java.util.List;
@@ -14,4 +15,8 @@
      * 基础实验类型 - 列表
      */
     List<TypeListDTO> listBasicExperimentType();
+    /**
+     * 实验类型 - 通过id列表查询
+     * */
+    List<TypeListDTO> getBasicExperimentTypeByIdList(List<Long> ids);
 }
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/basic/service/impl/BasicExperimentTypeServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/domain/basic/service/impl/BasicExperimentTypeServiceImpl.java
index 5b86d2a..3ab5357 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/basic/service/impl/BasicExperimentTypeServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/basic/service/impl/BasicExperimentTypeServiceImpl.java
@@ -1,13 +1,18 @@
 package com.gkhy.labRiskManage.domain.basic.service.impl;
 
+import com.gkhy.labRiskManage.commons.enums.ResultCode;
+import com.gkhy.labRiskManage.commons.exception.BusinessException;
 import com.gkhy.labRiskManage.commons.utils.BeanCopyUtils;
+import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentSite;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentType;
+import com.gkhy.labRiskManage.domain.basic.model.dto.SiteQueryDTO;
 import com.gkhy.labRiskManage.domain.basic.model.dto.TypeListDTO;
 import com.gkhy.labRiskManage.domain.basic.repository.jpa.BasicExperimentTypeRepository;
 import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -28,4 +33,18 @@
         List<BasicExperimentType> listResult  = typeRepository.listType();
         return BeanCopyUtils.copyBeanList(listResult, TypeListDTO.class);
     }
+
+    @Override
+    public List<TypeListDTO> getBasicExperimentTypeByIdList(List<Long> ids) {
+        if (ids.size() < 1){
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "请求参数不能为空");
+        }
+
+        List<BasicExperimentType> listResult = typeRepository.batchById(ids);
+        if (listResult.size() < 1){
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "查询结果为空");
+        }
+
+        return BeanCopyUtils.copyBeanList(listResult, TypeListDTO.class);
+    }
 }
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/converter/ExperimentInfoDomainConverter.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/converter/ExperimentInfoDomainConverter.java
index b574dd8..7fabd98 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/converter/ExperimentInfoDomainConverter.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/converter/ExperimentInfoDomainConverter.java
@@ -44,6 +44,21 @@
                 //实验基础信息
                 ExperimentInfoDTO experimentInfoDTO = new ExperimentInfoDTO();
                 BeanUtils.copyProperties(experimentInfo,experimentInfoDTO);
+                //实验类型数据
+                List<ExperimentAndTypeDTO> types = new ArrayList<>();
+                if(!ObjectUtils.isEmpty(experimentInfo.getTypes())){
+                    for (ExperimentAndType experimentAndType : experimentInfo.getTypes()){
+                        ExperimentAndTypeDTO experimentAndTypeDTO = new ExperimentAndTypeDTO();
+                        experimentAndTypeDTO.setTypeId(experimentAndType.getTypeId());
+                        if(null != experimentAndType.getType()){
+                            experimentAndTypeDTO.setTypeName(experimentAndType.getType().getExperimentType());
+
+                        }
+                        types.add(experimentAndTypeDTO);
+                    }
+                }
+                experimentInfoDTO.setTypes(types);
+
                 //实验场所数据
                 List<ExperimentAndSiteDTO> sites = new ArrayList<>();
                 if(!ObjectUtils.isEmpty(experimentInfo.getSites())){
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndDevice.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndDevice.java
index 8cb66f0..de5f63f 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndDevice.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndDevice.java
@@ -2,6 +2,7 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentDevice;
+import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -18,6 +19,7 @@
 @EntityListeners(AuditingEntityListener.class)
 @Entity
 @Table(name = "experiment_and_device")
+@Where(clause = "delete_status = 0")
 public class ExperimentAndDevice implements Serializable {
     private static final long serialVersionUID = -74398808654954420L;
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndEmergency.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndEmergency.java
index c6e4f07..72b8b85 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndEmergency.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndEmergency.java
@@ -2,6 +2,7 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 
@@ -17,6 +18,7 @@
 @Data
 @Entity
 @Table(name = "experiment_and_emergency")
+@Where(clause = "delete_status = 0")
 public class ExperimentAndEmergency {
 
     @Id
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndPerson.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndPerson.java
index 4311a10..3629e77 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndPerson.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndPerson.java
@@ -1,6 +1,7 @@
 package com.gkhy.labRiskManage.domain.experiment.entity;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -16,6 +17,7 @@
 @EntityListeners(AuditingEntityListener.class)
 @Entity
 @Table(name = "experiment_and_person")
+@Where(clause = "delete_status = 0")
 public class ExperimentAndPerson implements Serializable {
     private static final long serialVersionUID = 217943177919881451L;
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndSite.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndSite.java
index 28c682c..cca9216 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndSite.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndSite.java
@@ -3,6 +3,7 @@
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentSite;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentStuff;
 import lombok.Data;
+import org.hibernate.annotations.Where;
 
 
 import javax.persistence.*;
@@ -16,6 +17,7 @@
 @Data
 @Entity
 @Table(name = "experiment_and_site")
+@Where(clause = "delete_status = 0")
 public class ExperimentAndSite {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndStuff.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndStuff.java
index 3c706c5..6692bc5 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndStuff.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndStuff.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentSite;
 import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentStuff;
+import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -19,6 +20,7 @@
 @EntityListeners(AuditingEntityListener.class)
 @Entity
 @Table(name = "experiment_and_stuff")
+@Where(clause = "delete_status = 0")
 public class ExperimentAndStuff implements Serializable {
     private static final long serialVersionUID = -79650379228221888L;
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndType.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndType.java
new file mode 100644
index 0000000..3d0557b
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentAndType.java
@@ -0,0 +1,43 @@
+package com.gkhy.labRiskManage.domain.experiment.entity;
+
+import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentSite;
+import com.gkhy.labRiskManage.domain.basic.entity.BasicExperimentType;
+import lombok.Data;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/3/20
+ * @time: 15:54
+ */
+@Data
+@Entity
+@Table(name = "experiment_and_type")
+@Where(clause = "delete_status = 0")
+public class ExperimentAndType {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+    /**
+     * 实验ID
+     */
+    @Column(name = "experiment_id")
+    private Long experimentId;
+    /**
+     * 类型
+     */
+    @Column(name = "type_id")
+    private Long typeId;
+    /**
+     * 删除状态:0-正常;1-已删除
+     */
+    private Byte deleteStatus;
+
+    @OneToOne(fetch = FetchType.EAGER,cascade = {CascadeType.REFRESH})
+    @JoinColumn(name = "type_id",referencedColumnName = "id",insertable =false ,updatable = false)
+    private BasicExperimentType type;
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentHazardousWaste.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentHazardousWaste.java
index 477ef69..2a204ea 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentHazardousWaste.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentHazardousWaste.java
@@ -1,6 +1,7 @@
 package com.gkhy.labRiskManage.domain.experiment.entity;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -16,6 +17,7 @@
 @EntityListeners(AuditingEntityListener.class)
 @Entity
 @Table(name = "experiment_hazardous_waste")
+@Where(clause = "delete_status = 0")
 public class ExperimentHazardousWaste implements Serializable {
     private static final long serialVersionUID = -50912711565680265L;
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentInfo.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentInfo.java
index e806314..053fc91 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentInfo.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/entity/ExperimentInfo.java
@@ -214,6 +214,15 @@
      * 填报人
      */
     private String informant;
+    /**
+     * 暂存保存:1-保存;2-暂存
+     */
+    private Byte stagingTag;
+
+    @OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.REFRESH})
+    @JoinColumn(name = "experiment_id",referencedColumnName = "id",insertable =false ,updatable = false)
+    @Fetch(FetchMode.SUBSELECT)
+    private List<ExperimentAndType> types;
 
     @OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.REFRESH})
     @JoinColumn(name = "experiment_id",referencedColumnName = "id",insertable =false ,updatable = false)
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/enums/ExperimentStagingEnum.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/enums/ExperimentStagingEnum.java
new file mode 100644
index 0000000..15100bf
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/enums/ExperimentStagingEnum.java
@@ -0,0 +1,62 @@
+package com.gkhy.labRiskManage.domain.experiment.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2022/12/20
+ * @time: 17:31
+ */
+public enum ExperimentStagingEnum {
+
+    SAVE((byte)1,"保存"),
+    NOT_SAVE((byte)2,"暂存"),
+    ;
+
+    private Byte value;
+    private String dec;
+
+    ExperimentStagingEnum(Byte value, String dec) {
+        this.value = value;
+        this.dec = dec;
+    }
+
+    public Byte getValue() {
+        return value;
+    }
+
+    public void setValue(Byte value) {
+        this.value = value;
+    }
+
+    public static Map<Byte, ExperimentStagingEnum> getMap() {
+        return map;
+    }
+
+    public static void setMap(Map<Byte, ExperimentStagingEnum> map) {
+        ExperimentStagingEnum.map = map;
+    }
+
+    public String getDec() {
+        return dec;
+    }
+
+    public void setDec(String dec) {
+        this.dec = dec;
+    }
+
+    static Map<Byte, ExperimentStagingEnum> map;
+
+    static {
+        map = new HashMap<>();
+        for(ExperimentStagingEnum e : ExperimentStagingEnum.values()){
+            map.put(e.value,e);
+        }
+    }
+
+    public static ExperimentStagingEnum prase(Byte value){
+        return map.get(value);
+    }
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentAndTypeDTO.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentAndTypeDTO.java
new file mode 100644
index 0000000..c1ef491
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentAndTypeDTO.java
@@ -0,0 +1,18 @@
+package com.gkhy.labRiskManage.domain.experiment.model.dto;
+
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2022/12/27
+ * @time: 15:27
+ */
+@Data
+public class ExperimentAndTypeDTO {
+    private Long typeId;
+    /**
+     * 场所名称
+     */
+    private String typeName;
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentInfoDTO.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentInfoDTO.java
index 3ab6aa8..d7cf761 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentInfoDTO.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/model/dto/ExperimentInfoDTO.java
@@ -1,5 +1,6 @@
 package com.gkhy.labRiskManage.domain.experiment.model.dto;
 
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
 import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAssessLog;
 import lombok.Data;
 
@@ -196,6 +197,12 @@
      */
     private String assessPerson;
 
+    /**
+     * 暂存保存:1-保存;2-暂存
+     */
+    private Byte stagingTag;
+
+    private List<ExperimentAndTypeDTO> types;
 
     private List<ExperimentAndSiteDTO> sites;
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/repository/jpa/ExperimentAndTypeRepository.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/repository/jpa/ExperimentAndTypeRepository.java
new file mode 100644
index 0000000..c5ee754
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/repository/jpa/ExperimentAndTypeRepository.java
@@ -0,0 +1,27 @@
+package com.gkhy.labRiskManage.domain.experiment.repository.jpa;
+
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndSite;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/3/20
+ * @time: 16:18
+ */
+@Repository
+public interface ExperimentAndTypeRepository extends JpaRepository<ExperimentAndType, Long> {
+
+    @Modifying
+    @Query(value = "update experiment_and_type set delete_status = 1 where experiment_id = :experimentId",nativeQuery = true)
+    int deleteByExperimentId(Long experimentId);
+
+    @Query(value = "select * from experiment_and_type where delete_status = 0 and experiment_id = :id",nativeQuery = true)
+    List<ExperimentAndType> getByExperimentId(Long id);
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentAndTypeService.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentAndTypeService.java
new file mode 100644
index 0000000..2cfd198
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentAndTypeService.java
@@ -0,0 +1,20 @@
+package com.gkhy.labRiskManage.domain.experiment.service;
+
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndSite;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
+
+import java.util.List;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/3/20
+ * @time: 15:51
+ */
+public interface ExperimentAndTypeService {
+    boolean saveBatch(Long currentUserId, List<Long> siteIds, Long experimentId);
+
+    void deleteByExperimentId(Long id);
+
+    List<ExperimentAndType>  getByExperimentId(Long id);
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentInfoService.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentInfoService.java
index 027863b..8865206 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentInfoService.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/ExperimentInfoService.java
@@ -18,8 +18,13 @@
 public interface ExperimentInfoService {
 
     ExperimentInfoDTO save(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO);
+
+    ExperimentInfoDTO temporary(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO);
+
     ExperimentInfoDTO developSave(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO);
 
+    ExperimentInfoDTO developTemporary(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO);
+
     boolean deleteById(Long id,Long currentUserId);
     ExperimentInfoDTO getExperimentById(Long id);
     ExperimentInfoDTO getExperimentByName(String experimentName);
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndEmergencyServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndEmergencyServiceImpl.java
index d315f1a..ccd382d 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndEmergencyServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndEmergencyServiceImpl.java
@@ -38,6 +38,8 @@
                 experimentAndEmergency.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
                 experimentAndEmergency.setCreateByUserId(currentUserId);
                 experimentAndEmergency.setUpdateByUserId(currentUserId);
+                //暂时处理20241106
+                experimentAndEmergency.setId(null);
                 experimentAndEmergencyList.add(experimentAndEmergency);
             }
             List<ExperimentAndEmergency> emergencies = repository.saveAll(experimentAndEmergencyList);
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndTypeServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndTypeServiceImpl.java
new file mode 100644
index 0000000..7b31793
--- /dev/null
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentAndTypeServiceImpl.java
@@ -0,0 +1,85 @@
+package com.gkhy.labRiskManage.domain.experiment.service.impl;
+
+import com.gkhy.labRiskManage.commons.enums.ResultCode;
+import com.gkhy.labRiskManage.commons.enums.StatusEnum;
+import com.gkhy.labRiskManage.commons.exception.BusinessException;
+import com.gkhy.labRiskManage.domain.basic.model.dto.SiteQueryDTO;
+import com.gkhy.labRiskManage.domain.basic.model.dto.TypeListDTO;
+import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentDeviceTypeService;
+import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentSiteService;
+import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentTypeService;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndSite;
+import com.gkhy.labRiskManage.domain.experiment.entity.ExperimentAndType;
+import com.gkhy.labRiskManage.domain.experiment.repository.jpa.ExperimentAndSiteRepository;
+import com.gkhy.labRiskManage.domain.experiment.repository.jpa.ExperimentAndTypeRepository;
+import com.gkhy.labRiskManage.domain.experiment.service.ExperimentAndTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/3/20
+ * @time: 16:01
+ */
+@Service
+public class ExperimentAndTypeServiceImpl implements ExperimentAndTypeService {
+    @Autowired
+    private BasicExperimentTypeService basicExperimentTypeService;
+
+    @Autowired
+    private ExperimentAndTypeRepository repository;
+
+    @Override
+    public boolean saveBatch(Long currentUserId, List<Long> typeIds, Long experimentId) {
+        boolean flag = false;
+        if(CollectionUtils.isEmpty(typeIds)){
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"请选择实验类型!");
+        }
+        if(ObjectUtils.isEmpty(experimentId)){
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"实验信息主键不可为空!");
+        }
+        List<TypeListDTO> basicExperimentTypeByIdList = basicExperimentTypeService.getBasicExperimentTypeByIdList(typeIds);
+        for(Long typeId : typeIds){
+            List<TypeListDTO> collect = basicExperimentTypeByIdList.stream().filter(site -> site.getId().equals(typeId)).collect(Collectors.toList());
+            if(collect.size() == 0){
+                throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(),"实验类型信息不存在!");
+            }
+        }
+
+        List<ExperimentAndType> typeList = new ArrayList<>();
+        typeIds.forEach(e ->{
+            ExperimentAndType experimentAndType = new ExperimentAndType();
+            experimentAndType.setExperimentId(experimentId);
+            experimentAndType.setTypeId(e);
+            experimentAndType.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
+            typeList.add(experimentAndType);
+        });
+
+        List<ExperimentAndType> experimentAndTypeList = repository.saveAll(typeList);
+        if(!CollectionUtils.isEmpty(experimentAndTypeList)){
+            flag = true;
+        }
+        return flag;
+    }
+
+    @Override
+    public void deleteByExperimentId(Long id) {
+        if(ObjectUtils.isEmpty(id)){
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"实验主键不可为空!");
+        }
+        repository.deleteByExperimentId(id);
+    }
+
+    @Override
+    public List<ExperimentAndType>  getByExperimentId(Long id) {
+        List<ExperimentAndType> experimentAndTypeList = repository.getByExperimentId(id);
+        return experimentAndTypeList;
+    }
+}
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentInfoServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentInfoServiceImpl.java
index c9d64fb..c32183a 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentInfoServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/experiment/service/impl/ExperimentInfoServiceImpl.java
@@ -76,31 +76,32 @@
     @Override
     public ExperimentInfoDTO save(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO) {
         UserInfoDomainDTO operator = userDomainService.getUserInfoById(currentUserId);
-        //验证权限
-        List<SysUserRoleBindDomainDTO> roles = operator.getRoles();
-        boolean flag = false;
-        if(roles != null && roles.size() > 0){
-            for (SysUserRoleBindDomainDTO role : roles){
-                if (role.getRoleName().equals(UserRoleEnum.USER_ROLE_1.getDesc())) {
-                    flag = true;
-                    break;
-                }
-            }
-        }
-        if (!flag){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"该账号无权限录入实验信息!");
-        }
+        // 20211105去掉权限验证
+//        //验证权限
+//        List<SysUserRoleBindDomainDTO> roles = operator.getRoles();
+//        boolean flag = false;
+//        if(roles != null && roles.size() > 0){
+//            for (SysUserRoleBindDomainDTO role : roles){
+//                if (role.getRoleName().equals(UserRoleEnum.USER_ROLE_1.getDesc())) {
+//                    flag = true;
+//                    break;
+//                }
+//            }
+//        }
+//        if (!flag){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"该账号无权限录入实验信息!");
+//        }
 
         //验证
         if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentName())){
             throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"请填写实验名称!");
         }
-        if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentType())){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"请选择实验类型!");
-        }
-        if(ObjectUtils.isEmpty(ExperimentTypeEnum.prase(experimentAppInsertBO.getExperimentType()))){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"实验类型非法!");
-        }
+//        if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentType())){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"请选择实验类型!");
+//        }
+//        if(ObjectUtils.isEmpty(ExperimentTypeEnum.prase(experimentAppInsertBO.getExperimentType()))){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"实验类型非法!");
+//        }
         if(ObjectUtils.isEmpty(experimentAppInsertBO.getLiabilityUserId())){
             throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"请选择实验负责人!");
         }
@@ -177,6 +178,7 @@
         }
         ExperimentInfo experimentInfo = new ExperimentInfo();
         BeanUtils.copyProperties(experimentAppInsertBO, experimentInfo);
+        experimentInfo.setStagingTag(ExperimentStagingEnum.SAVE.getValue());
         experimentInfo.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
         experimentInfo.setLiabilityUser(operator.getName());
         experimentInfo.setLiabilityUserId(currentUserId);
@@ -193,33 +195,58 @@
 
         return converter.getExperimentInfoDTO(experiment);
     }
+
+    @Override
+    public ExperimentInfoDTO temporary(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO) {
+        UserInfoDomainDTO operator = userDomainService.getUserInfoById(currentUserId);
+        ExperimentInfo experimentInfo = new ExperimentInfo();
+        BeanUtils.copyProperties(experimentAppInsertBO, experimentInfo);
+        experimentInfo.setStagingTag(ExperimentStagingEnum.NOT_SAVE.getValue());
+        experimentInfo.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
+        experimentInfo.setLiabilityUser(operator.getName());
+        experimentInfo.setLiabilityUserId(currentUserId);
+        experimentInfo.setStage(ExperimentStageEnum.NOT_EVALUATION.getValue());
+        experimentInfo.setStatus(ExperimentStatusEnum.NOT_APPLY.getValue());
+        experimentInfo.setExperimentTag(ExperimentTagEnum.NEW_CREATE.getValue());
+        experimentInfo.setRectifyStatus(ExperimentRectifyStatusEnum.NOT_RECTIFY.getValue());
+        experimentInfo.setExperimentCode(generateTestNumber());
+        experimentInfo.setCreateByUserId(currentUserId);
+        experimentInfo.setInformant(operator == null?"":operator.getName());
+        experimentInfo.setUpdateByUserId(currentUserId);
+        experimentInfo.setApprovalStatus(ExperimentApprovalStatusEnum.NOT_APPROVAL.getValue());
+        ExperimentInfo experiment = repository.save(experimentInfo);
+
+        return converter.getExperimentInfoDTO(experiment);
+    }
+
     @Override
     public ExperimentInfoDTO developSave(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO) {
         UserInfoDomainDTO operator = userDomainService.getUserInfoById(currentUserId);
-        //验证权限
-        List<SysUserRoleBindDomainDTO> roles = operator.getRoles();
-        boolean flag = false;
-        if(roles != null && roles.size() > 0){
-            for (SysUserRoleBindDomainDTO role : roles){
-                if (role.getRoleName().equals(UserRoleEnum.USER_ROLE_1.getDesc())) {
-                    flag = true;
-                    break;
-                }
-            }
-        }
-        if (!flag){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"该账号无权限录入实验信息!");
-        }
+        // 20211105去掉权限验证
+//        //验证权限
+//        List<SysUserRoleBindDomainDTO> roles = operator.getRoles();
+//        boolean flag = false;
+//        if(roles != null && roles.size() > 0){
+//            for (SysUserRoleBindDomainDTO role : roles){
+//                if (role.getRoleName().equals(UserRoleEnum.USER_ROLE_1.getDesc())) {
+//                    flag = true;
+//                    break;
+//                }
+//            }
+//        }
+//        if (!flag){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"该账号无权限录入实验信息!");
+//        }
         //验证
         if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentName())){
             throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"请填写实验名称!");
         }
-        if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentType())){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"请选择实验类型!");
-        }
-        if(ObjectUtils.isEmpty(ExperimentTypeEnum.prase(experimentAppInsertBO.getExperimentType()))){
-            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"实验类型非法!");
-        }
+//        if(ObjectUtils.isEmpty(experimentAppInsertBO.getExperimentType())){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"请选择实验类型!");
+//        }
+//        if(ObjectUtils.isEmpty(ExperimentTypeEnum.prase(experimentAppInsertBO.getExperimentType()))){
+//            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_ILLEGAL.getCode(),"实验类型非法!");
+//        }
         if(ObjectUtils.isEmpty(experimentAppInsertBO.getLiabilityUserPhone())){
             throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"请填写实验负责人手机号!");
         }
@@ -304,6 +331,7 @@
         }
         ExperimentInfo experimentInfo = new ExperimentInfo();
         BeanUtils.copyProperties(experimentAppInsertBO, experimentInfo);
+        experimentInfo.setStagingTag(ExperimentStagingEnum.SAVE.getValue());
         experimentInfo.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
         experimentInfo.setLiabilityUserId(currentUserId);
         experimentInfo.setLiabilityUser(operator.getName());
@@ -319,6 +347,30 @@
         ExperimentInfo experiment = repository.save(experimentInfo);
 
         return converter.getExperimentInfoDTO(experiment);
+    }
+
+    @Override
+    public ExperimentInfoDTO developTemporary(Long currentUserId, ExperimentAppInsertBO experimentAppInsertBO) {
+        UserInfoDomainDTO operator = userDomainService.getUserInfoById(currentUserId);
+        ExperimentInfo experimentInfo = new ExperimentInfo();
+        BeanUtils.copyProperties(experimentAppInsertBO, experimentInfo);
+        experimentInfo.setStagingTag(ExperimentStagingEnum.NOT_SAVE.getValue());
+        experimentInfo.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
+        experimentInfo.setLiabilityUserId(currentUserId);
+        experimentInfo.setLiabilityUser(operator.getName());
+        experimentInfo.setStage(ExperimentStageEnum.NOT_EVALUATION.getValue());
+        experimentInfo.setStatus(ExperimentStatusEnum.NOT_APPLY.getValue());
+        experimentInfo.setExperimentTag(ExperimentTagEnum.AREADLY_DEVELOP.getValue());
+        experimentInfo.setRectifyStatus(ExperimentRectifyStatusEnum.NOT_RECTIFY.getValue());
+        experimentInfo.setExperimentCode(generateTestNumber());
+        experimentInfo.setCreateByUserId(currentUserId);
+        experimentInfo.setInformant(operator == null?"":operator.getName());
+        experimentInfo.setUpdateByUserId(currentUserId);
+        experimentInfo.setApprovalStatus(ExperimentApprovalStatusEnum.NOT_APPROVAL.getValue());
+        ExperimentInfo experiment = repository.save(experimentInfo);
+
+        return converter.getExperimentInfoDTO(experiment);
+
     }
 
     @Override
@@ -551,9 +603,9 @@
                 if(!ObjectUtils.isEmpty(ExperimentTagEnum.prase(queryBO.getExperimentTag()))){
                     predicateList.add(criteriaBuilder.equal(root.get("experimentTag"),queryBO.getExperimentTag()));
                 }
-                if (!ObjectUtils.isEmpty(ExperimentTypeEnum.prase(queryBO.getExperimentType()))){
-                    predicateList.add(criteriaBuilder.equal(root.get("experimentType"), queryBO.getExperimentType()));
-                }
+//                if (!ObjectUtils.isEmpty(ExperimentTypeEnum.prase(queryBO.getExperimentType()))){
+//                    predicateList.add(criteriaBuilder.equal(root.get("experimentType"), queryBO.getExperimentType()));
+//                }
                 if (StrUtil.isNotBlank(queryBO.getExperimentName())){
                     predicateList.add(criteriaBuilder.like(root.get("experimentName"), '%'+ queryBO.getExperimentName()+'%'));
                 }
@@ -575,6 +627,10 @@
                     );
                     query.groupBy(root.get("id"));
                 }
+                if (!ObjectUtils.isEmpty(ExperimentTypeEnum.prase(queryBO.getExperimentType()))){
+                    Join<ExperimentInfo, ExperimentAndType> typeJoin = root.join("types", JoinType.LEFT);
+                    predicateList.add(criteriaBuilder.equal(typeJoin.get("typeId"), queryBO.getExperimentType()));
+                }
 
                 //返回组装的条件
                 return criteriaBuilder.and(predicateList.toArray(predicateList.toArray(new Predicate[0])));
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/entity/RiskAssessPlan.java b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/entity/RiskAssessPlan.java
index 25b801b..f40b260 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/entity/RiskAssessPlan.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/entity/RiskAssessPlan.java
@@ -2,6 +2,7 @@
 
 import com.gkhy.labRiskManage.domain.basic.entity.BasicTip;
 import lombok.Data;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
 import java.math.BigDecimal;
@@ -15,6 +16,7 @@
 @Data
 @Entity
 @Table(name = "risk_assess_plan")
+@Where(clause = "delete_status = 0")
 public class RiskAssessPlan implements Serializable {
     private static final long serialVersionUID = -44756780317221858L;
 
diff --git a/src/main/resources/config/application-dev.yaml b/src/main/resources/config/application-dev.yaml
index f191de5..cef1c4a 100644
--- a/src/main/resources/config/application-dev.yaml
+++ b/src/main/resources/config/application-dev.yaml
@@ -6,14 +6,14 @@
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://192.168.0.52:3306/laboratory_risk_manage.dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
-    username: gkhy_dev_team
-    password: Sjscn783fsDsa21
+    url: jdbc:mysql://127.0.0.1:3306/laboratory_risk_manage.dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
+    username: root
+    password: 123456
     master:
       driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://192.168.0.52:3306/laboratory_risk_manage.dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
-      username: gkhy_dev_team
-      password: Sjscn783fsDsa21
+      url: jdbc:mysql://127.0.0.1:3306/laboratory_risk_manage.dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
+      username: root
+      password: 123456
       type: com.alibaba.druid.pool.DruidDataSource
   jpa:
     hibernate:
diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml
index 86da350..bb2a5d3 100644
--- a/src/main/resources/config/application.yaml
+++ b/src/main/resources/config/application.yaml
@@ -2,5 +2,5 @@
   application:
     name: labRiskManage
   profiles:
+    active: dev
    # active: gslab
-    active: online-uat
diff --git a/src/main/resources/config/redisson-dev.yml b/src/main/resources/config/redisson-dev.yml
index c99a90a..2292333 100644
--- a/src/main/resources/config/redisson-dev.yml
+++ b/src/main/resources/config/redisson-dev.yml
@@ -10,13 +10,14 @@
   #  命令重试发送时间间隔,单位:毫秒
   retryInterval: 1500
   #  密码
-  password: SEF98uvs98dUAUEF90Udssa
+  #password:
+  #password: SEF98uvs98dUAUEF90Udssa
   #  单个连接最大订阅数量
   subscriptionsPerConnection: 5
   #  客户端名称
 #  clientName: null
   #  节点地址
-  address: redis://192.168.0.52:6371
+  address: redis://127.0.0.1:6379
 #  #  发布和订阅连接的最小空闲连接数
 #  subscriptionConnectionMinimumIdleSize: 1
 #  #  发布和订阅连接池大小

--
Gitblit v1.9.2