package com.mortals.xhx.module.attendance.model;

import com.mortals.framework.annotation.Excel;
import com.mortals.xhx.module.attendance.model.vo.AttendanceStatVo;

import java.math.BigDecimal;
/**
 * 考勤汇总信息实体对象
 *
 * @author zxfei
 * @date 2023-04-14
 */

public class AttendanceStatEntity extends AttendanceStatVo {
    private static final long serialVersionUID = 1L;

    /**
     * 窗口类别
     */
    @Excel(name = "窗口类别")
    private String windowCategory;
    /**
     * 员工ID
     */
    private Long staffId;
    /**
     * 员工姓名
     */
    private String staffName;
    /**
     * 所属部门
     */
    private Long deptId;
    /**
     * 所属部门名称
     */
    private String deptName;
    /**
     * 回单位（天）
     */
    @Excel(name = "回单位")
    private BigDecimal backToUnit;
    /**
     * 因公请假（天）
     */
    @Excel(name = "因公请假")
    private BigDecimal onDutyLeave;
    /**
     * 外出勘验（天）
     */
    @Excel(name = "外出勘验")
    private BigDecimal outOfOffice;
    /**
     * 值班补班（天）
     */
    @Excel(name = "值班补班")
    private BigDecimal shiftCompensation;
    /**
     * 体检（天）
     */
    @Excel(name = "体检")
    private BigDecimal physicalExamination;
    /**
     * 隔离（天）
     */
    @Excel(name = "隔离")
    private BigDecimal quarantine;
    /**
     * 因公外出（与窗口工作无关/天）
     */
    @Excel(name = "因公外出")
    private BigDecimal businessTrip;
    /**
     * 公休（天）
     */
    @Excel(name = "公休")
    private BigDecimal publicHoliday;
    /**
     * 病假（天）
     */
    @Excel(name = "病假")
    private BigDecimal sickLeave;
    /**
     * 丧假（天）
     */
    @Excel(name = "丧假")
    private BigDecimal funeralLeave;
    /**
     * 婚假（天）
     */
    @Excel(name = "婚假")
    private BigDecimal marriageLeave;
    /**
     * 育儿假（天）
     */
    @Excel(name = "育儿假")
    private BigDecimal childRearingLeave;
    /**
     * 产假（天））
     */
    @Excel(name = "产假")
    private BigDecimal maternityLeave;
    /**
     * 调回单位（或离职/天）
     */
    @Excel(name = "调回单位")
    private BigDecimal transferBack;
    /**
     * 探亲假（天）
     */
    @Excel(name = "探亲假")
    private BigDecimal homeLeave;
    /**
     * 事假（天）
     */
    @Excel(name = "事假")
    private BigDecimal personalLeave;
    /**
     * 考勤汇总-旷工（天）
     */
    @Excel(name = "考勤汇总-旷工")
    private BigDecimal absenteeismDays;
    /**
     * 考勤汇总-其他（天）
     */
    @Excel(name = "考勤汇总-其他")
    private BigDecimal otherDays;
    /**
     * 考勤汇总-出勤率（%）
     */
    @Excel(name = "考勤汇总-出勤率")
    private BigDecimal attendanceRate;
    /**
     * 考勤汇总-未按规定打卡（含忘记打卡）
     */
    @Excel(name = "考勤汇总-未按规定打卡")
    private BigDecimal nonCompliancePunch;
    /**
     * 考勤汇总-迟到（次）
     */
    @Excel(name = "考勤汇总-迟到")
    private Integer lateTimes;
    /**
     * 考勤汇总-上网耍手机（次）
     */
    @Excel(name = "考勤汇总-上网耍手机")
    private Integer surfingMobileTimes;
    /**
     * 考勤汇总-溜班（次）
     */
    @Excel(name = "考勤汇总-溜班")
    private Integer overtimeTimes;
    /**
     * 考勤汇总-空岗
     */
    @Excel(name = "考勤汇总-空岗")
    private BigDecimal vacancy;
    /**
     * 考勤汇总-未规范着装（次）
     */
    @Excel(name = "考勤汇总-未规范着装")
    private Integer nonStandardDressTimes;
    /**
     * 考勤汇总-无故缺席会议
     */
    @Excel(name = "考勤汇总-无故缺席会议")
    private BigDecimal unexcusedMeetingAbsence;
    /**
     * 考勤汇总-会议早退
     */
    @Excel(name = "考勤汇总-会议早退")
    private BigDecimal earlyLeaveMeeting;
    /**
     * 年
     */
    private Integer year;
    /**
     * 月
     */
    private Integer month;
    /**
     * 日
     */
    private Integer day;
    /**
     * 备注
     */
    private String remark;
    /**
     * 哺乳假（天）
     */
    @Excel(name = "哺乳假")
    private BigDecimal breastfeedingLeaveDays;
    /**
     * 例假（天）
     */
    @Excel(name = "例假")
    private BigDecimal menstrualLeaveDays;
    /**
     * 年假（天）
     */
    @Excel(name = "年假")
    private BigDecimal annualLeaveDays;
    /**
     * 调休（天）
     */
    @Excel(name = "调休")
    private BigDecimal compensatedLeaveDays;
    /**
     * 陪产假（天）
     */
    @Excel(name = "陪产假")
    private BigDecimal paternityLeaveDays;



