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

import java.math.BigDecimal;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.attendance.model.vo.AttendanceStatVo;
/**
* 考勤汇总信息实体对象
*
* @author zxfei
* @date 2023-04-08
*/

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;



    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;
    }




    @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());
        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 = "";
    }
}