| | |
| | | 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; |
| | |
| | | @Mock private MesQcTemplateItemService templates; |
| | | @Mock private MesQcOqcLineService lines; |
| | | @Mock private MesWmProductSalesService sales; |
| | | @Mock private ErpSaleOrderApi saleOrderApi; |
| | | |
| | | @Test |
| | | void generatedInspectionUsesHistoricalShipmentDateAndPreservesPendingQuantities() { |
| | |
| | | .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()); |
| | |
| | | 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); |
| | | } |
| | | } |