package com.template.services;

import com.template.model.pojo.SmartAttendance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.template.model.pojo.SmartVisitor;
import com.template.model.result.PageUtils;
import com.template.model.vo.*;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 楼栋表 服务类
 * </p>
 *
 * @author ceshi
 * @since 2023-12-25
 */
public interface SmartAttendanceService extends IService<SmartAttendance> {
    List<SmartAttendance> queryAttendances(String startDate,String endDate);

    List<SmartAttendance> queryExistAttendances(String startDate, String endDate);

    List<SmartAttendance> queryAttendancesNoleave(String startDate, String endDate);

    boolean insertAttendanceBatch(List<SmartAttendance> attendances);

    List<SmartAttendance> queryAttendanceList(Date startMonth, Date endMonth);

    List<SmartAttendance> getHistoricalAttendance(Integer userId,Integer status,Date startTime, Date endTime);

    List<Integer> getGroup();

    List<SmartAttendance> track(String startTime, String endTime, int userId);

    PageUtils<AskForLeaveVo> askForLeavePage(int currentPage, int pageCount,String name, String cardNo, String startTime, String endTime,String ifVerification,String classId);

    PageUtils<SmartAttendanceVo> queryPage(int currentPage, int pageCount, Integer gradeId, Integer classId, String status, String studentNo, String name, String startTime, String endTime);

    List<SmartAttendance> duplicatesList(Date startTime, Date endTime, Date initiateTime);

    List<SmartAttendanceVo> queryExpor(Integer gradeId, Integer classId, String status, String studentNo, String name, String startTime, String endTime);

    PageUtils<AskForLeaveScreenVo> askForLeaveScreenPage(int currentPage, int pageCount, String cardNo, String ifVerification);

    Integer getStudentHistoricalAttendance(Integer status, Date startTime, Date endTime);

    List<ClasAttendanceVo> getClassHistoricalAttendance(Date startTime, Date endTime, Integer id);

    Integer getClassAckHistoricalAttendance(int i, Date startTime, Date endTime, Integer id);

    List<AckDetailVo> ackDetail(Integer userId, LocalDateTime startTime, LocalDateTime endTime);

    Integer deleteDatasByids(List<Integer> ids);

    List<SmartAttendance> toDateList(LocalDateTime start, LocalDateTime end);

    List<SmartAttendance> toDateAndPlacelist(LocalDateTime startTime, LocalDateTime endTime, Integer classId);
}
