|
@@ -501,14 +501,35 @@ public class FlowTaskServiceImpl extends BaseServiceImpl<FlowTaskDao, FlowTask>
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<String> getMultiInstanceUnStartedUsers(String taskId) {
|
|
|
|
|
|
+ public Set<String> getMultiInstanceTaskUnUsers(String taskId) {
|
|
Task task = taskService.createTaskQuery()
|
|
Task task = taskService.createTaskQuery()
|
|
.taskId(taskId)
|
|
.taskId(taskId)
|
|
.singleResult();
|
|
.singleResult();
|
|
- List<Task> list = taskService.createTaskQuery()
|
|
|
|
|
|
+ if (Objects.isNull(task)) {
|
|
|
|
+ throw new BaseException("任务不存在");
|
|
|
|
+ }
|
|
|
|
+ Set<String> unUsers = new HashSet<>();
|
|
|
|
+ List<ActivityInstance> activityList = runtimeService.createActivityInstanceQuery()
|
|
.processInstanceId(task.getProcessInstanceId())
|
|
.processInstanceId(task.getProcessInstanceId())
|
|
- .taskDefinitionKey(task.getTaskDefinitionKey())
|
|
|
|
|
|
+ .activityId(task.getTaskDefinitionKey())
|
|
.list();
|
|
.list();
|
|
- return list.stream().map(Task::getAssignee).collect(Collectors.toList());
|
|
|
|
|
|
+ for (ActivityInstance activityInstance : activityList) {
|
|
|
|
+ if (Objects.isNull(activityInstance.getEndTime())) {
|
|
|
|
+ unUsers.add(activityInstance.getAssignee());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ String collectionName = String.format("%sCollection", task.getTaskDefinitionKey());
|
|
|
|
+ List<String> assigneeList = runtimeService.getVariable(task.getExecutionId(), collectionName, List.class);
|
|
|
|
+ for (String assignee : assigneeList) {
|
|
|
|
+ if (!unUsers.contains(assignee)) {
|
|
|
|
+ boolean noneMatch = activityList
|
|
|
|
+ .stream()
|
|
|
|
+ .noneMatch(activityInstance -> activityInstance.getAssignee().equals(assignee));
|
|
|
|
+ if (noneMatch) {
|
|
|
|
+ unUsers.add(assignee);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return unUsers;
|
|
}
|
|
}
|
|
}
|
|
}
|