| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackApproveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.feedback.MesProFeedbackMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.api.mps.MesProMpsApi; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceService; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemBatchConfigApi; |
| | | import jakarta.annotation.Resource; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.context.annotation.Import; |
| | |
| | | private MesProFeedbackMapper feedbackMapper; |
| | | |
| | | @MockitoBean |
| | | private MesFeedbackParamService feedbackParamService; |
| | | @MockitoBean |
| | | private MesProWorkOrderService workOrderService; |
| | | @MockitoBean |
| | | private MesProRouteProcessService routeProcessService; |
| | | @MockitoBean |
| | | private MesProWorkOrderBomService workOrderBomService; |
| | | @MockitoBean |
| | | private MesProWorkOrderProcessService workOrderProcessService; |
| | | @MockitoBean |
| | | private MesMdWorkstationService workstationService; |
| | | @MockitoBean |
| | |
| | | @MockitoBean |
| | | private MesWmItemConsumeService itemConsumeService; |
| | | @MockitoBean |
| | | private MesWmProductIssueService productIssueService; |
| | | @MockitoBean |
| | | private MesWmProductProduceService productProduceService; |
| | | @MockitoBean |
| | | private MesWmProductProduceLineService produceLineService; |
| | | @MockitoBean |
| | | private MesProMpsApi mpsApi; |
| | | @MockitoBean |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | @MockitoBean |
| | | private MesMdmItemService mdmItemService; |
| | | @MockitoBean |
| | | private MdmItemBatchConfigApi itemBatchConfigApi; |
| | | @MockitoBean |
| | | private MesQcTemplateItemService templateItemService; |
| | | |
| | | @Test |
| | | public void testUpdateProFeedbackWhenIpqcFinish_success_withUnqualified() { |
| | |
| | | o.setTaskId(taskId); |
| | | o.setWorkOrderId(workOrderId); |
| | | o.setFeedbackQuantity(BigDecimal.valueOf(100)); |
| | | resetFeedbackQuantities(o); |
| | | }); |
| | | feedbackMapper.insert(feedback); |
| | | |
| | |
| | | .build(); |
| | | when(produceLineService.getProductProduceLineListByFeedbackId(feedback.getId())) |
| | | .thenReturn(ListUtil.of(qualifiedLine, unqualifiedLine)); |
| | | mockLastProcess(feedback.getProcessId()); |
| | | |
| | | // 调用 |
| | | BigDecimal qualifiedQty = BigDecimal.valueOf(80); |
| | |
| | | o.setTaskId(taskId); |
| | | o.setWorkOrderId(workOrderId); |
| | | o.setFeedbackQuantity(BigDecimal.valueOf(50)); |
| | | resetFeedbackQuantities(o); |
| | | }); |
| | | feedbackMapper.insert(feedback); |
| | | |
| | |
| | | .build(); |
| | | when(produceLineService.getProductProduceLineListByFeedbackId(feedback.getId())) |
| | | .thenReturn(ListUtil.of(qualifiedLine)); |
| | | mockLastProcess(feedback.getProcessId()); |
| | | |
| | | // 调用 |
| | | feedbackService.updateProFeedbackWhenIpqcFinish(feedback.getId(), randomLongId(), |
| | |
| | | verify(productProduceService, never()).generateProductProduce(any(), anyBoolean(), any()); |
| | | } |
| | | |
| | | /** 清除随机生成的累计数量,便于断言本次检验的回写结果 */ |
| | | private void resetFeedbackQuantities(MesProFeedbackDO feedback) { |
| | | feedback.setQualifiedQuantity(BigDecimal.ZERO); |
| | | feedback.setUnqualifiedQuantity(BigDecimal.ZERO); |
| | | feedback.setLaborScrapQuantity(BigDecimal.ZERO); |
| | | feedback.setMaterialScrapQuantity(BigDecimal.ZERO); |
| | | feedback.setOtherScrapQuantity(BigDecimal.ZERO); |
| | | feedback.setUncheckQuantity(BigDecimal.ZERO); |
| | | } |
| | | |
| | | /** 末道工序返回当前报工工序,验证任务与工单的进度回写 */ |
| | | private void mockLastProcess(Long processId) { |
| | | MesProWorkOrderProcessDO lastProcess = new MesProWorkOrderProcessDO(); |
| | | lastProcess.setProcessId(processId); |
| | | when(workOrderProcessService.getLastWorkOrderProcessByWorkOrderId(any())).thenReturn(lastProcess); |
| | | } |
| | | |
| | | } |