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.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;
|
import cn.iocoder.yudao.module.mes.dal.mysql.qc.oqc.MesQcOqcMapper;
|
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
|
import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesService;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.ArgumentCaptor;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.ArgumentMatchers.*;
|
import static org.mockito.Mockito.*;
|
|
@ExtendWith(MockitoExtension.class)
|
class MesQcOqcAutoCreateTest {
|
@InjectMocks private MesQcOqcServiceImpl service;
|
@Mock private MesQcOqcMapper mapper;
|
@Mock private MesQcTemplateItemService templates;
|
@Mock private MesQcOqcLineService lines;
|
@Mock private MesWmProductSalesService sales;
|
|
@Test
|
void generatedInspectionUsesHistoricalShipmentDateAndPreservesPendingQuantities() {
|
LocalDateTime date = LocalDateTime.of(2026, 9, 23, 15, 30);
|
when(templates.getRequiredTemplateByItemIdAndType(10L, 3))
|
.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");
|
service.createOqcFromProductSales(30L, line, "SL001", 50L);
|
ArgumentCaptor<MesQcOqcDO> captor = ArgumentCaptor.forClass(MesQcOqcDO.class);
|
verify(mapper).insert(captor.capture());
|
MesQcOqcDO row = captor.getValue();
|
assertEquals(date, row.getOutDate());
|
assertEquals(date, row.getInspectDate());
|
assertEquals(BigDecimal.valueOf(200), row.getOutQuantity());
|
assertEquals(BigDecimal.ZERO, row.getCheckQuantity());
|
assertEquals(BigDecimal.ZERO, row.getQualifiedQuantity());
|
assertEquals(30L, row.getSourceDocId());
|
assertEquals(40L, row.getSourceLineId());
|
}
|
}
|