Commit e931414b55817aed617a7ffca7538fd1f9315169

Authored by YunaiV
1 parent 8a10568b

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

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmTaskController.java
... ... @@ -42,17 +42,18 @@ public class BpmTaskController {
42 42 return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO));
43 43 }
44 44  
  45 + @PutMapping("/complete")
  46 + @ApiOperation(value = "完成任务", notes = "审批通过 or 不通过")
  47 + public CommonResult<Boolean> completeTask(@Valid @RequestBody BpmTaskCompleteReqVO reqVO) {
  48 + taskService.completeTask(reqVO);
  49 + return success(true);
  50 + }
  51 +
45 52 @PostMapping("/task-steps")
46 53 public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) {
47 54 return success(taskService.getTaskSteps(taskQuery));
48 55 }
49 56  
50   - @PostMapping("/complete")
51   - public CommonResult<Boolean> complete(@RequestBody TaskReqVO taskReq) {
52   - taskService.completeTask(taskReq);
53   - return success(true);
54   - }
55   -
56 57 @GetMapping("/process/history-steps")
57 58 public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) {
58 59 return success(taskService.getHistorySteps(processInstanceId));
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/BpmTaskCompleteReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotEmpty;
  10 +import javax.validation.constraints.NotNull;
  11 +import java.util.Map;
  12 +
  13 +@ApiModel("流程任务的 Done 已办的分页 Request VO")
  14 +@Data
  15 +public class BpmTaskCompleteReqVO {
  16 +
  17 + @ApiModelProperty(value = "任务编号", required = true, example = "1024")
  18 + @NotEmpty(message = "任务编号不能为空")
  19 + private String id;
  20 +
  21 + @ApiModelProperty(value = "是否通过", required = true, example = "true", notes = "true 通过;false 不通过")
  22 + @NotNull(message = "是否通过不能为空")
  23 + private Boolean pass;
  24 +
  25 + @ApiModelProperty(value = "审批意见", required = true, example = "不错不错!")
  26 + @NotEmpty(message = "审批意见不能为空")
  27 + private String comment;
  28 +
  29 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskReqVO.java deleted
1   -package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
2   -
3   -import lombok.Data;
4   -import lombok.ToString;
5   -
6   -import java.util.Map;
7   -
8   -@Data
9   -@ToString
10   -public class TaskReqVO {
11   -
12   - private String taskId;
13   -
14   - private Map<String,Object> variables;
15   -
16   - private String comment;
17   -}
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
... ... @@ -33,7 +33,11 @@ public interface BpmErrorCodeConstants {
33 33 ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1009003002, "流程定义处于挂起状态");
34 34  
35 35 // ========== 流程实例 1-009-004-000 ==========
36   - ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "流程取消失败,流程不处于运行中");
  36 + ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1009004000, "流程实例不存在");
  37 + ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004001, "流程取消失败,流程不处于运行中");
  38 +
  39 + // ========== 流程实例 1-009-005-000 ==========
  40 + ErrorCode TASK_COMPLETE_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "审批任务失败,原因:该任务不处于未审批");
37 41  
38 42 // ========== 动态表单模块 1-009-010-000 ==========
39 43 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在");
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmProcessInstanceService.java
... ... @@ -48,6 +48,14 @@ public interface BpmProcessInstanceService {
48 48 @Valid BpmProcessInstanceMyPageReqVO pageReqVO);
49 49  
50 50 /**
  51 + * 获得流程实例
  52 + *
  53 + * @param id 流程实例的编号
  54 + * @return 流程实例
  55 + */
  56 + ProcessInstance getProcessInstance(String id);
  57 +
  58 + /**
51 59 * 获得流程实例列表
52 60 *
53 61 * @param ids 流程实例的编号集合
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java
... ... @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
6 6 import org.activiti.engine.task.Task;
7 7  
  8 +import javax.validation.Valid;
8 9 import java.util.List;
9 10 import java.util.Map;
10 11  
... ... @@ -70,29 +71,24 @@ public interface BpmTaskService {
70 71 void updateTaskAssign(String id, Long userId);
71 72  
72 73 /**
73   - * 签收任务
  74 + * 完成任务(审批通过 / 不通过)
74 75 *
75   - * @param id 任务编号
  76 + * @param taskReq 完成请求
76 77 */
77   - void claimTask(String id);
78   -
79   - /**
80   - * 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment)
81   - * variables 变量名 和 评论 由前台传入
82   - * @param taskReq 任务参数
83   - */
84   - void completeTask(TaskReqVO taskReq);
  78 + void completeTask(@Valid BpmTaskCompleteReqVO taskReq);