    public AttendanceStatEntity(){}
    /**
     * 获取 窗口类别
     * @return String
     */
    public String getWindowCategory(){
        return windowCategory;
    }
    /**
     * 设置 窗口类别
     * @param windowCategory
     */
    public void setWindowCategory(String windowCategory){
        this.windowCategory = windowCategory;
    }
    /**
     * 获取 员工ID
     * @return Long
     */
    public Long getStaffId(){
        return staffId;
    }
    /**
     * 设置 员工ID
     * @param staffId
     */
    public void setStaffId(Long staffId){
        this.staffId = staffId;
    }
    /**
     * 获取 员工姓名
     * @return String
     */
    public String getStaffName(){
        return staffName;
    }
    /**
     * 设置 员工姓名
     * @param staffName
     */
    public void setStaffName(String staffName){
        this.staffName = staffName;
    }
    /**
     * 获取 所属部门
     * @return Long
     */
    public Long getDeptId(){
        return deptId;
    }
    /**
     * 设置 所属部门
     * @param deptId
     */
    public void setDeptId(Long deptId){
        this.deptId = deptId;
    }
    /**
     * 获取 所属部门名称
     * @return String
     */
    public String getDeptName(){
        return deptName;
    }
    /**
     * 设置 所属部门名称
     * @param deptName
     */
    public void setDeptName(String deptName){
        this.deptName = deptName;
    }
    /**
     * 获取 回单位（天）
     * @return BigDecimal
     */
    public BigDecimal getBackToUnit(){
        return backToUnit;
    }
    /**
     * 设置 回单位（天）
     * @param backToUnit
     */
    public void setBackToUnit(BigDecimal backToUnit){
        this.backToUnit = backToUnit;
    }
    /**
     * 获取 因公请假（天）
     * @return BigDecimal
     */
    public BigDecimal getOnDutyLeave(){
        return onDutyLeave;
    }
    /**
     * 设置 因公请假（天）
     * @param onDutyLeave
     */
    public void setOnDutyLeave(BigDecimal onDutyLeave){
        this.onDutyLeave = onDutyLeave;
    }
    /**
     * 获取 外出勘验（天）
     * @return BigDecimal
     */
    public BigDecimal getOutOfOffice(){
        return outOfOffice;
    }
    /**
     * 设置 外出勘验（天）
     * @param outOfOffice
     */
    public void setOutOfOffice(BigDecimal outOfOffice){
        this.outOfOffice = outOfOffice;
    }
    /**
     * 获取 值班补班（天）
     * @return BigDecimal
     */
    public BigDecimal getShiftCompensation(){
        return shiftCompensation;
    }
    /**
     * 设置 值班补班（天）
     * @param shiftCompensation
     */
    public void setShiftCompensation(BigDecimal shiftCompensation){
        this.shiftCompensation = shiftCompensation;
    }
    /**
     * 获取 体检（天）
     * @return BigDecimal
     */
    public BigDecimal getPhysicalExamination(){
        return physicalExamination;
    }
    /**
     * 设置 体检（天）
     * @param physicalExamination
     */
    public void setPhysicalExamination(BigDecimal physicalExamination){
        this.physicalExamination = physicalExamination;
    }
    /**
     * 获取 隔离（天）
     * @return BigDecimal
     */
    public BigDecimal getQuarantine(){
        return quarantine;
    }
    /**
     * 设置 隔离（天）
     * @param quarantine
     */
    public void setQuarantine(BigDecimal quarantine){
        this.quarantine = quarantine;
    }
    /**
     * 获取 因公外出（与窗口工作无关/天）
     * @return BigDecimal
     */
    public BigDecimal getBusinessTrip(){
        return businessTrip;
    }
    /**
     * 设置 因公外出（与窗口工作无关/天）
     * @param businessTrip
     */
    public void setBusinessTrip(BigDecimal businessTrip){
        this.businessTrip = businessTrip;
    }
    /**
     * 获取 公休（天）
     * @return BigDecimal
     */
    public BigDecimal getPublicHoliday(){
        return publicHoliday;
    }
    /**
     * 设置 公休（天）
     * @param publicHoliday
     */
    public void setPublicHoliday(BigDecimal publicHoliday){
        this.publicHoliday = publicHoliday;
    }
    /**
     * 获取 病假（天）
     * @return BigDecimal
     */
    public BigDecimal getSickLeave(){
        return sickLeave;
    }
    /**
     * 设置 病假（天）
     * @param sickLeave
     */
    public void setSickLeave(BigDecimal sickLeave){
        this.sickLeave = sickLeave;
    }
    /**
     * 获取 丧假（天）
     * @return BigDecimal
     */
    public BigDecimal getFuneralLeave(){
        return funeralLeave;
    }
    /**
     * 设置 丧假（天）
     * @param funeralLeave
     */
    public void setFuneralLeave(BigDecimal funeralLeave){
        this.funeralLeave = funeralLeave;
    }
    /**
     * 获取 婚假（天）
     * @return BigDecimal
     */
    public BigDecimal getMarriageLeave(){
        return marriageLeave;
    }
    /**
     * 设置 婚假（天）
     * @param marriageLeave
     */
    public void setMarriageLeave(BigDecimal marriageLeave){
        this.marriageLeave = marriageLeave;
    }
    /**
     * 获取 育儿假（天）
     * @return BigDecimal
     */
    public BigDecimal getChildRearingLeave(){
        return childRearingLeave;
    }
    /**
     * 设置 育儿假（天）
     * @param childRearingLeave
     */
    public void setChildRearingLeave(BigDecimal childRearingLeave){
        this.childRearingLeave = childRearingLeave;
    }
    /**
     * 获取 产假（天））
     * @return BigDecimal
     */
    public BigDecimal getMaternityLeave(){
        return maternityLeave;
    }
    /**
     * 设置 产假（天））
     * @param maternityLeave
     */
    public void setMaternityLeave(BigDecimal maternityLeave){
        this.maternityLeave = maternityLeave;
    }
    /**
     * 获取 调回单位（或离职/天）
     * @return BigDecimal
     */
    public BigDecimal getTransferBack(){
        return transferBack;
    }
    /**
     * 设置 调回单位（或离职/天）
     * @param transferBack
     */
    public void setTransferBack(BigDecimal transferBack){
        this.transferBack = transferBack;
    }
    /**
     * 获取 探亲假（天）
     * @return BigDecimal
     */
    public BigDecimal getHomeLeave(){
        return homeLeave;
    }
    /**
     * 设置 探亲假（天）
     * @param homeLeave
     */
    public void setHomeLeave(BigDecimal homeLeave){
        this.homeLeave = homeLeave;
    }
    /**
     * 获取 事假（天）
     * @return BigDecimal
     */
    public BigDecimal getPersonalLeave(){
        return personalLeave;
    }
    /**
     * 设置 事假（天）
     * @param personalLeave
     */
    public void setPersonalLeave(BigDecimal personalLeave){
        this.personalLeave = personalLeave;
    }
    /**
     * 获取 考勤汇总-旷工（天）
     * @return BigDecimal
     */
    public BigDecimal getAbsenteeismDays(){
        return absenteeismDays;
    }
    /**
     * 设置 考勤汇总-旷工（天）
     * @param absenteeismDays
     */
    public void setAbsenteeismDays(BigDecimal absenteeismDays){
        this.absenteeismDays = absenteeismDays;
    }
    /**
     * 获取 考勤汇总-其他（天）
     * @return BigDecimal
     */
    public BigDecimal getOtherDays(){
        return otherDays;
    }
    /**
     * 设置 考勤汇总-其他（天）
     * @param otherDays
     */
    public void setOtherDays(BigDecimal otherDays){
        this.otherDays = otherDays;
    }
    /**
     * 获取 考勤汇总-出勤率（%）
     * @return BigDecimal
     */
    public BigDecimal getAttendanceRate(){
        return attendanceRate;
    }
    /**
     * 设置 考勤汇总-出勤率（%）
     * @param attendanceRate
     */
    public void setAttendanceRate(BigDecimal attendanceRate){
        this.attendanceRate = attendanceRate;
    }
    /**
     * 获取 考勤汇总-未按规定打卡（含忘记打卡）
     * @return BigDecimal
     */
    public BigDecimal getNonCompliancePunch(){
        return nonCompliancePunch;
    }
    /**
     * 设置 考勤汇总-未按规定打卡（含忘记打卡）
     * @param nonCompliancePunch
     */
    public void setNonCompliancePunch(BigDecimal nonCompliancePunch){
        this.nonCompliancePunch = nonCompliancePunch;
    }
    /**
     * 获取 考勤汇总-迟到（次）
     * @return Integer
     */
    public Integer getLateTimes(){
        return lateTimes;
    }
    /**
     * 设置 考勤汇总-迟到（次）
     * @param lateTimes
     */
    public void setLateTimes(Integer lateTimes){
        this.lateTimes = lateTimes;
    }
    /**
     * 获取 考勤汇总-上网耍手机（次）
     * @return Integer
     */
    public Integer getSurfingMobileTimes(){
        return surfingMobileTimes;
    }
    /**
     * 设置 考勤汇总-上网耍手机（次）
     * @param surfingMobileTimes
     */
    public void setSurfingMobileTimes(Integer surfingMobileTimes){
        this.surfingMobileTimes = surfingMobileTimes;
    }
    /**
     * 获取 考勤汇总-溜班（次）
     * @return Integer
     */
    public Integer getOvertimeTimes(){
        return overtimeTimes;
    }
    /**
     * 设置 考勤汇总-溜班（次）
     * @param overtimeTimes
     */
    public void setOvertimeTimes(Integer overtimeTimes){
        this.overtimeTimes = overtimeTimes;
    }
    /**
     * 获取 考勤汇总-空岗
     * @return BigDecimal
     */
    public BigDecimal getVacancy(){
        return vacancy;
    }
    /**
     * 设置 考勤汇总-空岗
     * @param vacancy
     */
    public void setVacancy(BigDecimal vacancy){
        this.vacancy = vacancy;
    }
    /**
     * 获取 考勤汇总-未规范着装（次）
     * @return Integer
     */
    public Integer getNonStandardDressTimes(){
        return nonStandardDressTimes;
    }
    /**
     * 设置 考勤汇总-未规范着装（次）
     * @param nonStandardDressTimes
     */
    public void setNonStandardDressTimes(Integer nonStandardDressTimes){
        this.nonStandardDressTimes = nonStandardDressTimes;
    }
    /**
     * 获取 考勤汇总-无故缺席会议
     * @return BigDecimal
     */
    public BigDecimal getUnexcusedMeetingAbsence(){
        return unexcusedMeetingAbsence;
    }
    /**
     * 设置 考勤汇总-无故缺席会议
     * @param unexcusedMeetingAbsence
     */
    public void setUnexcusedMeetingAbsence(BigDecimal unexcusedMeetingAbsence){
        this.unexcusedMeetingAbsence = unexcusedMeetingAbsence;
    }
    /**
     * 获取 考勤汇总-会议早退
     * @return BigDecimal
     */
    public BigDecimal getEarlyLeaveMeeting(){
        return earlyLeaveMeeting;
    }
    /**
     * 设置 考勤汇总-会议早退
     * @param earlyLeaveMeeting
     */
    public void setEarlyLeaveMeeting(BigDecimal earlyLeaveMeeting){
        this.earlyLeaveMeeting = earlyLeaveMeeting;
    }
    /**
     * 获取 年
     * @return Integer
     */
    public Integer getYear(){
        return year;
    }
    /**
     * 设置 年
     * @param year
     */
    public void setYear(Integer year){
        this.year = year;
    }
    /**
     * 获取 月
     * @return Integer
     */
    public Integer getMonth(){
        return month;
    }
    /**
     * 设置 月
     * @param month
     */
    public void setMonth(Integer month){
        this.month = month;
    }
    /**
     * 获取 日
     * @return Integer
     */
    public Integer getDay(){
        return day;
    }
    /**
     * 设置 日
     * @param day
     */
    public void setDay(Integer day){
        this.day = day;
    }
    /**
     * 获取 备注
     * @return String
     */
    public String getRemark(){
        return remark;
    }
    /**
     * 设置 备注
     * @param remark
     */
    public void setRemark(String remark){
        this.remark = remark;
    }
    /**
     * 获取 哺乳假（天）
     * @return BigDecimal
     */
    public BigDecimal getBreastfeedingLeaveDays(){
        return breastfeedingLeaveDays;
    }
    /**
     * 设置 哺乳假（天）
     * @param breastfeedingLeaveDays
     */
    public void setBreastfeedingLeaveDays(BigDecimal breastfeedingLeaveDays){
        this.breastfeedingLeaveDays = breastfeedingLeaveDays;
    }
    /**
     * 获取 例假（天）
     * @return BigDecimal
     */
    public BigDecimal getMenstrualLeaveDays(){
        return menstrualLeaveDays;
    }
    /**
     * 设置 例假（天）
     * @param menstrualLeaveDays
     */
    public void setMenstrualLeaveDays(BigDecimal menstrualLeaveDays){
        this.menstrualLeaveDays = menstrualLeaveDays;
    }
    /**
     * 获取 年假（天）
     * @return BigDecimal
     */
    public BigDecimal getAnnualLeaveDays(){
        return annualLeaveDays;
    }
    /**
     * 设置 年假（天）
     * @param annualLeaveDays
     */
    public void setAnnualLeaveDays(BigDecimal annualLeaveDays){
        this.annualLeaveDays = annualLeaveDays;
    }
    /**
     * 获取 调休（天）
     * @return BigDecimal
     */
    public BigDecimal getCompensatedLeaveDays(){
        return compensatedLeaveDays;
    }
    /**
     * 设置 调休（天）
     * @param compensatedLeaveDays
     */
    public void setCompensatedLeaveDays(BigDecimal compensatedLeaveDays){
        this.compensatedLeaveDays = compensatedLeaveDays;
    }
    /**
     * 获取 陪产假（天）
     * @return BigDecimal
     */
    public BigDecimal getPaternityLeaveDays(){
        return paternityLeaveDays;
    }
    /**
     * 设置 陪产假（天）
     * @param paternityLeaveDays
     */
    public void setPaternityLeaveDays(BigDecimal paternityLeaveDays){
        this.paternityLeaveDays = paternityLeaveDays;
    }




