package com.ruoyi.info.collection.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.info.collection.domain.CcdiBaseStaff;
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffQueryDTO;
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffOptionVO;
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工信息 数据层
 *
 * @author ruoyi
 * @date 2026-01-28
 */
public interface CcdiBaseStaffMapper extends BaseMapper<CcdiBaseStaff> {

    /**
     * 分页查询员工列表（包含部门名称）
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 员工VO分页结果
     */
    Page<CcdiBaseStaffVO> selectBaseStaffPageWithDept(@Param("page") Page<CcdiBaseStaffVO> page,
                                                    @Param("query") CcdiBaseStaffQueryDTO queryDTO);

    /**
     * 查询员工详情（包含部门名称）
     *
     * @param staffId 员工ID
     * @return 员工详情
     */
    CcdiBaseStaffVO selectBaseStaffByIdWithDept(@Param("staffId") Long staffId);

    int insertOrUpdateBatch(@Param("list") List<CcdiBaseStaff> list);

    /**
     * 批量插入员工信息
     *
     * @param list 员工信息列表
     * @return 影响行数
     */
    int insertBatch(@Param("list") List<CcdiBaseStaff> list);

    /**
     * 查询员工选项（用于下拉选择框）
     * <p>支持按员工ID或姓名模糊搜索，只返回在职员工</p>
     *
     * @param query 搜索关键词（员工ID或姓名），可为空
     * @return 员工选项列表，最多返回100条
     */
    List<CcdiBaseStaffOptionVO> selectStaffOptions(@Param("query") String query);
}
