From 3a83be3db09481c3719e6b86bc6265bcd431422a Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期四, 05 十一月 2026 11:48:13 +0800
Subject: [PATCH] 修复检验委托书字段绑定错误

---
 cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java |   94 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 89 insertions(+), 5 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java b/cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java
index c444fa5..42ecc72 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java
@@ -1,17 +1,29 @@
 package com.ruoyi.process.listener;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.basic.mapper.StandardMethodMapper;
+import com.ruoyi.basic.mapper.StandardTreeMapper;
+import com.ruoyi.basic.pojo.StandardMethod;
+import com.ruoyi.basic.pojo.StandardTree;
 import com.ruoyi.inspect.event.NewJuOrderPlacedEvent;
+import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
+import com.ruoyi.inspect.mapper.InsSampleMapper;
 import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsOrderStandardTemplate;
+import com.ruoyi.inspect.pojo.InsSample;
 import com.ruoyi.inspect.service.InsOrderService;
+import com.ruoyi.process.mapper.InspectionOrderDetailMapper;
 import com.ruoyi.process.mapper.InspectionOrderMapper;
 import com.ruoyi.process.pojo.InspectionOrder;
+import com.ruoyi.process.pojo.InspectionOrderDetail;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鏂拌仛鎴愬搧涓嬪崟鎴愬姛鍚庯紝鑷姩鐢熸垚涓�鏉℃楠屽鎵樺崟銆�
@@ -22,6 +34,11 @@
 
     private final InsOrderService insOrderService;
     private final InspectionOrderMapper inspectionOrderMapper;
+    private final InspectionOrderDetailMapper inspectionOrderDetailMapper;
+    private final InsSampleMapper insSampleMapper;
+    private final InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
+    private final StandardTreeMapper standardTreeMapper;
+    private final StandardMethodMapper standardMethodMapper;
 
     @EventListener
     public void onNewJuOrderPlaced(NewJuOrderPlacedEvent event) {
@@ -30,24 +47,37 @@
             return;
         }
         // 骞傜瓑锛氬悓涓�鎴愬搧璁㈠崟宸叉湁妫�楠屽鎵樺崟鍒欒烦杩�
-        Long count = inspectionOrderMapper.selectCount(Wrappers.<InspectionOrder>lambdaQuery()
-                .eq(InspectionOrder::getInsOrderId, order.getId()));
-        if (count > 0) {
+        InspectionOrder existingOrder = inspectionOrderMapper.selectOne(Wrappers.<InspectionOrder>lambdaQuery()
+                .eq(InspectionOrder::getInsOrderId, order.getId()).last("limit 1"));
+        if (existingOrder != null) {
+            existingOrder.setEntrustCode(order.getEntrustCode());
+            existingOrder.setBatchNo(order.getBatchNo());
+            existingOrder.setSampleName(StringUtils.isNotBlank(order.getSampleView()) ? order.getSampleView() : order.getSample());
+            existingOrder.setProduction(order.getProduction());
+            existingOrder.setQuantity(order.getTestQuantity());
+            existingOrder.setCommissionUnit(order.getCompany());
+            existingOrder.setCommissionUser(order.getPrepareUser());
+            existingOrder.setCommissionPhone(order.getPhone());
+            existingOrder.setIsLeave(Integer.valueOf(1).equals(order.getIsLeave()) ? 1 : 2);
+            existingOrder.setProcessing(Integer.valueOf(1).equals(order.getSampleDisposal()) ? 0 : 1);
+            existingOrder.setSend(Integer.valueOf(1).equals(order.getReportDelivery()) ? 1 : 0);
+            inspectionOrderMapper.updateById(existingOrder);
             return;
         }
         InspectionOrder inspectionOrder = new InspectionOrder();
         inspectionOrder.setInsOrderId(order.getId());
         inspectionOrder.setEntrustCode(order.getEntrustCode());
+        inspectionOrder.setBatchNo(order.getBatchNo());
         // 璇曟牱鍚嶇О浼樺厛鍙栨姤鍛婂睍绀哄瓧娈�
         inspectionOrder.setSampleName(StringUtils.isNotBlank(order.getSampleView())
                 ? order.getSampleView() : order.getSample());
         inspectionOrder.setProduction(order.getProduction());
         inspectionOrder.setQuantity(order.getTestQuantity());
-        inspectionOrder.setCommissionDate(LocalDate.now());
+        inspectionOrder.setCommissionDate(order.getSampleDate() != null ? order.getSampleDate() : LocalDate.now());
         inspectionOrder.setCommissionUnit(order.getCompany());
         inspectionOrder.setCommissionUser(order.getPrepareUser());
         inspectionOrder.setCommissionPhone(order.getPhone());
-        inspectionOrder.setSampleStatus("瀹屽ソ");
+        inspectionOrder.setSampleStatus(order.getSampleStatus());
         // 鏄惁鐣欐牱璇箟杞崲锛歩ns 0鍚�/1鏄� -> cnas 1鏄�/2鍚�
         inspectionOrder.setIsLeave(Integer.valueOf(1).equals(order.getIsLeave()) ? 1 : 2);
         // 鏍峰搧澶勭疆锛�1濮旀墭鏂瑰彇鍥�/2妫�娴嬫柟澶勭疆 -> processing 0濮旀墭鍗曚綅鍙栧洖/1瀹為獙瀹ゅ鐞嗭紱鏈�夋椂娌跨敤鏃у瓧娈�
@@ -66,5 +96,59 @@
         }
         // 鎶ュ憡鏂囦欢涓庣害瀹氭椂闂寸敓鎴愭椂涓虹┖锛屽悗缁湪妫�楠屽鎵樺崟椤甸潰缂栬緫/涓婁紶
         inspectionOrderMapper.insert(inspectionOrder);
