package com.bonus.system.att.service;

import com.bonus.system.api.domain.MapVo;
import com.bonus.system.att.entity.OrgChangeBean;

import java.util.List;

/**
 * 考勤计算
 * @author fly
 */
public interface AttCalService {
    void getAttendanceData(String pushDate, int pushType);

    /**
     * 人员考勤模版数据（默认是未打卡）
     * 每天早上0点30执行一次
     * @param pushDate 时间
     * @param pushType 1:自动推送（当天） 2:手动（历史）
     */
    void insertAttTempData(String pushDate, int pushType);

    /**
     *  待考勤人员列表
     * @param pushDate
     */
    void insertAttDateHistory(String pushDate);

    /**
     * 考勤数据应用（步骤一：考勤数据更新）
     * 建议一小时一次
     * @param pushDate 时间
     * @param pushType 1:自动推送（当天） 2:手动（历史）
     */
    void updateAttData(String pushDate, int pushType);

    /**
     * 考勤数据应用（步骤二：旷工状态更新）
     * 每天12点将当天未打卡考勤人员上班置为旷工
     * 每天晚上22点，将下班未打卡置为旷工
     * @param pushDate 时间
     * @param pushType 1:自动推送（当天） 2:手动（历史）
     */
    void updateAbsenteeismData(String pushDate, int pushType);
    /**
     * 请假数据应用（步骤一：法假数据更新）
     * 法定节假日不会随时间变化，一天执行一次就可以了
     * @param pushDate 时间
     */
    void updateLegalHolidayData(String pushDate);
    /**
     * 请假数据应用（步骤二：请假数据更新）
     * 法定节假日不会随时间变化，一天执行一次就可以了
     * @param pushDate 时间
     */
    void updateLeaveData(String pushDate);
    /**
     * 报表数据生成（日报表）
     * 每次更新数据都要执行(跟随)
     * @param pushDate 时间
     */
    void insertDayReportData(String pushDate);

    /**
     * 月报表数据生成（人员对应出月出勤）
     * 月初生成一次
     * @param pushDate 时间
     */
    void insertMonthReportTempData(String pushDate);

    /**
     * 月报表数据更新（人员对应出月出勤）
     * 每次更新完数据要执行(跟随)
     * @param pushDate 时间
     */
    void updateMonthReportData(String pushDate);
}
