feat(REQ-4418) - 调整任务相关 API,支持使用实例 ID 操作任务
This commit is contained in:
parent
41a72e2bc2
commit
4542e4814c
@ -43,6 +43,7 @@ public enum BpmnTaskRespCode implements IModuleRespCode {
|
||||
TRANSFER_TO_SELF("026", "任务不能转交给自己"),
|
||||
REMIND_TASK_TOO_MANY("027", "催办任务数据异常"),
|
||||
PROCESS_SET_ASSIGNEE_PARAM_ERROR("028", "当前审批业务审批人模型中 NodeId 必传(topNodeId/nodeId均可), 触发 ID: 【{}】"),
|
||||
TASK_OPERATION_PARAM_INVALID("029", "流程实例 ID 与任务 ID 必须二选一"),
|
||||
;
|
||||
|
||||
private final String code;
|
||||
|
||||
@ -13,7 +13,6 @@ import lombok.NoArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
@ -30,9 +29,20 @@ import java.util.List;
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class BpmnTaskAuditDTO {
|
||||
/**
|
||||
* 流程实例 ID
|
||||
* <p>
|
||||
* 与审批任务 ID 二选一
|
||||
*/
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 审批任务 ID
|
||||
* <p>
|
||||
* 与流程实例 ID 二选一,如果两属性都传,则优先使用 taskId
|
||||
*/
|
||||
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
|
||||
@NotEmpty(message = "任务编号不能为空")
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
|
||||
@ -36,10 +36,19 @@ public class BpmnTaskCountersignDTO implements Serializable {
|
||||
private static final long serialVersionUID = -8106887960942113552L;
|
||||
|
||||
/**
|
||||
* 审批任务ID
|
||||
* 流程实例 ID
|
||||
* <p>
|
||||
* 与审批任务 ID 二选一
|
||||
*/
|
||||
@ApiModelProperty(value = "审批任务ID")
|
||||
@NotEmpty(message = "任务ID不能为空")
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 审批任务 ID
|
||||
* <p>
|
||||
* 与流程实例 ID 二选一,如果两属性都传,则优先使用 taskId
|
||||
*/
|
||||
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
|
||||
@ -32,10 +32,19 @@ public class BpmnTaskResetApproversDTO implements Serializable {
|
||||
private static final long serialVersionUID = 4570922472032531513L;
|
||||
|
||||
/**
|
||||
* 审批任务ID
|
||||
* 流程实例 ID
|
||||
* <p>
|
||||
* 与审批任务 ID 二选一
|
||||
*/
|
||||
@ApiModelProperty(value = "审批任务ID")
|
||||
@NotEmpty(message = "任务ID不能为空")
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 审批任务 ID
|
||||
* <p>
|
||||
* 与流程实例 ID 二选一,如果两属性都传,则优先使用 taskId
|
||||
*/
|
||||
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
|
||||
@ -31,11 +31,20 @@ public class BpmnTaskTransferDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8142105892475867826L;
|
||||
|
||||
/**
|
||||
* 流程实例 ID
|
||||
* <p>
|
||||
* 与审批任务 ID 二选一
|
||||
*/
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 审批任务 ID
|
||||
* <p>
|
||||
* 与流程实例 ID 二选一,如果两属性都传,则优先使用 taskId
|
||||
*/
|
||||
@ApiModelProperty(value = "审批任务 ID")
|
||||
@NotBlank(message = "任务 ID 不能为空")
|
||||
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package cn.axzo.workflow.server.controller.web.bpmn;
|
||||
|
||||
import cn.axzo.workflow.client.feign.bpmn.ProcessTaskApi;
|
||||
import cn.axzo.workflow.common.annotation.Manageable;
|
||||
import cn.axzo.workflow.common.enums.AttachmentTypeEnum;
|
||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
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;
|
||||
@ -54,6 +56,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_OPERATION_PARAM_INVALID;
|
||||
import static cn.azxo.framework.common.model.CommonResponse.success;
|
||||
|
||||
/**
|
||||
@ -75,6 +78,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Operation(summary = "待审核列表")
|
||||
@GetMapping("/page/todo")
|
||||
@Override
|
||||
@Manageable
|
||||
public CommonResponse<BpmPageResult<BpmnTaskTodoPageItemVO>> getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto) {
|
||||
log.info("待审核列表 getTodoTaskPage===>>>参数:{}", JSON.toJSONString(dto));
|
||||
return success(bpmnProcessTaskService.getTodoTaskPage(dto));
|
||||
@ -86,6 +90,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Operation(summary = "已完成的审批列表")
|
||||
@GetMapping("/page/done")
|
||||
@Override
|
||||
@Manageable
|
||||
public CommonResponse<BpmPageResult<BpmnTaskDonePageItemVO>> getDoneTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto) {
|
||||
log.info("已完成的审批列表 getDoneTaskPage===>>>参数:{}", JSON.toJSONString(dto));
|
||||
return success(bpmnProcessTaskService.getDoneTaskPage(dto));
|
||||
@ -101,6 +106,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> approveTask(@Validated @RequestBody BpmnTaskAuditDTO dto) {
|
||||
log.info("同意 approveTask===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId()));
|
||||
}
|
||||
List<AttachmentDTO> tempAttachments = ListUtils.defaultIfNull(dto.getAttachmentList(), new ArrayList<>());
|
||||
if (StringUtils.hasText(dto.getSignatureUrl())) {
|
||||
AttachmentDTO signature = new AttachmentDTO();
|
||||
@ -121,6 +132,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> approveTaskWithForm(@Validated @RequestBody BpmnTaskAuditWithFormDTO dto) {
|
||||
log.info("同意 approveTaskWithForm===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId()));
|
||||
}
|
||||
List<AttachmentDTO> tempAttachments = ListUtils.defaultIfNull(dto.getAttachmentList(), new ArrayList<>());
|
||||
if (StringUtils.hasText(dto.getSignatureUrl())) {
|
||||
AttachmentDTO signature = new AttachmentDTO();
|
||||
@ -176,6 +193,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Override
|
||||
public CommonResponse<Boolean> backTask(@Validated @RequestBody BpmnTaskBackAuditDTO dto) {
|
||||
log.info("回退 backTask===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId()));
|
||||
}
|
||||
populateUsersAvatar(dto.getApprover());
|
||||
bpmnProcessTaskService.backTask(dto);
|
||||
return success(true);
|
||||
@ -203,6 +226,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> rejectTask(@Validated @RequestBody BpmnTaskAuditDTO dto) {
|
||||
log.info("驳回 rejectTask===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId()));
|
||||
}
|
||||
populateUsersAvatar(dto.getApprover());
|
||||
bpmnProcessTaskService.rejectTask(dto);
|
||||
return success(true);
|
||||
@ -231,6 +260,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto) {
|
||||
log.info("转交任务 transferTask===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId()));
|
||||
}
|
||||
// 填充头像
|
||||
populateUsersAvatar(dto.getTargetAssigner());
|
||||
bpmnProcessTaskService.transferTask(dto);
|
||||
@ -272,6 +307,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> countersignTask(@Validated @RequestBody BpmnTaskCountersignDTO dto) {
|
||||
log.info("加签任务 countersignTask===>>>参数:{}", JSON.toJSONString(dto));
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId()));
|
||||
}
|
||||
// 填充头像
|
||||
populateUsersAvatar(dto.getOriginAssigner());
|
||||
populateUsersAvatar(dto.getTargetAssignerList());
|
||||
@ -281,6 +322,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
|
||||
/**
|
||||
* 提级审批
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@ -289,6 +331,12 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@PostMapping("/approvers/reset")
|
||||
@RepeatSubmit
|
||||
public CommonResponse<Boolean> resetTaskApprovers(@Validated @RequestBody BpmnTaskResetApproversDTO dto) {
|
||||
if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) {
|
||||
throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID);
|
||||
}
|
||||
if(!StringUtils.hasText(dto.getTaskId())) {
|
||||
dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId()));
|
||||
}
|
||||
populateUsersAvatar(dto.getOriginAssigner());
|
||||
populateUsersAvatar(dto.getTargetAssignerList());
|
||||
bpmnProcessTaskService.resetTaskApprovers(dto);
|
||||
@ -350,6 +398,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Operation(summary = "获取指定流程实例的审批过程信息(flat)")
|
||||
@GetMapping("/list/flat")
|
||||
@Override
|
||||
@Manageable
|
||||
public CommonResponse<List<BpmnHistoricTaskInstanceVO>> getTaskListFlatByProcessInstanceId(
|
||||
@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId,
|
||||
@Nullable @RequestParam(required = false) String tenantId) {
|
||||
@ -365,6 +414,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Operation(summary = "获取指定流程实例的审批过程信息(group)")
|
||||
@GetMapping("/list/group")
|
||||
@Override
|
||||
@Manageable
|
||||
public CommonResponse<List<BpmnHistoricTaskInstanceGroupVO>> getTaskListGroupByProcessInstanceId(
|
||||
@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId,
|
||||
@Nullable @RequestParam(required = false) String tenantId) {
|
||||
@ -378,6 +428,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp
|
||||
@Operation(summary = "获取实例正在审核的人列表")
|
||||
@GetMapping("/active/list")
|
||||
@Override
|
||||
@Manageable
|
||||
public CommonResponse<List<BpmnTaskInstanceVO>> getActiveTasksByProcessInstanceId(
|
||||
@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId,
|
||||
@NotBlank(message = "租户不能为空") @RequestParam String tenantId) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user