From cccbfadcb6e96c23a33c40c0687a27c2f6efa1db Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 09 十一月 2026 13:16:42 +0800
Subject: [PATCH] feat(seal): 添加印章详情及图片预览功能
---
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 46 insertions(+), 13 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..9f62951 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
@@ -23,12 +23,14 @@
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.MesQcCompletionHelper;
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.template.MesQcTemplateItemService;
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import jakarta.annotation.Resource;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
@@ -39,6 +41,7 @@
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
/**
@@ -48,6 +51,11 @@
*/
@Import(MesQcIpqcServiceImpl.class)
public class MesQcIpqcServiceImplTest extends BaseDbUnitTest {
+
+ @MockitoBean
+ private cn.iocoder.yudao.module.mes.service.qc.imports.MesQcImportHelper qcImportHelper;
+ @MockitoBean
+ private cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService ncrService;
@Resource
private MesQcIpqcServiceImpl ipqcService;
@@ -81,6 +89,13 @@
private MesQcIndicatorResultService indicatorResultService;
@MockitoBean
private MesWmProductProduceLineService productProduceLineService;
+ @MockitoBean
+ private MesQcCompletionHelper completionHelper;
+
+ @BeforeEach
+ void stubCompletionHelper() {
+ when(completionHelper.validateAndGetResult(anyString(), anyLong(), any(), any(), any())).thenReturn(1);
+ }
@Test
public void testFinishIpqc_writeBack_feedback() {
@@ -216,17 +231,27 @@
}
@Test
- public void testFinishIpqc_checkResultEmpty() {
- // 鍑嗗鏁版嵁锛歝heckResult 涓虹┖锛屽簲璇ユ姤閿�
+ public void testFinishIpqc_checkResultAutoComputed() {
+ // 鍑嗗鏁版嵁锛氭娴嬬粨璁轰笉鍐嶇敱鐢ㄦ埛濉啓锛屽畬鎴愭椂鎸夊悎鏍�/涓嶅悎鏍兼暟閲忚嚜鍔ㄥ垽瀹�
MesQcIpqcDO ipqc = randomPojo(MesQcIpqcDO.class, o -> {
o.setStatus(MesQcStatusEnum.DRAFT.getStatus());
- o.setCheckResult(null); // 妫�娴嬬粨璁轰负绌�
+ o.setCheckResult(null);
o.setSourceDocType(null);
+ o.setSourceDocId(null);
+ o.setSourceLineId(null);
+ o.setCheckQuantity(BigDecimal.valueOf(100));
+ o.setQualifiedQuantity(BigDecimal.valueOf(100));
+ o.setUnqualifiedQuantity(BigDecimal.ZERO);
});
ipqcMapper.insert(ipqc);
- // 璋冪敤锛屽簲璇ユ姏寮傚父锛堟娴嬬粨璁哄繀濉級
- assertThrows(Exception.class, () -> ipqcService.finishIpqc(ipqc.getId()));
+ // 璋冪敤
+ ipqcService.finishIpqc(ipqc.getId());
+
+ // 鏂█锛氭娴嬬粨璁虹敱绯荤粺鍒ゅ畾骞跺洖鍐�
+ MesQcIpqcDO updatedIpqc = ipqcMapper.selectById(ipqc.getId());
+ assertEquals(MesQcStatusEnum.FINISHED.getStatus(), updatedIpqc.getStatus());
+ assertEquals(1, updatedIpqc.getCheckResult());
}
@Test
@@ -272,12 +297,14 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ // 鐢熶骇瀹屾垚鍚庝粛鍙墜宸ヨˉ褰曡川妫�銆�
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.FINISHED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
// mock 宸ヨ壓璺嚎
MesProRouteProductDO routeProduct = new MesProRouteProductDO();
routeProduct.setRouteId(routeId);
@@ -322,6 +349,7 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
when(workOrderService.validateWorkOrderExists(workOrderId)).thenReturn(workOrder);
when(workOrderService.validateWorkOrderConfirmed(workOrderId)).thenReturn(workOrder);
// mock 浠诲姟
@@ -330,11 +358,11 @@
task.setWorkOrderId(workOrderId);
task.setWorkstationId(workstationId);
task.setItemId(productId);
- when(taskService.validateTaskNotFinished(taskId)).thenReturn(task);
+ when(taskService.validateTaskExists(taskId)).thenReturn(task);
// mock 妯℃澘鍖归厤
MesQcTemplateItemDO templateItem = new MesQcTemplateItemDO();
templateItem.setTemplateId(templateId);
- when(templateItemService.getRequiredTemplateByItemIdAndType(eq(productId), anyInt())).thenReturn(templateItem);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
// 璋冪敤
Long ipqcId = ipqcService.createIpqc(reqVO);
@@ -375,12 +403,13 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
// mock 宸ヨ壓璺嚎瀛樺湪
MesProRouteProductDO routeProduct = new MesProRouteProductDO();
routeProduct.setRouteId(routeId);
@@ -428,11 +457,12 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// 璋冪敤锛屾柇瑷�寮傚父
@@ -470,11 +500,12 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// mock锛氫骇鍑鸿瀛樺湪浣� feedbackId 涓嶅尮閰�
MesWmProductProduceLineDO line = new MesWmProductProduceLineDO();
@@ -518,11 +549,12 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(new MesProFeedbackDO());
// mock锛氫骇鍑鸿瀛樺湪涓斿綊灞炴纭紝浣嗕笉鏄� PENDING 鐘舵��
MesWmProductProduceLineDO line = new MesWmProductProduceLineDO();
@@ -566,11 +598,12 @@
MesProWorkOrderDO workOrder = new MesProWorkOrderDO();
workOrder.setId(workOrderId);
workOrder.setProductId(productId);
+ workOrder.setStatus(cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.CONFIRMED.getStatus());
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);
+ when(templateItemService.getTemplateItemList(eq(productId), anyInt(), isNull(), isNull())).thenReturn(java.util.List.of(templateItem));
MesProFeedbackDO feedback = new MesProFeedbackDO();
feedback.setId(feedbackId);
feedback.setCode("FB-001");
--
Gitblit v1.9.3