实现流程任务的审批功能的 API 接口

This commit is contained in:
YunaiV 2022-01-09 00:53:39 +08:00
parent 8a10568b24
commit e931414b55
8 changed files with 80 additions and 54 deletions

View File

@ -42,17 +42,18 @@ public class BpmTaskController {
return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO)); return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO));
} }
@PutMapping("/complete")
@ApiOperation(value = "完成任务", notes = "审批通过 or 不通过")
public CommonResult<Boolean> completeTask(@Valid @RequestBody BpmTaskCompleteReqVO reqVO) {
taskService.completeTask(reqVO);
return success(true);
}
@PostMapping("/task-steps") @PostMapping("/task-steps")
public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) { public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) {
return success(taskService.getTaskSteps(taskQuery)); return success(taskService.getTaskSteps(taskQuery));
} }
@PostMapping("/complete")
public CommonResult<Boolean> complete(@RequestBody TaskReqVO taskReq) {
taskService.completeTask(taskReq);
return success(true);
}
@GetMapping("/process/history-steps") @GetMapping("/process/history-steps")
public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) { public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) {
return success(taskService.getHistorySteps(processInstanceId)); return success(taskService.getHistorySteps(processInstanceId));

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Map;
@ApiModel("流程任务的 Done 已办的分页 Request VO")
@Data
public class BpmTaskCompleteReqVO {
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
@NotEmpty(message = "任务编号不能为空")
private String id;
@ApiModelProperty(value = "是否通过", required = true, example = "true", notes = "true 通过false 不通过")
@NotNull(message = "是否通过不能为空")
private Boolean pass;
@ApiModelProperty(value = "审批意见", required = true, example = "不错不错!")
@NotEmpty(message = "审批意见不能为空")
private String comment;
}

View File

@ -1,17 +0,0 @@
package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
import lombok.Data;
import lombok.ToString;
import java.util.Map;
@Data
@ToString
public class TaskReqVO {
private String taskId;
private Map<String,Object> variables;
private String comment;
}

View File

@ -33,7 +33,11 @@ public interface BpmErrorCodeConstants {
ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1009003002, "流程定义处于挂起状态"); ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1009003002, "流程定义处于挂起状态");
// ========== 流程实例 1-009-004-000 ========== // ========== 流程实例 1-009-004-000 ==========
ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "流程取消失败,流程不处于运行中"); ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1009004000, "流程实例不存在");
ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004001, "流程取消失败,流程不处于运行中");
// ========== 流程实例 1-009-005-000 ==========
ErrorCode TASK_COMPLETE_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "审批任务失败,原因:该任务不处于未审批");
// ========== 动态表单模块 1-009-010-000 ========== // ========== 动态表单模块 1-009-010-000 ==========
ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在"); ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在");

View File

@ -47,6 +47,14 @@ public interface BpmProcessInstanceService {
PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId,
@Valid BpmProcessInstanceMyPageReqVO pageReqVO); @Valid BpmProcessInstanceMyPageReqVO pageReqVO);
/**
* 获得流程实例
*
* @param id 流程实例的编号
* @return 流程实例
*/
ProcessInstance getProcessInstance(String id);
/** /**
* 获得流程实例列表 * 获得流程实例列表
* *

View File

@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import org.activiti.engine.task.Task; import org.activiti.engine.task.Task;
import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -70,29 +71,24 @@ public interface BpmTaskService {
void updateTaskAssign(String id, Long userId); void updateTaskAssign(String id, Long userId);
/** /**
* 签收任务 * 完成任务审批通过 / 不通过
* *
* @param id 任务编号 * @param taskReq 完成请求
*/ */
void claimTask(String id); void completeTask(@Valid BpmTaskCompleteReqVO taskReq);
/**
* 工作流完成 userTask, 完成用户任务 一般传入参数 1是否同意variables). 2. 评论(comment)
* variables 变量名 评论 由前台传入
* @param taskReq 任务参数
*/
void completeTask(TaskReqVO taskReq);
/** /**
* 根据任务id, 查询已经完成的用户任务未完成的用户任务 * 根据任务id, 查询已经完成的用户任务未完成的用户任务
* @param taskQuery 查询参数 一般 taskId * @param taskQuery 查询参数 一般 taskId
*/ */
@Deprecated
TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery); TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery);
/** /**
* 根据流程实例id, 查询历史用户任务包括已完成未完成 * 根据流程实例id, 查询历史用户任务包括已完成未完成
* @param processInstanceId 流程实例id * @param processInstanceId 流程实例id
*/ */
@Deprecated
List<TaskStepVO> getHistorySteps(String processInstanceId); List<TaskStepVO> getHistorySteps(String processInstanceId);
/** /**
@ -101,4 +97,5 @@ public interface BpmTaskService {
* @return {@link FileResp} 返回文件 * @return {@link FileResp} 返回文件
*/ */
FileResp getHighlightImg(String processInstanceId); FileResp getHighlightImg(String processInstanceId);
} }

View File

@ -166,13 +166,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list();
} }
/** @Override
* 获得流程实例 public ProcessInstance getProcessInstance(String id) {
*
* @param id 流程实例的编号
* @return 流程实例
*/
private ProcessInstance getProcessInstance(String id) {
return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult();
} }

View File

@ -41,7 +41,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.*; import java.util.*;
import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.HIGHLIGHT_IMG_ERROR; import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@ -157,20 +157,24 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
@Override @Override
public void claimTask(String id) { @Transactional(rollbackFor = Exception.class)
public void completeTask(BpmTaskCompleteReqVO reqVO) {
// 校验任务存在
Task task = getTask(reqVO.getId());
if (task == null) {
throw exception(TASK_COMPLETE_FAIL_NOT_EXISTS);
}
// 校验流程实例存在
ProcessInstance instance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
if (instance == null) {
throw exception(PROCESS_INSTANCE_NOT_EXISTS);
}
} // 完成审批任务
taskService.complete(task.getId(), instance.getProcessVariables());
@Override // TODO 芋艿添加评论
@Transactional // taskService.addComment(task.getId(), task.getProcessInstanceId(), reqVO.getComment());
public void completeTask(TaskReqVO taskReq) {
// final Task task = taskRuntime.task(taskReq.getTaskId());
//
// taskService.addComment(taskReq.getTaskId(), task.getProcessInstanceId(), taskReq.getComment());
//
// taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskReq.getTaskId())
// .withVariables(taskReq.getVariables())
// .build());
} }
@Override @Override
@ -347,4 +351,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
return highLightedFlowIds; return highLightedFlowIds;
} }
private Task getTask(String id) {
return taskService.createTaskQuery().taskId(id).singleResult();
}
} }