package jnpf.model.attendance.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import jnpf.model.attendance.vo.LeaveShiftVo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SituationData {
    /*考勤组相关信息*/
    /**
     * 考勤组id
     */
    private String groupId;
    /**
     * 考勤组名称
     */
    private String groupName;

    /**
     * 考勤组名称
     */
    private Integer isScheduling;
    /**
     * 用户id
     */
    private String userId;

    /*考勤组-排班相关信息*/
    /**
     * 考勤组出勤id
     */
    private String ruleId;
    /**
     * 是否缺勤
     */
    private Integer isAbsence;
    /**
     * 出勤类型(1: 普班, 2: 排休, 3: 请假, 4: 加班, 5: 借调, 6: 假期, 7: 假期(带薪))
     */
    private Integer attendanceType;
    /**
     * 审核数据展示标识（1 起效，0 失效，2 打卡不展示，3 考勤组剔除人员待删除，9 标识出差，10 标识外出）
     */
    private Integer applyViewEnable;
    /**
     * 是否自己的考勤组(0未产生借调 1被借调 2借调)
     */
    private Integer selfGroup;
    /**
     * 日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date day;

    /**
     * 休息开始时间点
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date breakStartPoint;

    /**
     * 休息结束时间点
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date breakEndPoint;

    /**
     * 上班时间点
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inPoint;

    /**
     * 下班时间点
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date outPoint;

    /**
     * 有效时长(min)
     */
    private Integer validDuration;

    /**
     * 请假申请记录ID
     */
    private String applyId;

    /*考勤组-排班-请假审批记录*/
    /**
     * 请假id
     */
    private String leaveApproveId;
    /**
     * 配置的请假类型编码
     */
    private String leaveTypeCode;
    /**
     * 类型编码 0 ：其他 1：事假 2：病假 3：工伤假 4：年假 5：婚假 6：产假 7：陪产假 8：丧假 9：探亲假 10：小儿照护假
     */
    private Integer leaveType;
    /**
     * 单位(1 :小时 2: 天 (暂定只有天的劵)
     */
    private Integer unit;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 申请时长(秒)
     */
    private Integer applicationDuration;

    /**
     * 未抵扣时间(秒)
     */
    private Integer unDeductedTime;
    /**
     * 涉及班次JSON
     */
    private String shiftInvolved;
    /**
     * 涉及班次JSON转换
     */
    private LeaveShiftVo leaveShiftVo;
    /**
     * 是否审核通过 0.待审核  1.通过 2.未通过
     */
    private Integer status;
    /**
     * 下班缺卡时间点
     */
    private Date outLackPoint;

    /**
     * 券使用记录
     */
    private List<BalanceRecord> balanceRecordList;

    /*考勤组-排班-打卡结果相关信息*/

    /**
     * 打卡结果信息
     */
    private List<ClockInResult> clockInResultList;
}
