diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java index 382d94800..69d2c8983 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java @@ -3,7 +3,6 @@ package cn.axzo.workflow.client.feign.bpmn; import cn.axzo.workflow.client.annotation.WorkflowEngineFeignClient; import cn.axzo.workflow.common.annotation.InvokeMode; import cn.axzo.workflow.common.annotation.Manageable; -import cn.axzo.workflow.common.model.request.bpmn.log.LogApproveSearchDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO; diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/log/LogApproveSearchDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/log/LogApproveSearchDTO.java index c48666620..288946c7a 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/log/LogApproveSearchDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/log/LogApproveSearchDTO.java @@ -21,18 +21,37 @@ import javax.validation.constraints.NotBlank; @Builder public class LogApproveSearchDTO { + @ApiModelProperty("流程实例 ID") @NotBlank(message = "流程实例 ID 不能为空") private String processInstanceId; - @NotBlank(message = "审批人 personId 不能为空") + /** + * 审批任务 ID,如果有值,优先使用 taskId 查询 + *

+ * 如果没有值,则 personId、tenantId、ouId 一定不能为 null + */ + @ApiModelProperty("审批任务 ID") + private String taskId; + + /** + * 如果没传 taskId,那么该属性必有值 + */ + @ApiModelProperty("审批人 PersonId") private String personId; - @NotBlank(message = "审批人 tenantId 不能为空") + /** + * 如果没传 taskId,那么该属性必有值 + */ + @ApiModelProperty("审批人 tenantId") private String tenantId; - @NotBlank(message = "审批人 ouId 不能为空") + /** + * 如果没传 taskId,那么该属性应该有值,如果是“工人”可以没有值 + */ + @ApiModelProperty("审批人 ouId") private String ouId; @ApiModelProperty("指定状态,如果为空,默认指定审批中状态的数据") private BpmnProcessInstanceResultEnum status; + } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java index 96590a86a..6c33ebb51 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java @@ -547,15 +547,23 @@ public class BpmnProcessInstanceController extends BasicPopulateAvatarController @GetMapping("/log/approve/ext") @Override public CommonResponse> getProcessLogByInstanceIdAndPersonId(@Validated @RequestBody LogApproveSearchDTO dto) { - if (NumberUtil.isLong(dto.getPersonId())) { - throw new WorkflowEngineException(PROCESS_EXT_LOG_PARAM_ERROR); - } + ExtAxProcessLog query = new ExtAxProcessLog(); query.setProcessInstanceId(dto.getProcessInstanceId()); - query.setAssigneeId(Long.valueOf(dto.getPersonId())); - query.setAssigneeTenantId(dto.getTenantId()); - query.setAssigneeOuId(dto.getOuId()); - query.setStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); + if (StringUtils.hasText(dto.getTaskId())) { + query.setTaskId(dto.getTaskId()); + } else { + if (NumberUtil.isLong(dto.getPersonId())) { + throw new WorkflowEngineException(PROCESS_EXT_LOG_PARAM_ERROR); + } + query.setAssigneeId(Long.valueOf(dto.getPersonId())); + query.setAssigneeTenantId(dto.getTenantId()); + query.setAssigneeOuId(Objects.isNull(dto.getOuId()) ? "" : dto.getOuId()); + } + + if (Objects.isNull(dto.getStatus())) { + query.setStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); + } List extAxProcessLogs = extAxProcessLogService.genericQuery(query); return success(ListUtils.emptyIfNull(extAxProcessLogs).stream().map(i -> { ExtProcessLogVO logVO = new ExtProcessLogVO(); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java index 9e4e388d1..4bf89d658 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java @@ -1,14 +1,30 @@ package cn.axzo.workflow.server.controller.web.bpmn; import cn.axzo.workflow.client.feign.bpmn.ProcessTaskApi; -import cn.axzo.workflow.common.annotation.InvokeMode; -import cn.axzo.workflow.common.annotation.Manageable; import cn.axzo.workflow.common.enums.AttachmentTypeEnum; -import cn.axzo.workflow.common.model.request.bpmn.log.LogApproveSearchDTO; -import cn.axzo.workflow.common.model.request.bpmn.task.*; +import cn.axzo.workflow.common.model.request.bpmn.task.AttachmentDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCreateDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditWithFormDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskBackAuditDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCountersignDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskResetApproversDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskTransferDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO; -import cn.axzo.workflow.common.model.response.bpmn.task.*; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO; import cn.axzo.workflow.core.service.BpmnProcessTaskService; import cn.axzo.workflow.server.common.annotation.ErrorReporter; import cn.axzo.workflow.server.common.annotation.RepeatSubmit; @@ -22,7 +38,12 @@ import org.flowable.form.api.FormInfo; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Nullable; import javax.annotation.Resource; @@ -33,7 +54,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.SYNC; import static cn.azxo.framework.common.model.CommonResponse.success; /**