From 87733eb3623593da247c051593d64b8ff9e1d3a4 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 06 十一月 2026 19:00:39 +0800
Subject: [PATCH] feat(crm,mes): 扩展客户字段与重构批次号生成逻辑

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
index eb43c7e..a6341be 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
@@ -94,10 +94,11 @@
                 throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
             }
             // 鏍¢獙鐗╂枡銆佹壒娆°�佷粨搴撶瓑缁村害涓�鑷达紙闃叉浼犲叆閿欒鐨� materialStockId锛�
+            // 搴撳尯/搴撲綅涓哄彲閫夌淮搴︼紝鏈寚瀹氭椂涓嶅弬涓庢瘮瀵�
             if (ObjUtil.notEqual(materialStock.getItemId(), reqDTO.getItemId())
                     || ObjUtil.notEqual(materialStock.getWarehouseId(), reqDTO.getWarehouseId())
-                    || ObjUtil.notEqual(materialStock.getLocationId(), reqDTO.getLocationId())
-                    || ObjUtil.notEqual(materialStock.getAreaId(), reqDTO.getAreaId())) {
+                    || (reqDTO.getLocationId() != null && ObjUtil.notEqual(materialStock.getLocationId(), reqDTO.getLocationId()))
+                    || (reqDTO.getAreaId() != null && ObjUtil.notEqual(materialStock.getAreaId(), reqDTO.getAreaId()))) {
                 throw exception(WM_MATERIAL_STOCK_SELECTION_MISMATCH);
             }
         } else if (isInbound) {
@@ -154,6 +155,7 @@
                 .type(reqDTO.getType()).quantity(reqDTO.getQuantity()).transactionTime(LocalDateTime.now())
                 .itemId(reqDTO.getItemId()).batchId(reqDTO.getBatchId()).batchCode(reqDTO.getBatchCode())
                 .bagCodeId(reqDTO.getBagCodeId()).bagCode(reqDTO.getBagCode())
+                .shipmentId(reqDTO.getShipmentId())
                 .warehouseId(reqDTO.getWarehouseId()).locationId(reqDTO.getLocationId()).areaId(reqDTO.getAreaId())
                 .bizType(reqDTO.getBizType()).bizId(reqDTO.getBizId()).bizCode(reqDTO.getBizCode()).bizLineId(reqDTO.getBizLineId())
                 .materialStockId(materialStock.getId()).relatedTransactionId(reqDTO.getRelatedTransactionId())
@@ -279,20 +281,21 @@
         if (Boolean.TRUE.equals(warehouse.getFrozen())) {
             throw exception(WM_TRANSACTION_WAREHOUSE_FROZEN, warehouse.getName());
         }
-        // 1.2 妫�鏌ュ簱鍖哄喕缁�
+        // 1.2 妫�鏌ュ簱鍖哄喕缁擄紙鏈娇鐢ㄥ簱鍖烘椂璺宠繃锛�
         MesWmWarehouseLocationDO location = locationService.validateWarehouseLocationExists(reqDTO.getLocationId());
-        if (Boolean.TRUE.equals(location.getFrozen())) {
+        if (location != null && Boolean.TRUE.equals(location.getFrozen())) {
             throw exception(WM_TRANSACTION_LOCATION_FROZEN, location.getName());
         }
-        // 1.3 妫�鏌ュ簱浣嶅喕缁�
+        // 1.3 妫�鏌ュ簱浣嶅喕缁擄紙鏈娇鐢ㄥ簱浣嶆椂璺宠繃锛�
         MesWmWarehouseAreaDO area = areaService.validateWarehouseAreaExists(reqDTO.getAreaId());
-        if (Boolean.TRUE.equals(area.getFrozen())) {
+        if (area != null && Boolean.TRUE.equals(area.getFrozen())) {
             throw exception(WM_TRANSACTION_AREA_FROZEN, area.getName());
         }
 
         // 2. 妫�鏌ュ簱瀛樿褰曞喕缁�
         if (Boolean.TRUE.equals(materialStock.getFrozen())) {
-            throw exception(WM_TRANSACTION_STOCK_FROZEN, warehouse.getName(), location.getName(), area.getName());
+            throw exception(WM_TRANSACTION_STOCK_FROZEN, warehouse.getName(),
+                    location != null ? location.getName() : "", area != null ? area.getName() : "");
         }
     }
 

--
Gitblit v1.9.3