package jnpf.personnels.service;

import jnpf.base.vo.PageListVO;
import jnpf.model.personnels.dto.audit.FtbPersonnelsAuditDto;
import jnpf.model.personnels.dto.emp.FtbEmpAddNewDTO;
import jnpf.model.personnels.dto.emp.FtbEmpConfirmDTO;
import jnpf.model.personnels.dto.emp.FtbEmpEntryDTO;
import jnpf.model.personnels.dto.emp.FtbEmpQueryDTO;
import jnpf.model.personnels.dto.oa.RequestForOA;
import jnpf.model.personnels.dto.staff.roster.FtbPersonnelsStaffRosterDto;
import jnpf.model.personnels.dto.staff.roster.WorkerGroupDataDto;
import jnpf.model.personnels.vo.emp.FtbEmpAddNewVO;
import jnpf.model.personnels.vo.emp.FtbEmpConfirmVO;
import jnpf.model.personnels.vo.emp.FtbEmpEntryVO;
import jnpf.model.personnels.vo.emp.FtbEmpResultVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @Author: peng.hao
 * @create: 2025/4/7
 */
public interface FtbPersonnelsEmEntryService {

    PageListVO<FtbEmpEntryVO> pageLists(FtbEmpEntryDTO empEntryDTO, String app);

    FtbEmpResultVO addNewEmp(FtbEmpAddNewDTO dto);

    String  promoteOnboardingManagement(FtbEmpAddNewDTO dto, String tenantId, String moduleId);

    void terminateOnboarding(String id);

    void deleteEmployeeOnboardingRecords(String id);

    void handleJoinJob(FtbEmpConfirmDTO ftbEmpConfirmDTO);

    void handleJoinJobOA(FtbEmpConfirmDTO ftbEmpConfirmDTO);

    FtbEmpConfirmVO onboardingDetails(String id);

    void onboardingApprovals(FtbPersonnelsAuditDto personnelsSalaryAuditDto);

    void onboardingWithdrawal(FtbPersonnelsAuditDto personnelsAuditDto);

    FtbEmpAddNewVO queryNewEmp(String id);

    List<WorkerGroupDataDto> queryCrewsWithEntry(RequestForOA request);

    List<FtbEmpEntryVO> onboardingList(String phone);

    void updatePhoneByUserId(String userId, String phone);

    List<FtbPersonnelsStaffRosterDto> searchPhoneName(FtbEmpQueryDTO keyword);

    void onboardingListExport(FtbEmpEntryDTO req, HttpServletResponse response) throws IOException;
}
