From 82ce59218139d9fefeae7b9e5fbc88b499ff023f Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 08 十月 2026 13:35:06 +0800
Subject: [PATCH] feat(inspect): 新增新聚检验订单编辑功能并优化报告生成流程 - 新增 updateNewJuInsOrder 接口支持新聚检验订单修改 - 增加文件上传大小限制至200MB,请求大小限制至400MB - 在设备信息中新增出厂编号字段显示 - 优化温湿度处理逻辑,报告中仅显示温度信息 - 新增印章管理功能,支持MA标志章、报告章和骑缝章配置 - 完善检验报告生成流程,增加多种报告类型常量定义 - 优化附件上传功能,增加空值检查和返回值处理 - 调整委托编号生成逻辑,完善新聚订单可编辑性判断 - 更新CNAS流程中报告编号使用正式报告编号替代委托编号

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java |   43 +++++++++++++++++++++++--------------------
 1 files changed, 23 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 3394113..d1b2df8 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
@@ -84,7 +84,6 @@
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * 妫�楠屼换鍔�-涓氬姟瀹炵幇灞�
@@ -380,6 +379,9 @@
 
     @Override
     public int uploadFile(Integer orderId, MultipartFile file) {
+        if (orderId == null || file == null || file.isEmpty()) {
+            throw new ErrorException("璇烽�夋嫨瑕佷笂浼犵殑闄勪欢");
+        }
         String urlString;
         String pathName;
         String path;
@@ -406,7 +408,7 @@
             urlString = realpath + "/" + pathName;
             file.transferTo(new File(urlString));
             insOrderFile.setFileUrl(pathName);
-            return insOrderFileMapper.insert(insOrderFile);
+            return insOrderFileMapper.insert(insOrderFile) > 0 ? insOrderFile.getId() : 0;
         } catch (Exception e) {
             e.printStackTrace();
             System.err.println("闄勪欢涓婁紶閿欒");
@@ -1684,8 +1686,9 @@
         boolean directTemplateOrder = isDirectTemplateOrder(orderId);
         if (currentState != null && Objects.equals(currentState.getInsState(), 5)
                 && existingReport != null && StringUtils.isNotBlank(existingReport.getUrl())
+                && Objects.equals(existingReport.getIsPass(), 1)
                 && (!directTemplateOrder || StringUtils.isNotBlank(existingReport.getInspectionUrl()))) {
-            // 闃叉澶嶆牳椤甸潰閲嶅鐐瑰嚮鎴栫綉缁滈噸璇曢噸澶嶇敓鎴愭姤鍛娿�侀噸澶嶅彂璧锋姤鍛婂鎵广��
+            // 浠呭浠嶅湪鎶ュ憡缂栧埗涓殑璁板綍闃查噸澶嶏紱閫�鍥炴楠屼换鍔$殑鎶ュ憡闇�瑕佺户缁墽琛屽苟鎭㈠ is_pass銆�
             return 1;
         }
         if (directTemplateOrder && Objects.equals(type, 1)
@@ -1964,10 +1967,12 @@
         if (StringUtils.isBlank(tempPdfName)) {
             throw new ErrorException("鎶ュ憡棰勮鏂囦欢鐢熸垚澶辫触");
         }
-        // generateReport 浼氬啓鍏ュ綋鍓嶆椂闂达紱閲嶆柊鐢熸垚涓嶅簲鏀瑰彉鍘熷鎵硅褰曟椂闂淬��
+        // generateReport 浼氬啓鍏ュ綋鍓嶆椂闂达紝閮ㄥ垎鎶ュ憡杩樹細鏆傛椂鍐欏叆 is_pass=0锛�
+        // 閲嶆柊鐢熸垚涓嶅簲鏀瑰彉鍘熷鎵硅褰曟椂闂村拰鍙鐘舵�併��
         insReportMapper.update(null, Wrappers.<InsReport>lambdaUpdate()
                 .eq(InsReport::getId, reportId)
                 .set(InsReport::getWriteTime, report.getWriteTime())
+                .set(InsReport::getIsPass, report.getIsPass())
                 .set(InsReport::getTempUrlPdf, "/word/" + tempPdfName));
     }
 
@@ -3535,7 +3540,7 @@
         String insTime = formatReportTestDate(detectionDates);
         String insTimeEn = formatReportTestDateEn(detectionDates, monthNames);
 
-        // 妫�楠岀幆澧冿細浼樺厛姹囨�诲悇妯℃澘濉啓鐨勬俯婀垮害锛屾姤鍛婂睍绀哄叏閮ㄦā鏉跨殑鏈�灏忓�煎埌鏈�澶у�笺��
+        // 妫�楠岀幆澧冿細浼樺厛姹囨�诲悇妯℃澘濉啓鐨勬俯搴︼紝鎶ュ憡灞曠ず鍏ㄩ儴妯℃澘鐨勬渶灏忓�煎埌鏈�澶у�笺��
         String environment = buildReportEnvironment(orderId, insOrder);
         String finalEnvironment = environment;
         LocalDateTime finalSendTime = sendTime;
@@ -3619,6 +3624,7 @@
         String finalResultRemark = resultRemark;
         String equipmentText = buildEquipmentText(finalDeviceList);
         String issueDate = now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"));
+        String conclusionDate = now.format(DateTimeFormatter.ofPattern("yyyy 骞� MM 鏈� dd 鏃�"));
         String finalReportModelStr = finalModelStr;
         LocalDateTime finalReportSendTime = finalSendTime;
         XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
@@ -3662,6 +3668,7 @@
                     put("customer", finalCustomerName);
                     put("category", finalDetectionCategory);
                     put("date", issueDate);
+                    put("conclusionDate", conclusionDate);
                     put("maker", defaultReportText(insOrder.getProduction(), "/"));
                     put("env", finalEnvironment);
                     put("qty", defaultReportText(insOrder.getTestQuantity(), "/"));
@@ -3891,12 +3898,18 @@
         for (Map<String, String> device : deviceList) {
             String name = getMapText(device, "deviceName", "device_name");
             String managementNumber = getMapText(device, "managementNumber", "management_number");
+            String factoryNo = getMapText(device, "factoryNo", "factory_no");
             if (StringUtils.isBlank(name) || "/".equals(name.trim())) {
                 continue;
             }
-            String number = StringUtils.isBlank(managementNumber) || "/".equals(managementNumber.trim())
-                    ? "鍑哄巶缂栧彿" : managementNumber.trim();
-            String item = name.trim() + "锛�" + number;
+            String number = managementNumber;
+            if (StringUtils.isBlank(number) || "/".equals(number.trim())) {
+                number = factoryNo;
+            }
+            if (StringUtils.isBlank(number) || "/".equals(number.trim())) {
+                continue;
+            }
+            String item = name.trim() + "锛�" + number.trim();
             equipmentItems.add(item);
         }
         if (equipmentItems.isEmpty()) {
@@ -3915,22 +3928,12 @@
         List<InsOrderStandardTemplate> snapshots = insOrderStandardTemplateService.list(
                 Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                         .eq(InsOrderStandardTemplate::getInsOrderId, orderId)
-                        .select(InsOrderStandardTemplate::getTemperature,
-                                InsOrderStandardTemplate::getHumidity));
+                        .select(InsOrderStandardTemplate::getTemperature));
         List<String> temperatures = snapshots.stream()
                 .map(InsOrderStandardTemplate::getTemperature)
                 .filter(StringUtils::isNotBlank)
                 .collect(Collectors.toList());
-        List<String> humidities = snapshots.stream()
-                .map(InsOrderStandardTemplate::getHumidity)
-                .filter(StringUtils::isNotBlank)
-                .collect(Collectors.toList());
-
-        String temperature = formatConditionRange(temperatures, order.getTemperature(), "鈩�");
-        String humidity = formatConditionRange(humidities, order.getHumidity(), "%RH");
-        return Stream.of(temperature, humidity)
-                .filter(StringUtils::isNotBlank)
-                .collect(Collectors.joining(" "));
+        return formatConditionRange(temperatures, order.getTemperature(), "鈩�");
     }
 
     private static String formatConditionRange(List<String> values, String fallback, String unit) {

--
Gitblit v1.9.3