| | |
| | | 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; |
| | |
| | | |
| | | 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} 的单元测试 |
| | |
| | | */ |
| | | @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; |
| | |
| | | @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 |