feat(REQ-5965) - 新增创建审批流日志的 PDF 的异步任务

This commit is contained in:
wangli 2025-10-31 17:41:45 +08:00
parent c26659c364
commit a662e6fab7
4 changed files with 72 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import cn.axzo.workflow.common.annotation.Manageable;
import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO;
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.response.bpmn.process.PrintData4LogVO;
import cn.azxo.framework.common.model.CommonResponse;
@ -88,4 +89,14 @@ public interface PrintAdminApi {
@Manageable
@InvokeMode(SYNC)
CommonResponse<PrintData4LogVO> getPrintDataForProcessLog(@Validated @RequestBody Print4ProcessLogDTO dto);
/**
* 后端请求指定流程日志 PDF 文件生成
*
* @return
*/
@Operation(summary = "后端请求指定流程日志 PDF 文件生成")
@PostMapping("/api/print/admin/process/log/pdf")
@InvokeMode(SYNC)
CommonResponse<String> createProcessLogPdf(@Validated @RequestBody PrintProcessLogPdfDTO dto);
}

View File

@ -0,0 +1,36 @@
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 PrintProcessLogPdfDTO {
/**
* 审批实例 ID
*/
@ApiModelProperty(value = "审批实例 ID")
@NotBlank(message = "审批实例 ID 不能为空")
private String processInstanceId;
/**
* 实例日志访问者的personId
*/
@ApiModelProperty(value = "访问者的 PersonId")
@NotBlank(message = "访问者的 personId 不能为空")
private String personId;
}

View File

@ -108,4 +108,7 @@ public class SupportRefreshProperties {
@Value("${workflow.ignoreMqAlterApplicationNames:}")
private List<String> ignoreMqAlterApplicationNames;
@Value("${workflow.processLogHtmlUrl:https://www.axzo.cn/}")
private String processLogHtmlUrl;
}

View File

@ -3,6 +3,9 @@ package cn.axzo.workflow.server.controller.web.manage;
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.SubmitConversionTaskRequest;
import cn.axzo.nanopart.doc.api.enums.DocConversionTypeEnum;
import cn.axzo.oss.http.api.ServerFileServiceApi;
import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest;
import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse;
@ -16,6 +19,7 @@ import cn.axzo.workflow.common.model.dto.print.FieldAttributeDTO;
import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO;
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.process.BpmnProcessInstanceLogQueryDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.AttachmentDTO;
@ -28,6 +32,7 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceLo
import cn.axzo.workflow.common.model.response.bpmn.process.PrintData4LogVO;
import cn.axzo.workflow.common.model.response.category.CategoryGroupVarItemVo;
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
import cn.axzo.workflow.core.conf.SupportRefreshProperties;
import cn.axzo.workflow.core.engine.cmd.CustomGetFormInstanceLatestValuesCmd;
import cn.axzo.workflow.core.engine.cmd.CustomGetProcessInstanceVariablesCmd;
import cn.axzo.workflow.core.repository.entity.ExtAxProcessLog;
@ -168,6 +173,10 @@ public class PrintAdminController implements PrintAdminApi {
private TaskService taskService;
@Resource
private ServerFileServiceApi serverFileServiceApi;
@Resource
private DocConversionApi docConversionApi;
@Resource
private SupportRefreshProperties refreshProperties;
/**
* 查询指定流程实例是否能使用打印
@ -575,4 +584,17 @@ public class PrintAdminController implements PrintAdminApi {
return RpcExternalUtil.rpcProcessor(() -> serverFileServiceApi.signUrlFetchDownload(request), "批量获取手写签私有访问地址", request);
}
@Operation(summary = "后端请求指定流程日志 PDF 文件生成")
@PostMapping("/process/log/pdf")
@Override
public CommonResponse<String> createProcessLogPdf(@Validated @RequestBody PrintProcessLogPdfDTO dto) {
SubmitConversionTaskRequest request = new SubmitConversionTaskRequest();
request.setBizCode("workflow-process-log");
request.setBizKey(dto.getProcessInstanceId());
request.setConversionType(DocConversionTypeEnum.HTML_URL_TO_PDF);
request.setFileName(refreshProperties.getProcessLogHtmlUrl());
request.setFileKey(dto.getPersonId());
String taskId = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.submitConvertTask(request), "创建网页转 PDF 的异步任务", request);
return CommonResponse.success(taskId);
}
}