From e85a60b1778ed442545c00e14bbfe4f8d33c68ac Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 31 八月 2026 16:09:09 +0800
Subject: [PATCH] fix(mes): 解决生产反馈和物料消耗服务中的潜在异常问题

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java     |    3 ++-
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java |    7 +++++++
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
index 489c6b4..bb9a30f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
@@ -118,8 +118,9 @@
         // 1. 鏍¢獙
         MesProTaskDO task = validateFeedbackData(createReqVO);
 
-        // 2. 鎻掑叆锛堣嚜鍔ㄥ~鍏� itemId锛�
+        // 2. 鎻掑叆锛堣嚜鍔ㄥ~鍏� itemId锛涘垱寤烘椂寮哄埗娓呯┖ id锛岄槻姝㈠墠绔浼犲凡鏈変富閿鑷村啿绐侊級
         MesProFeedbackDO feedback = BeanUtils.toBean(createReqVO, MesProFeedbackDO.class)
+                .setId(null)
                 .setStatus(MesProFeedbackStatusEnum.PREPARE.getStatus())
                 .setItemId(task.getItemId());
         feedbackMapper.insert(feedback);
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
index 51bf769..48994c6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
@@ -27,6 +27,7 @@
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
 import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -48,6 +49,7 @@
  */
 @Service
 @Validated
+@Slf4j
 public class MesWmItemConsumeServiceImpl implements MesWmItemConsumeService {
 
     @Resource
@@ -181,6 +183,11 @@
         // 2. 閬嶅巻鏄庣粏锛屽垱寤哄簱瀛樹簨鍔★紙鎸夋壒娆$簿纭墸鍑忕嚎杈瑰簱锛�
         for (MesWmItemConsumeDetailDO detail : details) {
             MesMdItemDO item = mesMdItemService.getItem(detail.getItemId());
+            // 鐗╂枡涓绘暟鎹己澶憋紙BOM 寮曠敤浜嗗凡鍒犻櫎/鏈悓姝ョ殑鐗╂枡锛夋椂璺宠繃璇ヨ锛岄伩鍏� NPE 闃绘柇鎶ュ伐
+            if (item == null || item.getMdmItemId() == null) {
+                log.warn("[finishItemConsume] 娑堣�楁槑缁�({}) 鐗╂枡({}) 鍦� mes_md_item 涓笉瀛樺湪锛岃烦杩囨墸搴�", detail.getId(), detail.getItemId());
+                continue;
+            }
             wmTransactionService.createTransaction(new MesWmTransactionSaveReqDTO()
                     .setType(MesWmTransactionTypeEnum.OUT.getType())
                     .setItemId(item.getMdmItemId())

--
Gitblit v1.9.3