package jnpf.model.attendance.vo.attendance;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ExcelIgnoreUnannotated  //过滤未注解字段
@HeadFontStyle(fontName = "黑体", fontHeightInPoints = 12)
public class MonthStatisticsPageListExportVo {
    /**
     * 用户ID
     */
    private String userId;
    /**
     * 用户名称
     */
    @ColumnWidth(15)
    @ExcelProperty("姓名")
    private String userName;
    /**
     * 部门名称
     */
    @ColumnWidth(20)
    @ExcelProperty("部门")
    private String deptName;
    /**
     * 岗位名称
     */
    @ColumnWidth(15)
    @ExcelProperty("岗位")
    private String postName;
    /**
     * 工作状态(302-试用, 303-正式, 304-待离职, 305-离职)
     */
    private String workStatus;
    /**
     * 状态(302-试用, 303-正式, 304-待离职, 305-离职)
     */
    @ColumnWidth(10)
    @ExcelProperty("状态")
    private String workStatusStr;
    /**
     * 考勤组id
     */
    private String groupId;
    /**
     * 考勤组名称
     */
    @ColumnWidth(20)
    @ExcelProperty("考勤组")
    private String groupName;
    /**
     * 考勤月份
     */
    @ColumnWidth(15)
    @ExcelProperty("考勤月份")
    private String month;
    /**
     * 考勤周期
     */
    private List<String> cycleList = new ArrayList<>();
    /**
     * 考勤周期
     */
    @ColumnWidth(25)
    @ExcelProperty("考勤周期")
    private String cycleStr;
    /**
     * 存休天数
     */
    @ColumnWidth(15)
    @ExcelProperty("存休天数(天)")
    private BigDecimal saveRest = BigDecimal.ZERO;
    /**
     * 使用假时长
     */
    @ColumnWidth(20)
    @ExcelProperty("使用假时长")
    private String leaveDurationHours;
    /**
     * 应出勤天数(天)
     */
    @ColumnWidth(20)
    @ExcelProperty("应出勤天数(天)")
    private BigDecimal shouldAttendDays = BigDecimal.ZERO;
    /**
     * 应出勤工时(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("应出勤工时(小时)")
    private BigDecimal shouldAttendHours = BigDecimal.ZERO;
    /**
     * 实际出勤天数(天)
     */
    @ColumnWidth(20)
    @ExcelProperty("实际出勤天数(天)")
    private BigDecimal actualAttendDays = BigDecimal.ZERO;
    /**
     * 实际出勤工时(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("实际出勤工时(小时)")
    private BigDecimal actualAttendHours = BigDecimal.ZERO;
    /**
     * 有效出勤天数(天)
     */
    @ColumnWidth(20)
    @ExcelProperty("有效出勤天数(天)")
    private BigDecimal effectiveAttendDays = BigDecimal.ZERO;
    /**
     * 有效出勤工时(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("有效出勤工时(小时)")
    private BigDecimal effectiveAttendHours = BigDecimal.ZERO;
    /**
     * 迟到次数(次数)
     */
    @ColumnWidth(15)
    @ExcelProperty("迟到次数(次数)")
    private Integer lateTimes = 0;
    /**
     * 迟到分钟数(分钟)
     */
    @ColumnWidth(20)
    @ExcelProperty("迟到分钟数(分钟)")
    private BigDecimal lateMinutes = BigDecimal.ZERO;
    /**
     * 早退次数(次数)
     */
    @ColumnWidth(15)
    @ExcelProperty("早退次数(次数)")
    private Integer earlyLeaveTimes = 0;
    /**
     * 早退分钟数(分钟)
     */
    @ColumnWidth(20)
    @ExcelProperty("早退分钟数(分钟)")
    private BigDecimal earlyLeaveMinutes = BigDecimal.ZERO;
    /**
     * 缺卡次数(次数)
     */
    @ColumnWidth(15)
    @ExcelProperty("缺卡次数(次数)")
    private Integer absenceCardTimes = 0;
    /**
     * 缺卡小时数(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("缺卡小时数(小时)")
    private BigDecimal absenceCardHours = BigDecimal.ZERO;
    /**
     * 缺勤次数(次数)
     */
    @ColumnWidth(15)
    @ExcelProperty("缺勤次数(次数)")
    private Integer absenceTimes = 0;
    /**
     * 缺勤小时数(小时)
     */
    @ColumnWidth(20)
    @ExcelProperty("缺勤小时数(小时)")
    private BigDecimal absenceHours = BigDecimal.ZERO;
    /**
     * 补卡次数(次)
     */
    @ColumnWidth(15)
    @ExcelProperty("补卡次数(次)")
    private Integer makeUpCardTimes = 0;
    /**
     * 外勤次数(次)
     */
    @ColumnWidth(15)
    @ExcelProperty("外勤次数(次)")
    private Integer outworkTimes = 0;
    /**
     * 出差次数
     */
    @ColumnWidth(15)
    @ExcelProperty("出差次数(次)")
    private Integer busTimes = 0;
    /**
     * 出差时长(天)
     */
    @ColumnWidth(30)
    @ExcelProperty("出差时长(天)")
    private BigDecimal busDays = BigDecimal.ZERO;
    /**
     * 外出次数
     */
    @ColumnWidth(15)
    @ExcelProperty("外出次数(次)")
    private Integer outTimes = 0;
    /**
     * 外出时长
     */
    @ColumnWidth(15)
    @ExcelProperty("外出时长")
    private String outDays;
    /**
     * 加班次数(次)
     */
    @ColumnWidth(15)
    @ExcelProperty("加班次数(次)")
    private Integer overtimeTimes = 0;
    /**
     * 加班时长(小时)
     */
    @ColumnWidth(15)
    @ExcelProperty("加班时长(小时)")
    private BigDecimal overtimeHours = BigDecimal.ZERO;
    /**
     * 请假时长
     */
    @ColumnWidth(15)
    @ExcelProperty("请假时长")
    private String leaveHours;
    /**
     * 未抵扣请假时长
     */
    @ColumnWidth(20)
    @ExcelProperty("未抵扣请假时长")
    private String unDeductedLeaveHours;
    /**
     * 事假
     */
    @ColumnWidth(15)
    @ExcelProperty("事假")
    private String thingLeaveHours;
    /**
     * 病假
     */
    @ColumnWidth(15)
    @ExcelProperty("病假")
    private String illnessLeaveHours;
    /**
     * 工伤假
     */
    @ColumnWidth(15)
    @ExcelProperty("工伤假")
    private String injuryLeaveHours;
    /**
     * 年假
     */
    @ColumnWidth(15)
    @ExcelProperty("年假")
    private String annualLeaveHours;
    /**
     * 婚假
     */
    @ColumnWidth(15)
    @ExcelProperty("婚假")
    private String marriageLeaveHours;
    /**
     * 产假
     */
    @ColumnWidth(15)
    @ExcelProperty("产假")
    private String maternityLeaveHours;
    /**
     * 陪产假
     */
    @ColumnWidth(15)
    @ExcelProperty("陪产假")
    private String paternityLeaveHours;
    /**
     * 丧假
     */
    @ColumnWidth(15)
    @ExcelProperty("丧假")
    private String funeralLeaveHours;
    /**
     * 探亲假
     */
    @ColumnWidth(15)
    @ExcelProperty("探亲假")
    private String homeLeaveHours;
    /**
     * 小儿照护假
     */
    @ColumnWidth(15)
    @ExcelProperty("小儿照护假")
    private String childcareLeaveHours;
    /**
     * 其他类型
     */
    @ColumnWidth(15)
    @ExcelProperty("其他类型")
    private String otherLeaveHours;
}
