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 | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 1 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 ed0e8e7..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) {
@@ -77,7 +83,24 @@
if (snapshot == null) {
throw new ErrorException("鏈壘鍒板綋鍓嶆ā鏉跨殑鍘熷璁板綍蹇収");
}
- boolean hasSnapshotField = dto.isTemperaturePresent() || dto.isDetectionTimePresent()
+ boolean hasDetectionRange = dto.isDetectionTimePresent() || dto.isDetectionEndTimePresent();
+ if (hasDetectionRange) {
+ if (!dto.isDetectionTimePresent()) {
+ throw new ErrorException("璇烽�夋嫨瀹屾暣鐨勬娴嬫椂闂磋寖鍥�");
+ }
+ // 鍏煎鏃у鎴风鍙彁浜ゅ崟涓棩鏈燂紱鏂板鎴风蹇呴』鍚屾椂鎻愪氦璧锋鏃ユ湡鎴栧悓鏃舵竻绌恒��
+ if (!dto.isDetectionEndTimePresent()) {
+ dto.setDetectionEndTime(dto.getDetectionTime());
+ }
+ if ((dto.getDetectionTime() == null) != (dto.getDetectionEndTime() == null)) {
+ throw new ErrorException("璇烽�夋嫨瀹屾暣鐨勬娴嬫椂闂磋寖鍥�");
+ }
+ if (dto.getDetectionTime() != null
+ && dto.getDetectionEndTime().isBefore(dto.getDetectionTime())) {
+ throw new ErrorException("妫�娴嬬粨鏉熸棩鏈熶笉鑳芥棭浜庡紑濮嬫棩鏈�");
+ }
+ }
+ boolean hasSnapshotField = dto.isTemperaturePresent() || hasDetectionRange
|| dto.isDetectionPlacePresent()
|| dto.isInsResultPresent();
if (hasSnapshotField) {
@@ -88,6 +111,8 @@
InsOrderStandardTemplate::getTemperature, dto.getTemperature())
.set(dto.isDetectionTimePresent(),
InsOrderStandardTemplate::getDetectionTime, dto.getDetectionTime())
+ .set(hasDetectionRange,
+ InsOrderStandardTemplate::getDetectionEndTime, dto.getDetectionEndTime())
.set(dto.isDetectionPlacePresent(),
InsOrderStandardTemplate::getDetectionPlace, dto.getDetectionPlace())
.set(dto.isInsResultPresent(),
@@ -125,6 +150,7 @@
if (!hasSnapshotField && !dto.isDeviceIdsPresent()) {
throw new ErrorException("娌℃湁闇�瑕佷繚瀛樼殑妯℃澘妫�楠屾潯浠�");
}
+ refreshPendingDeviceRecords(dto);
return true;
}
InsOrder insOrder = new InsOrder();
@@ -134,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