From e978a226c2c1b22c9172a58539d876b298e9e2da Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 23 七月 2026 17:47:33 +0800
Subject: [PATCH] 物料删除校验

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java |   56 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 39 insertions(+), 17 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
index e474e63..9611fdd 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
@@ -247,28 +247,49 @@
      * 鍥炲啓 ERP 閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
      */
     private void updateErpPurchaseOrderInCount(MesWmItemReceiptDO receipt) {
-        // 鑾峰彇鍏ュ簱鍗曡
-        List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(receipt.getId());
-        if (CollUtil.isEmpty(lines)) {
-            return;
+        // 1. 纭畾閲囪喘璁㈠崟 ID锛氫紭鍏堜粠鍏ュ簱鍗曞ご鍙栵紙浠庡埌璐ч�氱煡鍗曞甫鍏ワ級锛屽叾娆′粠琛屽弽鏌�
+        Long purchaseOrderId = receipt.getPurchaseOrderId();
+        if (purchaseOrderId == null && receipt.getNoticeId() != null) {
+            // 浠庡叧鑱旂殑鍒拌揣閫氱煡鍗曡幏鍙栭噰璐鍗� ID
+            MesWmArrivalNoticeDO notice = arrivalNoticeService.getArrivalNotice(receipt.getNoticeId());
+            if (notice != null) {
+                purchaseOrderId = notice.getPurchaseOrderId();
+            }
         }
-        // 鐢ㄤ簬瀛樺偍閲囪喘璁㈠崟 ID锛岄伩鍏嶉噸澶嶆洿鏂�
-        Long purchaseOrderId = null;
-        // 閬嶅巻琛岋紝鎸� purchaseOrderItemId 鏇存柊鍏ュ簱鏁伴噺
-        for (MesWmItemReceiptLineDO line : lines) {
-            if (line.getPurchaseOrderItemId() != null && line.getReceivedQuantity() != null) {
-                purchaseOrderApi.updateOrderItemInCount(line.getPurchaseOrderItemId(), line.getReceivedQuantity());
-                // 鑾峰彇閲囪喘璁㈠崟 ID锛堜粠绗竴涓湁鏁堢殑鏄庣粏椤硅幏鍙栵級
-                if (purchaseOrderId == null) {
-                    cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO itemDTO =
-                            purchaseOrderApi.getPurchaseOrderItem(line.getPurchaseOrderItemId()).getCheckedData();
-                    if (itemDTO != null && itemDTO.getOrderId() != null) {
-                        purchaseOrderId = itemDTO.getOrderId();
+
+        // 2. 鑾峰彇鍏ュ簱鍗曡锛屾寜 purchaseOrderItemId 鏇存柊鍏ュ簱鏁伴噺
+        List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(receipt.getId());
+        if (CollUtil.isNotEmpty(lines)) {
+            for (MesWmItemReceiptLineDO line : lines) {
+                if (line.getPurchaseOrderItemId() != null && line.getReceivedQuantity() != null) {
+                    purchaseOrderApi.updateOrderItemInCount(line.getPurchaseOrderItemId(), line.getReceivedQuantity());
+                    // 濡傛灉杩樻病鎷垮埌 purchaseOrderId锛屼粠鏄庣粏椤瑰弽鏌�
+                    if (purchaseOrderId == null) {
+                        cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO itemDTO =
+                                purchaseOrderApi.getPurchaseOrderItem(line.getPurchaseOrderItemId()).getCheckedData();
+                        if (itemDTO != null && itemDTO.getOrderId() != null) {
+                            purchaseOrderId = itemDTO.getOrderId();
+                        }
+                    }
+                }
+            }
+        } else if (receipt.getNoticeId() != null) {
+            // 鍏滃簳锛氬叆搴撹涓虹┖鏃讹紝浠庡埌璐ч�氱煡鍗曡鍥炲啓鍏ュ簱鏁伴噺
+            List<MesWmArrivalNoticeLineDO> noticeLines = arrivalNoticeLineService
+                    .getArrivalNoticeLineListByNoticeId(receipt.getNoticeId());
+            for (MesWmArrivalNoticeLineDO noticeLine : noticeLines) {
+                if (noticeLine.getPurchaseOrderItemId() != null) {
+                    // 浣跨敤鍚堟牸鏁伴噺锛堟湁 IQC 鏃朵负鍚堟牸鏁伴噺锛屽惁鍒欎负鍒拌揣鏁伴噺锛�
+                    BigDecimal qty = noticeLine.getQualifiedQuantity() != null
+                            ? noticeLine.getQualifiedQuantity() : noticeLine.getArrivalQuantity();
+                    if (qty != null && qty.compareTo(BigDecimal.ZERO) > 0) {
+                        purchaseOrderApi.updateOrderItemInCount(noticeLine.getPurchaseOrderItemId(), qty);
                     }
                 }
             }
         }
-        // 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撶姸鎬�
+
+        // 3. 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撶姸鎬�
         if (purchaseOrderId != null) {
             purchaseOrderApi.updateOrderInStatus(purchaseOrderId);
         }
@@ -394,6 +415,7 @@
         receipt.setCode(code);
         receipt.setName(notice.getName() + "鍏ュ簱鍗�");
         receipt.setNoticeId(arrivalNoticeId);
+        receipt.setPurchaseOrderId(notice.getPurchaseOrderId());
         receipt.setPurchaseOrderCode(notice.getPurchaseOrderCode());
         receipt.setVendorId(notice.getVendorId());
         receipt.setReceiptDate(java.time.LocalDateTime.now()); // 鍏ュ簱鏃堕棿涓哄綋鍓嶆椂闂�

--
Gitblit v1.9.3