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 jnpf.model.attendance.model.LeaveTypeJsonData;
import jnpf.model.attendance.vo.SchedulesItemVo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ExcelIgnoreUnannotated
@HeadFontStyle(fontName = "黑体", fontHeightInPoints = 12)
public class DayStatisticsPageListVo {
    /**
     * 用户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(10)
    @ExcelProperty("日期")
    private String date;
    /**
     * 班次
     */
    private List<SchedulesItemVo> shiftList;
    /**
     * 班次
     */
    @ColumnWidth(25)
    @ExcelProperty("班次")
    private String shiftStr;
    /**
     * 班次时间
     */
    private List<String> shiftTimeList;
    /**
     * 班次时间
     */
    @ColumnWidth(22)
    @ExcelProperty("班次时间")
    private String shiftTimeStr;
    /**
     * 打卡时间
     */
    private List<String> clockTimeList;
    /**
     * 打卡时间
     */
    @ColumnWidth(25)
    @ExcelProperty("打卡时间")
    private String clockTimeStr;
    /**
     * 应出勤小时数
     */
    @ColumnWidth(20)
    @ExcelProperty("应出勤小时数")
    private BigDecimal shouldAttendHours = BigDecimal.ZERO;

    /**
     * 有效出勤小时数
     */
    @ColumnWidth(20)
    @ExcelProperty("实际出勤小时数")
    private BigDecimal effectiveAttendHours = BigDecimal.ZERO;

    /**
     * 实际出勤小时数
     */
    private BigDecimal actualAttendHours = BigDecimal.ZERO;
    /**
     * 迟到次数
     */
    @ColumnWidth(20)
    @ExcelProperty("迟到次数")
    private Integer lateTimes = 0;
    /**
     * 迟到分钟数
     */
    @ColumnWidth(20)
    @ExcelProperty("迟到分钟数")
    private BigDecimal lateMinutes = BigDecimal.ZERO;

    /**
     * 补卡次数
     */
    @ColumnWidth(20)
    @ExcelProperty("补卡次数")
    private Integer makeUpCardTimes = 0;

    /**
     * 外勤次数
     */
    @ColumnWidth(20)
    @ExcelProperty("外勤次数")
    private Integer outworkTimes = 0;

    /**
     * 早退次数
     */
    @ColumnWidth(20)
    @ExcelProperty("早退次数")
    private Integer earlyLeaveTimes = 0;
    /**
     * 早退分钟数
     */
    @ColumnWidth(20)
    @ExcelProperty("早退分钟数")
    private BigDecimal earlyLeaveMinutes = BigDecimal.ZERO;
    /**
     * 缺卡次数
     */
    @ColumnWidth(20)
    @ExcelProperty("缺卡次数")
    private Integer absenceCardTimes = 0;
    /**
     * 缺卡小时数
     */
    @ColumnWidth(20)
    @ExcelProperty("缺卡小时数")
    private BigDecimal absenceCardHours = BigDecimal.ZERO;
    /**
     * 旷工次数
     */
    @ColumnWidth(20)
    @ExcelProperty("旷工次数")
    private Integer absenceTimes = 0;
    /**
     * 旷工小时数
     */
    @ColumnWidth(20)
    @ExcelProperty("旷工小时数")
    private BigDecimal absenceHours = BigDecimal.ZERO;
    /**
     * 出差天数
     */
    @ColumnWidth(15)
    @ExcelProperty("出差天数")
    private BigDecimal busDays = BigDecimal.ZERO;
    /**
     * 外出天数
     */
    @ColumnWidth(15)
    @ExcelProperty("外出天数")
    private BigDecimal outDays = BigDecimal.ZERO;
    /**
     * 节假日加班小时数
     */
    @ColumnWidth(25)
    @ExcelProperty("节假日加班小时数")
    private BigDecimal holidaysOvertimeHours = BigDecimal.ZERO;
    /**
     * 公休日加班小时数
     */
    @ColumnWidth(25)
    @ExcelProperty("公休日加班小时数")
    private BigDecimal publicHolidaysOvertimeHours = BigDecimal.ZERO;
    /**
     * 工作日加班小时数
     */
    @ColumnWidth(25)
    @ExcelProperty("工作日加班小时数")
    private BigDecimal weekdayOvertimeHours = BigDecimal.ZERO;
    /**
     * 请假小时数
     */
    @ColumnWidth(20)
    @ExcelProperty("请假小时数")
    private BigDecimal leaveHours = BigDecimal.ZERO;
    /**
     * 调休小时数
     */
    @ColumnWidth(25)
    @ExcelProperty("调休小时数")
    private BigDecimal compensationHours = BigDecimal.ZERO;
    /**
     * 自定义假期动态Json
     */
    private List<LeaveTypeJsonData> customLeaveList;
}
