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/DeviceExamineRecordServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java
index d5fea12..6124241 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java
@@ -20,6 +20,7 @@
 import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
 import com.ruoyi.device.pojo.DeviceExamineRecord;
 import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
+import com.ruoyi.device.service.DeviceExaminePlanService;
 import com.ruoyi.device.service.DeviceExamineRecordDetailService;
 import com.ruoyi.device.service.DeviceExamineRecordService;
 import com.ruoyi.framework.exception.ErrorException;
@@ -36,6 +37,8 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 
@@ -53,6 +56,8 @@
 
     @Resource
     private DeviceExamineRecordDetailService deviceExamineRecordDetailService;
+    @Resource
+    private DeviceExaminePlanService deviceExaminePlanService;
     @Resource
     private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
     @Resource
@@ -174,18 +179,61 @@
         if (dto.getPlanDetailsId() == null) {
             throw new ErrorException("缂哄皯璁″垝璇︾粏淇℃伅id");
         }
+        DeviceExaminePlanDetails planDetails = deviceExaminePlanDetailsMapper.selectById(dto.getPlanDetailsId());
+        if (planDetails == null) {
+            throw new ErrorException("鏍告煡璁″垝鏄庣粏涓嶅瓨鍦�");
+        }
+        if (planDetails.getCheckChargerUserId() == null && StringUtils.isBlank(planDetails.getCheckChargerUser())) {
+            throw new ErrorException("璇峰厛鍦ㄧ紪杈戜腑濉啓鏍告煡璐熻矗浜�");
+        }
+
+        Integer reviewStatus = dto.getReviewStatus();
+        Integer reviewerId = SecurityUtils.getUserId().intValue();
+        User reviewer = userMapper.selectById(reviewerId);
+
         LambdaUpdateWrapper<DeviceExamineRecord> wrapper = Wrappers.<DeviceExamineRecord>lambdaUpdate()
                 .eq(DeviceExamineRecord::getPlanDetailsId, dto.getPlanDetailsId())
-                .set(DeviceExamineRecord::getReviewStatus, dto.getReviewStatus())
+                .set(DeviceExamineRecord::getReviewStatus, reviewStatus)
                 .set(DeviceExamineRecord::getReviewRemark, dto.getReviewRemark());
 
         // 涓�0娓呴櫎瀹℃牳浜�
-        if (dto.getReviewStatus().equals(0)) {
+        if (reviewStatus != null && reviewStatus == 0) {
             wrapper.set(DeviceExamineRecord::getReviewUserId, null)
                     .set(DeviceExamineRecord::getReviewUser, null);
+        } else {
+            wrapper.set(DeviceExamineRecord::getReviewUserId, reviewerId)
+                    .set(DeviceExamineRecord::getReviewUser, reviewer == null ? null : reviewer.getName());
         }
 
-        this.update(wrapper);
+        boolean updated = this.update(wrapper);
+        // 璁″垝琛屽皻鏈綍鍏ユ牳鏌ヨ褰曟椂锛岃ˉ涓�鏉″鏍哥粨鏋滆褰曪紝淇濊瘉鍒楄〃鑳芥樉绀洪�氳繃/涓嶉�氳繃鐘舵��
+        if (!updated) {
+            DeviceExamineRecord record = new DeviceExamineRecord();
+            record.setPlanDetailsId(dto.getPlanDetailsId());
+            record.setReviewStatus(reviewStatus);
+            record.setReviewRemark(dto.getReviewRemark());
+            record.setCheckerUserId(planDetails.getCheckChargerUserId());
+            record.setCheckerUser(planDetails.getCheckChargerUser());
+            if (reviewStatus != null && reviewStatus == 1) {
+                record.setReviewUserId(reviewerId);
+                record.setReviewUser(reviewer == null ? null : reviewer.getName());
+            }
+            this.save(record);
+        }
+
+        // 澶嶆牳閫氳繃鍚庯紝璁惧妗f鐨勬渶杩�/涓嬫鏍告煡鏃ユ湡杩涘叆涓嬩竴杞�
+        if (reviewStatus != null && reviewStatus == 1) {
+            // 鎻愬墠瀹℃牳鏃舵妸鏈疆璁″垝褰掑埌瀹為檯瀹℃牳鏈堜唤锛屼究浜庣郴缁熺櫥璁颁笅涓�杞紱鎵嬪姩褰曞叆鍒版棩鐨勬棩鏈熶繚鎸佸師鏍�
+            String currentCheckTime = planDetails.getCheckTime();
+            boolean hasCheckDate = currentCheckTime != null && currentCheckTime.trim().length() >= 10;
+            if (!hasCheckDate) {
+                DeviceExaminePlanDetails updateDetail = new DeviceExaminePlanDetails();
+                updateDetail.setPlanDetailsId(dto.getPlanDetailsId());
+                updateDetail.setCheckTime(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM")));
+                deviceExaminePlanService.updateExaminePlanDetail(updateDetail);
+            }
+            deviceExaminePlanService.updateDeviceExamineDate(dto.getPlanDetailsId());
+        }
         return true;
     }
 

--
Gitblit v1.9.3