From 3d397976d08f0359b8cfeb4e4f22403ae5d0c04f Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 24 十月 2026 20:44:14 +0800
Subject: [PATCH] feat(device): 设备核查计划附件与设备使用记录联动改造
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 105 ++++++++++++++++++++++++----------------------------
1 files changed, 49 insertions(+), 56 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index 9df50e7..3dde4b3 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -605,11 +605,9 @@
}
- // 娣诲姞璁惧璁板綍
- threadPoolTaskExecutor.execute(() -> {
- // 娣诲姞璁惧浣跨敤璁板綍
- addDeviceRecord(insSample, userId);
- });
+ // 鍘熷璁板綍淇濆瓨鍚庯紝鎸夊綋鍓嶆ā鏉块�夌敤鐨勮澶囩敓鎴愪娇鐢ㄨ褰�
+ syncDeviceRecordsFromTemplate(saveInsContextDto.getOrderId(), saveInsContextDto.getSampleId(),
+ saveInsContextDto.getCurrentTable(), userId);
}
/**
@@ -692,6 +690,9 @@
.and(w -> w.isNull(InsProduct::getLastValue).or().eq(InsProduct::getLastValue, "")));
sample.setInsState(unfinished == 0 ? 2 : 1);
insSampleMapper.updateById(sample);
+
+ // 鍘熷璁板綍淇濆瓨鍚庯紝鎸夊綋鍓嶆ā鏉块�夌敤鐨勮澶囩敓鎴愪娇鐢ㄨ褰�
+ syncDeviceRecordsFromTemplate(dto.getOrderId(), dto.getSampleId(), dto.getTemplateId(), userId);
}
/**
@@ -1031,60 +1032,52 @@
}
}
- private synchronized void addDeviceRecord(InsSample insSample, Integer userId) {
- InsOrder order = insOrderMapper.selectById(insSample.getInsOrderId());
+ /**
+ * 鍘熷璁板綍淇濆瓨鍚庯紝鎸夊綋鍓嶆ā鏉块�夌敤鐨勮澶囩敓鎴愬緟濉啓鐨勪娇鐢ㄨ褰曘��
+ * 鍚屼竴璁㈠崟銆佹牱鍝併�佽澶囧彧鐢熸垚涓�鏉★紱宸茬粡濉啓杩囩殑璁板綍涓嶄細琚鐩栥��
+ */
+ private synchronized void syncDeviceRecordsFromTemplate(Integer orderId, Integer sampleId,
+ Integer templateId, Integer userId) {
+ if (orderId == null || sampleId == null || templateId == null) {
+ return;
+ }
+ InsOrder order = insOrderMapper.selectById(orderId);
+ InsSample sample = insSampleMapper.selectById(sampleId);
+ if (order == null || sample == null) {
+ return;
+ }
+ List<Integer> deviceIds = insOrderTemplateDeviceMapper
+ .selectDeviceIdsByOrderAndTemplate(orderId, templateId);
+ if (CollectionUtils.isEmpty(deviceIds)) {
+ return;
+ }
User user = userMapper.selectById(userId);
- // 鏌ヨ璁惧浣跨敤璁板綍鏌ヨ璇ヨ鍗曠殑浣跨敤璁板綍
- List<InsOrderDeviceRecordDto> deviceRecordDtoList = insOrderDeviceRecordMapper.selectDeviceNumber(insSample.getInsOrderId());
- Set<String> recordCodeset = deviceRecordDtoList.stream().map(InsOrderDeviceRecordDto::getManagementNumber).collect(Collectors.toSet());
-
- // 鑾峰彇璁㈠崟璁惧缂栧彿
- List<InsProductResult> resultList = insProductResultMapper.selectResultByOrderId(insSample.getInsOrderId());
- Set<String> deviceCodeSet = new HashSet<>();
- for (InsProductResult result : resultList) {
- // 娣诲姞璁惧缂栧彿
- List<JSONObject> jsonObjects = JSON.parseArray(result.getEquipValue(), JSONObject.class);
- for (JSONObject jsonObject : jsonObjects) {
- if (!"".equals(jsonObject.get("v") + "")) {
- List<String> v = StrUtil.split(jsonObject.get("v") + "", "锛�");
- deviceCodeSet.addAll(v);
- }
+ String usePerson = user == null ? "" : user.getName();
+ String sampleCode = StringUtils.isNotBlank(sample.getSampleCode())
+ ? sample.getSampleCode() : order.getEntrustCode();
+ for (Integer deviceId : deviceIds) {
+ if (deviceId == null) {
+ continue;
}
+ Long count = insOrderDeviceRecordMapper.selectCount(Wrappers.<InsOrderDeviceRecord>lambdaQuery()
+ .eq(InsOrderDeviceRecord::getInsOrderId, orderId)
+ .eq(InsOrderDeviceRecord::getDeviceId, deviceId)
+ .eq(InsOrderDeviceRecord::getSampleCode, sampleCode));
+ if (count != null && count > 0) {
+ continue;
+ }
+ InsOrderDeviceRecord record = new InsOrderDeviceRecord();
+ record.setInsOrderId(orderId);
+ record.setDeviceId(deviceId);
+ record.setSampleCode(sampleCode);
+ record.setTemperature(order.getTemperature());
+ record.setHumidity(order.getHumidity());
+ record.setUseBefore(1);
+ record.setUseAfter(1);
+ record.setUsePersonId(userId);
+ record.setUsePerson(usePerson);
+ insOrderDeviceRecordMapper.insert(record);
}
- // 1.鍒ゆ柇鏄惁鏈夋病鏈夋坊鍔犵殑浣跨敤璁板綍
- Set<String> orderDeviceNumbers = getDeviceDifference(deviceCodeSet, recordCodeset);
- // 娣诲姞浣跨敤璁板綍, 鏍规嵁缂栧彿鏌ヨ璁惧id
- if (CollectionUtils.isNotEmpty(orderDeviceNumbers)) {
- List<Integer> orderDeviceIds = insOrderDeviceRecordMapper.selectDeviceIdsByNumbers(orderDeviceNumbers);
- List<InsOrderDeviceRecord> collect = orderDeviceIds.stream().map(deviceId -> {
- InsOrderDeviceRecord insOrderDeviceRecord = new InsOrderDeviceRecord();
- insOrderDeviceRecord.setInsOrderId(insSample.getInsOrderId());
- insOrderDeviceRecord.setDeviceId(deviceId);
- insOrderDeviceRecord.setSampleCode(order.getEntrustCode());
- insOrderDeviceRecord.setUseBefore(1);
- insOrderDeviceRecord.setUseAfter(1);
- insOrderDeviceRecord.setUsePerson(user.getName());
- insOrderDeviceRecord.setUsePersonId(user.getId());
- return insOrderDeviceRecord;
- }).collect(Collectors.toList());
-
- insOrderDeviceRecordService.saveBatch(collect);
-
- }
-
- // 2.鍒ゆ柇鏄惁鍙栨秷浜嗚澶囦娇鐢�
- Set<String> repoprNumbers = getDeviceDifference(recordCodeset, deviceCodeSet);
- if (CollectionUtils.isNotEmpty(repoprNumbers)) {
- List<Integer> reportDeviceIds = insOrderDeviceRecordMapper.selectDeviceIdsByNumbers(repoprNumbers);
- insOrderDeviceRecordMapper.delete(Wrappers.<InsOrderDeviceRecord>lambdaQuery()
- .in(InsOrderDeviceRecord::getDeviceId, reportDeviceIds)
- .eq(InsOrderDeviceRecord::getInsOrderId, insSample.getInsOrderId()));
- }
- }
-
- private static Set<String> getDeviceDifference(Set<String> number1, Set<String> number2) {
- return number1.stream().filter(s1 -> number2.stream().noneMatch(s2 -> s1.equals(s2)))
- .collect(Collectors.toSet());
}
--
Gitblit v1.9.3