package com.yida.data.attendance.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.attendance.dto.ListStaffResultDTO;
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.common.core.entity.attendance.EduAttendanceStaffResult;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

/**
 * 教职工考勤-考勤结果 Service接口
 *
 * @author ZYJ
 * @date 2021-09-27 18:56:23
 */
public interface EduAttendanceStaffResultService extends IService<EduAttendanceStaffResult> {

    /**
     * 查询各时段考勤结果
     *
     * @param staffId
     * @param date
     * @return
     */
    List<StaffTimeResultInfo> listTimeResult(Long staffId, String date);

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

    /**
     * 分页查询教职工考勤记录
     *
     * @param dto
     * @return
     */
    IPage<ListStaffResultPageVO> listResultPage(ListStaffResultDTO dto);

    /**
     * 未处理的结果
     *
     * @param staffId
     * @return
     */
    List<EduAttendanceStaffResult> findNotResult(Long staffId);

    /**
     * 生成教师考勤结果
     */
    void saveStaffResult();

    /**
     * 查询上一天最后的结果
     *
     * @param staffId
     * @param startTime
     * @param endTime
     * @param plusDays
     * @return
     */
    EduAttendanceStaffResult findLastResult(Long staffId, LocalTime startTime, LocalTime endTime, LocalDate plusDays);
}
