Merge branch 'feature/REQ-5965' into test
This commit is contained in:
commit
4085563ceb
@ -96,7 +96,7 @@ public interface PrintAdminApi {
|
|||||||
* 后端请求指定流程日志 PDF 文件生成, 实现是异步的。
|
* 后端请求指定流程日志 PDF 文件生成, 实现是异步的。
|
||||||
* <p>
|
* <p>
|
||||||
* 请使用 {@link PrintAdminApi#queryProcessLogPdfResult(QueryProcessLogPdfDTO)} 函数查询,
|
* 请使用 {@link PrintAdminApi#queryProcessLogPdfResult(QueryProcessLogPdfDTO)} 函数查询,
|
||||||
* 或者使用 {@link cn.axzo.nanopart.doc.api.conversion.DocConversionApi#queryConvertResultByBiz(cn.axzo.nanopart.doc.api.conversion.req.QueryConversionTaskRequestV2)} 函数查询,该接口入参默认情况下应该为:bizCode:固定为"workflow-process-log", bizKey:为实例 ID
|
* 或者使用 {@link cn.axzo.nanopart.doc.api.conversion.DocConversionApi#queryConvertResultByBiz(cn.axzo.nanopart.doc.api.conversion.req.QueryConversionTaskRequestV2)} 函数查询,该接口入参默认情况下应该为:bizCode:固定为"workflow-process-log", bizKey:为实例 ID+":"+访问人 personId
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -22,7 +22,8 @@ public enum OtherRespCode implements IModuleRespCode {
|
|||||||
ASYNC_JOB_EXECUTION_ERROR("007", "获取指定实例 ID【{}】的锁失败"),
|
ASYNC_JOB_EXECUTION_ERROR("007", "获取指定实例 ID【{}】的锁失败"),
|
||||||
ILLEGAL_PARAM_ERROR("008", "非法的参数:【{}】"),
|
ILLEGAL_PARAM_ERROR("008", "非法的参数:【{}】"),
|
||||||
MESSAGE_IM_EVENT_BUILD_ERROR("009", "不能使用 createEvent 函数创建`IM 消息`的事件, 请调用 createIMEvent 函数"),
|
MESSAGE_IM_EVENT_BUILD_ERROR("009", "不能使用 createEvent 函数创建`IM 消息`的事件, 请调用 createIMEvent 函数"),
|
||||||
ASSIGNEE_NODE_ID_NOT_EXISTS("010", "【{}】 nodeId 不存在, 请检查参数是否正确")
|
ASSIGNEE_NODE_ID_NOT_EXISTS("010", "【{}】 nodeId 不存在, 请检查参数是否正确"),
|
||||||
|
CANT_GENERATE_PROCESS_LOG_PDF("011", "流程未处于终态不能用默认参数创建,请自行添加 BizCode和 BizKey"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|||||||
@ -5,7 +5,9 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import javax.validation.constraints.AssertTrue;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,4 +47,11 @@ public class PrintProcessLogPdfDTO {
|
|||||||
* 可不传, 默认值为:{@link PrintProcessLogPdfDTO#processInstanceId}
|
* 可不传, 默认值为:{@link PrintProcessLogPdfDTO#processInstanceId}
|
||||||
*/
|
*/
|
||||||
private String bizKey;
|
private String bizKey;
|
||||||
|
|
||||||
|
@AssertTrue(message = "bizKey和bizCode必须同时为空或同时不为空")
|
||||||
|
public boolean isBizKeyAndCodeValid() {
|
||||||
|
boolean hasBizCode = StringUtils.hasText(bizCode);
|
||||||
|
boolean hasBizKey = StringUtils.hasText(bizKey);
|
||||||
|
return hasBizCode == hasBizKey;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,9 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import javax.validation.constraints.AssertTrue;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,6 +29,13 @@ public class QueryProcessLogPdfDTO {
|
|||||||
@NotBlank(message = "审批实例 ID 不能为空")
|
@NotBlank(message = "审批实例 ID 不能为空")
|
||||||
private String processInstanceId;
|
private String processInstanceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 访问人的 personId
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "对应生成时的访问人 personId")
|
||||||
|
@NotBlank(message = "访问者的 personId 不能为空")
|
||||||
|
private String personId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义该审批日志的 bizCode
|
* 自定义该审批日志的 bizCode
|
||||||
* 可不传,默认值为: workflow-process-log
|
* 可不传,默认值为: workflow-process-log
|
||||||
@ -38,4 +47,12 @@ public class QueryProcessLogPdfDTO {
|
|||||||
* 可不传, 默认值为:{@link QueryProcessLogPdfDTO#processInstanceId}
|
* 可不传, 默认值为:{@link QueryProcessLogPdfDTO#processInstanceId}
|
||||||
*/
|
*/
|
||||||
private String bizKey;
|
private String bizKey;
|
||||||
|
|
||||||
|
@AssertTrue(message = "bizKey和bizCode必须同时为空或同时不为空")
|
||||||
|
public boolean isBizKeyAndCodeValid() {
|
||||||
|
boolean hasBizCode = StringUtils.hasText(bizCode);
|
||||||
|
boolean hasBizKey = StringUtils.hasText(bizKey);
|
||||||
|
return hasBizCode == hasBizKey;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,7 +59,9 @@ import io.swagger.v3.oas.annotations.Operation;
|
|||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
|
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
|
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
|
||||||
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.TaskService;
|
import org.flowable.engine.TaskService;
|
||||||
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
import org.flowable.engine.task.Attachment;
|
import org.flowable.engine.task.Attachment;
|
||||||
import org.flowable.form.api.FormInfo;
|
import org.flowable.form.api.FormInfo;
|
||||||
import org.flowable.form.api.FormRepositoryService;
|
import org.flowable.form.api.FormRepositoryService;
|
||||||
@ -93,6 +95,7 @@ import java.util.Optional;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.code.FormModelRespCode.FORM_MODEL_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.FormModelRespCode.FORM_MODEL_NOT_EXISTS;
|
||||||
|
import static cn.axzo.workflow.common.code.OtherRespCode.CANT_GENERATE_PROCESS_LOG_PDF;
|
||||||
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_IMAGE;
|
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_IMAGE;
|
||||||
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_INPUT;
|
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_INPUT;
|
||||||
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_DEFINITION_KEY;
|
import static cn.axzo.workflow.common.constant.VariableConstants.PRINT_VAR_PROCESS_DEFINITION_KEY;
|
||||||
@ -182,6 +185,8 @@ public class PrintAdminController implements PrintAdminApi {
|
|||||||
private DocConversionApi docConversionApi;
|
private DocConversionApi docConversionApi;
|
||||||
@Resource
|
@Resource
|
||||||
private SupportRefreshProperties refreshProperties;
|
private SupportRefreshProperties refreshProperties;
|
||||||
|
@Resource
|
||||||
|
private RuntimeService runtimeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询指定流程实例是否能使用打印
|
* 查询指定流程实例是否能使用打印
|
||||||
@ -594,9 +599,15 @@ public class PrintAdminController implements PrintAdminApi {
|
|||||||
@PostMapping("/process/log/pdf")
|
@PostMapping("/process/log/pdf")
|
||||||
@Override
|
@Override
|
||||||
public CommonResponse<String> createProcessLogPdf(@Validated @RequestBody PrintProcessLogPdfDTO dto) {
|
public CommonResponse<String> createProcessLogPdf(@Validated @RequestBody PrintProcessLogPdfDTO dto) {
|
||||||
|
if (!StringUtils.hasText(dto.getBizCode())) {
|
||||||
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(dto.getProcessInstanceId()).singleResult();
|
||||||
|
if (Objects.nonNull(processInstance)) {
|
||||||
|
throw new WorkflowEngineException(CANT_GENERATE_PROCESS_LOG_PDF);
|
||||||
|
}
|
||||||
|
}
|
||||||
SubmitConversionTaskRequest request = new SubmitConversionTaskRequest();
|
SubmitConversionTaskRequest request = new SubmitConversionTaskRequest();
|
||||||
request.setBizCode(StringUtils.hasText(dto.getBizCode()) ? dto.getBizCode() : "workflow-process-log");
|
request.setBizCode(StringUtils.hasText(dto.getBizCode()) ? dto.getBizCode() : "workflow-process-log");
|
||||||
request.setBizKey(StringUtils.hasText(dto.getBizKey()) ? dto.getBizKey() : dto.getProcessInstanceId());
|
request.setBizKey(StringUtils.hasText(dto.getBizKey()) ? dto.getBizKey() : dto.getProcessInstanceId() + ":" + dto.getPersonId());
|
||||||
request.setConversionType(DocConversionTypeEnum.HTML_URL_TO_PDF);
|
request.setConversionType(DocConversionTypeEnum.HTML_URL_TO_PDF);
|
||||||
request.setFileName(String.format(refreshProperties.getProcessLogHtmlUrl(), dto.getProcessInstanceId(), dto.getPersonId()));
|
request.setFileName(String.format(refreshProperties.getProcessLogHtmlUrl(), dto.getProcessInstanceId(), dto.getPersonId()));
|
||||||
String taskId = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.submitConvertTask(request), "创建网页转 PDF 的异步任务", request);
|
String taskId = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.submitConvertTask(request), "创建网页转 PDF 的异步任务", request);
|
||||||
@ -609,7 +620,7 @@ public class PrintAdminController implements PrintAdminApi {
|
|||||||
public CommonResponse<ProcessLogPdfResultDTO> queryProcessLogPdfResult(@Validated @RequestBody QueryProcessLogPdfDTO dto) {
|
public CommonResponse<ProcessLogPdfResultDTO> queryProcessLogPdfResult(@Validated @RequestBody QueryProcessLogPdfDTO dto) {
|
||||||
QueryConversionTaskRequestV2 request = new QueryConversionTaskRequestV2();
|
QueryConversionTaskRequestV2 request = new QueryConversionTaskRequestV2();
|
||||||
request.setBizCode(StringUtils.hasText(dto.getBizCode()) ? dto.getBizCode() : "workflow-process-log");
|
request.setBizCode(StringUtils.hasText(dto.getBizCode()) ? dto.getBizCode() : "workflow-process-log");
|
||||||
request.setBizKeys(Lists.newArrayList(StringUtils.hasText(dto.getBizKey()) ? dto.getBizKey() : dto.getProcessInstanceId()));
|
request.setBizKeys(Lists.newArrayList(StringUtils.hasText(dto.getBizKey()) ? dto.getBizKey() : dto.getProcessInstanceId() + ":" + dto.getPersonId()));
|
||||||
List<FileConvertResultResp> taskConvertResults = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.queryConvertResultByBiz(request), "查询流程日志转 PDF 的结果", request);
|
List<FileConvertResultResp> taskConvertResults = RpcExternalUtil.rpcApiResultProcessor(() -> docConversionApi.queryConvertResultByBiz(request), "查询流程日志转 PDF 的结果", request);
|
||||||
List<ProcessLogPdfResultDTO> results = BeanMapper.copyList(taskConvertResults, ProcessLogPdfResultDTO.class, (s, t) -> {
|
List<ProcessLogPdfResultDTO> results = BeanMapper.copyList(taskConvertResults, ProcessLogPdfResultDTO.class, (s, t) -> {
|
||||||
t.setPdfFileKey(s.getResultFileFileKey());
|
t.setPdfFileKey(s.getResultFileFileKey());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user