From 6d1bf32bc0b51dc12048fe6bb70badfbd31d67ac Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期六, 07 十一月 2026 13:44:10 +0800
Subject: [PATCH] fix: 修复销售订单审批及开票回款搜索

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java |   37 +++++++++++++++++++++----------------
 1 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
index 2d6a18d..32cd823 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
@@ -30,6 +30,7 @@
 import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
 import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
 import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+import cn.iocoder.yudao.module.mdm.enums.MdmItemTypeEnum;
 import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
 import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
 import cn.iocoder.yudao.module.mes.api.mps.MesProMpsApi;
@@ -221,8 +222,22 @@
 
         int createdCount = 0;
         int reusedCount = 0;
+        int skippedCount = 0;
         for (ErpSaleOrderItemDO item : items) {
             if (item.getNeedProduction() == null || item.getNeedProduction() != 1) {
+                continue;
+            }
+
+            MdmItemRespDTO mdmItem = mdmItemApi.getItem(item.getProductId()).getCheckedData();
+            if (mdmItem == null || !MdmItemTypeEnum.isProduct(mdmItem.getItemType())) {
+                // 鍏煎淇鍓嶇敱鍚堝悓鐢熸垚鐨勫巻鍙茶鍗曪細褰撴椂鎵�鏈夋槑缁嗛兘浼氳鏍囪涓洪渶瑕佺敓浜с��
+                // 闈炰骇鍝佹槑缁嗕笉搴斿垱寤� MPS锛屽悓鏃剁籂姝f爣璁帮紝閬垮厤鍚庣画鍙戣揣鐘舵�佷竴鐩寸瓑寰呯敓浜у畬鎴愩��
+                saleOrderItemMapper.updateById(new ErpSaleOrderItemDO()
+                        .setId(item.getId())
+                        .setNeedProduction(0));
+                skippedCount++;
+                log.info("[createMpsForSaleOrder] 閿�鍞鍗曟槑缁�({}) 涓洪潪浜у搧鐗╂枡({})锛岃烦杩� MPS 骞跺彇娑堥渶瑕佺敓浜ф爣璁�",
+                        item.getId(), item.getProductId());
                 continue;
             }
 
@@ -241,7 +256,7 @@
             }
 
             // 涓庨攢鍞鍗曞鏍稿叡鐢ㄤ簨鍔★紱浠讳竴鏄庣粏鍒涘缓澶辫触閮戒細鍥炴粴瀹℃牳鐘舵�佸拰鏈宸插垱寤虹殑 MPS
-            Long mpsId = createMpsForSaleOrderItem(saleOrder, item);
+            Long mpsId = createMpsForSaleOrderItem(saleOrder, item, mdmItem);
             saleOrderItemMapper.updateById(new ErpSaleOrderItemDO()
                     .setId(item.getId())
                     .setMpsId(mpsId));
@@ -254,31 +269,21 @@
                     .set(ErpSaleOrderDO::getProductionStatus, ErpSaleOrderProductionStatusEnum.NOT_FINISHED.getStatus())
                     .set(ErpSaleOrderDO::getProductionFinishTime, null));
         }
-        log.info("[createMpsForSaleOrder] 閿�鍞鍗�({}) 瀹℃牳瀹屾垚锛屽垱寤� MPS {} 鏉★紝澶嶇敤 MPS {} 鏉�",
-                orderId, createdCount, reusedCount);
+        log.info("[createMpsForSaleOrder] 閿�鍞鍗�({}) 瀹℃牳瀹屾垚锛屽垱寤� MPS {} 鏉★紝澶嶇敤 MPS {} 鏉★紝璺宠繃闈炰骇鍝� {} 鏉�",
+                orderId, createdCount, reusedCount, skippedCount);
     }
 
     /**
      * 涓洪攢鍞鍗曟槑缁嗗垱寤� MPS
      */
-    private Long createMpsForSaleOrderItem(ErpSaleOrderDO saleOrder, ErpSaleOrderItemDO item) {
-        // 鑾峰彇 MDM 鐗╂枡淇℃伅锛堢敤浜庤幏鍙栦骇鍝佸悕绉帮級
-        String productName = null;
-        try {
-            MdmItemRespDTO mdmItem = mdmItemApi.getItem(item.getProductId()).getCheckedData();
-            if (mdmItem != null) {
-                productName = mdmItem.getName();
-            }
-        } catch (Exception e) {
-            log.warn("[createMpsForSaleOrderItem] 鑾峰彇 MDM 鐗╂枡淇℃伅澶辫触锛宲roductId={}", item.getProductId(), e);
-        }
-
+    private Long createMpsForSaleOrderItem(ErpSaleOrderDO saleOrder, ErpSaleOrderItemDO item,
+                                           MdmItemRespDTO mdmItem) {
         MesProMpsCreateReqDTO createReqDTO = new MesProMpsCreateReqDTO();
         createReqDTO.setSaleOrderId(saleOrder.getId());
         createReqDTO.setSaleOrderNo(saleOrder.getNo());
         createReqDTO.setSaleOrderItemId(item.getId());
         createReqDTO.setMdmItemId(item.getProductId());
-        createReqDTO.setProductName(productName);
+        createReqDTO.setProductName(mdmItem.getName());
         createReqDTO.setQuantity(item.getCount());
         createReqDTO.setClientId(saleOrder.getCustomerId());
         createReqDTO.setRequestDate(formatRequestDate(saleOrder.getOrderTime()));

--
Gitblit v1.9.3