package jnpf.personnels.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.base.vo.PageListVO;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.po.FtbCultivateFile;
import jnpf.model.personnels.dto.uchisuike.DeleteRecommendedPersonnelDTO;
import jnpf.model.personnels.dto.uchisuike.FtbRecommendationPoolOrgDTO;
import jnpf.model.personnels.dto.uchisuike.FtbinternalRecommendationPoolListDTO;
import jnpf.model.personnels.dto.uchisuike.app.FtbRecommendationInvitationAppDTO;
import jnpf.model.personnels.po.FtbPersonnelsUchisuikePond;
import jnpf.model.personnels.vo.uchisuike.FtbinternalRecommendationPoolVO;

import java.util.List;

public interface FtbPersonnelsUchisuikePondService extends IService<FtbPersonnelsUchisuikePond> {
    /**
     * 根据ID查询推荐列表，以查看简历
     *
     * @param id 培养文件的ID
     */
    List<FtbCultivateFile> viewResume(String id);

    /**
     * 删除推荐人员
     *
     * @param dto 包含要删除的推荐人员信息的数据传输对象
     */
    void deleteRecommendedPersonnel(DeleteRecommendedPersonnelDTO dto);

    /**
     * 查询内部推荐详情
     *
     * @param id 内部推荐的ID
     * @return 返回内部推荐的详细信息对象
     */
    FtbinternalRecommendationPoolVO internalRecommendationDetails(String id);

    /**
     * 查询内推列表
     *
     * @param cultivatePage                        分页查询参数
     * @param ftbinternalRecommendationPoolListDTO 查询条件参数
     * @return 返回分页的内推列表
     */
    PageListVO<FtbinternalRecommendationPoolVO> internalRecommendationPoolListQuery(CultivatePage cultivatePage, FtbinternalRecommendationPoolListDTO ftbinternalRecommendationPoolListDTO);

    /**
     * 添加内部推荐邀请
     *
     * @param ftbRecommendationInvitationAppDTO 包含推荐邀请信息的数据传输对象
     */
    void internalRecommendationInvitationAdded(FtbRecommendationInvitationAppDTO ftbRecommendationInvitationAppDTO);

    /**
     * 更新工作状态
     *
     * @param phone 手机号
     * @param state 状态 301、预入职  302、试用 303、正式  304、待离职  305 离职
     */
    void updateWorkStatus(String state, String phone);

    /**
     * 内推池组织变更
     */
    void referralPoolOrganizationChange(FtbRecommendationPoolOrgDTO ftbRecommendationPoolOrgDTO);

    /**
     * 内推池组织查询
     */
    List<String> internalReferralPoolOrganizationQuery();
}
