houzhongjian
2024-11-07 a874b928e16320839315b9abcdf2cece1229a424
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.bpm.service.task;
H 2
3 import com.iailab.framework.common.pojo.PageResult;
4 import com.iailab.framework.common.util.collection.CollectionUtils;
5 import com.iailab.module.bpm.controller.admin.task.vo.task.*;
6 import org.flowable.bpmn.model.UserTask;
7 import org.flowable.task.api.Task;
8 import org.flowable.task.api.history.HistoricTaskInstance;
9
10 import javax.validation.Valid;
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.Map;
14
15 /**
16  * 流程任务实例 Service 接口
17  *
18  * @author jason
19  * @author iailab
20  */
21 public interface BpmTaskService {
22
23     /**
24      * 获得待办的流程任务分页
25      *
26      * @param userId    用户编号
27      * @param pageReqVO 分页请求
28      * @return 流程任务分页
29      */
30     PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageReqVO);
31
32     /**
33      * 获得已办的流程任务分页
34      *
35      * @param userId    用户编号
36      * @param pageReqVO 分页请求
37      * @return 流程任务分页
38      */
39     PageResult<HistoricTaskInstance> getTaskDonePage(Long userId, BpmTaskPageReqVO pageReqVO);
40
41     /**
42      * 获得全部的流程任务分页
43      *
44      * @param userId    用户编号
45      * @param pageReqVO 分页请求
46      * @return 流程任务分页
47      */
48     PageResult<HistoricTaskInstance> getTaskPage(Long userId, BpmTaskPageReqVO pageReqVO);
49
50     /**
51      * 获得流程任务 Map
52      *
53      * @param processInstanceIds 流程实例的编号数组
54      * @return 流程任务 Map
55      */
56     default Map<String, List<Task>> getTaskMapByProcessInstanceIds(List<String> processInstanceIds) {
57         return CollectionUtils.convertMultiMap(getTasksByProcessInstanceIds(processInstanceIds),
58                 Task::getProcessInstanceId);
59     }
60
61     /**
62      * 获得流程任务列表
63      *
64      * @param processInstanceIds 流程实例的编号数组
65      * @return 流程任务列表
66      */
67     List<Task> getTasksByProcessInstanceIds(List<String> processInstanceIds);
68
69     /**
70      * 获得指定流程实例的流程任务列表,包括所有状态的
71      *
72      * @param processInstanceId 流程实例的编号
73      * @return 流程任务列表
74      */
75     List<HistoricTaskInstance> getTaskListByProcessInstanceId(String processInstanceId);
76
77     /**
78      * 通过任务
79      *
80      * @param userId 用户编号
81      * @param reqVO  通过请求
82      */
83     void approveTask(Long userId, @Valid BpmTaskApproveReqVO reqVO);
84
85     /**
86      * 不通过任务
87      *
88      * @param userId 用户编号
89      * @param reqVO  不通过请求
90      */
91     void rejectTask(Long userId, @Valid BpmTaskRejectReqVO reqVO);
92
93     /**
94      * 将流程任务分配给指定用户
95      *
96      * @param userId 用户编号
97      * @param reqVO  分配请求
98      */
99     void transferTask(Long userId, BpmTaskTransferReqVO reqVO);
100
101     /**
102      * 更新 Task 状态,在创建时
103      *
104      * @param task 任务实体
105      */
106     void updateTaskStatusWhenCreated(Task task);
107
108     /**
109      * 更新 Task 状态,在取消时
110      *
111      * @param taskId 任务的编号
112      */
113     void updateTaskStatusWhenCanceled(String taskId);
114
115     /**
116      * 更新 Task 拓展记录,并发送通知
117      *
118      * @param task 任务实体
119      */
120     void updateTaskExtAssign(Task task);
121
122     /**
123      * 获取任务
124      *
125      * @param id 任务编号
126      * @return 任务
127      */
128     Task getTask(String id);
129
130     /**
131      * 获取当前任务的可回退的 UserTask 集合
132      *
133      * @param id 当前的任务 ID
134      * @return 可以回退的节点列表
135      */
136     List<UserTask> getUserTaskListByReturn(String id);
137
138     /**
139      * 将任务回退到指定的 targetDefinitionKey 位置
140      *
141      * @param userId 用户编号
142      * @param reqVO  回退的任务key和当前所在的任务ID
143      */
144     void returnTask(Long userId, BpmTaskReturnReqVO reqVO);
145
146     /**
147      * 将指定任务委派给其他人处理,等接收人处理后再回到原审批人手中审批
148      *
149      * @param userId 用户编号
150      * @param reqVO  被委派人和被委派的任务编号理由参数
151      */
152     void delegateTask(Long userId, BpmTaskDelegateReqVO reqVO);
153
154     /**
155      * 任务加签
156      *
157      * @param userId 被加签的用户和任务 ID,加签类型
158      * @param reqVO  当前用户 ID
159      */
160     void createSignTask(Long userId, BpmTaskSignCreateReqVO reqVO);
161
162     /**
163      * 任务减签
164      *
165      * @param userId 当前用户ID
166      * @param reqVO  被减签的任务 ID,理由
167      */
168     void deleteSignTask(Long userId, BpmTaskSignDeleteReqVO reqVO);
169
170     /**
171      * 获取指定任务的子任务列表
172      *
173      * @param parentTaskId 父任务ID
174      * @return 子任务列表
175      */
176     List<Task> getTaskListByParentTaskId(String parentTaskId);
177
178     /**
179      * 通过任务 ID,查询任务名 Map
180      *
181      * @param taskIds 任务 ID
182      * @return 任务 ID 与名字的 Map
183      */
184     Map<String, String> getTaskNameByTaskIds(Collection<String> taskIds);
185
186 }