Merge branch 'feature/REQ-5965' into test

This commit is contained in:
wangli 2025-12-03 11:38:35 +08:00
commit dffb17fae6
3 changed files with 42 additions and 11 deletions

View File

@ -40,6 +40,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIG
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE;
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
import static cn.axzo.workflow.common.constant.BpmnConstants.PENDING_TEMPLATE_VARIABLE;
import static cn.axzo.workflow.common.constant.BpmnConstants.SIGNATURE_COLLECTION;
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED;
@ -161,8 +162,20 @@ public class CustomApproveTaskCmd extends AbstractCommand<Void> implements Seria
}
task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus());
// 更新流程内的变量
runtimeService.setVariables(task.getProcessInstanceId(), variables);
if (!CollectionUtils.isEmpty(variables)) {
Map<String, Object> pendingVariables = runtimeService.getVariable(task.getProcessInstanceId(), PENDING_TEMPLATE_VARIABLE, Map.class);
if (!CollectionUtils.isEmpty(pendingVariables)) {
variables.forEach((k, v) -> {
if (pendingVariables.containsKey(k)) {
pendingVariables.put(k, v);
}
});
}
// 如果有待办模板变量则更新待办模板变量
variables.put(PENDING_TEMPLATE_VARIABLE, pendingVariables);
// 更新流程内的变量
runtimeService.setVariables(task.getProcessInstanceId(), variables);
}
// 记录电子签名的图片
recordSignature(task, runtimeService, attachmentList, advice, approver);

View File

@ -23,6 +23,7 @@ import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.Process;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.impl.util.CommandContextUtil;
import org.flowable.engine.impl.util.ProcessDefinitionUtil;
@ -44,7 +45,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
@ -108,6 +108,8 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener<
@Resource
private HistoryService historyService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Value("${sendMq:true}")
private Boolean sendMQ;
@ -364,11 +366,11 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener<
private Map<String, Object> collectionVariable(MessagePushEvent event) {
Map<String, Object> variables = new HashMap<>();
Map<String, Object> originVariables = runtimeService.getVariables(event.getProcessInstanceId());
BpmnProcessInstanceVO processInstance = getContext().getInstanceVO(() -> getBpmnProcessInstanceVO(event));
Map<String, Object> originVariables = processInstance.getVariables().entrySet().stream()
.filter(e -> Objects.nonNull(e.getKey()) && Objects.nonNull(e.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
originVariables.forEach((k, v) -> {
log.info("流程实例变量 key: {}, value: {}", k, JSONUtil.toJsonStr(v));
});
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(originVariables.get(INTERNAL_INITIATOR));
if (Objects.isNull(initiator)) {
initiator = new BpmnTaskDelegateAssigner();

View File

@ -97,13 +97,29 @@
</head>
<body class="bg-gray-50 font-inter min-h-screen flex flex-col">
<!-- 顶部导航 -->
<header class="bg-white shadow-sm">
<header class="bg-white shadow-sm sticky top-0 z-40">
<div class="container mx-auto px-4 py-4 flex justify-between items-center">
<h1 class="text-xl font-bold text-primary flex items-center">
<h1 class="text-xl font-bold text-primary flex items-center shrink-0">
<i class="fa fa-cogs mr-2"></i>审批流程后台操作系统
</h1>
<div class="text-gray-600">
<i class="fa fa-user-circle-o mr-1"></i>管理员操作
<div class="flex items-center gap-6">
<nav class="hidden md:flex items-center gap-5 text-sm font-medium text-gray-600">
<a href="https://api.axzo.cn/workflow-engine/web/process/form"
class="hover:text-primary transition-colors">生产环境</a>
<a href="https://pre-api.axzo.cn/workflow-engine/web/process/form"
class="hover:text-primary transition-colors">预发环境</a>
<a href="https://test-api.axzo.cn/workflow-engine/web/process/form"
class="hover:text-primary transition-colors">测试环境</a>
<a href="https://dev-app.axzo.cn/workflow-engine/web/process/form"
class="hover:text-primary transition-colors">开发环境</a>
</nav>
<div class="hidden md:block h-4 w-px bg-gray-300"></div>
<div class="text-gray-600 shrink-0 text-sm">
<i class="fa fa-user-circle-o mr-1"></i>管理员操作
</div>
</div>
</div>
</header>