From 3edf8c4fc07f9784e2d04ee7a98692bb457749eb Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 26 十月 2026 16:28:10 +0800
Subject: [PATCH] feat(mes): 新增工艺路线完整导入功能并优化相关验证
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
index 6453847..3cec5b6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
@@ -71,6 +71,9 @@
public class MesProFeedbackServiceImpl implements MesProFeedbackService {
@Resource
+ private MesProFeedbackEquipmentService equipmentService;
+
+ @Resource
private MesProFeedbackMapper feedbackMapper;
@Resource
@@ -114,8 +117,9 @@
// 1. 鏍¢獙
MesProTaskDO task = validateFeedbackData(createReqVO);
- // 2. 鎻掑叆锛堣嚜鍔ㄥ~鍏� itemId锛�
+ // 2. 鎻掑叆锛堜富閿敱鏁版嵁搴撹嚜澧烇紝蹇界暐璇锋眰涓彲鑳芥畫鐣欑殑 id锛涜嚜鍔ㄥ~鍏� itemId锛�
MesProFeedbackDO feedback = BeanUtils.toBean(createReqVO, MesProFeedbackDO.class)
+ .setId(null)
.setStatus(MesProFeedbackStatusEnum.PREPARE.getStatus())
.setItemId(task.getItemId());
feedbackMapper.insert(feedback);
@@ -127,6 +131,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void updateFeedback(MesProFeedbackSaveReqVO updateReqVO) {
+ equipmentService.lock();
// 1.1 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
validateFeedbackStatusPrepare(updateReqVO.getId());
// 1.2 鏍¢獙涓氬姟鏁版嵁
@@ -136,6 +141,7 @@
MesProFeedbackDO updateObj = BeanUtils.toBean(updateReqVO, MesProFeedbackDO.class)
.setItemId(task.getItemId());
feedbackMapper.updateById(updateObj);
+ equipmentService.resetSnapshot(updateReqVO.getId());
// 3. 淇濆瓨鍙傛暟鍊硷紱蹇呭~鍙傛暟鏍¢獙澶辫触鏃舵暣浣撳洖婊�
saveParamValues(task.getId(), updateReqVO.getParamValues());
}
@@ -152,7 +158,9 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void deleteFeedback(Long id) {
+ equipmentService.lock();
// 1. 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
validateFeedbackStatusPrepare(id);
@@ -186,9 +194,11 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void submitFeedback(MesProFeedbackSubmitReqVO reqVO) {
+ equipmentService.lock();
Long id = reqVO.getId();
// 1. 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
MesProFeedbackDO feedback = validateFeedbackStatusPrepare(id);
+ equipmentService.validateSubmission(feedback);
// 1.1 椤哄簭鎶ュ伐鏍¢獙锛氬悓涓�鐢熶骇宸ュ崟鍐咃紝涓婁竴閬撳伐搴忓繀椤诲凡鎶ュ伐瀹屾垚锛屽惁鍒欎笉鍏佽鎻愪氦
if (feedback.getTaskId() != null) {
MesProTaskDO submitTask = taskService.getTask(feedback.getTaskId());
@@ -266,7 +276,9 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void rejectFeedback(Long id) {
+ equipmentService.lock();
// 1. 鏍¢獙瀛樺湪 + 瀹℃壒涓姸鎬�
validateFeedbackStatusApproving(id);
@@ -278,8 +290,16 @@
@Override
@Transactional(rollbackFor = Exception.class)
public boolean approveFeedback(MesProFeedbackApproveReqVO reqVO) {
+ equipmentService.lock();
// 1.1 鏍¢獙瀛樺湪 + 瀹℃壒涓姸鎬�
MesProFeedbackDO feedback = validateFeedbackStatusApproving(reqVO.getId());
+ equipmentService.validateApproval(feedback);
+ try (var equipmentScope = equipmentService.beginApproval(feedback)) {
+ return approveValidatedFeedback(reqVO, feedback);
+ }
+ }
+
+ private boolean approveValidatedFeedback(MesProFeedbackApproveReqVO reqVO, MesProFeedbackDO feedback) {
// 1.2 鏍¢獙鎶ュ伐鏁伴噺 > 0
if (feedback.getFeedbackQuantity() == null
|| feedback.getFeedbackQuantity().compareTo(BigDecimal.ZERO) <= 0) {
@@ -351,6 +371,7 @@
productProduceService.generateProductProduce(feedback, true, reqVO);
feedbackMapper.updateById(new MesProFeedbackDO().setId(reqVO.getId())
.setStatus(MesProFeedbackStatusEnum.UNCHECK.getStatus()));
+ equipmentService.afterApproved(feedback);
return false;
} else {
// 6.2 鏃犻渶妫�楠岋細鐢熸垚浜у嚭鍗曪紙鎸夊悎鏍�/涓嶅悎鏍兼媶琛岋級锛岀洿鎺ュ畬鎴愬叆搴�
@@ -359,6 +380,7 @@
}
+ equipmentService.afterApproved(feedback);
return true; // 宸插畬鎴�
}
@@ -570,6 +592,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public MesProFeedbackQuickCreateRespVO quickCreateFeedback(MesProFeedbackQuickCreateReqVO reqVO) {
+ equipmentService.lock();
// 1. 鏍¢獙浠诲姟瀛樺湪涓旈潪缁堟��
MesProTaskDO task = taskService.validateTaskNotFinished(reqVO.getTaskId());
@@ -606,6 +629,7 @@
.setFeedbackTime(LocalDateTime.now())
.setStatus(MesProFeedbackStatusEnum.APPROVING.getStatus())
.setRemark(reqVO.getRemark());
+ equipmentService.validateSubmission(feedback);
feedbackMapper.insert(feedback);
saveParamValues(task.getId(), reqVO.getParamValues());
// 5. 杩斿洖缁撴灉
--
Gitblit v1.9.3