From 39057b4aae357d28d8e62eb6e82ac56f827bcb30 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 11 Feb 2025 11:48:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3340)=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/manage/PrintAdminApi.java | 4 +++ .../service/BpmnProcessInstanceService.java | 2 ++ .../core/service/ExtAxReModelService.java | 2 +- .../impl/BpmnProcessInstanceServiceImpl.java | 31 ++++++++++++++----- .../service/impl/ExtAxReModelServiceImpl.java | 2 +- .../web/manage/PrintAdminController.java | 8 +++++ 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/PrintAdminApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/PrintAdminApi.java index a7b936ae5..c822bd911 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/PrintAdminApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/PrintAdminApi.java @@ -28,6 +28,10 @@ import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.SYNC; @WorkflowEngineFeignClient @Manageable public interface PrintAdminApi { + @Operation(summary = "") + @GetMapping("/api/print/admin/template/exists") + @InvokeMode(SYNC) + CommonResponse hasPrintTemplate(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId); @Operation(summary = "获取打印模板中可打印的字段") @PostMapping("/api/print/admin/fields") diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java index e4f03e7ca..23f3c79db 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java @@ -185,4 +185,6 @@ public interface BpmnProcessInstanceService { * @param dto */ void overrideFormVariables(FormVariablesUpdateDTO dto); + + boolean hasPrintTemplate(String processInstanceId, String processDefinitionId); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxReModelService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxReModelService.java index e091d18e2..5dc3301f2 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxReModelService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxReModelService.java @@ -40,7 +40,7 @@ public interface ExtAxReModelService { * @param modelId * @return */ - Boolean canPrint(String modelId); + Boolean hasPrintTemplateConfig(String modelId); PrintModelDTO getPrintTemplateConfig(String modelId); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 95ac56d33..2cf4342cc 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -1111,7 +1111,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic .supportBatchOperation(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getSupportBatchOperation()) .userAgreeSignature(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getUserAgreeSignature()) .workflowEngineVersion((String) variables.getOrDefault(WORKFLOW_ENGINE_VERSION, FLOW_SERVER_VERSION_121)) - .catPrint(hasPrintTemplate(historicProcessInstance.getProcessDefinitionId())) + .catPrint(hasPrintTemplate(null, historicProcessInstance.getProcessDefinitionId())) .build(); @@ -1125,20 +1125,35 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic return logVO; } - private boolean hasPrintTemplate(String processDefinitionId) { - ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefinitionId); - if (Objects.isNull(processDefinition)) { - throw new WorkflowEngineException(PROCESS_DEFINITION_ID_NOT_EXISTS, processDefinitionId); + @Override + public boolean hasPrintTemplate(String processInstanceId, String processDefinitionId) { + String key, tenantId; + if (StringUtils.hasText(processDefinitionId)) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processInstanceId) + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + throw new WorkflowEngineException(PROCESS_INSTANCE_ID_NOT_EXISTS, processInstanceId); + } + key = historicProcessInstance.getProcessDefinitionKey(); + tenantId = historicProcessInstance.getTenantId(); + } else { + ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefinitionId); + if (Objects.isNull(processDefinition)) { + throw new WorkflowEngineException(PROCESS_DEFINITION_ID_NOT_EXISTS, processDefinitionId); + } + key = processDefinition.getKey(); + tenantId = processDefinition.getTenantId(); } Model model = repositoryService.createModelQuery() - .modelKey(processDefinition.getKey()) + .modelKey(key) .modelCategory(BPMN_FILE_SUFFIX) - .modelTenantId(processDefinition.getTenantId()) + .modelTenantId(tenantId) .singleResult(); if (Objects.isNull(model)) { throw new WorkflowEngineException(MODEL_NOT_EXISTS); } - return extAxReModelService.canPrint(model.getId()); + return extAxReModelService.hasPrintTemplateConfig(model.getId()); } private void calcAuthorizedButtons(BpmnProcessInstanceLogVO logVO, BpmnTaskDelegateAssigner visitor) { diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxReModelServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxReModelServiceImpl.java index 92736817f..1f171ea43 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxReModelServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxReModelServiceImpl.java @@ -93,7 +93,7 @@ public class ExtAxReModelServiceImpl implements ExtAxReModelService { } @Override - public Boolean canPrint(String modelId) { + public Boolean hasPrintTemplateConfig(String modelId) { ExtAxReModel model = extAxReModelMapper.selectOne(new QueryWrapper().eq("model_id", modelId)); return Objects.equals(0, model.getPrintStatus()) && StringUtils.hasText(model.getPrintTemplateConfig()); } 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 9b7302cc4..179f11411 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 @@ -16,6 +16,7 @@ import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper; import cn.axzo.workflow.core.engine.cmd.CustomGetFormInstanceLatestValuesCmd; import cn.axzo.workflow.core.engine.cmd.CustomGetProcessInstanceVariablesCmd; import cn.axzo.workflow.core.service.BpmnProcessDefinitionService; +import cn.axzo.workflow.core.service.BpmnProcessInstanceService; import cn.axzo.workflow.server.common.annotation.ErrorReporter; import cn.axzo.workflow.server.common.util.RpcExternalUtil; import cn.axzo.workflow.server.controller.web.bpmn.BpmnProcessInstanceController; @@ -94,6 +95,13 @@ public class PrintAdminController implements PrintAdminApi { private OrganizationalNodeUserQueryApi organizationalNodeUserQueryApi; @Resource private BpmnProcessInstanceController bpmnProcessInstanceController; + @Resource + private BpmnProcessInstanceService bpmnProcessInstanceService; + + @Override + public CommonResponse hasPrintTemplate(String processInstanceId) { + return CommonResponse.success(bpmnProcessInstanceService.hasPrintTemplate(processInstanceId, null)); + } @Operation(summary = "获取打印模板中可打印的字段") @PostMapping("/fields")