85 79  
86 80 /**
87 81 * 根据任务id, 查询已经完成的用户任务,未完成的用户任务
88 82 * @param taskQuery 查询参数 一般 taskId
89 83 */
  84 + @Deprecated
90 85 TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery);
91 86  
92 87 /**
93 88 * 根据流程实例id, 查询历史用户任务,包括已完成,未完成
94 89 * @param processInstanceId 流程实例id
95 90 */
  91 + @Deprecated
96 92 List<TaskStepVO> getHistorySteps(String processInstanceId);
97 93  
98 94 /**
... ... @@ -101,4 +97,5 @@ public interface BpmTaskService {
101 97 * @return {@link FileResp} 返回文件
102 98 */
103 99 FileResp getHighlightImg(String processInstanceId);
  100 +
104 101 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java
... ... @@ -166,13 +166,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
166 166 return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list();
167 167 }
168 168  
169   - /**
170   - * 获得流程实例
171   - *
172   - * @param id 流程实例的编号
173   - * @return 流程实例
174   - */
175   - private ProcessInstance getProcessInstance(String id) {
  169 + @Override
  170 + public ProcessInstance getProcessInstance(String id) {
176 171 return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult();
177 172 }
178 173  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java
... ... @@ -41,7 +41,7 @@ import java.io.IOException;
41 41 import java.io.InputStream;
42 42 import java.util.*;
43 43  
44   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.HIGHLIGHT_IMG_ERROR;
  44 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
45 45 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
46 46 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
47 47  
... ... @@ -157,20 +157,24 @@ public class BpmTaskServiceImpl implements BpmTaskService {
157 157 }
158 158  
159 159 @Override
160   - public void claimTask(String id) {
  160 + @Transactional(rollbackFor = Exception.class)
  161 + public void completeTask(BpmTaskCompleteReqVO reqVO) {
  162 + // 校验任务存在
  163 + Task task = getTask(reqVO.getId());
  164 + if (task == null) {
  165 + throw exception(TASK_COMPLETE_FAIL_NOT_EXISTS);
  166 + }
  167 + // 校验流程实例存在
  168 + ProcessInstance instance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
  169 + if (instance == null) {
  170 + throw exception(PROCESS_INSTANCE_NOT_EXISTS);
  171 + }
161 172  
162   - }
  173 + // 完成(审批)任务
  174 + taskService.complete(task.getId(), instance.getProcessVariables());
163 175  
164   - @Override
165   - @Transactional
166   - public void completeTask(TaskReqVO taskReq) {
167   -// final Task task = taskRuntime.task(taskReq.getTaskId());
168   -//
169   -// taskService.addComment(taskReq.getTaskId(), task.getProcessInstanceId(), taskReq.getComment());
170   -//
171   -// taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskReq.getTaskId())
172   -// .withVariables(taskReq.getVariables())
173   -// .build());
  176 + // TODO 芋艿:添加评论
  177 +// taskService.addComment(task.getId(), task.getProcessInstanceId(), reqVO.getComment());
174 178 }
175 179  
176 180 @Override
... ... @@ -347,4 +351,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
347 351 }
348 352 return highLightedFlowIds;
349 353 }
  354 +
  355 + private Task getTask(String id) {
  356 + return taskService.createTaskQuery().taskId(id).singleResult();
  357 + }
  358 +
350 359 }
... ...