package com.bonus.system.att.dao;

import com.bonus.system.api.domain.MapVo;
import com.bonus.system.att.entity.AttClockingRecordVo;
import com.bonus.system.att.entity.AttDataDetailsBean;
import com.bonus.system.att.entity.AttDayReportBean;
import com.bonus.system.att.entity.AttMonthReportBean;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 考勤明细-数据访问层
 * @author zys
 */
@Repository("attendanceDetailsDao")
public interface AttendanceDetailsDao {

    /**
     * 获取考勤统计列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> selectAttDetailsList(@Param("bean")AttDataDetailsBean bean);
    /**
     * 导出考勤统计列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> exportAttDetailsList(@Param("bean") AttDataDetailsBean bean);

    /**
     * 获取考勤原始明细列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> selectAttOriginalList(@Param("bean") AttDataDetailsBean bean);

    /**
     * 导出考勤原始明细列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> exportAttOriginalsList(@Param("bean") AttDataDetailsBean bean);

    /**
     * 修改考勤数据
     * @param list list bean
     * @return 1|0
     */
    int updateAttDetailsData(List<AttDataDetailsBean> list);

    /**
     * 审核考勤
     * @param list list bean
     * @return
     */
    int updateAttDetailsDataExamine(List<AttDataDetailsBean> list);

    /**
     * 获取考勤修改列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> selectAttUpdateList(AttDataDetailsBean bean);

    /**
     * 获取日报表
     * @param bean 参数
     * @return list bean
     */
    List<AttDayReportBean> getAttDayReportList(AttDayReportBean bean);

    /**
     * 获取月报表
     * @param bean 参数
     * @return list bean
     */
    List<AttMonthReportBean> getAttMonthReportList(@Param("bean") AttMonthReportBean bean);

    /**
     * 获取日报表-详细记录
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> getAttDayReportDetailsList(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getOutCountList(@Param("bean") AttDataDetailsBean bean);

    List<AttDataDetailsBean> getAttDayList(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getAttDayReportDetailsListData(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getAttCountList(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getOrgUserOutCountList(@Param("bean") AttDataDetailsBean bean);

    List<MapVo> getAttStatusList();

    /**
     * 查询打卡记录
     * @param c
     * @return int
     * @author cwchen
     * @date 2025/2/18 14:32
     */
    int getClockingRecordNum(@Param("c") AttMonthReportBean c);

    /**
     * 考勤报表->月报表->打卡记录
     * @param bean
     * @return List<AttClockingRecordVo>
     * @author cwchen
     * @date 2025/2/18 15:59
     */
    List<AttClockingRecordVo> getClockingRecordListByUserId(AttMonthReportBean bean);
}
