From 8ad863082097ffdcab4a8e7f426d344a1fe6f892 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 00:27:02 +0800
Subject: [PATCH] 修复人员管理接口校验与导出,完善设备保养计划与文件受控功能

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
index b59afae..3089f47 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
@@ -11,12 +11,14 @@
 import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.dto.InsProductBindingDto;
 import com.ruoyi.inspect.dto.WriteInspectionConditionDto;
+import com.ruoyi.inspect.mapper.InsOrderDeviceRecordMapper;
 import com.ruoyi.inspect.mapper.InsOrderMapper;
 import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
 import com.ruoyi.inspect.mapper.InsOrderTemplateDeviceMapper;
 import com.ruoyi.inspect.mapper.InsProductMapper;
 import com.ruoyi.inspect.mapper.InsSampleMapper;
 import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsOrderDeviceRecord;
 import com.ruoyi.inspect.pojo.InsOrderStandardTemplate;
 import com.ruoyi.inspect.pojo.InsOrderTemplateDevice;
 import com.ruoyi.inspect.pojo.InsProduct;
@@ -28,6 +30,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -48,6 +52,8 @@
     private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
 
     private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper;
+
+    private InsOrderDeviceRecordMapper insOrderDeviceRecordMapper;
 
     @Override
     public int selectOrderManDay(Integer orderId) {
@@ -144,6 +150,7 @@
             if (!hasSnapshotField && !dto.isDeviceIdsPresent()) {
                 throw new ErrorException("娌℃湁闇�瑕佷繚瀛樼殑妯℃澘妫�楠屾潯浠�");
             }
+            refreshPendingDeviceRecords(dto);
             return true;
         }
         InsOrder insOrder = new InsOrder();
@@ -153,6 +160,38 @@
         return true;
     }
 
+    /**
+     * 鍘熷璁板綍鐨勭幆澧冩潯浠跺悗琛ユ椂锛屽悓姝ュ埌灏氭湭濉啓鐨勪娇鐢ㄨ褰曘��
+     * 宸叉墜宸ユ敼鍔ㄨ繃鐨勮褰曪紙宸叉湁寮�濮嬫棩鏈燂級涓嶈鐩栥��
+     */
+    private void refreshPendingDeviceRecords(WriteInspectionConditionDto dto) {
+        boolean hasTemperature = dto.isTemperaturePresent()
+                && dto.getTemperature() != null && !dto.getTemperature().trim().isEmpty();
+        boolean hasDetectionRange = dto.isDetectionTimePresent() && dto.getDetectionTime() != null;
+        if (!hasTemperature && !hasDetectionRange) {
+            return;
+        }
+        List<Integer> deviceIds = insOrderTemplateDeviceMapper
+                .selectDeviceIdsByOrderAndTemplate(dto.getId(), dto.getTemplateId());
+        if (deviceIds == null || deviceIds.isEmpty()) {
+            return;
+        }
+        LocalDateTime start = null;
+        LocalDateTime end = null;
+        if (hasDetectionRange) {
+            start = dto.getDetectionTime().atTime(10, 0);
+            LocalDate endDate = dto.getDetectionEndTime() != null ? dto.getDetectionEndTime() : dto.getDetectionTime();
+            end = endDate.atTime(19, 30);
+        }
+        insOrderDeviceRecordMapper.update(null, Wrappers.<InsOrderDeviceRecord>lambdaUpdate()
+                .eq(InsOrderDeviceRecord::getInsOrderId, dto.getId())
+                .in(InsOrderDeviceRecord::getDeviceId, deviceIds)
+                .isNull(InsOrderDeviceRecord::getUseStartDate)
+                .set(hasTemperature, InsOrderDeviceRecord::getTemperature, dto.getTemperature())
+                .set(hasDetectionRange, InsOrderDeviceRecord::getUseStartDate, start)
+                .set(hasDetectionRange, InsOrderDeviceRecord::getUseEndDate, end));
+    }
+
     //鏌ヨ寰呮椤圭洰
     @Override
     public IPage<InsProduct> selectNoProducts(Page page, InsProduct insProduct, Integer orderId, String ids) {

--
Gitblit v1.9.3