    @Override
    public int hashCode() {
        return this.getId().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;
        if (obj instanceof AttendanceStatEntity) {
            AttendanceStatEntity tmp = (AttendanceStatEntity) obj;
            if (this.getId() == tmp.getId()) {
                return true;
            }
        }
        return false;
    }

    public String toString(){
        StringBuilder sb = new StringBuilder("");
        sb.append(",windowCategory:").append(getWindowCategory());
        sb.append(",staffId:").append(getStaffId());
        sb.append(",staffName:").append(getStaffName());
        sb.append(",deptId:").append(getDeptId());
        sb.append(",deptName:").append(getDeptName());
        sb.append(",backToUnit:").append(getBackToUnit());
        sb.append(",onDutyLeave:").append(getOnDutyLeave());
        sb.append(",outOfOffice:").append(getOutOfOffice());
        sb.append(",shiftCompensation:").append(getShiftCompensation());
        sb.append(",physicalExamination:").append(getPhysicalExamination());
        sb.append(",quarantine:").append(getQuarantine());
        sb.append(",businessTrip:").append(getBusinessTrip());
        sb.append(",publicHoliday:").append(getPublicHoliday());
        sb.append(",sickLeave:").append(getSickLeave());
        sb.append(",funeralLeave:").append(getFuneralLeave());
        sb.append(",marriageLeave:").append(getMarriageLeave());
        sb.append(",childRearingLeave:").append(getChildRearingLeave());
        sb.append(",maternityLeave:").append(getMaternityLeave());
        sb.append(",transferBack:").append(getTransferBack());
        sb.append(",homeLeave:").append(getHomeLeave());
        sb.append(",personalLeave:").append(getPersonalLeave());
        sb.append(",absenteeismDays:").append(getAbsenteeismDays());
        sb.append(",otherDays:").append(getOtherDays());
        sb.append(",attendanceRate:").append(getAttendanceRate());
        sb.append(",nonCompliancePunch:").append(getNonCompliancePunch());
        sb.append(",lateTimes:").append(getLateTimes());
        sb.append(",surfingMobileTimes:").append(getSurfingMobileTimes());
        sb.append(",overtimeTimes:").append(getOvertimeTimes());
        sb.append(",vacancy:").append(getVacancy());
        sb.append(",nonStandardDressTimes:").append(getNonStandardDressTimes());
        sb.append(",unexcusedMeetingAbsence:").append(getUnexcusedMeetingAbsence());
        sb.append(",earlyLeaveMeeting:").append(getEarlyLeaveMeeting());
        sb.append(",year:").append(getYear());
        sb.append(",month:").append(getMonth());
        sb.append(",day:").append(getDay());
        sb.append(",remark:").append(getRemark());
        sb.append(",breastfeedingLeaveDays:").append(getBreastfeedingLeaveDays());
        sb.append(",menstrualLeaveDays:").append(getMenstrualLeaveDays());
        sb.append(",annualLeaveDays:").append(getAnnualLeaveDays());
        sb.append(",compensatedLeaveDays:").append(getCompensatedLeaveDays());
        sb.append(",paternityLeaveDays:").append(getPaternityLeaveDays());
        return sb.toString();
    }

