From 2d25ff475d587b04a30996d5d8ed6063e76a126e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Nov 2025 18:23:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-5965)=20-=20=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=BC=95=E6=93=8E=E6=B5=8B=E5=A2=9E=E5=8A=A0=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=97=A5=E5=BF=97pdf=20=E7=BB=93=E6=9E=9C=E6=9F=A5=E8=AF=A2=20?= =?UTF-8?q?API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/manage/PrintAdminApi.java | 18 +++++++++- .../bpmn/print/QueryProcessLogPdfDTO.java | 30 ++++++++++++++++ .../print/ProcessLogPdfResultDTO.java | 36 +++++++++++++++++++ .../web/manage/PrintAdminController.java | 30 +++++++++++++--- 4 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/QueryProcessLogPdfDTO.java create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/print/ProcessLogPdfResultDTO.java 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 79ce4d9d5..38ff9b3ba 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 @@ -8,7 +8,9 @@ import cn.axzo.workflow.common.model.request.bpmn.print.Print4ProcessLogDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintFieldQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintProcessLogPdfDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintTemplateConfigUpsertDTO; +import cn.axzo.workflow.common.model.request.bpmn.print.QueryProcessLogPdfDTO; import cn.axzo.workflow.common.model.response.bpmn.process.PrintData4LogVO; +import cn.axzo.workflow.common.model.response.print.ProcessLogPdfResultDTO; import cn.azxo.framework.common.model.CommonResponse; import io.swagger.v3.oas.annotations.Operation; import org.springframework.validation.annotation.Validated; @@ -91,7 +93,10 @@ public interface PrintAdminApi { CommonResponse getPrintDataForProcessLog(@Validated @RequestBody Print4ProcessLogDTO dto); /** - * 后端请求指定流程日志 PDF 文件生成 + * 后端请求指定流程日志 PDF 文件生成, 实现是异步的。 + *

+ * 请使用 {@link PrintAdminApi#queryProcessLogPdfResult(QueryProcessLogPdfDTO)} 函数查询, + * 或者使用 {@link cn.axzo.nanopart.doc.api.conversion.DocConversionApi#queryConvertResultByBiz} 函数查询,bizCode:固定为"workflow-process-log", bizKey:为实例 ID * * @return */ @@ -99,4 +104,15 @@ public interface PrintAdminApi { @PostMapping("/api/print/admin/process/log/pdf") @InvokeMode(SYNC) CommonResponse createProcessLogPdf(@Validated @RequestBody PrintProcessLogPdfDTO dto); + + /** + * 后端查询指定审批日志 PDF 文件的生成结果 + * + * @param dto + * @return + */ + @Operation(summary = "后端查询指定审批日志 PDF 文件的生成结果") + @PostMapping("/api/print/admin/process/log/pdf/result") + @InvokeMode(SYNC) + CommonResponse queryProcessLogPdfResult(@Validated @RequestBody QueryProcessLogPdfDTO dto); } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/QueryProcessLogPdfDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/QueryProcessLogPdfDTO.java new file mode 100644 index 000000000..734d5f6d2 --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/QueryProcessLogPdfDTO.java @@ -0,0 +1,30 @@ +package cn.axzo.workflow.common.model.request.bpmn.print; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +/** + * 查询审批日志转 pdf 的入参模型 + * + * @author wangli + * @since 2025-10-31 17:15 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class QueryProcessLogPdfDTO { + + /** + * 审批实例 ID + */ + @ApiModelProperty(value = "审批实例 ID") + @NotBlank(message = "审批实例 ID 不能为空") + private String processInstanceId; + +} diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/print/ProcessLogPdfResultDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/print/ProcessLogPdfResultDTO.java new file mode 100644 index 000000000..0a06f1e41 --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/print/ProcessLogPdfResultDTO.java @@ -0,0 +1,36 @@ +package cn.axzo.workflow.common.model.response.print; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 审批日志 PDF 查询结果相应模型 + * + * @author wangli + * @since 2025-11-07 18:13 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProcessLogPdfResultDTO { + + /** + * 转换状态 + * INIT("初始"), + *

+ * CONVERTING("转换中"), + *

+ * SUCCESS("转换完成"), + *

+ * FAILED("转换失败"); + */ + private String status; + + /** + * 转换成功后的oss fileKey + */ + private String pdfFileKey; +} 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 79fa12596..45fb9be8c 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 @@ -1,10 +1,13 @@ package cn.axzo.workflow.server.controller.web.manage; +import cn.axzo.basics.common.BeanMapper; import cn.axzo.maokai.api.client.OrganizationalNodeUserQueryApi; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.nanopart.doc.api.conversion.DocConversionApi; +import cn.axzo.nanopart.doc.api.conversion.req.QueryConversionTaskRequestV2; import cn.axzo.nanopart.doc.api.conversion.req.SubmitConversionTaskRequest; +import cn.axzo.nanopart.doc.api.conversion.res.FileConvertResultResp; import cn.axzo.nanopart.doc.api.enums.DocConversionTypeEnum; import cn.axzo.oss.http.api.ServerFileServiceApi; import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest; @@ -21,6 +24,7 @@ import cn.axzo.workflow.common.model.request.bpmn.print.Print4ProcessLogDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintFieldQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintProcessLogPdfDTO; import cn.axzo.workflow.common.model.request.bpmn.print.PrintTemplateConfigUpsertDTO; +import cn.axzo.workflow.common.model.request.bpmn.print.QueryProcessLogPdfDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceLogQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.task.AttachmentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -31,6 +35,7 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinition import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceLogVO; import cn.axzo.workflow.common.model.response.bpmn.process.PrintData4LogVO; import cn.axzo.workflow.common.model.response.category.CategoryGroupVarItemVo; +import cn.axzo.workflow.common.model.response.print.ProcessLogPdfResultDTO; import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper; import cn.axzo.workflow.core.conf.SupportRefreshProperties; import cn.axzo.workflow.core.engine.cmd.CustomGetFormInstanceLatestValuesCmd; @@ -227,11 +232,11 @@ public class PrintAdminController implements PrintAdminApi { 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; + 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; // } @@ -596,4 +601,19 @@ public class PrintAdminController implements PrintAdminApi { String taskId = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.submitConvertTask(request), "创建网页转 PDF 的异步任务", request); return CommonResponse.success(taskId); } + + @Operation(summary = "后端查询指定审批日志 PDF 文件的生成结果") + @PostMapping("/process/log/pdf/result") + @Override + public CommonResponse queryProcessLogPdfResult(@Validated @RequestBody QueryProcessLogPdfDTO dto) { + QueryConversionTaskRequestV2 request = new QueryConversionTaskRequestV2(); + request.setBizCode("workflow-process-log"); + request.setBizKey(dto.getProcessInstanceId()); + List taskConvertResults = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.queryConvertResultByBiz(request), "查询流程日志转 PDF 的结果", request); + List results = BeanMapper.copyList(taskConvertResults, ProcessLogPdfResultDTO.class, (s, t) -> { + t.setPdfFileKey(s.getResultFileFileKey()); + t.setStatus(s.getStatus().name()); + }); + return CommonResponse.success(results.isEmpty() ? null : results.get(0)); + } }