From de0202274ed147e89fdbba0a953936a3b9997ec7 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 22 九月 2026 17:37:50 +0800
Subject: [PATCH] feat(mes): 更新IPQC过程检验功能
---
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java | 373 +++++++++++++++--------------------------------------
1 files changed, 107 insertions(+), 266 deletions(-)
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java
index 7207edb..26c638d 100644
--- a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java
@@ -2,13 +2,9 @@
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
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.route.MesProRouteProductDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
@@ -16,15 +12,10 @@
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.qc.MesQcStatusEnum;
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.md.workstation.MesMdWorkstationService;
import cn.iocoder.yudao.module.mes.service.pro.feedback.MesProFeedbackService;
-import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProcessService;
-import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProductService;
-import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
-import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService;
import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService;
+import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService;
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -34,6 +25,7 @@
import org.springframework.test.context.bean.override.mockito.MockitoBean;
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;
@@ -60,11 +52,7 @@
@MockitoBean
private MesQcIpqcLineService ipqcLineService;
@MockitoBean
- private MesProWorkOrderService workOrderService;
- @MockitoBean
- private MesMdWorkstationService workstationService;
- @MockitoBean
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@MockitoBean
private MesQcDefectRecordService defectRecordService;
@MockitoBean
@@ -72,15 +60,11 @@
@MockitoBean
private MesProFeedbackService feedbackService;
@MockitoBean
- private MesProRouteProductService routeProductService;
- @MockitoBean
- private MesProRouteProcessService routeProcessService;
- @MockitoBean
- private MesProTaskService taskService;
- @MockitoBean
private MesQcIndicatorResultService indicatorResultService;
@MockitoBean
private MesWmProductProduceLineService productProduceLineService;
+ @MockitoBean
+ private MesQcNcrService ncrService;
@Test
public void testFinishIpqc_writeBack_feedback() {
@@ -185,34 +169,46 @@
@Test
public void testFinishIpqc_writeBack_sourceDocTypeDirtyData() {
- // 鍑嗗鏁版嵁锛歴ourceDocType 闈炵┖浣� sourceDocId 涓虹┖锛屽簲璇ユ姏寮傚父
+ // 鍑嗗鏁版嵁锛歴ourceDocType 闈炵┖浣� sourceDocId 涓虹┖锛岃烦杩囧洖鍐�
MesQcIpqcDO ipqc = randomPojo(MesQcIpqcDO.class, o -> {
o.setStatus(MesQcStatusEnum.DRAFT.getStatus());
o.setCheckResult(1);
o.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
o.setSourceDocId(null); // 鑴忔暟鎹�
o.setSourceLineId(null);
+ o.setUnqualifiedQuantity(BigDecimal.ZERO);
});
ipqcMapper.insert(ipqc);
- // 璋冪敤锛屽苟鏂█寮傚父
- assertThrows(IllegalArgumentException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
+ // 璋冪敤锛氫笉鎶涘紓甯革紝浠呰烦杩囧洖鍐�
+ ipqcService.finishIpqc(ipqc.getId());
+
+ MesQcIpqcDO updatedIpqc = ipqcMapper.selectById(ipqc.getId());
+ assertEquals(MesQcStatusEnum.FINISHED.getStatus(), updatedIpqc.getStatus());
+ verify(feedbackService, never()).updateProFeedbackWhenIpqcFinish(
+ anyLong(), anyLong(), any(), any(), any(), any(), any());
}
@Test
public void testFinishIpqc_writeBack_unknownSourceDocType() {
- // 鍑嗗鏁版嵁锛歴ourceDocType 鏃犳硶璇嗗埆
+ // 鍑嗗鏁版嵁锛歴ourceDocType 鏃犳硶璇嗗埆锛屽洖鍐欓樁娈典笉鏍¢獙绫诲瀷锛堜粎鎸� sourceDocId 鍥炲啓鎶ュ伐锛�
MesQcIpqcDO ipqc = randomPojo(MesQcIpqcDO.class, o -> {
o.setStatus(MesQcStatusEnum.DRAFT.getStatus());
o.setCheckResult(1);
o.setSourceDocType(99999); // 鏃犳硶璇嗗埆鐨勭被鍨�
o.setSourceDocId(randomLongId());
- o.setSourceLineId(null);
+ o.setSourceLineId(randomLongId());
+ o.setUnqualifiedQuantity(BigDecimal.ZERO);
});
ipqcMapper.insert(ipqc);
- // 璋冪敤锛屽苟鏂█寮傚父
- assertThrows(IllegalArgumentException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
+ // 璋冪敤锛氭寜 sourceDocId 鍥炲啓鎶ュ伐
+ ipqcService.finishIpqc(ipqc.getId());
+
+ MesQcIpqcDO updatedIpqc = ipqcMapper.selectById(ipqc.getId());
+ assertEquals(MesQcStatusEnum.FINISHED.getStatus(), updatedIpqc.getStatus());
+ verify(feedbackService).updateProFeedbackWhenIpqcFinish(
+ anyLong(), anyLong(), any(), any(), any(), any(), any());
}
@Test
@@ -242,159 +238,82 @@
assertThrows(Exception.class, () -> ipqcService.finishIpqc(ipqc.getId()));
}
- // ==================== processId 鎺ㄥ琛屼负娴嬭瘯 ====================
+ // ==================== 鎵瑰彿蹇呭~鏍¢獙 ====================
/**
- * 宸ヤ綅鏈夊伐搴� + 璇ュ伐搴忓湪浜у搧宸ヨ壓璺嚎涓� 鈫� processId 搴旇琚缃负宸ヤ綅宸ュ簭
+ * 鎵瑰彿涓� null 鈫� 鍒涘缓澶辫触
*/
@Test
- public void testCreateIpqc_processId_workstationHasProcess() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
- Long processId = randomLongId();
- Long routeId = randomLongId();
- Long templateId = randomLongId();
-
+ public void testCreateIpqc_batchCode_null() {
MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-TEST-001");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
+ reqVO.setCode("IPQC-BC-001");
+ reqVO.setBatchCode(null);
+ reqVO.setItemId(randomLongId());
reqVO.setInspectorUserId(randomLongId());
- // mock 宸ヤ綅杩斿洖鏈夊伐搴�
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(processId);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- // mock 宸ュ崟
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- // mock 妯℃澘鍖归厤
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
- // mock 宸ヨ壓璺嚎
- MesProRouteProductDO routeProduct = new MesProRouteProductDO();
- routeProduct.setRouteId(routeId);
- when(routeProductService.getRouteProductByItemId(productId)).thenReturn(routeProduct);
- // mock 宸ュ簭鍦ㄨ矾绾夸腑
- when(routeProcessService.getRouteProcessByRouteIdAndProcessId(routeId, processId))
- .thenReturn(new MesProRouteProcessDO());
-
- // 璋冪敤
- Long ipqcId = ipqcService.createIpqc(reqVO);
-
- // 鏂█锛歱rocessId 搴旇鏄伐浣嶅伐搴�
- MesQcIpqcDO ipqc = ipqcMapper.selectById(ipqcId);
- assertEquals(processId, ipqc.getProcessId());
+ ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
+ assertEquals(QC_IPQC_BATCH_CODE_REQUIRED.getCode(), ex.getCode());
}
/**
- * 宸ヤ綅娌℃湁宸ュ簭锛坧rocessId=null锛夆啋 processId 搴旇鐣� null锛堜笉鍥為��鍒颁换鍔″伐搴忥級
+ * 鎵瑰彿涓虹┖鐧戒覆 鈫� 鍒涘缓澶辫触锛堝厹搴曞唴閮�/RPC 璋冪敤缁曡繃 VO 鏍¢獙鐨勬儏鍐碉級
*/
@Test
- public void testCreateIpqc_processId_workstationNoProcess_shouldBeNull() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
- Long taskId = randomLongId();
- Long templateId = randomLongId();
-
+ public void testCreateIpqc_batchCode_blank() {
MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-TEST-002");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
- reqVO.setTaskId(taskId); // 鏁呮剰浼犲叆 taskId锛岄獙璇佷笉浼氬洖閫�
+ reqVO.setCode("IPQC-BC-002");
+ reqVO.setBatchCode(" ");
+ reqVO.setItemId(randomLongId());
reqVO.setInspectorUserId(randomLongId());
- // mock 宸ヤ綅娌℃湁宸ュ簭
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(null); // 鏃犲伐搴�
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- // mock 宸ュ崟
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- // mock 浠诲姟
- MesProTaskDO task = new MesProTaskDO();
- task.setId(taskId);
- task.setWorkOrderId(workOrderId);
- task.setWorkstationId(workstationId);
- task.setItemId(productId);
- when(taskService.validateTaskNotFinished(taskId)).thenReturn(task);
- // mock 妯℃澘鍖归厤
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
+ assertEquals(QC_IPQC_BATCH_CODE_REQUIRED.getCode(), ex.getCode());
+ }
+
+ // ==================== 鍒涘缓鎴愬姛锛氭壒鍙� / 鐗╂枡钀藉簱 ====================
+
+ @Test
+ public void testCreateIpqc_success() {
+ // 鍑嗗鍙傛暟
+ Long itemId = randomLongId();
+ Long templateId = randomLongId();
+ MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
+ reqVO.setCode("IPQC-OK-001");
+ reqVO.setName("娴嬭瘯杩囩▼妫�楠�");
+ reqVO.setBatchCode("BC-2025-001");
+ reqVO.setItemId(itemId);
+ reqVO.setInspectorUserId(randomLongId());
+ mockTemplate(itemId, templateId);
// 璋冪敤
Long ipqcId = ipqcService.createIpqc(reqVO);
- // 鏂█锛歱rocessId 搴旇鏄� null锛屽嵆浣夸紶鍏ヤ簡 taskId 涔熶笉搴旇鍥為��
+ // 鏂█锛氭壒鍙蜂笌鐗╂枡钀藉簱锛屾ā鏉挎寜鐗╂枡+IPQC 绫诲瀷鍖归厤
MesQcIpqcDO ipqc = ipqcMapper.selectById(ipqcId);
- assertNull(ipqc.getProcessId(),
- "宸ヤ綅鏃犲伐搴忔椂 processId 搴斾负 null锛屼笉搴斿洖閫�鍒颁换鍔″伐搴�");
- // 鏂█锛氫笉搴旇璇诲彇浠诲姟鐨� processId
- verify(routeProductService, never()).getRouteProductByItemId(any());
+ assertNotNull(ipqc);
+ assertEquals("BC-2025-001", ipqc.getBatchCode());
+ assertEquals(itemId, ipqc.getItemId());
+ assertEquals(templateId, ipqc.getTemplateId());
+ verify(mdmItemApi).validateItemExists(itemId);
}
/**
- * 宸ヤ綅鏈夊伐搴忎絾璇ュ伐搴忎笉鍦ㄤ骇鍝佸伐鑹鸿矾绾夸腑 鈫� processId 搴旇鐣� null
+ * 浼犲叆浜嗕笉鍦ㄥ尮閰嶅垪琛ㄤ腑鐨� templateId 鈫� 鎷掔粷鍒涘缓
*/
@Test
- public void testCreateIpqc_processId_processNotInRoute() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
- Long processId = randomLongId();
- Long routeId = randomLongId();
- Long templateId = randomLongId();
-
+ public void testCreateIpqc_templateId_notMatched() {
+ Long itemId = randomLongId();
MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-TEST-003");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
+ reqVO.setCode("IPQC-TPL-001");
+ reqVO.setName("鎸囧畾鏂规涓嶅尮閰�");
+ reqVO.setBatchCode("BC-2025-002");
+ reqVO.setItemId(itemId);
reqVO.setInspectorUserId(randomLongId());
+ reqVO.setTemplateId(randomLongId()); // 涓庡尮閰嶇粨鏋滀笉涓�鑷�
+ mockTemplate(itemId, randomLongId());
- // mock 宸ヤ綅鏈夊伐搴�
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(processId);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- // mock 宸ュ崟
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- // mock 妯℃澘鍖归厤
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
- // mock 宸ヨ壓璺嚎瀛樺湪
- MesProRouteProductDO routeProduct = new MesProRouteProductDO();
- routeProduct.setRouteId(routeId);
- when(routeProductService.getRouteProductByItemId(productId)).thenReturn(routeProduct);
- // mock 宸ュ簭涓嶅湪璺嚎涓�
- when(routeProcessService.getRouteProcessByRouteIdAndProcessId(routeId, processId))
- .thenReturn(null);
-
- // 璋冪敤
- Long ipqcId = ipqcService.createIpqc(reqVO);
-
- // 鏂█锛歱rocessId 搴旇鏄� null
- MesQcIpqcDO ipqc = ipqcMapper.selectById(ipqcId);
- assertNull(ipqc.getProcessId());
+ ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
+ assertEquals(QC_NO_TEMPLATE.getCode(), ex.getCode());
}
// ==================== sourceLineId 鏍¢獙娴嬭瘯 ====================
@@ -404,35 +323,10 @@
*/
@Test
public void testCreateIpqc_sourceLineId_required() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
+ Long itemId = randomLongId();
Long feedbackId = randomLongId();
- Long templateId = randomLongId();
-
- MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-SL-001");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
- reqVO.setInspectorUserId(randomLongId());
- reqVO.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
- reqVO.setSourceDocId(feedbackId);
- reqVO.setSourceLineId(null); // 涓嶄紶 sourceLineId
-
- // mock
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(null);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ MesQcIpqcSaveReqVO reqVO = buildFeedbackReqVO("IPQC-SL-001", itemId, feedbackId, null);
+ mockTemplate(itemId, randomLongId());
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// 璋冪敤锛屾柇瑷�寮傚父
@@ -445,36 +339,11 @@
*/
@Test
public void testCreateIpqc_sourceLineId_notBelong() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
+ Long itemId = randomLongId();
Long feedbackId = randomLongId();
Long sourceLineId = randomLongId();
- Long templateId = randomLongId();
-
- MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-SL-002");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
- reqVO.setInspectorUserId(randomLongId());
- reqVO.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
- reqVO.setSourceDocId(feedbackId);
- reqVO.setSourceLineId(sourceLineId);
-
- // mock
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(null);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ MesQcIpqcSaveReqVO reqVO = buildFeedbackReqVO("IPQC-SL-002", itemId, feedbackId, sourceLineId);
+ mockTemplate(itemId, randomLongId());
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// mock锛氫骇鍑鸿瀛樺湪浣� feedbackId 涓嶅尮閰�
MesWmProductProduceLineDO line = new MesWmProductProduceLineDO();
@@ -493,36 +362,11 @@
*/
@Test
public void testCreateIpqc_sourceLineId_notPending() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
+ Long itemId = randomLongId();
Long feedbackId = randomLongId();
Long sourceLineId = randomLongId();
- Long templateId = randomLongId();
-
- MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-SL-003");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
- reqVO.setInspectorUserId(randomLongId());
- reqVO.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
- reqVO.setSourceDocId(feedbackId);
- reqVO.setSourceLineId(sourceLineId);
-
- // mock
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(null);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ MesQcIpqcSaveReqVO reqVO = buildFeedbackReqVO("IPQC-SL-003", itemId, feedbackId, sourceLineId);
+ mockTemplate(itemId, randomLongId());
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// mock锛氫骇鍑鸿瀛樺湪涓斿綊灞炴纭紝浣嗕笉鏄� PENDING 鐘舵��
MesWmProductProduceLineDO line = new MesWmProductProduceLineDO();
@@ -541,36 +385,11 @@
*/
@Test
public void testCreateIpqc_sourceLineId_success() {
- // 鍑嗗鍙傛暟
- Long workstationId = randomLongId();
- Long workOrderId = randomLongId();
- Long productId = randomLongId();
+ Long itemId = randomLongId();
Long feedbackId = randomLongId();
Long sourceLineId = randomLongId();
- Long templateId = randomLongId();
-
- MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
- reqVO.setCode("IPQC-SL-004");
- reqVO.setWorkstationId(workstationId);
- reqVO.setWorkOrderId(workOrderId);
- reqVO.setInspectorUserId(randomLongId());
- reqVO.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
- reqVO.setSourceDocId(feedbackId);
- reqVO.setSourceLineId(sourceLineId);
-
- // mock
- MesMdWorkstationDO workstation = new MesMdWorkstationDO();
- workstation.setId(workstationId);
- workstation.setProcessId(null);
- when(workstationService.validateWorkstationExists(workstationId)).thenReturn(workstation);
- MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
- workOrder.setId(workOrderId);
- workOrder.setProductId(productId);
- when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
- when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
- MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
- templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ MesQcIpqcSaveReqVO reqVO = buildFeedbackReqVO("IPQC-SL-004", itemId, feedbackId, sourceLineId);
+ mockTemplate(itemId, randomLongId());
MesProFeedbackDO feedback = new MesProFeedbackDO();
feedback.setId(feedbackId);
feedback.setCode("FB-001");
@@ -593,4 +412,26 @@
assertEquals("FB-001", ipqc.getSourceDocCode());
}
+ // ==================== 娴嬭瘯杈呭姪 ====================
+
+ private MesQcIpqcSaveReqVO buildFeedbackReqVO(String code, Long itemId, Long feedbackId, Long sourceLineId) {
+ MesQcIpqcSaveReqVO reqVO = new MesQcIpqcSaveReqVO();
+ reqVO.setCode(code);
+ reqVO.setName("鏉ユ簮鏍¢獙杩囩▼妫�楠�");
+ reqVO.setBatchCode("BC-SL-001");
+ reqVO.setItemId(itemId);
+ reqVO.setInspectorUserId(randomLongId());
+ reqVO.setSourceDocType(MesBizTypeConstants.PRO_FEEDBACK);
+ reqVO.setSourceDocId(feedbackId);
+ reqVO.setSourceLineId(sourceLineId);
+ return reqVO;
+ }
+
+ private void mockTemplate(Long itemId, Long templateId) {
+ MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
+ templateItem.setTemplateId(templateId);
+ when(templateItemService.getTemplateItemList(eq(itemId), anyInt()))
+ .thenReturn(List.of(templateItem));
+ }
+
}
--
Gitblit v1.9.3