From ffca46b39d25439a06a27cafda2ec523a3fb67cf Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 27 十月 2026 17:53:02 +0800
Subject: [PATCH] feat(mes): 增加盘号字段支持和优化报工质检流程

---
 yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImplTest.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImplTest.java
index 2b26547..a81317b 100644
--- a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImplTest.java
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImplTest.java
@@ -3,6 +3,9 @@
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeDetailDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
@@ -30,6 +33,8 @@
 
 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
 import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_BATCH_REEL_MISMATCH;
 
 /**
  * {@link MesWmBatchServiceImpl} 鐨勫崟鍏冩祴璇�
@@ -38,6 +43,13 @@
  */
 @Import(MesWmBatchServiceImpl.class)
 public class MesWmBatchServiceImplTest extends BaseDbUnitTest {
+
+    @MockitoBean
+    private cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService mdmItemService;
+    @MockitoBean
+    private cn.iocoder.yudao.module.mdm.api.item.MdmItemBatchConfigApi mdmBatchConfigApi;
+    @MockitoBean
+    private cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi customerApi;
 
     @Resource
     private MesWmBatchServiceImpl batchService;
@@ -67,6 +79,48 @@
     @MockitoBean
     private MesWmBarcodeService barcodeService;
 
+    @Test
+    public void testNonBatchManagedItemUsesDistinctTraceBatchesForReels() {
+        when(mdmItemService.validateItemExists(10L)).thenReturn(new MesMdmItemDO().setId(10L)
+                .setName("浜у搧").setIsBatchManaged(false));
+        when(autoCodeRecordService.generateAutoCode(anyString())).thenReturn("TRACE-1", "TRACE-2");
+        MesWmBatchGenerateReqVO first = new MesWmBatchGenerateReqVO().setItemId(10L)
+                .setWorkOrderId(20L).setReelNo("PAN-1");
+        MesWmBatchGenerateReqVO second = new MesWmBatchGenerateReqVO().setItemId(10L)
+                .setWorkOrderId(20L).setReelNo("PAN-2");
+
+        MesWmBatchDO a = batchService.getOrGenerateBatchCode(first);
+        MesWmBatchDO b = batchService.getOrGenerateBatchCode(second);
+        assertNotNull(a.getId());
+        assertNotEquals(a.getId(), b.getId());
+        assertEquals(a.getId(), batchService.getOrGenerateBatchCode(first).getId());
+        assertEquals("PAN-2", batchMapper.selectById(b.getId()).getReelNo());
+        assertNull(batchService.getOrGenerateBatchCode(new MesWmBatchGenerateReqVO().setItemId(10L)));
+    }
+
+    @Test
+    public void testExistingBatchCannotBeRelabeledWithDifferentReel() {
+        when(mdmItemService.validateItemExists(10L)).thenReturn(new MesMdmItemDO().setId(10L)
+                .setName("浜у搧").setIsBatchManaged(false));
+        batchMapper.insert(new MesWmBatchDO().setCode("EXISTING").setItemId(10L).setReelNo("PAN-1"));
+        MesWmBatchGenerateReqVO request = new MesWmBatchGenerateReqVO().setItemId(10L)
+                .setBatchCode("EXISTING").setReelNo("PAN-2");
+        ServiceException ex = assertThrows(ServiceException.class, () -> batchService.getOrGenerateBatchCode(request));
+        assertEquals(WM_BATCH_REEL_MISMATCH.getCode(), ex.getCode());
+    }
+
+    @Test
+    public void testExistingReelBatchCannotBeReassignedToAnotherOrder() {
+        when(mdmItemService.validateItemExists(10L)).thenReturn(new MesMdmItemDO().setId(10L)
+                .setName("浜у搧").setIsBatchManaged(false));
+        batchMapper.insert(new MesWmBatchDO().setCode("EXISTING").setItemId(10L)
+                .setReelNo("PAN-1").setWorkOrderId(20L));
+        MesWmBatchGenerateReqVO request = new MesWmBatchGenerateReqVO().setItemId(10L)
+                .setBatchCode("EXISTING").setReelNo("PAN-1").setWorkOrderId(21L);
+        ServiceException ex = assertThrows(ServiceException.class, () -> batchService.getOrGenerateBatchCode(request));
+        assertEquals(WM_BATCH_REEL_MISMATCH.getCode(), ex.getCode());
+    }
+
     // ==================== 鍚戝墠杩芥函 ====================
 
     @Test

--
Gitblit v1.9.3