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/qc/oqc/MesQcOqcAutoCreateTest.java | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcAutoCreateTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcAutoCreateTest.java
index 432e8b9..1a1c3d8 100644
--- a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcAutoCreateTest.java
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcAutoCreateTest.java
@@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.mes.service.qc.oqc;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcDO;
+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.dal.dataobject.qc.template.MesQcTemplateItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
@@ -28,6 +31,7 @@
@Mock private MesQcTemplateItemService templates;
@Mock private MesQcOqcLineService lines;
@Mock private MesWmProductSalesService sales;
+ @Mock private ErpSaleOrderApi saleOrderApi;
@Test
void generatedInspectionUsesHistoricalShipmentDateAndPreservesPendingQuantities() {
@@ -36,7 +40,10 @@
.thenReturn(new MesQcTemplateItemDO().setTemplateId(20L));
when(sales.getProductSales(30L)).thenReturn(new MesWmProductSalesDO().setSalesDate(date));
MesWmProductSalesLineDO line = new MesWmProductSalesLineDO().setId(40L)
- .setItemId(10L).setQuantity(BigDecimal.valueOf(200)).setBatchCode("B001");
+ .setItemId(10L).setSaleOrderItemId(60L).setQuantity(BigDecimal.valueOf(200)).setBatchCode("B001");
+ ErpSaleOrderItemRespDTO saleItem = new ErpSaleOrderItemRespDTO();
+ saleItem.setReelNo("PAN-001");
+ when(saleOrderApi.getSaleOrderItem(60L)).thenReturn(CommonResult.success(saleItem));
service.createOqcFromProductSales(30L, line, "SL001", 50L);
ArgumentCaptor<MesQcOqcDO> captor = ArgumentCaptor.forClass(MesQcOqcDO.class);
verify(mapper).insert(captor.capture());
@@ -48,5 +55,21 @@
assertEquals(BigDecimal.ZERO, row.getQualifiedQuantity());
assertEquals(30L, row.getSourceDocId());
assertEquals(40L, row.getSourceLineId());
+ assertEquals("PAN-001", row.getReelNo());
+ }
+
+ @Test
+ void historicalShipmentWithoutSaleItemDoesNotGuessReel() {
+ when(templates.getRequiredTemplateByItemIdAndType(10L, 3))
+ .thenReturn(new MesQcTemplateItemDO().setTemplateId(20L));
+ MesWmProductSalesLineDO line = new MesWmProductSalesLineDO().setId(40L)
+ .setItemId(10L).setQuantity(BigDecimal.ONE);
+
+ service.createOqcFromProductSales(30L, line, "SL001", 50L);
+
+ ArgumentCaptor<MesQcOqcDO> captor = ArgumentCaptor.forClass(MesQcOqcDO.class);
+ verify(mapper).insert(captor.capture());
+ assertNull(captor.getValue().getReelNo());
+ verifyNoInteractions(saleOrderApi);
}
}
--
Gitblit v1.9.3