package com.bonus.system.att.service;

import com.bonus.common.core.web.domain.AjaxResult;
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 javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 考勤明细-业务层
 * @author zys
 */
public interface AttendanceDetailsService {

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

    /**
     * 获取考勤原始明细列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> selectAttOriginalList(AttDataDetailsBean bean);
    /**
     * 导出考勤原始明细列表
     * @param bean 参数
     * @return list bean
     */
    List<AttDataDetailsBean> exportAttOriginalsList(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(AttMonthReportBean bean);

    /**
     * 导出日报表
     * @param response 响应
     * @param o 对象
     */
    void exportAttDayReportData(HttpServletResponse response, AttDayReportBean o);

    /**
     * 导出月报表
     * @param response 响应
     * @param o 对象
     */
    void exportAttMonthReportData(HttpServletResponse response, AttMonthReportBean o);

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

    List<AttDataDetailsBean> getOutCountList(AttDataDetailsBean bean);

    AjaxResult synchronous(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getAttDayList(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getAttCountList(AttDataDetailsBean bean);

    List<AttDataDetailsBean> getOrgUserOutCountList(AttDataDetailsBean bean);

    List<MapVo> getAttStatusList();

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