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,17 +42,18 @@ public class BpmTaskController {
42 return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO)); 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 @PostMapping("/task-steps") 52 @PostMapping("/task-steps")
46 public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) { 53 public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) {
47 return success(taskService.getTaskSteps(taskQuery)); 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 @GetMapping("/process/history-steps") 57 @GetMapping("/process/history-steps")
57 public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) { 58 public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) {
58 return success(taskService.getHistorySteps(processInstanceId)); 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,7 +33,11 @@ public interface BpmErrorCodeConstants {
33 ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1009003002, "流程定义处于挂起状态"); 33 ErrorCode PROCESS_DEFINITION_IS_SUSPENDED = new ErrorCode(1009003002, "流程定义处于挂起状态");
34 34
35 // ========== 流程实例 1-009-004-000 ========== 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 // ========== 动态表单模块 1-009-010-000 ========== 42 // ========== 动态表单模块 1-009-010-000 ==========
39 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在"); 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,6 +48,14 @@ public interface BpmProcessInstanceService {
48 @Valid BpmProcessInstanceMyPageReqVO pageReqVO); 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 * @param ids 流程实例的编号集合 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,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
6 import org.activiti.engine.task.Task; 6 import org.activiti.engine.task.Task;
7 7
  8 +import javax.validation.Valid;
8 import java.util.List; 9 import java.util.List;
9 import java.util.Map; 10 import java.util.Map;
10 11
@@ -70,29 +71,24 @@ public interface BpmTaskService { @@ -70,29 +71,24 @@ public interface BpmTaskService {
70 void updateTaskAssign(String id, Long userId); 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 * 根据任务id, 查询已经完成的用户任务,未完成的用户任务 81 * 根据任务id, 查询已经完成的用户任务,未完成的用户任务
88 * @param taskQuery 查询参数 一般 taskId 82 * @param taskQuery 查询参数 一般 taskId
89 */ 83 */
  84 + @Deprecated
90 TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery); 85 TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery);
91 86
92 /** 87 /**
93 * 根据流程实例id, 查询历史用户任务,包括已完成,未完成 88 * 根据流程实例id, 查询历史用户任务,包括已完成,未完成
94 * @param processInstanceId 流程实例id 89 * @param processInstanceId 流程实例id
95 */ 90 */
  91 + @Deprecated
96 List<TaskStepVO> getHistorySteps(String processInstanceId); 92 List<TaskStepVO> getHistorySteps(String processInstanceId);
97 93
98 /** 94 /**
@@ -101,4 +97,5 @@ public interface BpmTaskService { @@ -101,4 +97,5 @@ public interface BpmTaskService {
101 * @return {@link FileResp} 返回文件 97 * @return {@link FileResp} 返回文件
102 */ 98 */
103 FileResp getHighlightImg(String processInstanceId); 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,13 +166,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
166 return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); 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 return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); 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,7 +41,7 @@ import java.io.IOException;
41 import java.io.InputStream; 41 import java.io.InputStream;
42 import java.util.*; 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 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 45 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
46 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 46 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
47 47
@@ -157,20 +157,24 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -157,20 +157,24 @@ public class BpmTaskServiceImpl implements BpmTaskService {
157 } 157 }
158 158
159 @Override 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 @Override 180 @Override
@@ -347,4 +351,9 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -347,4 +351,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
347 } 351 }
348 return highLightedFlowIds; 352 return highLightedFlowIds;
349 } 353 }
  354 +
  355 + private Task getTask(String id) {
  356 + return taskService.createTaskQuery().taskId(id).singleResult();
  357 + }
  358 +
350 } 359 }