package com.ruoyi.ccdi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeAddDTO;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeEditDTO;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeQueryDTO;
import com.ruoyi.ccdi.domain.excel.CcdiEmployeeExcel;
import com.ruoyi.ccdi.domain.vo.CcdiEmployeeVO;

import java.util.List;

/**
 * 员工信息 服务层
 *
 * @author ruoyi
 * @date 2026-01-28
 */
public interface ICcdiEmployeeService {

    /**
     * 查询员工列表
     *
     * @param queryDTO 查询条件
     * @return 员工VO集合
     */
    List<CcdiEmployeeVO> selectEmployeeList(CcdiEmployeeQueryDTO queryDTO);

    /**
     * 分页查询员工列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 员工VO分页结果
     */
    Page<CcdiEmployeeVO> selectEmployeePage(Page<CcdiEmployeeVO> page, CcdiEmployeeQueryDTO queryDTO);

    /**
     * 查询员工列表（用于导出）
     *
     * @param queryDTO 查询条件
     * @return 员工Excel实体集合
     */
    List<CcdiEmployeeExcel> selectEmployeeListForExport(CcdiEmployeeQueryDTO queryDTO);

    /**
     * 查询员工详情
     *
     * @param employeeId 员工ID
     * @return 员工VO
     */
    CcdiEmployeeVO selectEmployeeById(Long employeeId);

    /**
     * 新增员工
     *
     * @param addDTO 新增DTO
     * @return 结果
     */
    int insertEmployee(CcdiEmployeeAddDTO addDTO);

    /**
     * 修改员工
     *
     * @param editDTO 编辑DTO
     * @return 结果
     */
    int updateEmployee(CcdiEmployeeEditDTO editDTO);

    /**
     * 批量删除员工
     *
     * @param employeeIds 需要删除的员工ID
     * @return 结果
     */
    int deleteEmployeeByIds(Long[] employeeIds);

    /**
     * 导入员工数据
     *
     * @param excelList     Excel实体列表
     * @param isUpdateSupport 是否更新支持
     * @return 结果
     */
    String importEmployee(List<CcdiEmployeeExcel> excelList, Boolean isUpdateSupport);
}
