Procházet zdrojové kódy

添加删除判断逻辑

zhb.dong před 9 měsíci
rodič
revize
ab76c53c47

+ 36 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabAudioSynthesisController.java

@@ -1,14 +1,19 @@
 package com.zd.laboratory.controller;
 
-import java.util.List;
+import java.util.*;
 import java.io.IOException;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.zd.laboratory.domain.LabRiskPlanjoinsub;
+import com.zd.laboratory.service.ILabRiskPlanService;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.domain.ResultData;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -42,6 +47,8 @@ public class LabAudioSynthesisController extends BaseController<LabAudioSynthesi
 {
     @Autowired
     private ILabAudioSynthesisService labAudioSynthesisService;
+    @Autowired
+    private ILabRiskPlanService labRiskPlanService;
 
     /**
      * 查询音乐合成列表
@@ -112,8 +119,34 @@ public class LabAudioSynthesisController extends BaseController<LabAudioSynthesi
     @PreAuthorize(hasPermi = PerPrefix.LABORATORY_SYNTHESIS + PerFun.REMOVE)
     @Log(title = "音乐合成", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{ids}")
-    public ResultData remove(@PathVariable Long[] ids)
-    {
+    public ResultData remove(@PathVariable Long[] ids){
+
+        try {
+            List<Long> idList = Arrays.asList(ids);
+            List<LabAudioSynthesis> syntheses = labAudioSynthesisService.getListByIds(idList);
+
+            Set<Long> riskPlanIds = syntheses.stream()
+                    .map(LabAudioSynthesis::getRiskPlanId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toSet());
+
+            if (!riskPlanIds.isEmpty()) {
+                List<LabRiskPlanjoinsub> labRiskPlanjoinsubs = labRiskPlanService.selectLabRiskPlanjoinsubsByPlanIds(riskPlanIds);
+                Set<Long> invalidPlanIds = labRiskPlanjoinsubs.stream()
+                        .map(LabRiskPlanjoinsub::getRiskPlanId)
+                        .filter(Objects::nonNull)
+                        .collect(Collectors.toSet());
+
+                // 过滤 已经绑定实验室预案的相关配置
+                List<Long> validIds = syntheses.stream()
+                        .filter(s -> !invalidPlanIds.contains(s.getRiskPlanId()))
+                        .map(LabAudioSynthesis::getId)
+                        .collect(Collectors.toList());
+                ids = validIds.toArray(new Long[0]);
+            }
+        } catch (Exception e) {
+            logger.error("删除音乐合成失败: ids={}", Arrays.toString(ids), e);
+        }
         return ResultData.result(labAudioSynthesisService.deleteLabAudioSynthesisByIds(ids));
     }
 }

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabRiskPlanjoinsubMapper.java

@@ -7,6 +7,7 @@ import com.zd.laboratory.domain.vo.LabSubjectVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * 【请填写功能名称】Mapper接口
@@ -142,4 +143,6 @@ public interface LabRiskPlanjoinsubMapper
      * @return
      */
     int deleteByPlanjoinsubByRiskIdAndSubId(@Param("labRiskPlanSubVo") LabRiskPlanSubVo labRiskPlanSubVo);
+
+    List<LabRiskPlanjoinsub> selectLabRiskPlanjoinsubsByPlanIds(@Param("ids") Set<Long> ids);
 }

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabRiskPlanService.java

@@ -15,6 +15,7 @@ import com.zd.model.domain.ResultData;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 风险预案Service接口
@@ -158,4 +159,6 @@ public interface ILabRiskPlanService  extends IService<LabRiskPlan> {
     void writerEnterRiskPlan(Long groupId,Integer ifCheck);
 
     void inserRiskLog(Long subjectId,Integer automanual);
+
+    List<LabRiskPlanjoinsub> selectLabRiskPlanjoinsubsByPlanIds(Set<Long> ids);
 }

+ 5 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanServiceImpl.java

@@ -1850,6 +1850,11 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
         }
     }
 
+    @Override
+    public List<LabRiskPlanjoinsub> selectLabRiskPlanjoinsubsByPlanIds(Set<Long> ids) {
+        return labRiskPlanjoinsubMapper.selectLabRiskPlanjoinsubsByPlanIds(ids);
+    }
+
     public static boolean isListEqual(List l0, List l1) {
         boolean flag = false;
         if (l0 == null && l1 == null) return true;

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabRiskPlanjoinsubMapper.xml

@@ -285,6 +285,14 @@
                      LEFT JOIN lab_subject ls on lrp.subject_id = ls.id
         where lrp.risk_plan_id = #{riskPlanId}
     </select>
+
+    <select id="selectLabRiskPlanjoinsubsByPlanIds" resultType="com.zd.laboratory.domain.LabRiskPlanjoinsub" parameterType="java.util.Set">
+        select * from lab_risk_planjoinsub where risk_plan_id IN
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+
     <delete id="deleteByPlanjoinsubByRiskIdAndSubId">
         delete
         from lab_risk_planjoinsub