From a1a94ab39a3ac9cc28601e3381b3b4fbc0cda02a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:20:31 +0800
Subject: [PATCH] fix(mes): 解决产品收货批次信息传递和销售订单校验问题
---
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineReelTest.java | 42 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineReelTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineReelTest.java
index 0601d87..05fb16f 100644
--- a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineReelTest.java
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineReelTest.java
@@ -7,6 +7,9 @@
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService;
+import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeLineService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -18,6 +21,7 @@
import java.math.BigDecimal;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
@@ -29,6 +33,44 @@
@Mock private MesWmSalesNoticeLineService noticeService;
@Mock private MesMdmItemService itemService;
@Mock private MesQcOqcService oqcService;
+ @Mock private ErpSaleOrderApi saleOrderApi;
+
+ @Test
+ void directSaleRetainsSelectedOrderItem() {
+ var req = new MesWmProductSalesLineSaveReqVO();
+ req.setSalesId(1L);
+ req.setSaleOrderItemId(5L);
+ req.setItemId(3L);
+ req.setQuantity(BigDecimal.ONE);
+ when(salesService.validateProductSalesExistsAndDraft(1L))
+ .thenReturn(MesWmProductSalesDO.builder().id(1L).saleOrderId(4L).build());
+ var item = new ErpSaleOrderItemRespDTO();
+ item.setId(5L);
+ item.setOrderId(4L);
+ item.setProductId(3L);
+ when(saleOrderApi.getSaleOrderItem(5L)).thenReturn(CommonResult.success(item));
+ service.createProductSalesLine(req);
+ var line = ArgumentCaptor.forClass(MesWmProductSalesLineDO.class);
+ verify(mapper).insert(line.capture());
+ assertEquals(5L, line.getValue().getSaleOrderItemId());
+ }
+
+ @Test
+ void directSaleRejectsItemFromAnotherOrder() {
+ var req = new MesWmProductSalesLineSaveReqVO();
+ req.setSalesId(1L);
+ req.setSaleOrderItemId(5L);
+ req.setItemId(3L);
+ req.setQuantity(BigDecimal.ONE);
+ when(salesService.validateProductSalesExistsAndDraft(1L))
+ .thenReturn(MesWmProductSalesDO.builder().id(1L).saleOrderId(4L).build());
+ var item = new ErpSaleOrderItemRespDTO();
+ item.setOrderId(99L);
+ item.setProductId(3L);
+ when(saleOrderApi.getSaleOrderItem(5L)).thenReturn(CommonResult.success(item));
+ assertThrows(RuntimeException.class, () -> service.createProductSalesLine(req));
+ verify(mapper, never()).insert(any(MesWmProductSalesLineDO.class));
+ }
private MesWmProductSalesLineSaveReqVO request() {
var req = new MesWmProductSalesLineSaveReqVO();
--
Gitblit v1.9.3