Commit e931414b55817aed617a7ffca7538fd1f9315169
1 parent
8a10568b
实现流程任务的审批功能的 API 接口
Showing
8 changed files
with
80 additions
and
54 deletions
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 | } | ... | ... |