gaoluyang
5 天以前 eee03bbfea8b15d1a56ab63bd09a35c6c861c4cb
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.hrm.dal.mysql.employee;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
@@ -11,7 +12,9 @@
import java.time.LocalDate;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 员工信息 Mapper
@@ -58,6 +61,27 @@
        return selectList(HrmEmployeeDO::getEmployeeStatus, employeeStatus);
    }
    /**
     * 按岗位编号集合查询在职/试用员工
     * <p>
     * 员工表的 post_ids 存的是 JSON 数组(如 [17, 18]),使用 JSON_CONTAINS 精确匹配岗位
     *
     * @param postIds 岗位编号集合
     * @return 员工列表
     */
    default List<HrmEmployeeDO> selectListByPostIds(Collection<Long> postIds) {
        if (CollUtil.isEmpty(postIds)) {
            return Collections.emptyList();
        }
        String postCondition = postIds.stream()
                .map(postId -> "JSON_CONTAINS(post_ids, '[" + postId + "]')")
                .collect(Collectors.joining(" OR "));
        return selectList(new LambdaQueryWrapperX<HrmEmployeeDO>()
                .in(HrmEmployeeDO::getEmployeeStatus, List.of(1, 2))
                .apply("(" + postCondition + ")")
                .orderByAsc(HrmEmployeeDO::getName));
    }
    default PageResult<HrmEmployeeDO> selectPage(HrmEmployeePageReqVO reqVO) {
        LambdaQueryWrapperX<HrmEmployeeDO> wrapper = new LambdaQueryWrapperX<HrmEmployeeDO>()
                .likeIfPresent(HrmEmployeeDO::getEmployeeNo, reqVO.getEmployeeNo())