package com.bonus.system.att.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import java.util.List;

/**
 * 考勤数据
 * @author zys
 */
@Data
public class AttDataDetailsBean {

    /**
     * 组织编号
     */
    private Long orgId;

    /**
     * 组织名称
     */
    @Excel(name = "所属部门", width = 10.0,height = 20.0, orderNum = "1")
    private String orgName;

    /**
     * 用户编号
     */
    private Long userId;

    /**
     * 用户名称
     */
    @Excel(name = "姓名", width = 10.0,height = 20.0, orderNum = "0")
    private String userName;

    /**
     * 开始日期
     */
    private String startDate;

    /**
     * 结束日期
     */
    private String endDate;

    /**
     * 考勤状态
     */
    private String attStatus;

    /**
     * 考勤日期
     */
    @Excel(name = "考勤日期", width = 10.0,height = 20.0, orderNum = "2")
    private String attCurrentDay;

    /**
     * 考勤月
     */
    private String attCurrentMonth;
    /**
     * 打卡时间
     */
    @Excel(name = "打卡时间", width = 10.0,height = 20.0, orderNum = "3")
    private String attCurrentTime;
    /**
     * 打卡地址
     */
    @Excel(name = "打卡地址", width = 10.0,height = 20.0, orderNum = "4")
    private String attAddress;

    /**
     * 上班打卡时间原始
     */
    private String toWorkOriginalAttCurrentTime;

    /**
     * 上班考勤状态原始
     */
    private String toWorkOriginalAttStatus;

    /**
     * 上班打卡时间
     */
    private String toWorkAttCurrentTime;

    /**
     * 修改后上班时间
     */
    private String toWorkUpdateAttCurrentTime;

    /**
     * 上班考勤状态
     */
    private String toWorkAttStatus;

    /**
     * 修改后上班考勤状态
     */
    private String toWorkUpdateAttStatus;

    /**
     * 上班打卡维度
     */
    private Double toWorkAttLat;

    /**
     * 上班打卡经度
     */
    private Double toWorkAttLon;

    /**
     * 上班打卡地址
     */
    private String toWorkAttAddress;

    /**
     * 上班异常备注
     */
    private String toWorkErrorRemake;

    /**
     * 下班打卡时间原始
     */
    private String offWorkOriginalAttCurrentTime;

    /**
     * 下班考勤状态原始
     */
    private String offWorkOriginalAttStatus;

    /**
     * 下班打卡时间
     */
    private String offWorkAttCurrentTime;

    /**
     * 修改后下班时间
     */
    private String offWorkUpdateAttCurrentTime;

    /**
     * 下班考勤状态
     */
    private String offWorkAttStatus;

    /**
     * 修改后下班考勤状态
     */
    private String offWorkUpdateAttStatus;

    /**
     * 下班打卡维度
     */
    private Double offWorkAttLat;

    /**
     * 下班打卡经度
     */
    private Double offWorkAttLon;

    /**
     * 下班打卡地址
     */
    private String offWorkAttAddress;

    /**
     * 下班异常备注
     */
    private String offWorkErrorRemake;

    /**
     * 审核人
     */
    private Long reviewerUserId;

    /**
     * 审核状态
     */
    private String reviewerStatus;

    /**
     * 审核时间
     */
    private String reviewerTime;

    /**
     * 上班修改原因说明
     */
    private String toErrorRemake;

    /**
     * 下班修改原因说明
     */
    private String offErrorRemake;

    /**
     * 是否更新
     */
    private Integer isUpdate;

    /**
     * 是否更新
     */
    private List<AttDayBean> listAttDay;

    /**
     * 导出类型
     * 考勤明细
     * 原始数据
     */
    private String exportType;

    /** 部门列表 */
    private List<String> orgList;

    /** 上班时间外出次数 */
    private Integer outCount;

    /** 打卡次数 */
    private Integer attCount;

    /**
     *  角色类型 1:人资专员和管理员;2:部门考勤员，部门负责人 3：普通人员
     */
    private String roleType;
    private String orgListId;

    /**
     * 自己项目部所在分公司下的所有项目部id
     */
    private List<String> orgIdList;

    /**
     * 考勤类型
     */
    private String attendType;
    private String attStatusToday;

    /**上班附件/下班附件*/
    private List<FilesVo> filesVoList;

    @Data
    public static class FilesVo{
        /**文件名称*/
        private String fileName;
        private String filePath;
        private String attType;
    }

    public AttDataDetailsBean() {
    }

    public AttDataDetailsBean(Long userId, String userName, String orgName,  List<AttDayBean> listAttDay) {
        this.orgName = orgName;
        this.userId = userId;
        this.userName = userName;
        this.listAttDay = listAttDay;
    }
}
