2 天以前 5f73eb1fb9d04040fe6ba377d5ae582024429f2f
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -173,28 +173,7 @@
        //参会人员id(人员台账和用户表通过人员编号和用户名称(登录账号)做匹配)
        if (Integer.valueOf(1).equals(meetApplication.getPublishStatus())) {
            MeetApplication application = meetApplicationMapper.selectById(meetApplication.getId());
            String cleanStr = application.getParticipants()
                    .replaceAll("^\\[|\\]$", "")
                    .trim();
            List<Long> userIds = Arrays.stream(cleanStr.split(","))
                    .map(String::trim)
                    .filter(s -> !s.isEmpty())
                    .map(Long::valueOf)
                    .map(staffId -> {
                        StaffOnJob record = staffOnJobMapper.selectById(staffId);
                        if (record == null) {
                            return null;
                        }
                        return userMapper.selectOne(
                                Wrappers.<SysUser>lambdaQuery()
                                        .eq(SysUser::getUserName, record.getStaffNo())
                        );
                    })
                    .filter(Objects::nonNull)
                    .map(SysUser::getUserId)
                    .collect(Collectors.toList());
            List<Long> userIds = resolveParticipantUserIds(application.getParticipants());
            if (!userIds.isEmpty()) {
                sysNoticeService.simpleNoticeByUser(
@@ -209,6 +188,44 @@
        }
        return R.ok();
    }
    // 参会人员台账id -> 登录用户id;同一登录账号在 sys_user 存在多条历史记录时,按未删除优先取一条,避免 selectOne 抛 TooManyResultsException
    private List<Long> resolveParticipantUserIds(String participants) {
        if (StrUtil.isBlank(participants)) {
            return Collections.emptyList();
        }
        String cleanStr = participants.replaceAll("^\\[|\\]$", "").trim();
        if (cleanStr.isEmpty()) {
            return Collections.emptyList();
        }
        List<Long> staffIds = Arrays.stream(cleanStr.split(","))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .map(Long::valueOf)
                .collect(Collectors.toList());
        if (staffIds.isEmpty()) {
            return Collections.emptyList();
        }
        List<String> loginNames = staffOnJobMapper.selectBatchIds(staffIds).stream()
                .map(StaffOnJob::getStaffNo)
                .filter(StrUtil::isNotBlank)
                .distinct()
                .collect(Collectors.toList());
        if (loginNames.isEmpty()) {
            return Collections.emptyList();
        }
        return userMapper.selectList(Wrappers.<SysUser>lambdaQuery()
                        .in(SysUser::getUserName, loginNames)
                        .orderByAsc(SysUser::getDelFlag)
                        .orderByAsc(SysUser::getUserId))
                .stream()
                .collect(Collectors.toMap(SysUser::getUserName, SysUser::getUserId,
                        (first, ignored) -> first, LinkedHashMap::new))
                .values()
                .stream()
                .distinct()
                .collect(Collectors.toList());
    }
    @Override
@@ -238,9 +255,9 @@
                    .or()
                    .eq(MeetApplication::getApplicationType, "notification");
        });
        if (Objects.nonNull(vo.getMeetingDate())) {
        if (Objects.nonNull(vo.getDate())) {
            alWrapper.and(wrapper -> {
                wrapper.eq(MeetApplication::getMeetingDate, vo.getMeetingDate());
                wrapper.eq(MeetApplication::getMeetingDate, vo.getDate());
            });
        }
        alWrapper.orderByAsc(MeetApplication::getStartTime);