From 6e98da8a58b29ca550f2b5f45564f9ecf7740b5b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 10:27:07 +0800
Subject: [PATCH] fix(bpm): 修正业务监听器的流程 key 匹配与空单号防护

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
index 948ebf5..44f9538 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
@@ -74,6 +74,8 @@
     private MesMdWorkstationService workstationService;
     @Resource
     private CrmCustomerApi customerApi;
+    @Resource
+    private MesProWorkOrderTechnicalFileService technicalFileService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -89,6 +91,7 @@
         MesProWorkOrderDO workOrder = BeanUtils.toBean(createReqVO, MesProWorkOrderDO.class);
         workOrder.setStatus(MesProWorkOrderStatusEnum.PREPARE.getStatus());
         workOrderMapper.insert(workOrder);
+        technicalFileService.snapshot(workOrder.getId(), workOrder.getProductId());
 
         // 3. 鑷姩鐢熸垚 BOM锛氭牴鎹骇鍝� BOM 鐢熸垚宸ュ崟 BOM
         workOrderBomService.generateWorkOrderBom(workOrder.getId(), createReqVO, false);
@@ -122,7 +125,10 @@
 
         // 3. 鏇存柊
         MesProWorkOrderDO updateObj = BeanUtils.toBean(updateReqVO, MesProWorkOrderDO.class);
+        // 宸ュ崟鐩樺彿娌跨敤鍒涘缓鏃剁殑鏉ユ簮蹇収锛岄伩鍏嶄笌璁″垝鍜屽凡鐢熸垚鐨勪笅娓歌褰曚笉涓�鑷淬��
+        updateObj.setReelNo(null);
         workOrderMapper.updateById(updateObj);
+        if (productChanged) technicalFileService.replace(updateReqVO.getId(), updateReqVO.getProductId());
     }
 
     @Override
@@ -309,7 +315,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean checkAndAutoFinishWorkOrder(Long id) {
-        MesProWorkOrderDO workOrder = getWorkOrder(id);
+        MesProWorkOrderDO workOrder = workOrderMapper.selectByIdForUpdate(id);
         if (workOrder == null) {
             return false;
         }

--
Gitblit v1.9.3