From ac2e2b5af3726ee64dc37c3ebf26989a0346f22a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 07 十一月 2026 19:16:05 +0800
Subject: [PATCH] feat(feedback): 优化报工审批流程并增加报工人校验
---
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImplTest.java | 54 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 36 insertions(+), 18 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..307167c 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
@@ -13,6 +13,9 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.qc.ipqc.MesQcIpqcMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.pro.feedback.MesProFeedbackMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceLineMapper;
+import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService;
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;
@@ -81,6 +84,12 @@
private MesQcIndicatorResultService indicatorResultService;
@MockitoBean
private MesWmProductProduceLineService productProduceLineService;
+ @MockitoBean
+ private MesWmProductProduceLineMapper produceLineMapper;
+ @MockitoBean
+ private MesProFeedbackMapper feedbackMapper;
+ @MockitoBean
+ private MesQcNcrService ncrService;
@Test
public void testFinishIpqc_writeBack_feedback() {
@@ -101,11 +110,17 @@
o.setSourceLineId(sourceLineId);
o.setQualifiedQuantity(qualifiedQty);
o.setUnqualifiedQuantity(unqualifiedQty);
+ o.setCheckQuantity(qualifiedQty.add(unqualifiedQty));
o.setLaborScrapQuantity(laborScrapQty);
o.setMaterialScrapQuantity(materialScrapQty);
o.setOtherScrapQuantity(otherScrapQty);
});
ipqcMapper.insert(ipqc);
+
+ when(feedbackMapper.selectOne(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class))).thenReturn(new MesProFeedbackDO());
+ when(produceLineMapper.selectByIdForUpdate(sourceLineId)).thenReturn(MesWmProductProduceLineDO.builder()
+ .feedbackId(sourceDocId).qualityStatus(MesWmQualityStatusEnum.PENDING.getStatus())
+ .quantity(BigDecimal.valueOf(100)).build());
// 璋冪敤
ipqcService.finishIpqc(ipqc.getId());
@@ -145,18 +160,9 @@
});
ipqcMapper.insert(ipqc);
- // 璋冪敤
- ipqcService.finishIpqc(ipqc.getId());
-
- // 鏂█锛氭墍鏈夋暟閲忓弬鏁伴兘鏄� BigDecimal.ZERO锛坉efaultIfNull 澶勭悊锛�
- verify(feedbackService).updateProFeedbackWhenIpqcFinish(
- eq(sourceDocId),
- eq(sourceLineId),
- eq(BigDecimal.ZERO),
- eq(BigDecimal.ZERO),
- eq(BigDecimal.ZERO),
- eq(BigDecimal.ZERO),
- eq(BigDecimal.ZERO));
+ when(feedbackMapper.selectOne(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class))).thenReturn(new MesProFeedbackDO());
+ assertEquals(QC_IPQC_QUANTITY_INVALID.getCode(),
+ assertThrows(ServiceException.class, () -> ipqcService.finishIpqc(ipqc.getId())).getCode());
}
@Test
@@ -168,6 +174,12 @@
o.setSourceDocType(null);
o.setSourceDocId(null);
o.setSourceLineId(null);
+ o.setCheckQuantity(BigDecimal.ONE);
+ o.setQualifiedQuantity(BigDecimal.ONE);
+ o.setUnqualifiedQuantity(BigDecimal.ZERO);
+ o.setLaborScrapQuantity(BigDecimal.ZERO);
+ o.setMaterialScrapQuantity(BigDecimal.ZERO);
+ o.setOtherScrapQuantity(BigDecimal.ZERO);
});
ipqcMapper.insert(ipqc);
@@ -196,7 +208,7 @@
ipqcMapper.insert(ipqc);
// 璋冪敤锛屽苟鏂█寮傚父
- assertThrows(IllegalArgumentException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
+ assertThrows(ServiceException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
}
@Test
@@ -212,7 +224,7 @@
ipqcMapper.insert(ipqc);
// 璋冪敤锛屽苟鏂█寮傚父
- assertThrows(IllegalArgumentException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
+ assertThrows(ServiceException.class, () -> ipqcService.finishIpqc(ipqc.getId()));
}
@Test
@@ -437,7 +449,7 @@
// 璋冪敤锛屾柇瑷�寮傚父
ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
- assertEquals(QC_IPQC_SOURCE_LINE_REQUIRED.getCode(), ex.getCode());
+ assertEquals(QC_IPQC_SOURCE_INCOMPLETE.getCode(), ex.getCode());
}
/**
@@ -481,7 +493,8 @@
line.setId(sourceLineId);
line.setFeedbackId(randomLongId()); // 涓嶅悓鐨� feedbackId
line.setQualityStatus(MesWmQualityStatusEnum.PENDING.getStatus());
- when(productProduceLineService.validateProductProduceLineExists(sourceLineId)).thenReturn(line);
+ when(feedbackMapper.selectOne(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class))).thenReturn(new MesProFeedbackDO());
+ when(produceLineMapper.selectByIdForUpdate(sourceLineId)).thenReturn(line);
// 璋冪敤锛屾柇瑷�寮傚父
ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
@@ -529,7 +542,8 @@
line.setId(sourceLineId);
line.setFeedbackId(feedbackId);
line.setQualityStatus(MesWmQualityStatusEnum.PASS.getStatus()); // 宸插悎鏍硷紝闈炲緟妫�
- when(productProduceLineService.validateProductProduceLineExists(sourceLineId)).thenReturn(line);
+ when(feedbackMapper.selectOne(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class))).thenReturn(new MesProFeedbackDO());
+ when(produceLineMapper.selectByIdForUpdate(sourceLineId)).thenReturn(line);
// 璋冪敤锛屾柇瑷�寮傚父
ServiceException ex = assertThrows(ServiceException.class, () -> ipqcService.createIpqc(reqVO));
@@ -574,13 +588,17 @@
MesProFeedbackDO feedback = new MesProFeedbackDO();
feedback.setId(feedbackId);
feedback.setCode("FB-001");
+ feedback.setWorkOrderId(workOrderId);
+ feedback.setItemId(productId);
when(feedbackService.validateFeedbackExists(feedbackId)).thenReturn(feedback);
+ when(feedbackMapper.selectOne(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class))).thenReturn(feedback);
// mock锛氫骇鍑鸿瀛樺湪銆佸綊灞炴纭�丳ENDING 鐘舵��
MesWmProductProduceLineDO line = new MesWmProductProduceLineDO();
line.setId(sourceLineId);
line.setFeedbackId(feedbackId);
+ line.setItemId(productId);
line.setQualityStatus(MesWmQualityStatusEnum.PENDING.getStatus());
- when(productProduceLineService.validateProductProduceLineExists(sourceLineId)).thenReturn(line);
+ when(produceLineMapper.selectByIdForUpdate(sourceLineId)).thenReturn(line);
// 璋冪敤
Long ipqcId = ipqcService.createIpqc(reqVO);
--
Gitblit v1.9.3