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/controller/admin/salary/HrmSalaryCalculationController.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java
index b90e2bc..59a6c5d 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java
@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.hrm.controller.admin.salary;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -15,7 +17,9 @@
 import cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeService;
 import cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.PostApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -45,6 +49,8 @@
     private HrmEmployeeService employeeService;
     @Resource
     private DeptApi deptApi;
+    @Resource
+    private PostApi postApi;
 
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱钖叕鏍哥畻鍒嗛〉")
@@ -84,11 +90,22 @@
                 .collect(Collectors.toSet());
         Map<Long, DeptRespDTO> deptMap = CollUtil.isEmpty(deptIds) ? Collections.emptyMap() : deptApi.getDeptMap(deptIds);
 
+        // 鎵归噺鑾峰彇宀椾綅淇℃伅锛堝憳宸ヨ〃浠� JSON 鏁扮粍瀛楃涓蹭繚瀛樺矖浣� ID锛�
+        Set<Long> postIds = new HashSet<>();
+        for (HrmEmployeeDO employee : employeeMap.values()) {
+            if (StrUtil.isNotBlank(employee.getPostIds())) {
+                postIds.addAll(JSONUtil.toList(employee.getPostIds(), Long.class));
+            }
+        }
+        Map<Long, PostRespDTO> postMap = CollUtil.isEmpty(postIds) ? Collections.emptyMap() : postApi.getPostMap(postIds);
+
         // 濉厖淇℃伅
         for (HrmSalaryCalculationRespVO respVO : respList) {
             HrmEmployeeDO employee = employeeMap.get(respVO.getUserId());
             if (employee != null) {
                 respVO.setUserName(employee.getName());
+                respVO.setHireDate(employee.getHireDate());
+                respVO.setPostName(resolvePostName(employee, postMap));
             }
             DeptRespDTO dept = deptMap.get(respVO.getDeptId());
             if (dept != null) {
@@ -97,6 +114,19 @@
         }
     }
 
+    /**
+     * 瑙f瀽鍛樺伐宀椾綅鍚嶇О锛堝涓矖浣嶇敤閫楀彿杩炴帴锛�
+     */
+    private String resolvePostName(HrmEmployeeDO employee, Map<Long, PostRespDTO> postMap) {
+        if (StrUtil.isBlank(employee.getPostIds()) || CollUtil.isEmpty(postMap)) {
+            return null;
+        }
+        return JSONUtil.toList(employee.getPostIds(), Long.class).stream()
+                .filter(postMap::containsKey)
+                .map(id -> postMap.get(id).getName())
+                .collect(Collectors.joining(","));
+    }
+
     @GetMapping("/get")
     @Operation(summary = "鑾峰緱钖叕鏍哥畻")
     @Parameter(name = "id", description = "鏍哥畻ID", required = true)

--
Gitblit v1.9.3