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/productsales/MesWmProductSalesLineServiceImpl.java |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
index 4b2f21b..14fc6b1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
@@ -74,8 +74,31 @@
         if (noticeLine != null) {
             line.setSaleOrderItemId(noticeLine.getSaleOrderItemId());
         }
+        fillProductSalesLinePrice(line);
         productSalesLineMapper.insert(line);
         return line.getId();
+    }
+
+    /**
+     * 鎸夐攢鍞鍗曡鍗曚环鍥炲~鍑哄簱琛岄噾棰濓紝渚涘紑绁�/瀵硅处浣跨敤
+     */
+    private void fillProductSalesLinePrice(MesWmProductSalesLineDO line) {
+        if (line.getSaleOrderItemId() == null) {
+            return;
+        }
+        try {
+            var item = saleOrderApi.getSaleOrderItem(line.getSaleOrderItemId()).getData();
+            if (item == null || item.getProductPrice() == null) {
+                return;
+            }
+            line.setPrice(item.getProductPrice());
+            if (line.getQuantity() != null) {
+                line.setTotalPrice(item.getProductPrice().multiply(line.getQuantity()));
+            }
+        } catch (Exception ex) {
+            // 浠锋牸鍙槸蹇収锛岃鍗曡鍙栦笉鍒版椂涓嶉樆鏂紑鍗�
+            log.warn("[fillProductSalesLinePrice][閿�鍞鍗曡({}) 浠锋牸蹇収澶辫触]", line.getSaleOrderItemId(), ex);
+        }
     }
 
     @Override
@@ -91,6 +114,7 @@
         if (noticeLine != null) {
             updateObj.setSaleOrderItemId(noticeLine.getSaleOrderItemId());
         }
+        fillProductSalesLinePrice(updateObj);
         productSalesLineMapper.updateById(updateObj);
 
         // 鎻愪氦鍑哄簱鍗曞悗鐢辫川妫�浜哄憳閫夋嫨宸插畬鎴愮殑鍑哄巶妫�楠屽崟銆�

--
Gitblit v1.9.3