From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
index b085553..50479f2 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
@@ -78,6 +78,7 @@
 
         // 鎻掑叆
         MesWmArrivalNoticeDO notice = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeDO.class);
+        fillContractNoFromPurchaseOrder(notice);
         notice.setStatus(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus());
         arrivalNoticeMapper.insert(notice);
         return notice.getId();
@@ -92,7 +93,21 @@
 
         // 鏇存柊
         MesWmArrivalNoticeDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeDO.class);
+        fillContractNoFromPurchaseOrder(updateObj);
         arrivalNoticeMapper.updateById(updateObj);
+    }
+
+    /**
+     * 閲囪喘鍚堝悓鍙锋湭鏄惧紡浼犲叆鏃讹紝浠庡叧鑱旂殑閲囪喘璁㈠崟甯﹀叆锛堟崲璐у埌璐у繀椤昏兘杩芥函鍒板師閲囪喘鍚堝悓锛�
+     */
+    private void fillContractNoFromPurchaseOrder(MesWmArrivalNoticeDO notice) {
+        if (notice.getPurchaseOrderId() == null || cn.hutool.core.util.StrUtil.isNotBlank(notice.getContractNo())) {
+            return;
+        }
+        ErpPurchaseOrderRespDTO purchaseOrder = purchaseOrderApi.getPurchaseOrder(notice.getPurchaseOrderId()).getCheckedData();
+        if (purchaseOrder != null) {
+            notice.setContractNo(purchaseOrder.getContractNo());
+        }
     }
 
     private void validateArrivalNoticeSaveData(MesWmArrivalNoticeSaveReqVO reqVO) {
@@ -336,6 +351,7 @@
         notice.setName(purchaseOrder.getNo() + "鍒拌揣閫氱煡");
         notice.setPurchaseOrderId(purchaseOrderId);
         notice.setPurchaseOrderCode(purchaseOrder.getNo());
+        notice.setContractNo(purchaseOrder.getContractNo());
         notice.setVendorId(purchaseOrder.getSupplierId());
         notice.setArrivalDate(java.time.LocalDateTime.now()); // 鍒拌揣鏃堕棿涓哄綋鍓嶆椂闂�
         notice.setStatus(MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT.getStatus());
@@ -414,6 +430,9 @@
         notice.setName(returnVendor.getCode() + "鎹㈣揣鍒拌揣");
         notice.setPurchaseOrderId(returnVendor.getPurchaseOrderId());
         notice.setPurchaseOrderCode(returnVendor.getPurchaseOrderCode());
+        // 鎹㈣揣閲嶆柊鍏宠仈鍘熼噰璐悎鍚屽彿锛氫紭鍏堝彇閫�璐у崟蹇収锛岄��璐у崟鏈揩鐓ф椂鍥炲~閲囪喘璁㈠崟鍚堝悓鍙�
+        notice.setContractNo(returnVendor.getContractNo());
+        fillContractNoFromPurchaseOrder(notice);
         notice.setVendorId(returnVendor.getVendorId());
         notice.setArrivalDate(java.time.LocalDateTime.now());
         notice.setStatus(MesWmArrivalNoticeStatusEnum.PENDING_QC.getStatus());

--
Gitblit v1.9.3