From 3ff6604c75c887f4056ee03545d204bc9323286c Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 15 十月 2026 17:47:19 +0800
Subject: [PATCH] feat(mes): 新增报工设备快照功能并优化状态校验
---
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImplTest.java | 54 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImplTest.java b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImplTest.java
index a086275..304cee5 100644
--- a/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImplTest.java
+++ b/yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImplTest.java
@@ -63,6 +63,9 @@
private MesProFeedbackMapper feedbackMapper;
@MockitoBean
+ private MesProFeedbackEquipmentService equipmentService;
+
+ @MockitoBean
private MesProWorkOrderService workOrderService;
@MockitoBean
private MesProRouteProcessService routeProcessService;
@@ -94,6 +97,15 @@
private MdmItemBatchConfigApi itemBatchConfigApi;
@MockitoBean
private BpmProcessInstanceApi processInstanceApi;
+
+ @Test
+ public void testEquipmentSnapshotSurvivesStatusUpdates() {
+ MesProFeedbackDO feedback = randomPojo(MesProFeedbackDO.class, f -> f.setMachineryIds("10,20"));
+ feedbackMapper.insert(feedback);
+ feedbackMapper.updateById(new MesProFeedbackDO().setId(feedback.getId())
+ .setStatus(MesProFeedbackStatusEnum.APPROVING.getStatus()));
+ assertEquals("10,20", feedbackMapper.selectById(feedback.getId()).getMachineryIds());
+ }
@Test
public void testUpdateProFeedbackWhenIpqcFinish_success_withUnqualified() {
@@ -146,12 +158,9 @@
assertEquals(0, materialScrapQty.compareTo(updatedFeedback.getMaterialScrapQuantity()));
assertEquals(0, otherScrapQty.compareTo(updatedFeedback.getOtherScrapQuantity()));
- // 鏂█ 4锛氭洿鏂颁簡浠诲姟鍜屽伐鍗曠殑宸茬敓浜ф暟閲�
- // 娉ㄦ剰锛氭暟閲忕粡杩� DB 瀛樺彇鍚� scale 鍙兘鍙樺寲锛岀敤 any() 鍖归厤
- verify(taskService).updateProducedQuantity(eq(taskId),
- any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class));
- verify(workOrderService).updateProducedQuantity(eq(workOrderId),
- any(BigDecimal.class));
+ // 浜ч噺宸茬粡鍦ㄦ姤宸ュ鎵规椂绱锛岃川妫�鍥炶皟涓嶈兘閲嶅绱銆�
+ verify(taskService, never()).updateProducedQuantity(anyLong(), any(), any(), any());
+ verify(workOrderService, never()).updateProducedQuantity(anyLong(), any());
}
@Test
@@ -263,6 +272,8 @@
when(productProduceService.generateProductProduce(any(), eq(false), any())).thenReturn(produce);
// mock: 浜у嚭琛岋紙鐢ㄤ簬 updateTaskAndWorkOrderByFeedback锛�
+ when(workOrderProcessService.getLastWorkOrderProcessByWorkOrderId(feedback.getWorkOrderId()))
+ .thenReturn(new MesProWorkOrderProcessDO().setProcessId(processId));
MesWmProductProduceLineDO qualifiedLine = MesWmProductProduceLineDO.builder()
.quantity(BigDecimal.valueOf(80))
.qualityStatus(MesWmQualityStatusEnum.PASS.getStatus()).build();
@@ -328,8 +339,8 @@
verify(productProduceService).generateProductProduce(any(), eq(true), any());
verify(productProduceService, never()).finishProductProduce(anyLong());
- // 鏂█ 4锛氭病鏈夋洿鏂颁换鍔�/宸ュ崟鏁伴噺锛堢瓑 IPQC 鍥炶皟锛�
- verify(taskService, never()).updateProducedQuantity(anyLong(), any(), any(), any());
+ // 浜ч噺鍦ㄥ鎵规椂绱锛屼骇鍑轰粛淇濇寔寰呮锛涢潪鏈亾涓嶆洿鏂板伐鍗曟�讳骇閲忋��
+ verify(taskService).updateProducedQuantity(eq(feedback.getTaskId()), any(), any(), any());
verify(workOrderService, never()).updateProducedQuantity(anyLong(), any());
}
@@ -353,6 +364,8 @@
.keyFlag(false).checkFlag(false).build();
when(routeProcessService.getRouteProcessByRouteIdAndProcessId(routeId, processId))
.thenReturn(routeProcess);
+ MesWmProductProduceDO produce = randomPojo(MesWmProductProduceDO.class);
+ when(productProduceService.generateProductProduce(any(), eq(false), any())).thenReturn(produce);
// 璋冪敤
MesProFeedbackApproveReqVO reqVO = new MesProFeedbackApproveReqVO();
@@ -366,9 +379,11 @@
MesProFeedbackDO updated = feedbackMapper.selectById(feedback.getId());
assertEquals(MesProFeedbackStatusEnum.FINISHED.getStatus(), updated.getStatus());
- // 鏂█ 3锛氫笉鐢熸垚浜у嚭鍗曪紝涓嶆洿鏂颁换鍔�/宸ュ崟
- verify(productProduceService, never()).generateProductProduce(any(), anyBoolean(), any());
- verify(taskService, never()).updateProducedQuantity(anyLong(), any(), any(), any());
+ // 闈炲叧閿伐搴忎篃鐢熸垚浜у嚭骞剁疮璁′换鍔¤繘搴︼紝浣嗕笉绱宸ュ崟鎬讳骇閲忋��
+ verify(productProduceService).generateProductProduce(any(), eq(false), any());
+ verify(productProduceService).finishProductProduce(produce.getId());
+ verify(taskService).updateProducedQuantity(eq(feedback.getTaskId()), any(), any(), any());
+ verify(workOrderService, never()).updateProducedQuantity(anyLong(), any());
}
@Test
@@ -404,9 +419,9 @@
}
@Test
- public void testApproveFeedback_nonKeyCheck_directFinishAndCleanUncheck() {
+ public void testApproveFeedback_nonKeyCheck_enterUncheckAndCleanQuantity() {
// 鍑嗗鏁版嵁锛氶潪鍏抽敭 + 璐ㄦ宸ュ簭锛�!key+check锛夛紝uncheckQuantity > 0
- // 搴旀斁琛岋紙checkFlag=true 涓嶆嫤鎴� uncheckQuantity锛夛紝鐩存帴瀹岀粨骞舵竻闆� uncheckQuantity
+ // 搴旀斁琛屽苟杩涘叆寰呮楠岋紝瀹℃壒闃舵鍙疮璁′竴娆′换鍔′骇閲忋��
Long routeId = randomLongId();
Long processId = randomLongId();
MesProFeedbackDO feedback = randomPojo(MesProFeedbackDO.class, o -> {
@@ -430,16 +445,17 @@
reqVO.setId(feedback.getId());
boolean result = feedbackService.approveFeedback(reqVO);
- // 鏂█ 1锛氳繑鍥� true锛堢洿鎺ュ畬鎴愶紝涓嶈蛋 UNCHECK锛�
- assertTrue(result);
+ assertFalse(result);
- // 鏂█ 2锛氱姸鎬佷负宸插畬鎴愶紝uncheckQuantity 琚竻闆�
+ // 璐ㄦ宸ュ簭鏃犺鏄惁鍏抽敭宸ュ簭锛岄兘杩涘叆寰呮楠屻��
MesProFeedbackDO updated = feedbackMapper.selectById(feedback.getId());
- assertEquals(MesProFeedbackStatusEnum.FINISHED.getStatus(), updated.getStatus());
+ assertEquals(MesProFeedbackStatusEnum.UNCHECK.getStatus(), updated.getStatus());
assertEquals(0, BigDecimal.ZERO.compareTo(updated.getUncheckQuantity()));
- // 鏂█ 3锛氶潪鍏抽敭宸ュ簭涓嶇敓鎴愪骇鍑哄崟
- verify(productProduceService, never()).generateProductProduce(any(), anyBoolean(), any());
+ verify(productProduceService).generateProductProduce(any(), eq(true), any());
+ verify(productProduceService, never()).finishProductProduce(anyLong());
+ verify(taskService).updateProducedQuantity(eq(feedback.getTaskId()), any(), any(), any());
+ verify(workOrderService, never()).updateProducedQuantity(anyLong(), any());
}
// ==================== 椤哄簭鎶ュ伐锛堜笂涓�閬撳伐搴忓畬鎴愬悗鎵嶈兘鎶ヤ笅涓�閬擄級娴嬭瘯 ====================
--
Gitblit v1.9.3