From 3b771aa153c5c04dd9e21bed36f6206db55af76e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 20 Oct 2025 17:30:13 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat=20-=20=E8=A1=A8=E5=8D=95=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=94=A8=E4=BA=8E=E6=89=93=E5=8D=B0=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=EF=BC=8C=E6=96=87=E6=A1=A3=E6=A8=A1=E6=9D=BF=E5=B7=A6=E4=BE=A7?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=89=93=E5=8D=B0=E7=9A=84=E5=8F=82=E6=95=B0=E6=8E=A7?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpmn/print/PrintFieldQueryDTO.java | 5 +++ .../web/manage/PrintAdminController.java | 35 +++++++++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintFieldQueryDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintFieldQueryDTO.java index 3775f63e5..3c6deb6df 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintFieldQueryDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintFieldQueryDTO.java @@ -35,6 +35,11 @@ public class PrintFieldQueryDTO { @ApiModelProperty(value = "租户 ID") private String tenantId; + /** + * 是否过滤仅支持打印字段 + */ + @ApiModelProperty(value = "是否过滤仅支持打印字段") + private Boolean filterEnablePrint; /** * 是否抛出内部异常 */ 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 38d4cd32f..0ba207c04 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 @@ -162,6 +162,7 @@ public class PrintAdminController implements PrintAdminApi { bpmnProcessModelService.printTemplateConfig(dto); return success(); } + /** * 获取打印模板中可打印的字段, 或者是 WPS 模板中可配置的变量字段 * @@ -180,17 +181,29 @@ public class PrintAdminController implements PrintAdminApi { List formFields = ((SimpleFormModel) formModel.getFormModel()).getFields(); formFields.forEach(formField -> { FormContainer formContainer = (FormContainer) formField; - printFields.addAll(formContainer.getFields().get(0).stream().map(field -> { - PrintFieldDTO printFieldDTO = new PrintFieldDTO() - .setName(field.getName()) - .setCode(field.getId()) - .setFieldCategoryType(form) - .setFieldFormType(field.getType()); - switchAmount(field, printFieldDTO); - switchFormContainer(field, printFieldDTO); - return printFieldDTO; - } - ).collect(Collectors.toList())); + printFields.addAll(formContainer.getFields().get(0).stream() + .filter(field -> { + 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; + } + }) + .map(field -> { + PrintFieldDTO printFieldDTO = new PrintFieldDTO() + .setName(field.getName()) + .setCode(field.getId()) + .setFieldCategoryType(form) + .setFieldFormType(field.getType()); + switchAmount(field, printFieldDTO); + switchFormContainer(field, printFieldDTO); + return printFieldDTO; + } + ).collect(Collectors.toList())); }); } catch (FlowableObjectNotFoundException e) { log.warn("can't found form model"); From 1070085454146fed5cfdc91e08317b20f5e02704 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 20 Oct 2025 18:12:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat=20-=20=E5=AE=A1=E6=89=B9=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=A2=9E=E5=8A=A0=E8=8A=82=E7=82=B9=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/workflow/common/constant/VariableConstants.java | 8 ++++++++ .../controller/web/manage/PrintAdminController.java | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/VariableConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/VariableConstants.java index b0ae9caa8..e9853631b 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/VariableConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/VariableConstants.java @@ -45,8 +45,12 @@ public interface VariableConstants { String PRINT_VAR_PROCESS_INITIATOR_POSITION_DESC = "发起人岗位"; String PRINT_VAR_PROCESS_INITIATOR_PHONE = "initiatorPhone"; String PRINT_VAR_PROCESS_INITIATOR_PHONE_DESC = "发起人联系方式"; + String PRINT_VAR_PROCESS_INITIATOR_UNIT = "initiatorUnit"; + String PRINT_VAR_PROCESS_INITIATOR_UNIT_DESC = "发起人单位"; String PRINT_VAR_PROCESS_LOGS = "processLogs"; String PRINT_VAR_PROCESS_LOGS_DESC = "审批日志"; + String PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE = "activityNodeType"; + String PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE_DESC = "节点类型"; String PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME = "activityName"; String PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME_DESC = "节点名称"; String PRINT_VAR_PROCESS_LOG_APPROVER_NAME = "approverName"; @@ -61,4 +65,8 @@ public interface VariableConstants { String PRINT_VAR_PROCESS_LOG_OPERATION_TIME_DESC = "审批时间"; String PRINT_VAR_PROCESS_LOG_SIGNATURE = "signature"; String PRINT_VAR_PROCESS_LOG_SIGNATURE_DESC = "电子签名"; + String PRINT_VAR_PROCESS_LOG_ACTIVITY_RESULT = "activityResult"; + String PRINT_VAR_PROCESS_LOG_ACTIVITY_RESULT_DESC = "节点状态"; + String PRINT_VAR_PROCESS_LOG_OPERATION = "operationDesc"; + String PRINT_VAR_PROCESS_LOG_OPERATION_DESC = "操作描述"; } 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 0ba207c04..c3c7cadfb 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 @@ -79,16 +79,20 @@ import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCE import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INITIATOR_PHONE_DESC; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INITIATOR_POSITION; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INITIATOR_POSITION_DESC; +import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INITIATOR_UNIT; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INSTANCE_ID; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_INSTANCE_ID_DESC; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOGS; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOGS_DESC; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME_DESC; +import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE; +import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ACTIVITY_RESULT; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ADVICE; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_ADVICE_DESC; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_APPROVER_NAME; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_APPROVER_NAME_DESC; +import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_OPERATION; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_OPERATION_TIME; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_OPERATION_TIME_DESC; import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_LOG_POSITION; @@ -380,6 +384,7 @@ public class PrintAdminController implements PrintAdminApi { variables.put(PRINT_VAR_PROCESS_INITIATOR_NAME, user.isPresent() ? user.get().getRealName() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_PHONE, user.isPresent() ? user.get().getProfile().getPhone() : ""); + variables.put(PRINT_VAR_PROCESS_INITIATOR_UNIT, user.isPresent() ? user.get().getOrganizationalUnitName() : ""); variables.remove(PRINT_VAR_PROCESS_INITIATOR); } // 填充审批日志 @@ -395,11 +400,14 @@ public class PrintAdminController implements PrintAdminApi { .forEach(taskLog -> { Map taskLogMap = new HashMap<>(); taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME, taskLog.getName()); + taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE, taskLog.getNodeType().getType()); Optional user = getUserInfo(taskLog.getAssigneeSnapshot()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_APPROVER_NAME, user.isPresent() ? user.get().getRealName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_UNIT, user.isPresent() ? user.get().getOrganizationalUnitName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_ADVICE, taskLog.getAdvice()); + taskLogMap.put(PRINT_VAR_PROCESS_LOG_OPERATION, taskLog.getOperationDesc()); + taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_RESULT, taskLog.getResult().getStatus()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_OPERATION_TIME, sdf.format(taskLog.getCreateTime())); taskLogMap.put(PRINT_VAR_PROCESS_LOG_SIGNATURE, taskLog.getSignatureUrl()); taskLogs.add(taskLogMap); From c6c62f2f85d68dbf613b6b4a9dbf449211ccdab3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 20 Oct 2025 19:31:41 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat=20-=20=E5=90=8C=E6=84=8F=E7=9A=84?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=88=96=E6=96=B0=E5=A2=9E=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/request/bpmn/task/BpmnTaskAuditDTO.java | 6 ++++++ .../workflow/core/engine/cmd/CustomApproveTaskCmd.java | 4 ++++ .../core/engine/cmd/CustomApproveTaskWithFormCmd.java | 8 +++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java index 731913a0a..61b1a17bf 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java @@ -16,6 +16,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.List; +import java.util.Map; /** * 审批任务节点的入参模型 @@ -103,4 +104,9 @@ public class BpmnTaskAuditDTO { */ @Deprecated private String operationDesc; + + /** + * 更新或新增流程变量 + */ + private Map variables; } 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 3829b5c25..30bcbcdc9 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 @@ -83,6 +83,7 @@ public class CustomApproveTaskCmd extends AbstractCommand implements Seria * 指定节点类型 */ private List nodeTypes; + private Map variables; @Override public String paramToJsonString() { @@ -94,6 +95,7 @@ public class CustomApproveTaskCmd extends AbstractCommand implements Seria params.put("approver", JSON.toJSONString(approver)); params.put("nextApprover", JSON.toJSONString(nextApprover)); params.put("nodeTypes", JSON.toJSONString(nodeTypes)); + params.put("variables", JSON.toJSONString(variables)); return JSON.toJSONString(params); } @@ -117,6 +119,7 @@ public class CustomApproveTaskCmd extends AbstractCommand implements Seria } else { this.operationDesc = "已同意"; } + this.variables = dto.getVariables(); } @Override @@ -158,6 +161,7 @@ public class CustomApproveTaskCmd extends AbstractCommand implements Seria } task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus()); + runtimeService.setVariables(task.getProcessInstanceId(), variables); // 记录电子签名的图片 recordSignature(task, runtimeService); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskWithFormCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskWithFormCmd.java index 81df46654..050ee28fc 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskWithFormCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomApproveTaskWithFormCmd.java @@ -97,6 +97,10 @@ public class CustomApproveTaskWithFormCmd extends AbstractCommand implemen * 表单数据 */ private final Map formVariables; + /** + * 更新或新增的流程变量 + */ + private final Map variables; @Override public String paramToJsonString() { @@ -109,6 +113,7 @@ public class CustomApproveTaskWithFormCmd extends AbstractCommand implemen params.put("nextApprover", JSON.toJSONString(nextApprover)); params.put("nodeTypes", JSON.toJSONString(nodeTypes)); params.put("formVariables", JSON.toJSONString(formVariables)); + params.put("variables", JSON.toJSONString(variables)); return JSON.toJSONString(params); } @@ -133,6 +138,7 @@ public class CustomApproveTaskWithFormCmd extends AbstractCommand implemen } else { this.operationDesc = "已同意"; } + this.variables = dto.getVariables(); } @Override @@ -174,7 +180,7 @@ public class CustomApproveTaskWithFormCmd extends AbstractCommand implemen nextApprover); } task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus()); - + runtimeService.setVariables(task.getProcessInstanceId(), variables); // 记录电子签名的图片 recordSignature(task, runtimeService);