From bcbdb084c3a3a0a4de8fca1aa16caf0bc4681ddf Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期二, 27 十月 2026 09:41:51 +0800
Subject: [PATCH] feat(device): 删除核查计划明细时连带清理未审核记录和附件,已审核记录仍禁止删除

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java |   37 ++++++++++++++++++++++++++++++++-----
 1 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java
index 1c076e2..1381d0e 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java
@@ -23,7 +23,9 @@
 import com.ruoyi.device.mapper.DeviceExamineAttachmentMapper;
 import com.ruoyi.device.mapper.DeviceExaminePlanDetailsMapper;
 import com.ruoyi.device.mapper.DeviceExaminePlanMapper;
+import com.ruoyi.device.mapper.DeviceExamineRecordContrastDetailsMapper;
 import com.ruoyi.device.mapper.DeviceExamineRecordContrastMapper;
+import com.ruoyi.device.mapper.DeviceExamineRecordDetailMapper;
 import com.ruoyi.device.mapper.DeviceExamineRecordMapper;
 import com.ruoyi.device.mapper.DeviceMapper;
 import com.ruoyi.device.pojo.Device;
@@ -32,6 +34,8 @@
 import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
 import com.ruoyi.device.pojo.DeviceExamineRecord;
 import com.ruoyi.device.pojo.DeviceExamineRecordContrast;
+import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
+import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
 import com.ruoyi.device.service.DeviceExaminePlanDetailsService;
 import com.ruoyi.device.service.DeviceExaminePlanService;
 import com.ruoyi.framework.exception.ErrorException;
@@ -61,6 +65,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -90,6 +95,10 @@
     private DeviceExamineRecordMapper deviceExamineRecordMapper;
     @Resource
     private DeviceExamineRecordContrastMapper deviceExamineRecordContrastMapper;
+    @Resource
+    private DeviceExamineRecordDetailMapper deviceExamineRecordDetailMapper;
+    @Resource
+    private DeviceExamineRecordContrastDetailsMapper deviceExamineRecordContrastDetailsMapper;
     @Resource
     private DeviceExamineAttachmentMapper deviceExamineAttachmentMapper;
 
@@ -658,7 +667,7 @@
     }
 
     /**
-     * 鍒犻櫎璁″垝鏄庣粏锛涘凡鏈夋牳鏌�/姣斿璁板綍鐨勪笉鍏佽鍒犻櫎锛屼繚璇佸巻鍙茬暀妗�
+     * 鍒犻櫎璁″垝鏄庣粏锛涘凡瀹℃牳瀹屾垚鐨勬牳鏌�/姣斿璁板綍闅忓巻鍙茬暀妗d笉鍏佽鍒犻櫎锛屾湭瀹℃牳鐨勮褰曢殢鏄庣粏涓�璧峰垹闄�
      */
     @Override
     public boolean removeExaminePlanDetail(Integer planDetailsId) {
@@ -669,13 +678,31 @@
         if (detail == null) {
             return false;
         }
-        Long recordCount = deviceExamineRecordMapper.selectCount(Wrappers.<DeviceExamineRecord>lambdaQuery()
+        List<DeviceExamineRecord> records = deviceExamineRecordMapper.selectList(Wrappers.<DeviceExamineRecord>lambdaQuery()
                 .eq(DeviceExamineRecord::getPlanDetailsId, planDetailsId));
-        Long contrastCount = deviceExamineRecordContrastMapper.selectCount(Wrappers.<DeviceExamineRecordContrast>lambdaQuery()
+        List<DeviceExamineRecordContrast> contrasts = deviceExamineRecordContrastMapper.selectList(Wrappers.<DeviceExamineRecordContrast>lambdaQuery()
                 .eq(DeviceExamineRecordContrast::getPlanDetailsId, planDetailsId));
-        if ((recordCount != null && recordCount > 0) || (contrastCount != null && contrastCount > 0)) {
-            throw new ErrorException("璇ヨ鍒掑凡瀛樺湪鏍告煡璁板綍锛屼负淇濈暀鍘嗗彶璁板綍涓嶅厑璁稿垹闄�");
+        boolean hasReviewedRecord = records.stream().anyMatch(item -> item.getReviewStatus() != null
+                && (item.getReviewStatus() == 0 || item.getReviewStatus() == 1));
+        boolean hasReviewedContrast = contrasts.stream().anyMatch(item -> item.getReviewStatus() != null
+                && (item.getReviewStatus() == 0 || item.getReviewStatus() == 1));
+        if (hasReviewedRecord || hasReviewedContrast) {
+            throw new ErrorException("璇ヨ鍒掑凡瀛樺湪瀹℃牳瀹屾垚鐨勬牳鏌ヨ褰曪紝涓轰繚鐣欏巻鍙茶褰曚笉鍏佽鍒犻櫎");
         }
+        if (!records.isEmpty()) {
+            List<Integer> recordIds = records.stream().map(DeviceExamineRecord::getRecordId).collect(Collectors.toList());
+            deviceExamineRecordDetailMapper.delete(Wrappers.<DeviceExamineRecordDetail>lambdaQuery()
+                    .in(DeviceExamineRecordDetail::getRecordId, recordIds));
+            deviceExamineRecordMapper.deleteBatchIds(recordIds);
+        }
+        if (!contrasts.isEmpty()) {
+            List<Integer> contrastIds = contrasts.stream().map(DeviceExamineRecordContrast::getRecordContrastId).collect(Collectors.toList());
+            deviceExamineRecordContrastDetailsMapper.delete(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery()
+                    .in(DeviceExamineRecordContrastDetails::getRecordContrastId, contrastIds));
+            deviceExamineRecordContrastMapper.deleteBatchIds(contrastIds);
+        }
+        deviceExamineAttachmentMapper.delete(Wrappers.<DeviceExamineAttachment>lambdaQuery()
+                .eq(DeviceExamineAttachment::getPlanDetailsId, planDetailsId));
         boolean removed = deviceExaminePlanDetailsService.removeById(planDetailsId);
         if (removed && detail.getDeviceId() != null) {
             rollbackDeviceExamineDate(detail);

--
Gitblit v1.9.3