From defe1e1c3ade87de0a7990f565f08f93aeb2decc Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 08 十一月 2026 19:31:46 +0800
Subject: [PATCH] fix(bpm): 统一审批标题单号并收紧各模块提交校验

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
index 7745b64..786327d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
@@ -44,6 +44,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -142,7 +143,10 @@
     @Transactional(rollbackFor = Exception.class)
     public void submitSalesNotice(Long id, String processDefinitionKey, Long userId) {
         // 1.1 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
-        MesWmSalesNoticeDO notice = validateSalesNoticeExistsAndDraft(id);
+        MesWmSalesNoticeDO notice = validateSalesNoticeExists(id);
+        if (ObjUtil.notEqual(PREPARE.getStatus(), notice.getStatus())) {
+            throw exception(WM_SALES_NOTICE_STATUS_NOT_ALLOW_SUBMIT);
+        }
         // 1.2 妫�鏌ユ槸鍚︽湁琛岄」鐩�
         List<MesWmSalesNoticeLineDO> lines = salesNoticeLineService.getSalesNoticeLineListByNoticeId(id);
         if (CollUtil.isEmpty(lines)) {
@@ -163,13 +167,16 @@
         }
         validateSalesNoticeApproveCategoryAndProcessDefinition();
         ProcessDefinition processDefinition = bpmProcessDefinitionService.getActiveProcessDefinition(processDefinitionKey);
-        if (processDefinition == null) {
+        if (processDefinition == null || bpmProcessDefinitionService
+                .getProcessDefinitionInfoListByCategory(SALES_DELIVERY_APPROVE_CATEGORY_CODE).stream()
+                .noneMatch(info -> Objects.equals(info.getProcessDefinitionId(), processDefinition.getId()))) {
             throw exception(WM_SALES_NOTICE_BPM_PROCESS_DEFINITION_NOT_EXISTS);
         }
 
         // 4. 鍒涘缓瀹℃壒娴佺▼瀹炰緥锛岃繘鍏ュ鎵逛腑
         String processInstanceId = bpmProcessInstanceApi.createProcessInstance(userId, new BpmProcessInstanceCreateReqDTO()
-                .setProcessDefinitionKey(processDefinitionKey).setBusinessKey(String.valueOf(id)));
+                .setProcessDefinitionKey(processDefinitionKey).setBusinessKey(String.valueOf(id))
+                .setVariables(Map.of("businessNo", notice.getCode())));
         salesNoticeMapper.updateById(new MesWmSalesNoticeDO()
                 .setId(id).setProcessInstanceId(processInstanceId).setStatus(APPROVING.getStatus()));
     }

--
Gitblit v1.9.3