+        createDetailRow(inspectionOrder, order);
+    }
+
+    /**
+     * 涓嬪崟鍗崇敓鎴愪竴琛屾牱鍝佹槑缁嗭紝鎵归噺涓嬪崟鍚庢暣鎵规牱鍝佺洿鎺ユ眹鎬诲湪鍚屼竴寮犲鎵樹功閲屻��
+     */
+    private void createDetailRow(InspectionOrder inspectionOrder, InsOrder order) {
+        InspectionOrderDetail detail = new InspectionOrderDetail();
+        detail.setInspectionOrderId(inspectionOrder.getInspectionOrderId());
+        detail.setSampleName(inspectionOrder.getSampleName());
+        detail.setQuantity(order.getTestQuantity());
+        detail.setSampleStatus(inspectionOrder.getSampleStatus());
+        detail.setRemark(order.getRemark());
+
+        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+                .eq(InsSample::getInsOrderId, order.getId())
+                .orderByAsc(InsSample::getId));
+        if (!samples.isEmpty()) {
+            detail.setSampleNumber(samples.get(0).getSampleCode());
+        }
+        List<InsOrderStandardTemplate> templates = insOrderStandardTemplateMapper.selectList(
+                Wrappers.<InsOrderStandardTemplate>lambdaQuery()
+                        .eq(InsOrderStandardTemplate::getInsOrderId, order.getId())
+                        .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId));
+        detail.setTestStandard(resolveTestStandard(order, templates));
+        detail.setTestItem(templates.stream()
+                .map(InsOrderStandardTemplate::getName)
+                .filter(StringUtils::isNotBlank)
+                .collect(Collectors.joining("銆�")));
+        inspectionOrderDetailMapper.insert(detail);
+    }
+
+    /**
+     * 妫�娴嬩緷鎹樉绀衡�滄爣鍑嗗彿+鏍囧噯鍚嶇О鈥濓紝浼樺厛鍙栨爣鍑嗘柟娉曪紝鍙栦笉鍒版椂鍥為��鍒版ā鏉垮揩鐓х紪鍙枫��
+     */
+    private String resolveTestStandard(InsOrder order, List<InsOrderStandardTemplate> templates) {
+        if (order.getStandardTreeId() != null) {
+            StandardTree tree = standardTreeMapper.selectById(order.getStandardTreeId());
+            if (tree != null && tree.getStandardMethodId() != null) {
+                StandardMethod method = standardMethodMapper.selectById(tree.getStandardMethodId());
+                if (method != null) {
+                    String combined = (StringUtils.trimToEmpty(method.getCode()) + " "
+                            + StringUtils.trimToEmpty(method.getName())).trim();
+                    if (StringUtils.isNotBlank(combined)) {
+                        return combined;
+                    }
+                }
+            }
+        }
+        return templates.stream()
+                .map(InsOrderStandardTemplate::getNumber)
+                .filter(StringUtils::isNotBlank)
+                .distinct()
+                .collect(Collectors.joining("銆�"));
     }
 }

--
Gitblit v1.9.3