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 3e4fe494c..21da22094 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 @@ -96,7 +96,7 @@ public interface PrintAdminApi { * 后端请求指定流程日志 PDF 文件生成, 实现是异步的。 *
* 请使用 {@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
*/
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/code/OtherRespCode.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/code/OtherRespCode.java
index c368e3a12..11ad6951d 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/code/OtherRespCode.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/code/OtherRespCode.java
@@ -22,7 +22,8 @@ public enum OtherRespCode implements IModuleRespCode {
ASYNC_JOB_EXECUTION_ERROR("007", "获取指定实例 ID【{}】的锁失败"),
ILLEGAL_PARAM_ERROR("008", "非法的参数:【{}】"),
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;
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintProcessLogPdfDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintProcessLogPdfDTO.java
index 8b813bef4..883af2d55 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintProcessLogPdfDTO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/print/PrintProcessLogPdfDTO.java
@@ -5,7 +5,9 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
+import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotBlank;
/**
@@ -45,4 +47,11 @@ public class PrintProcessLogPdfDTO {
* 可不传, 默认值为:{@link PrintProcessLogPdfDTO#processInstanceId}
*/
private String bizKey;
+
+ @AssertTrue(message = "bizKey和bizCode必须同时为空或同时不为空")
+ public boolean isBizKeyAndCodeValid() {
+ boolean hasBizCode = StringUtils.hasText(bizCode);
+ boolean hasBizKey = StringUtils.hasText(bizKey);
+ return hasBizCode == hasBizKey;
+ }
}
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
index ec0e16a0e..299ca2865 100644
--- 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
@@ -5,7 +5,9 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
+import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotBlank;
/**
@@ -27,6 +29,13 @@ public class QueryProcessLogPdfDTO {
@NotBlank(message = "审批实例 ID 不能为空")
private String processInstanceId;
+ /**
+ * 访问人的 personId
+ */
+ @ApiModelProperty(value = "对应生成时的访问人 personId")
+ @NotBlank(message = "访问者的 personId 不能为空")
+ private String personId;
+
/**
* 自定义该审批日志的 bizCode
* 可不传,默认值为: workflow-process-log
@@ -38,4 +47,12 @@ public class QueryProcessLogPdfDTO {
* 可不传, 默认值为:{@link QueryProcessLogPdfDTO#processInstanceId}
*/
private String bizKey;
+
+ @AssertTrue(message = "bizKey和bizCode必须同时为空或同时不为空")
+ public boolean isBizKeyAndCodeValid() {
+ boolean hasBizCode = StringUtils.hasText(bizCode);
+ boolean hasBizKey = StringUtils.hasText(bizKey);
+ return hasBizCode == hasBizKey;
+ }
+
}
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 2a27e71d4..a42ed79d6 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
@@ -59,7 +59,9 @@ import io.swagger.v3.oas.annotations.Operation;
import org.apache.commons.collections4.ListUtils;
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
+import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
+import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.task.Attachment;
import org.flowable.form.api.FormInfo;
import org.flowable.form.api.FormRepositoryService;
@@ -93,6 +95,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
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_INPUT;
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;
@Resource
private SupportRefreshProperties refreshProperties;
+ @Resource
+ private RuntimeService runtimeService;
/**
* 查询指定流程实例是否能使用打印
@@ -594,9 +599,15 @@ public class PrintAdminController implements PrintAdminApi {
@PostMapping("/process/log/pdf")
@Override
public CommonResponse