【同步】BOOT 和 CLOUD 的功能(MES)

pull/245/MERGE
YunaiV 2026-04-06 22:30:24 +08:00
parent 79f233149c
commit dc0ca32697
15 changed files with 115 additions and 113 deletions

View File

@ -15,8 +15,8 @@ import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeServic
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService;
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -41,19 +41,19 @@ public class MesProFeedbackServiceImplTest extends BaseDbUnitTest {
@Resource
private MesProFeedbackMapper feedbackMapper;
@MockitoBean
@MockBean
private MesProWorkOrderService workOrderService;
@MockitoBean
@MockBean
private MesProRouteProcessService routeProcessService;
@MockitoBean
@MockBean
private MesMdWorkstationService workstationService;
@MockitoBean
@MockBean
private MesProTaskService taskService;
@MockitoBean
@MockBean
private MesWmItemConsumeService itemConsumeService;
@MockitoBean
@MockBean
private MesWmProductProduceService productProduceService;
@MockitoBean
@MockBean
private MesWmProductProduceLineService produceLineService;
@Test

View File

@ -13,8 +13,8 @@ import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordServ
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -38,21 +38,21 @@ public class MesQcIpqcServiceImplTest extends BaseDbUnitTest {
@Resource
private MesQcIpqcMapper ipqcMapper;
@MockitoBean
@MockBean
private MesQcTemplateItemService templateItemService;
@MockitoBean
@MockBean
private MesQcIpqcLineService ipqcLineService;
@MockitoBean
@MockBean
private MesProWorkOrderService workOrderService;
@MockitoBean
@MockBean
private MesMdWorkstationService workstationService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesQcDefectRecordService defectRecordService;
@MockitoBean
@MockBean
private AdminUserApi adminUserApi;
@MockitoBean
@MockBean
private MesProFeedbackService feedbackService;
@Test

View File

@ -13,15 +13,16 @@ import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeSe
import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;
/**
@ -38,21 +39,21 @@ public class MesQcIqcServiceImplTest extends BaseDbUnitTest {
@Resource
private MesQcIqcMapper iqcMapper;
@MockitoBean
@MockBean
private MesWmArrivalNoticeService arrivalNoticeService;
@MockitoBean
@MockBean
private MesWmOutsourceReceiptService outsourceReceiptService;
@MockitoBean
@MockBean
private MesQcIqcLineService iqcLineService;
@MockitoBean
@MockBean
private MesQcDefectRecordService defectRecordService;
@MockitoBean
@MockBean
private MesMdVendorService vendorService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesQcTemplateItemService templateItemService;
@MockitoBean
@MockBean
private AdminUserApi adminUserApi;
@Test

View File

@ -13,8 +13,8 @@ import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesLine
import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
@ -40,21 +40,21 @@ public class MesQcOqcServiceImplTest extends BaseDbUnitTest {
@Resource
private MesQcOqcMapper oqcMapper;
@MockitoBean
@MockBean
private MesWmProductSalesLineService productSalesLineService;
@MockitoBean
@MockBean
private MesWmProductSalesService productSalesService;
@MockitoBean
@MockBean
private MesQcOqcLineService oqcLineService;
@MockitoBean
@MockBean
private MesMdClientService clientService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesQcTemplateItemService templateItemService;
@MockitoBean
@MockBean
private MesQcDefectRecordService defectRecordService;
@MockitoBean
@MockBean
private AdminUserApi adminUserApi;
@Test

View File

@ -12,8 +12,8 @@ import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueLineSe
import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesLineService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -42,19 +42,19 @@ public class MesQcRqcServiceImplTest extends BaseDbUnitTest {
@Resource
private MesQcRqcMapper rqcMapper;
@MockitoBean
@MockBean
private MesWmReturnIssueLineService returnIssueLineService;
@MockitoBean
@MockBean
private MesWmReturnSalesLineService returnSalesLineService;
@MockitoBean
@MockBean
private MesQcRqcLineService rqcLineService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesQcTemplateItemService templateItemService;
@MockitoBean
@MockBean
private MesQcDefectRecordService defectRecordService;
@MockitoBean
@MockBean
private AdminUserApi adminUserApi;
@Test

View File

@ -6,8 +6,8 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalN
import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -35,7 +35,7 @@ public class MesWmArrivalNoticeServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmArrivalNoticeMapper arrivalNoticeMapper;
@MockitoBean
@MockBean
private MesWmArrivalNoticeLineService arrivalNoticeLineService;
@Test

View File

@ -20,8 +20,8 @@ import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemBatchConfigService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -58,13 +58,13 @@ public class MesWmBatchServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmProductProduceDetailMapper produceDetailMapper;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesMdItemBatchConfigService itemBatchConfigService;
@MockitoBean
@MockBean
private MesMdAutoCodeRecordService autoCodeRecordService;
@MockitoBean
@MockBean
private MesWmBarcodeService barcodeService;
// ==================== 向前追溯 ====================

View File

@ -30,8 +30,8 @@ import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -62,23 +62,23 @@ public class MesWmItemConsumeServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmItemConsumeMapper itemConsumeMapper;
@MockitoBean
@MockBean
private MesWmItemConsumeLineService itemConsumeLineService;
@MockitoBean
@MockBean
private MesWmItemConsumeDetailService itemConsumeDetailService;
@MockitoBean
@MockBean
private MesProRouteProductBomService routeProductBomService;
@MockitoBean
@MockBean
private MesProRouteService routeService;
@MockitoBean
@MockBean
private MesWmTransactionService wmTransactionService;
@MockitoBean
@MockBean
private MesWmWarehouseService warehouseService;
@MockitoBean
@MockBean
private MesWmWarehouseLocationService locationService;
@MockitoBean
@MockBean
private MesWmWarehouseAreaService areaService;
@MockitoBean
@MockBean
private MesWmMaterialStockService materialStockService;
// ========== 公共 mock 数据 ==========

View File

@ -10,8 +10,8 @@ import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -21,8 +21,9 @@ import java.util.Collections;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
import static org.junit.jupiter.api.Assertions.*;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_ITEM_RECEIPT_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_ITEM_RECEIPT_STATUS_ERROR;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
@ -41,17 +42,17 @@ public class MesWmItemReceiptServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmItemReceiptMapper itemReceiptMapper;
@MockitoBean
@MockBean
private MesWmItemReceiptLineService itemReceiptLineService;
@MockitoBean
@MockBean
private MesWmItemReceiptDetailService itemReceiptDetailService;
@MockitoBean
@MockBean
private MesWmArrivalNoticeService arrivalNoticeService;
@MockitoBean
@MockBean
private MesMdVendorService vendorService;
@MockitoBean
@MockBean
private MesQcIqcService iqcService;
@MockitoBean
@MockBean
private MesWmTransactionService wmTransactionService;
// ========== finishItemReceipt ==========

View File

@ -11,8 +11,8 @@ import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -39,17 +39,17 @@ public class MesWmOutsourceReceiptServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmOutsourceReceiptMapper outsourceReceiptMapper;
@MockitoBean
@MockBean
private MesWmOutsourceReceiptLineService outsourceReceiptLineService;
@MockitoBean
@MockBean
private MesWmOutsourceReceiptDetailService outsourceReceiptDetailService;
@MockitoBean
@MockBean
private MesWmTransactionService wmTransactionService;
@MockitoBean
@MockBean
private MesMdVendorService vendorService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesProWorkOrderService workOrderService;
@Test

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
import cn.hutool.core.collection.ListUtil;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO;
@ -18,16 +19,16 @@ import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationSe
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;
/**
@ -44,21 +45,21 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmProductProduceMapper productProduceMapper;
@MockitoBean
@MockBean
private MesWmProductProduceLineService productProduceLineService;
@MockitoBean
@MockBean
private MesWmProductProduceDetailService productProduceDetailService;
@MockitoBean
@MockBean
private MesProWorkOrderService workOrderService;
@MockitoBean
@MockBean
private MesWmBatchService batchService;
@MockitoBean
@MockBean
private MesWmTransactionService wmTransactionService;
@MockitoBean
@MockBean
private MesWmWarehouseService warehouseService;
@MockitoBean
@MockBean
private MesWmWarehouseLocationService locationService;
@MockitoBean
@MockBean
private MesWmWarehouseAreaService areaService;
@Test
@ -92,7 +93,7 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
.qualityStatus(MesWmQualityStatusEnum.PENDING.getStatus())
.build();
when(productProduceLineService.getProductProduceLineListByProduceId(produce.getId()))
.thenReturn(List.of(pendingLine));
.thenReturn(ListUtil.of(pendingLine));
// mock: finishProductProduce 内部会再查一次行和明细(用于创建库存事务)
// 由于 finishProductProduce 在拆分行后调用,此时行已经变了,但由于 line/detail 是 mock 的,
@ -109,8 +110,8 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
.build();
// finishProductProduce 内部第二次调用 getProductProduceLineListByProduceId
when(productProduceLineService.getProductProduceLineListByProduceId(produce.getId()))
.thenReturn(List.of(pendingLine)) // 第 1 次splitPendingAndFinishProduce 查待检行
.thenReturn(List.of(qualifiedLine, unqualifiedLine)); // 第 2 次finishProductProduce 查所有行
.thenReturn(ListUtil.of(pendingLine)) // 第 1 次splitPendingAndFinishProduce 查待检行
.thenReturn(ListUtil.of(qualifiedLine, unqualifiedLine)); // 第 2 次finishProductProduce 查所有行
// mock: finishProductProduce 中按行查明细
MesWmProductProduceDetailDO qualifiedDetail = MesWmProductProduceDetailDO.builder()
@ -118,9 +119,9 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
MesWmProductProduceDetailDO unqualifiedDetail = MesWmProductProduceDetailDO.builder()
.lineId(101L).quantity(BigDecimal.valueOf(20)).build();
when(productProduceDetailService.getProductProduceDetailListByLineId(100L))
.thenReturn(List.of(qualifiedDetail));
.thenReturn(ListUtil.of(qualifiedDetail));
when(productProduceDetailService.getProductProduceDetailListByLineId(101L))
.thenReturn(List.of(unqualifiedDetail));
.thenReturn(ListUtil.of(unqualifiedDetail));
// 调用
productProduceService.splitPendingAndFinishProduce(feedbackId, BigDecimal.valueOf(80), BigDecimal.valueOf(20));
@ -185,14 +186,14 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
.qualityStatus(MesWmQualityStatusEnum.PASS.getStatus())
.build();
when(productProduceLineService.getProductProduceLineListByProduceId(produce.getId()))
.thenReturn(List.of(pendingLine))
.thenReturn(List.of(qualifiedLine));
.thenReturn(ListUtil.of(pendingLine))
.thenReturn(ListUtil.of(qualifiedLine));
// mock: finishProductProduce 中按行查明细
MesWmProductProduceDetailDO detail = MesWmProductProduceDetailDO.builder()
.lineId(200L).quantity(BigDecimal.valueOf(50)).build();
when(productProduceDetailService.getProductProduceDetailListByLineId(200L))
.thenReturn(List.of(detail));
.thenReturn(ListUtil.of(detail));
// 调用:不合格品数量 = 0
productProduceService.splitPendingAndFinishProduce(feedbackId, BigDecimal.valueOf(50), BigDecimal.ZERO);
@ -245,7 +246,7 @@ public class MesWmProductProduceServiceImplTest extends BaseDbUnitTest {
.qualityStatus(MesWmQualityStatusEnum.PASS.getStatus())
.build();
when(productProduceLineService.getProductProduceLineListByProduceId(produce.getId()))
.thenReturn(List.of(passLine));
.thenReturn(ListUtil.of(passLine));
// 调用,应该抛异常(找不到 PENDING 行)
assertThrows(Exception.class, () ->

View File

@ -8,8 +8,8 @@ import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
@ -32,15 +32,15 @@ public class MesWmProductSalesLineServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmProductSalesLineMapper productSalesLineMapper;
@MockitoBean
@MockBean
private MesWmProductSalesService productSalesService;
@MockitoBean
@MockBean
private MesWmProductSalesDetailService productSalesDetailService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@MockitoBean
@MockBean
private MesWmBatchService batchService;
@Test

View File

@ -7,8 +7,8 @@ import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -32,10 +32,10 @@ public class MesWmReturnIssueLineServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmReturnIssueLineMapper returnIssueLineMapper;
@MockitoBean
@MockBean
private MesWmReturnIssueService issueService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@Test

View File

@ -7,8 +7,8 @@ import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -32,10 +32,10 @@ public class MesWmReturnSalesLineServiceImplTest extends BaseDbUnitTest {
@Resource
private MesWmReturnSalesLineMapper returnSalesLineMapper;
@MockitoBean
@MockBean
private MesWmReturnSalesService returnSalesService;
@MockitoBean
@MockBean
private MesMdItemService itemService;
@Test

View File

@ -22,11 +22,10 @@ spring:
schema-locations: classpath:/sql/create_tables.sql
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data:
redis:
host: 127.0.0.1 # 地址
port: 16379 # 端口(单元测试,使用 16379 端口)
database: 0 # 数据库索引
redis:
host: 127.0.0.1 # 地址
port: 16379 # 端口(单元测试,使用 16379 端口)
database: 0 # 数据库索引
mybatis:
lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试