gaoluyang
18 小时以前 ef3cbc1c6882786e8218b08be3e52ea44587f03b
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 @@
        }
    }
    /**
     * 解析员工岗位名称(多个岗位用逗号连接)
     */
    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)