    public void initAttrValue(){

        this.windowCategory = "考勤机打卡";

        this.staffId = null;

        this.staffName = "";

        this.deptId = null;

        this.deptName = "";

        this.backToUnit = BigDecimal.valueOf(0.0);

        this.onDutyLeave = BigDecimal.valueOf(0.0);

        this.outOfOffice = BigDecimal.valueOf(0.0);

        this.shiftCompensation = BigDecimal.valueOf(0.0);

        this.physicalExamination = BigDecimal.valueOf(0.0);

        this.quarantine = BigDecimal.valueOf(0.0);

        this.businessTrip = BigDecimal.valueOf(0.0);

        this.publicHoliday = BigDecimal.valueOf(0.0);

        this.sickLeave = BigDecimal.valueOf(0.0);

        this.funeralLeave = BigDecimal.valueOf(0.0);

        this.marriageLeave = BigDecimal.valueOf(0.0);

        this.childRearingLeave = BigDecimal.valueOf(0.0);

        this.maternityLeave = BigDecimal.valueOf(0.0);

        this.transferBack = BigDecimal.valueOf(0.0);

        this.homeLeave = BigDecimal.valueOf(0.0);

        this.personalLeave = BigDecimal.valueOf(0.0);

        this.absenteeismDays = BigDecimal.valueOf(0.0);

        this.otherDays = BigDecimal.valueOf(0.0);

        this.attendanceRate = BigDecimal.valueOf(0.00);

        this.nonCompliancePunch = BigDecimal.valueOf(0);

        this.lateTimes = 0;

        this.surfingMobileTimes = 0;

        this.overtimeTimes = 0;

        this.vacancy = BigDecimal.valueOf(0);

        this.nonStandardDressTimes = 0;

        this.unexcusedMeetingAbsence = BigDecimal.valueOf(0);

        this.earlyLeaveMeeting = BigDecimal.valueOf(0);

        this.year = null;

        this.month = null;

        this.day = null;

        this.remark = "";

        this.breastfeedingLeaveDays = BigDecimal.valueOf(0.0);

        this.menstrualLeaveDays = BigDecimal.valueOf(0.0);

        this.annualLeaveDays = BigDecimal.valueOf(0.0);

        this.compensatedLeaveDays = BigDecimal.valueOf(0.0);

        this.paternityLeaveDays = BigDecimal.valueOf(0.0);
    }
}