update 优化工作流用户查询构建

This commit is contained in:
gssong 2025-04-12 17:22:44 +08:00
parent 5c9721cfac
commit 878cd7e9f0

View File

@ -36,10 +36,7 @@ import org.dromara.workflow.service.IFlwTaskAssigneeService;
import org.dromara.workflow.service.IFlwTaskService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
@ -83,16 +80,19 @@ public class FlwCommonServiceImpl implements IFlwCommonService {
Set<User> list = new HashSet<>();
Set<String> processedBySet = new HashSet<>();
IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class);
for (User user : userList) {
Map<String, List<User>> userListMap = StreamUtils.groupByKey(userList, User::getType);
for (Map.Entry<String, List<User>> entry : userListMap.entrySet()) {
List<User> entryValue = entry.getValue();
String processedBys = StreamUtils.join(entryValue, User::getProcessedBy);
// 根据 processedBy 前缀判断处理人类型分别获取用户列表
List<UserDTO> users = taskAssigneeService.fetchUsersByStorageId(user.getProcessedBy());
List<UserDTO> users = taskAssigneeService.fetchUsersByStorageId(processedBys);
// 转换为 FlowUser 并添加到结果集合
if (CollUtil.isNotEmpty(users)) {
users.forEach(dto -> {
String processedBy = String.valueOf(dto.getUserId());
if (!processedBySet.contains(processedBy)) {
FlowUser flowUser = new FlowUser();
flowUser.setType(user.getType());
flowUser.setType(entry.getKey());
flowUser.setProcessedBy(processedBy);
flowUser.setAssociated(taskId);
list.add(flowUser);