mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	fix 修复 重构导致的问题
This commit is contained in:
		@@ -15,19 +15,9 @@ public interface IFlwTaskAssigneeService {
 | 
			
		||||
     * 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表
 | 
			
		||||
     * 支持单个标识(例如 "user:123" 或 "456"),格式非法将返回空列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param storageId 包含分配类型和ID的字符串
 | 
			
		||||
     * @param storageIds 包含分配类型和ID的字符串
 | 
			
		||||
     * @return 匹配的用户列表,格式非法返回空列表
 | 
			
		||||
     */
 | 
			
		||||
    List<UserDTO> fetchUsersByStorageId(String storageId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量解析多个存储标识符(storageIds),按类型分类并合并查询用户列表
 | 
			
		||||
     * 输入格式支持多个以逗号分隔的标识(如 "user:123,role:456,789")
 | 
			
		||||
     * 会自动去重返回结果,非法格式的标识将被忽略
 | 
			
		||||
     *
 | 
			
		||||
     * @param storageIds 多个存储标识符字符串(逗号分隔)
 | 
			
		||||
     * @return 合并后的用户列表,去重后返回,非法格式的标识将被跳过
 | 
			
		||||
     */
 | 
			
		||||
    List<UserDTO> fetchUsersByStorageIds(List<String> storageIds);
 | 
			
		||||
    List<UserDTO> fetchUsersByStorageIds(String storageIds);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,11 +72,8 @@ public class FlwCommonServiceImpl implements IFlwCommonService {
 | 
			
		||||
        IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class);
 | 
			
		||||
        Map<String, List<User>> userListMap = StreamUtils.groupByKey(userList, User::getType);
 | 
			
		||||
        for (Map.Entry<String, List<User>> entry : userListMap.entrySet()) {
 | 
			
		||||
            List<String> processedBys = entry.getValue().stream()
 | 
			
		||||
                .map(User::getProcessedBy)
 | 
			
		||||
                .filter(StringUtils::isNotBlank)
 | 
			
		||||
                .distinct()
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
            List<User> entryValue = entry.getValue();
 | 
			
		||||
            String processedBys = StreamUtils.join(entryValue, User::getProcessedBy);
 | 
			
		||||
            // 根据 processedBy 前缀判断处理人类型,分别获取用户列表
 | 
			
		||||
            List<UserDTO> users = taskAssigneeService.fetchUsersByStorageIds(processedBys);
 | 
			
		||||
            // 转换为 FlowUser 并添加到结果集合
 | 
			
		||||
 
 | 
			
		||||
@@ -169,33 +169,16 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
 | 
			
		||||
     * 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表
 | 
			
		||||
     * 支持单个标识(例如 "user:123" 或 "456"),格式非法将返回空列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param storageId 包含分配类型和ID的字符串
 | 
			
		||||
     * @param storageIds 包含分配类型和ID的字符串
 | 
			
		||||
     * @return 匹配的用户列表,格式非法返回空列表
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<UserDTO> fetchUsersByStorageId(String storageId) {
 | 
			
		||||
        Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
 | 
			
		||||
        if (parsed == null) {
 | 
			
		||||
            return List.of();
 | 
			
		||||
        }
 | 
			
		||||
        return this.getUsersByType(parsed.getKey(), Collections.singletonList(parsed.getValue()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量解析多个存储标识符(storageIds),按类型分类并合并查询用户列表
 | 
			
		||||
     * 输入格式支持多个以逗号分隔的标识(如 "user:123,role:456,789")
 | 
			
		||||
     * 会自动去重返回结果,非法格式的标识将被忽略
 | 
			
		||||
     *
 | 
			
		||||
     * @param storageIds 多个存储标识符字符串(逗号分隔)
 | 
			
		||||
     * @return 合并后的用户列表,去重后返回,非法格式的标识将被跳过
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<UserDTO> fetchUsersByStorageIds(List<String> storageIds) {
 | 
			
		||||
        if (CollUtil.isEmpty(storageIds)) {
 | 
			
		||||
    public List<UserDTO> fetchUsersByStorageIds(String storageIds) {
 | 
			
		||||
        if (StringUtils.isEmpty(storageIds)) {
 | 
			
		||||
            return List.of();
 | 
			
		||||
        }
 | 
			
		||||
        Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
 | 
			
		||||
        for (String storageId : storageIds) {
 | 
			
		||||
        for (String storageId : storageIds.split(StringUtils.SEPARATOR)) {
 | 
			
		||||
            Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
 | 
			
		||||
            if (parsed != null) {
 | 
			
		||||
                typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
 | 
			
		||||
 
 | 
			
		||||
@@ -600,7 +600,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
            for (FlowNode flowNode : nextFlowNodes) {
 | 
			
		||||
                buildNextTaskList.stream().filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())).findFirst().ifPresent(t -> {
 | 
			
		||||
                    if (CollUtil.isNotEmpty(t.getPermissionList())) {
 | 
			
		||||
                        List<UserDTO> users = flwTaskAssigneeService.fetchUsersByStorageIds(t.getPermissionList());
 | 
			
		||||
                        List<UserDTO> users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, t.getPermissionList()));
 | 
			
		||||
                        if (CollUtil.isNotEmpty(users)) {
 | 
			
		||||
                            flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId())));
 | 
			
		||||
                        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user