From fbd4ecb70baf2e671876ca809a81f6e6fe7342ee Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期日, 20 九月 2026 19:52:50 +0800
Subject: [PATCH] feat(inspect): 新增检测标准方法报告文本功能并优化报告生成 - 委托编号生成逻辑调整为下单时生成并校验唯一性,避免审核时重复 - 新增标准模板价格字段及对应的数据模型和数据库映射 - 订单费用详情查询逻辑重构为基于模板价格计算方式 - 新增标准模板与设备绑定关系的数据结构和管理功能 - 委托编号唯一性校验逻辑增强
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 51 +++++++++++++++++++++++++++++++--------------------
1 files changed, 31 insertions(+), 20 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 1b0aee8..dff3ad5 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
@@ -46,6 +46,7 @@
import com.ruoyi.inspect.service.*;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.PreserveReportPicturePlaceholderHandler;
+import com.ruoyi.inspect.util.ReportSignaturePictureUtils;
import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
import com.ruoyi.inspect.vo.InsOrderPlanVO;
import com.ruoyi.inspect.vo.InsSampleUserVO;
@@ -1217,13 +1218,12 @@
.last("FOR UPDATE"));
boolean isInspectionReport = Objects.equals(INSPECTION_REPORT, reportType);
registerInsResults = isInspectionReport && Boolean.TRUE.equals(registerInsResults);
- // 1. 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
+ // 1. 濮旀墭缂栧彿鍏ㄥ眬鍞竴锛屾彁浜ゅ鏍告椂鍐嶆鏍¢獙锛岄槻姝㈠苟鍙戞垨鍘嗗彶鏁版嵁缁曡繃鐢熸垚鏍¢獙銆�
Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
- .ne(InsOrder::getState, -1)
- .ne(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
+ .ne(InsOrder::getId, orderId)
.eq(InsOrder::getEntrustCode, order.getEntrustCode()));
if (codeCount > 0) {
- throw new ErrorException("褰撳墠缂栧彿鏈夐噸澶�, 璇峰厛鍘讳慨鏀归噸澶嶇紪鍙�");
+ throw new ErrorException("鏍峰搧/濮旀墭鍗曞凡瀛樺湪锛岃纭鏍峰搧缂栧彿");
}
// 2. 鍒ゆ柇璇ヨ鍗曟槸鍚︽槸绗竴娆$敓浜�(鍚庣画鎶ュ憡鐢熸垚鍙彇绗竴娆℃彁浜ゆ椂闂�)
@@ -1985,13 +1985,13 @@
|| report.getExamineTime() != null;
if (submitted) {
User writer = getReportSigner(report.getWriteUserId(), "缂栧埗浜�");
- marks.put("writeUrl", Pictures.ofLocal(imgUrl + "/" + writer.getSignatureUrl()).create());
+ marks.put("writeUrl", ReportSignaturePictureUtils.create(imgUrl, writer.getSignatureUrl()));
marks.put("writeDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(report.getWriteTime())).create());
- marks.put("insUrl", Pictures.ofLocal(imgUrl + "/" + writer.getSignatureUrl()).create());
+ marks.put("insUrl", ReportSignaturePictureUtils.create(imgUrl, writer.getSignatureUrl()));
}
if (Objects.equals(report.getIsExamine(), 1)) {
User examiner = getReportSigner(report.getExamineUserId(), "瀹℃牳浜�");
- marks.put("examineUrl", Pictures.ofLocal(imgUrl + "/" + examiner.getSignatureUrl()).create());
+ marks.put("examineUrl", ReportSignaturePictureUtils.create(imgUrl, examiner.getSignatureUrl()));
marks.put("examineDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(report.getExamineTime())).create());
}
return marks;
@@ -2536,13 +2536,18 @@
enterFactoryReport.setLotBatchNo(ifsInventoryQuantity.getUpdateBatchNo());
// 妫�娴嬩緷鎹�
- Set<String> standardMethod = new HashSet<>();
+ Set<String> standardMethod = new LinkedHashSet<>();
StringBuilder standardMethod2 = new StringBuilder();
- standardMethod.add(baseMapper.getStandardMethodCode(insSample.getStandardMethodListId()));
+ String reportStandardMethod = baseMapper.getStandardMethodReportText(insSample.getStandardMethodListId());
+ if (StringUtils.isNotBlank(reportStandardMethod)) {
+ standardMethod.add(reportStandardMethod);
+ }
for (String s : standardMethod) {
standardMethod2.append("銆�").append(s);
}
- standardMethod2.replace(0, 1, "");
+ if (standardMethod2.length() > 0) {
+ standardMethod2.deleteCharAt(0);
+ }
// 鏍峰搧绫诲瀷
String orderType = iSysDictTypeService.selectLabelByDict(DictDataConstants.CHECK_TYPE, insOrder.getOrderType());
@@ -3214,7 +3219,7 @@
insReport.setReportType(reportType);
boolean showResult = Objects.equals(reportType, INSPECTION_REPORT);
List<Map<String, Object>> tables = new ArrayList<>();
- Set<String> standardMethod = new HashSet<>();
+ Set<String> standardMethod = new LinkedHashSet<>();
Set<String> deviceSet = new HashSet<>();
Set<String> models = new HashSet<>();
// 鏌ヨ妫�楠岄」鏁伴噺
@@ -3227,11 +3232,13 @@
/*鍩虹鎶ュ憡(鏍规嵁缁樺埗鐨勫師濮嬭褰曟ā鐗堝舰鎴�)*/
samples.forEach(a -> {
models.add(a.getModel());
- String standardMethodCode = baseMapper.getStandardMethodCode(a.getStandardMethodListId());
- if (StrUtil.isNotBlank(a.getSpecialStandardMethod())) {
- standardMethodCode = standardMethodCode + "+" + a.getSpecialStandardMethod();
+ String standardMethodCode = baseMapper.getStandardMethodReportText(a.getStandardMethodListId());
+ if (StrUtil.isNotBlank(standardMethodCode)) {
+ if (StrUtil.isNotBlank(a.getSpecialStandardMethod())) {
+ standardMethodCode = standardMethodCode + "+" + a.getSpecialStandardMethod();
+ }
+ standardMethod.add(standardMethodCode);
}
- standardMethod.add(standardMethodCode);
for (InsProduct b : a.getInsProduct()) {
if (b.getInsProductResult() != null) {
List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class);
@@ -3577,9 +3584,14 @@
if (firstInspectDate == null) {
firstInspectDate = insOrder.getSendTime();
}
+ if (firstInspectDate == null) {
+ firstInspectDate = submitTime;
+ }
String insTime = firstInspectDate.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�")) + "-"
+ submitTime.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"));
+ String testStartDate = firstInspectDate.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"));
+ String testEndDate = submitTime.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"));
String insTimeEn = monthNames[firstInspectDate.getMonthValue() - 1] + " " + firstInspectDate.format(DateTimeFormatter.ofPattern("dd, yyyy")) + "-"
+ monthNames[submitTime.getMonthValue() - 1] + " " + submitTime.format(DateTimeFormatter.ofPattern("dd, yyyy"));
@@ -3636,11 +3648,8 @@
productionDate = insOrder.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"));
}
batchNo = defaultReportText(insOrder.getProductionBatch(), "/");
- standardMethodText = templateSnapshots.stream()
- .map(InsOrderStandardTemplate::getRemark)
- .filter(StringUtils::isNotBlank)
- .distinct()
- .collect(Collectors.joining("锛�"));
+ standardMethodText = defaultReportText(
+ baseMapper.getStandardMethodReportTextByCode(insOrder.getSample()), insOrder.getSample());
}
boolean containsOrganicChlorine = detectionResultRows.stream()
.map(row -> row.get("itemName"))
@@ -3729,6 +3738,8 @@
put("batch", finalBatchNo);
put("phone", defaultReportText(insOrder.getPhone(), "/"));
put("testDate", insTime);
+ put("testStartDate", testStartDate);
+ put("testEndDate", testEndDate);
put("entrustNo", defaultReportText(insOrder.getEntrustCode(), "/"));
put("sampling", "/");
put("standard", finalStandardMethodText);
--
Gitblit v1.9.3