package jnpf.personnels.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fantaibao.permission.annotation.DataScope;
import jnpf.model.cultivate.po.exam.FtbCultivateExam;
import jnpf.model.personnels.dto.staff.roster.FtbPersonnelsStaffRosterDto;
import jnpf.model.personnels.po.FtbPersonnelsStaffRoster;
import jnpf.model.personnels.req.roster.AppStaffRosterListReq;
import jnpf.model.personnels.req.roster.StaffRosterListReq;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FtbPersonnelsStaffRosterMapper extends BaseMapper<FtbPersonnelsStaffRoster> {
    Page<FtbPersonnelsStaffRosterDto> pagingQuery(@Param("page") Page<FtbCultivateExam> page
            , @Param("params") StaffRosterListReq params, @Param("userIds") List<String> userIds);

    Page<FtbPersonnelsStaffRosterDto> pagingAppQuery(@Param("page") Page<FtbCultivateExam> page
            , @Param("params") AppStaffRosterListReq params, @Param("userIds") List<String> userIds);

    Page<FtbPersonnelsStaffRosterDto> pagingQueryNewWithTurnoverManagerList(@Param("params") StaffRosterListReq params,
                                                                            @Param("userIds") List<String> userIds,
                                                                            @Param("page") Page<FtbPersonnelsStaffRosterDto> page);

    List<FtbPersonnelsStaffRosterDto> queryNewWithTurnoverManagerList(@Param("params") StaffRosterListReq params,
                                                                            @Param("userIds") List<String> userIds);

    String canUpdateRealName();

    List<String> queryBirthday(@Param("startBirthdayTime") String startBirthdayTime,
                               @Param("endBirthdayTime") String endBirthdayTime);

    /**
     * 在指定时间段内在花名册已完成入职的人数（入职办理：审批通过或无需审批直接办理；或花名册导入无对应已到岗入职记录）
     * @param startTime 开始时间（格式：yyyy-MM-dd），为空时默认本月第一天
     * @param endTime 结束时间（格式：yyyy-MM-dd），为空时默认本月最后一天
     */
    @DataScope(tableAlias = "r")
    Long getCountOfOnboardedInPeriod(@Param("startTime") String startTime, @Param("endTime") String endTime);

}