From 3728fa293e1faf4bf4f9bf41105b84ddb43dc82e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 02 十一月 2026 16:53:02 +0800
Subject: [PATCH] feat(order-rates): 新增筛选条件下全部订单费用汇总接口
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 114 +++++++++++++++++++++++++++-----------------------------
1 files changed, 55 insertions(+), 59 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..74f8661 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
@@ -45,6 +45,7 @@
import com.ruoyi.inspect.pojo.*;
import com.ruoyi.inspect.service.*;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.inspect.util.ReportResultTableRenderPolicy;
import com.ruoyi.inspect.util.PreserveReportPicturePlaceholderHandler;
import com.ruoyi.inspect.util.ReportSignaturePictureUtils;
import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
@@ -605,11 +606,9 @@
}
- // 娣诲姞璁惧璁板綍
- threadPoolTaskExecutor.execute(() -> {
- // 娣诲姞璁惧浣跨敤璁板綍
- addDeviceRecord(insSample, userId);
- });
+ // 鍘熷璁板綍淇濆瓨鍚庯紝鎸夊綋鍓嶆ā鏉块�夌敤鐨勮澶囩敓鎴愪娇鐢ㄨ褰�
+ syncDeviceRecordsFromTemplate(saveInsContextDto.getOrderId(), saveInsContextDto.getSampleId(),
+ saveInsContextDto.getCurrentTable(), userId);
}
/**
@@ -692,6 +691,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 +1033,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());
}
@@ -1862,11 +1856,13 @@
}
// 妫�楠屼汉鍛樻彁浜ゅ鏍告椂涓嶇敓鎴愭姤鍛婏紱鍏ㄩ儴璇曢獙瀹ゅ鏍搁�氳繃鍚庣敓鎴愭姤鍛娿��
- if (report == null || StringUtils.isBlank(report.getUrl())) {
+ boolean returnedFromReport = report != null && Objects.equals(report.getIsPass(), 0);
+ if (report == null || StringUtils.isBlank(report.getUrl()) || returnedFromReport) {
this.generateReport(orderId, DETECTION_REPORT, writeUserId);
}
// 鐩寸粦妯℃澘璁㈠崟鍚屾椂鐢熸垚妫�楠屾姤鍛婏紝涓や唤鏂囦欢鍏辩敤鍚屼竴鏉″鎵硅褰曘��
- if (directTemplateOrder && (report == null || StringUtils.isBlank(report.getInspectionUrl()))) {
+ if (directTemplateOrder && (report == null || StringUtils.isBlank(report.getInspectionUrl())
+ || returnedFromReport)) {
this.generateReport(orderId, INSPECTION_REPORT, writeUserId);
}
report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
@@ -3754,7 +3750,7 @@
}
Configure configure = Configure.builder()
.bind("deviceList", new HackLoopTableRenderPolicy())
- .bind("r", new HackLoopTableRenderPolicy(true))
+ .bind("r", new ReportResultTableRenderPolicy())
.setValidErrorHandler(new PreserveReportPicturePlaceholderHandler())
.useSpringEL(true)
.build();
--
Gitblit v1.9.3