gaoluyang
4 天以前 ef3cbc1c6882786e8218b08be3e52ea44587f03b
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -325,11 +325,29 @@
    @Override
    public PageResult<HrmEmployeeDO> getEmployeePage(HrmEmployeePageReqVO pageReqVO) {
        if (pageReqVO.getDeptId() != null) {
            // 选中部门时,连带查询其所有子部门的员工(含自身)
            List<DeptRespDTO> childDepts = deptApi.getChildDeptList(pageReqVO.getDeptId());
            Set<Long> deptIds = new LinkedHashSet<>();
            deptIds.add(pageReqVO.getDeptId());
            if (CollUtil.isNotEmpty(childDepts)) {
                childDepts.forEach(dept -> deptIds.add(dept.getId()));
            }
            return employeeMapper.selectPageByDeptIds(pageReqVO, deptIds);
        }
        return employeeMapper.selectPage(pageReqVO);
    }
    @Override
    public List<HrmEmployeeDO> getEmployeeList(Collection<Long> ids) {
        // ids 为 null 时表示查询全部员工(考勤汇总、薪酬核算等批量场景依赖此语义);
        // 显式传入空集合时返回空,避免误查全员
        if (ids == null) {
            return employeeMapper.selectList(null);
        }
        if (ids.isEmpty()) {
            return Collections.emptyList();
        }
        return employeeMapper.selectByIds(ids);
    }
@@ -342,6 +360,14 @@
                .filter(Objects::nonNull)
                .collect(Collectors.toSet());
        Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(deptIds);
        // 填充岗位名称
        Set<Long> postIds = list.stream()
                .map(HrmEmployeeDO::getPostIds)
                .filter(StrUtil::isNotBlank)
                .flatMap(json -> JSONUtil.toList(json, Long.class).stream())
                .collect(Collectors.toSet());
        Map<Long, PostRespDTO> postMap = CollUtil.isEmpty(postIds)
                ? Collections.emptyMap() : postApi.getPostMap(postIds);
        return list.stream().map(emp -> {
            HrmEmployeeSimpleRespVO vo = new HrmEmployeeSimpleRespVO();
            vo.setId(emp.getId());
@@ -351,6 +377,12 @@
            if (emp.getDeptId() != null && deptMap.containsKey(emp.getDeptId())) {
                vo.setDeptName(deptMap.get(emp.getDeptId()).getName());
            }
            if (StrUtil.isNotBlank(emp.getPostIds())) {
                vo.setPostName(JSONUtil.toList(emp.getPostIds(), Long.class).stream()
                        .filter(postMap::containsKey)
                        .map(id -> postMap.get(id).getName())
                        .collect(Collectors.joining(",")));
            }
            return vo;
        }).collect(Collectors.toList());
    }