From ef3cbc1c6882786e8218b08be3e52ea44587f03b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 08 十一月 2026 09:45:42 +0800
Subject: [PATCH] feat(hrm): 请假批量导入、加班代申请人、批量排班与节假日区间联动

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index c326a89..8e0ef94 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/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());
     }

--
Gitblit v1.9.3