From 481d8165f26fc7e37f0e87f6444ac0340bb563a3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期二, 03 十一月 2026 18:53:22 +0800
Subject: [PATCH] fix: 移植长辉已验证的四类接口 500/体验问题(不含物料颜色字段)

---
 yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java |   40 ++++++++++++++++++++++++++++++++++------
 1 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java
index aa96518..ff4ecaa 100644
--- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java
+++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java
@@ -11,12 +11,14 @@
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
 import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmProcessDefinitionInfoMapper;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
+import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmProcessDefinitionIdUtils;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.common.engine.api.FlowableObjectNotFoundException;
 import org.flowable.common.engine.impl.db.SuspensionState;
 import org.flowable.engine.RepositoryService;
 import org.flowable.engine.repository.Deployment;
@@ -57,7 +59,18 @@
 
     @Override
     public ProcessDefinition getProcessDefinition(String id) {
-        return repositoryService.getProcessDefinition(id);
+        String definitionId = BpmProcessDefinitionIdUtils.normalize(id);
+        if (StrUtil.isBlank(definitionId)) {
+            return null;
+        }
+        // 缂栧彿涓嶅瓨鍦ㄦ椂 Flowable 浼氭姏 FlowableObjectNotFoundException锛�
+        // 杩欓噷缁熶竴杞垚 null 鐢辫皟鐢ㄦ柟澶勭悊锛岄伩鍏嶅墠绔嬁鍒� 500銆岀郴缁熷紓甯搞��
+        try {
+            return repositoryService.getProcessDefinition(definitionId);
+        } catch (FlowableObjectNotFoundException ex) {
+            log.warn("[getProcessDefinition][娴佺▼瀹氫箟({}) 涓嶅瓨鍦╙", definitionId);
+            return null;
+        }
     }
 
     @Override
@@ -65,7 +78,9 @@
         if (CollUtil.isEmpty(ids)) {
             return emptyList();
         }
-        return repositoryService.createProcessDefinitionQuery().processDefinitionIds(ids).list();
+        return repositoryService.createProcessDefinitionQuery()
+                .processDefinitionIds(ids.stream().map(BpmProcessDefinitionIdUtils::normalize)
+                        .collect(java.util.stream.Collectors.toSet())).list();
     }
 
     @Override
@@ -88,7 +103,7 @@
     public ProcessDefinition getActiveProcessDefinition(String key) {
         return repositoryService.createProcessDefinitionQuery()
                 .processDefinitionTenantId(FlowableUtils.getTenantId())
-                .processDefinitionKey(key).active().singleResult();
+                .processDefinitionKey(BpmProcessDefinitionIdUtils.normalize(key)).active().singleResult();
     }
 
     @Override
@@ -203,17 +218,30 @@
 
     @Override
     public BpmnModel getProcessDefinitionBpmnModel(String id) {
-        return repositoryService.getBpmnModel(id);
+        String definitionId = BpmProcessDefinitionIdUtils.normalize(id);
+        if (StrUtil.isBlank(definitionId)) {
+            return null;
+        }
+        try {
+            return repositoryService.getBpmnModel(definitionId);
+        } catch (FlowableObjectNotFoundException ex) {
+            log.warn("[getProcessDefinitionBpmnModel][娴佺▼瀹氫箟({}) 涓嶅瓨鍦╙", definitionId);
+            return null;
+        }
     }
 
     @Override
     public BpmProcessDefinitionInfoDO getProcessDefinitionInfo(String id) {
-        return processDefinitionMapper.selectByProcessDefinitionId(id);
+        return processDefinitionMapper.selectByProcessDefinitionId(BpmProcessDefinitionIdUtils.normalize(id));
     }
 
     @Override
     public List<BpmProcessDefinitionInfoDO> getProcessDefinitionInfoList(Collection<String> ids) {
-        return processDefinitionMapper.selectListByProcessDefinitionIds(ids);
+        if (CollUtil.isEmpty(ids)) {
+            return emptyList();
+        }
+        return processDefinitionMapper.selectListByProcessDefinitionIds(ids.stream()
+                .map(BpmProcessDefinitionIdUtils::normalize).collect(java.util.stream.Collectors.toSet()));
     }
 
     @Override

--
Gitblit v1.9.3