From d5452f48951a5540d2df44c55e494e75560b3866 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 02 十一月 2026 11:42:39 +0800
Subject: [PATCH] fix(bpm): 审批结果事件带上流程分类,修复历史自定义 Key 流程状态不回写
---
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
index a1050ab..84272e3 100644
--- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
+++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
@@ -12,6 +12,7 @@
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
+import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
@@ -37,6 +38,7 @@
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils;
+import cn.iocoder.yudao.module.bpm.service.attach.BpmBusinessAttachService;
import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
@@ -90,7 +92,7 @@
* <p>
* 绠�鍗曟潵璇达紝鍓嶈�� = 鍘嗗彶 + 杩愯涓殑娴佺▼瀹炰緥锛屽悗鑰呬粎鏄繍琛屼腑鐨勬祦绋嬪疄渚�
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Service
@Validated
@@ -123,6 +125,9 @@
@Resource
private BpmProcessIdRedisDAO processIdRedisDAO;
+
+ @Resource
+ private BpmBusinessAttachService businessAttachService;
// ========== Query 鏌ヨ鐩稿叧鏂规硶 ==========
@@ -389,9 +394,14 @@
Map<String, String> formFieldsPermission = getFormFieldsPermission(bpmnModel, reqVO.getActivityId(), taskId);
// 3. 鎷兼帴鏁版嵁
- return BpmProcessInstanceConvert.INSTANCE.buildApprovalDetail(bpmnModel, processDefinition,
- processDefinitionInfo, processInstance,
+ BpmApprovalDetailRespVO detailRespVO = BpmProcessInstanceConvert.INSTANCE.buildApprovalDetail(bpmnModel,
+ processDefinition, processDefinitionInfo, processInstance,
processInstanceStatus, approveNodes, todoTask, formFieldsPermission, userMap, deptMap);
+
+ // 4. 濉厖涓氬姟闄勪欢閰嶇疆锛屽疄鐜板鎵硅鎯呰嚜鍔ㄥ睍绀哄閮ㄤ笟鍔′俊鎭�
+ businessAttachService.fillBusinessForm(detailRespVO.getProcessDefinition(), processDefinition.getKey(),
+ processInstance != null ? processInstance.getBusinessKey() : null);
+ return detailRespVO;
}
/**
@@ -1016,13 +1026,18 @@
}
// 3. 鍙戦�佹祦绋嬪疄渚嬬殑鐘舵�佷簨浠�
- processInstanceEventPublisher.sendProcessInstanceResultEvent(
- BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, instance, status, reason));
+ BpmProcessInstanceStatusEvent statusEvent = BpmProcessInstanceConvert.INSTANCE
+ .buildProcessInstanceStatusEvent(this, instance, status, reason);
+ // 甯︿笂娴佺▼鍒嗙被锛坆pm_process_definition_info.category锛夛紝渚夸簬涓氬姟妯″潡鍏煎鍚屼竴鍒嗙被涓嬬殑鍘嗗彶鑷畾涔� Key
+ BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService
+ .getProcessDefinitionInfo(instance.getProcessDefinitionId());
+ if (processDefinitionInfo != null) {
+ statusEvent.setProcessDefinitionCategory(processDefinitionInfo.getCategory());
+ }
+ processInstanceEventPublisher.sendProcessInstanceResultEvent(statusEvent);
// 4. 娴佺▼鍚庣疆閫氱煡
if (Objects.equals(status, BpmProcessInstanceStatusEnum.APPROVE.getStatus())) {
- BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.
- getProcessDefinitionInfo(instance.getProcessDefinitionId());
if (ObjUtil.isNotNull(processDefinitionInfo) &&
ObjUtil.isNotNull(processDefinitionInfo.getProcessAfterTriggerSetting())) {
BpmModelMetaInfoVO.HttpRequestSetting setting = processDefinitionInfo.getProcessAfterTriggerSetting();
--
Gitblit v1.9.3