From 3988c3bb60f0dcd05ce73273b269c53691799646 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 6 Nov 2025 11:52:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-5965)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=9B=A0=E7=BB=84=E7=BB=87=E4=B8=8D=E5=AD=98=E5=9C=A8=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E8=8A=82=E7=82=B9=E6=97=A5=E5=BF=97=E9=9A=90?= =?UTF-8?q?=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/core/engine/cmd/CustomApproveTaskCmd.java | 9 +-------- .../delegate/BasedIdentityV2TaskAssigneeSelector.java | 2 +- .../BasedInitiatorLeaderV2TaskAssigneeSelector.java | 2 +- .../delegate/BasedPositionV2TaskAssigneeSelector.java | 2 +- .../delegate/BasedRoleV2TaskAssigneeSelector.java | 2 +- .../controller/web/manage/PrintAdminController.java | 8 ++++---- .../engine/ext/listener/TaskEntityEventHandle.java | 7 ++++++- 7 files changed, 15 insertions(+), 17 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java index 45c06d1e7..99992115d 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskCmd.java @@ -42,9 +42,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERAT import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_SPECIFY_NEXT_APPROVER; 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.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED; -import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.HIDDEN; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING; import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addComment; import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.batchAddAttachment; @@ -161,12 +159,7 @@ public class CustomApproveTaskCmd extends AbstractCommand implements Seria runtimeService.setVariable(task.getProcessInstanceId(), INTERNAL_SPECIFY_NEXT_APPROVER, nextApprover); } - Boolean logNodeHidden = (Boolean) task.getTransientVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN); - if (Objects.nonNull(logNodeHidden) && logNodeHidden) { - task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, HIDDEN.getStatus()); - } else { - task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus()); - } + task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus()); // 更新流程内的变量 runtimeService.setVariables(task.getProcessInstanceId(), variables); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java index 1a68aa9e8..011428252 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java @@ -130,7 +130,7 @@ public class BasedIdentityV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne "cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssignerV2", request)); } catch (WorkflowApproverCalcException e) { log.warn("组织节点不存在, 入参:{}; 错误信息:{}", JSONUtil.toJsonStr(request), e.getMessage(), e); - execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN, true); + execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + flowElement.getId(), true); } return convertApprover(apiResultUsers); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java index f01df895a..498117d16 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java @@ -84,7 +84,7 @@ public class BasedInitiatorLeaderV2TaskAssigneeSelector extends AbstractBpmnTask "cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssignerV2", request)); } catch (WorkflowApproverCalcException e) { log.warn("组织节点不存在, 入参:{}; 错误信息:{}", JSONUtil.toJsonStr(request), e.getMessage(), e); - execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN, true); + execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + flowElement.getId(), true); } return convertApprover(apiResultUsers); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java index f7adc6cfb..9bc846f88 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java @@ -153,7 +153,7 @@ public class BasedPositionV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne "cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssignerV2", request)); } catch (WorkflowApproverCalcException e) { log.warn("组织节点不存在, 入参:{}; 错误信息:{}", JSONUtil.toJsonStr(request), e.getMessage(), e); - execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN, true); + execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + flowElement.getId(), true); } return convertApprover(apiResultUsers); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java index 7f297388b..527d89acb 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java @@ -156,7 +156,7 @@ public class BasedRoleV2TaskAssigneeSelector extends AbstractBpmnTaskAssigneeSel "cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssignerV2", request)); } catch (WorkflowApproverCalcException e) { log.warn("组织节点不存在, 入参:{}; 错误信息:{}", JSONUtil.toJsonStr(request), e.getMessage(), e); - execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN, true); + execution.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + flowElement.getId(), true); } return convertApprover(apiResultUsers); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java index 6f6753a1d..79fa12596 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java @@ -226,15 +226,15 @@ public class PrintAdminController implements PrintAdminApi { FormContainer formContainer = (FormContainer) formField; printFields.addAll(formContainer.getFields().get(0).stream() .filter(field -> { - if (Objects.equals(Boolean.TRUE, dto.getFilterEnablePrint())) { +// if (Objects.equals(Boolean.TRUE, dto.getFilterEnablePrint())) { if (!CollectionUtils.isEmpty(field.getParams())) { Optional optEnablePrint = Optional.ofNullable(field.getParam("enablePrint")); return optEnablePrint.map(obj -> Boolean.parseBoolean(obj.toString())).orElse(Boolean.TRUE); } return true; - } else { - return false; - } +// } else { +// return false; +// } }) .map(field -> { PrintFieldDTO printFieldDTO = new PrintFieldDTO() diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java index 22ea57fbb..7f13d2825 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java @@ -69,6 +69,7 @@ import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.OR; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED; +import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.HIDDEN; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING; import static cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum.HANDLING; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getActivitySignature; @@ -286,6 +287,10 @@ public class TaskEntityEventHandle implements EntityEventHandle { String completionType = taskEntity.getVariable(TASK_COMPLETE_OPERATION_TYPE + taskEntity.getId(), String.class); if (StringUtils.hasText(completionType) && !Objects.equals(DELETED.getStatus(), completionType)) { update.setStatus(completionType); + Boolean hiddenLog = taskEntity.getVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + taskEntity.getTaskDefinitionKey(), Boolean.class); + if (Objects.equals(hiddenLog, Boolean.TRUE)) { + update.setStatus(HIDDEN.getStatus()); + } } else { // 多实例除操作人以外的任务,直接删除日志, 例如一个节点有两个人或签,A 人驳回了,那么 B 人不再需要操作,任务自动删除。而会签也同理 update.setStatus(DELETED.getStatus());// delete标志着是多实例删除 @@ -293,7 +298,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { } } // 重置日志隐藏的标识为 false - taskEntity.setVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN, false); + taskEntity.removeVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + taskEntity.getTaskDefinitionKey()); update.setEndTime(new Date()); // 判断是否抄送节点,如果是的话,需要将抄送人集合放入对应字段