package com.yida.data.attendance.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yida.data.attendance.dto.ListStaffResultDTO;
import com.yida.data.attendance.dto.StasticStaffExcepByDayDTO;
import com.yida.data.attendance.dto.StasticStaffResultDTO;
import com.yida.data.attendance.vo.CountVO;
import com.yida.data.attendance.vo.ListStaffResultPageVO;
import com.yida.data.attendance.vo.StaffDateTimeResultInfo;
import com.yida.data.attendance.vo.StaffTimeResultInfo;
import com.yida.data.attendance.vo.StasticStaffResultByDayVO;
import com.yida.data.attendance.vo.StasticStaffResultByMonthVO;
import com.yida.data.common.core.entity.attendance.EduAttendanceStaffResult;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 教职工考勤-考勤结果 Mapper
 *
 * @author ZYJ
 * @date 2021-09-27 18:56:23
 */
public interface EduAttendanceStaffResultMapper extends BaseMapper<EduAttendanceStaffResult> {


    IPage<StasticStaffResultByDayVO> listStaffResultStasticDayPage(Page page,
        @Param("dto") StasticStaffResultDTO dto,
        @Param("staffIds") List<Long> staffIds);


    List<StasticStaffResultByDayVO> listStaffResultStasticDay(@Param("dto") StasticStaffResultDTO dto,
        @Param("staffIds") List<Long> staffIds);


    IPage<StasticStaffResultByMonthVO> listStaffResultStasticMonthPage(Page page,
        @Param("dto") StasticStaffResultDTO dto,
        @Param("staffIds") List<Long> staffIds);


    List<StasticStaffResultByMonthVO> listStaffResultStasticMonth(@Param("dto") StasticStaffResultDTO dto,
        @Param("staffIds") List<Long> staffIds);

    /**
     * 查询考勤结果列表
     *
     * @param staffId
     * @param date
     * @return
     */
    List<StaffTimeResultInfo> listTimeResult(@Param("staffId") Long staffId, @Param("date") String date);

    /**
     * 查询各天各时段考勤结果
     *
     * @param staffId
     * @param yearMonth
     * @return
     */
    List<StaffDateTimeResultInfo> listDateTimeResult(@Param("staffId") Long staffId, @Param("yearMonth") String yearMonth);

    /**
     * 查询管理范围内各异常类型人数
     *
     * @param dto
     * @return
     */

    CountVO countRangeExcepStaff(@Param("dto") StasticStaffExcepByDayDTO dto);

    /**
     * 分页查询考勤结果列表
     *
     * @param dto
     * @return
     */
    IPage<ListStaffResultPageVO> listResultPage(Page page, @Param("dto") ListStaffResultDTO dto);

    /**
     * 查询未处理结果 status=null
     *
     * @param staffId
     * @return
     */
    List<EduAttendanceStaffResult> findNotResult(@Param("staffId") Long staffId);


}
