package com.ruoyi.info.collection.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentAddDTO;
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentEditDTO;
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentQueryDTO;
import com.ruoyi.info.collection.domain.excel.CcdiStaffRecruitmentExcel;
import com.ruoyi.info.collection.domain.excel.CcdiStaffRecruitmentWorkExcel;
import com.ruoyi.info.collection.domain.vo.CcdiStaffRecruitmentVO;

import java.util.List;

/**
 * 员工招聘信息 服务层
 *
 * @author ruoyi
 * @date 2025-02-05
 */
public interface ICcdiStaffRecruitmentService {

    /**
     * 查询招聘信息列表
     *
     * @param queryDTO 查询条件
     * @return 招聘信息VO集合
     */
    List<CcdiStaffRecruitmentVO> selectRecruitmentList(CcdiStaffRecruitmentQueryDTO queryDTO);

    /**
     * 分页查询招聘信息列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 招聘信息VO分页结果
     */
    Page<CcdiStaffRecruitmentVO> selectRecruitmentPage(Page<CcdiStaffRecruitmentVO> page, CcdiStaffRecruitmentQueryDTO queryDTO);

    /**
     * 查询招聘信息列表（用于导出）
     *
     * @param queryDTO 查询条件
     * @return 招聘信息Excel实体集合
     */
    List<CcdiStaffRecruitmentExcel> selectRecruitmentListForExport(CcdiStaffRecruitmentQueryDTO queryDTO);

    /**
     * 查询招聘信息详情
     *
     * @param id 主键ID
     * @return 招聘信息VO
     */
    CcdiStaffRecruitmentVO selectRecruitmentById(Long id);

    /**
     * 新增招聘信息
     *
     * @param addDTO 新增DTO
     * @return 结果
     */
    int insertRecruitment(CcdiStaffRecruitmentAddDTO addDTO);

    /**
     * 修改招聘信息
     *
     * @param editDTO 编辑DTO
     * @return 结果
     */
    int updateRecruitment(CcdiStaffRecruitmentEditDTO editDTO);

    /**
     * 批量删除招聘信息
     *
     * @param ids 需要删除的招聘信息ID
     * @return 结果
     */
    int deleteRecruitmentByIds(Long[] ids);

    /**
     * 导入招聘信息数据
     *
     * @param excelList Excel实体列表
     * @return 结果
     */
    String importRecruitment(List<CcdiStaffRecruitmentExcel> recruitmentList,
                             List<CcdiStaffRecruitmentWorkExcel> workList);
}
