From 962f78c8383e7c884ddb08c951c15e5ba6eb4cb8 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 23 十月 2026 15:43:33 +0800
Subject: [PATCH] fix: 完善审批流程与业务状态校验

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java
index fae1298..ac5ada3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java
@@ -27,6 +27,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -198,12 +199,22 @@
         List<MesWmMiscIssueLineDO> lines = miscIssueLineService.getMiscIssueLineListByIssueId(issue.getId());
         wmTransactionService.createTransactionList(convertList(lines, line -> new MesWmTransactionSaveReqDTO()
                 .setType(MesWmTransactionTypeEnum.OUT.getType()).setItemId(line.getItemId())
-                .setQuantity(line.getQuantity().negate()) // 鍑哄簱鏁伴噺涓鸿礋鏁�
+                .setQuantity(negateQuantity(line.getQuantity())) // 鍑哄簱鏁伴噺涓鸿礋鏁�
                 .setBatchId(line.getBatchId()).setBatchCode(line.getBatchCode())
                 .setWarehouseId(line.getWarehouseId()).setLocationId(line.getLocationId()).setAreaId(line.getAreaId())
                 .setBizType(MesBizTypeConstants.WM_MISC_ISSUE).setBizId(issue.getId()).setBizCode(issue.getCode()).setBizLineId(line.getId())));
     }
 
+    /**
+     * 鍑哄簱鏁伴噺鍙栬礋锛氭暟閲忎负绌烘椂鎶涘嚭鏄庣‘鐨勪笟鍔″紓甯革紝閬垮厤 NPE
+     */
+    private BigDecimal negateQuantity(BigDecimal quantity) {
+        if (quantity == null) {
+            throw exception(WM_MISC_ISSUE_QUANTITY_INVALID);
+        }
+        return quantity.negate();
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void cancelMiscIssue(Long id) {

--
Gitblit v1.9.3