package cn.iocoder.yudao.module.system.api.attendance.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 用户打卡记录 DO
 *
 * @author 艾楷
 */
@Data
public class AttendancePunchRecordVO {
    /**
     * 编号
     */
    private Long id;
    /**
     * 考勤用户id
     */
    private Long userId;
    /**
     * 部门id
     */
    private Long deptId;
    /**
     * 考勤组id
     */
    private Long attendanceGroupId;
    /**
     * 考勤组名称
     */
    private String attendanceGroupName;
    /**
     * 班次id
     */
    private Long attendanceGroupShiftId;
    /**
     * 班次名称
     */
    private String attendanceGroupShiftName;
    /**
     * 班次子表id
     */
    private Long attendanceGroupShiftItemId;
    /**
     * 考勤类型 1固定班制 2排班制
     */
    private Integer type;
    /**
     * 打卡类型 1考勤机 2小程序范围打卡
     */
    private Integer punchType;

    /**
     * 上下班类型 0上班 1下班
     */
    private Integer workType;

    /**
     * 级别 1到～
     */
    private Integer level;

    /**
     * 打卡状态 0正常 1迟到 2早退 3缺卡 4未打卡(还没到打卡时间) 5补卡 6请假
     */
    private Integer status;

    /**
     * 明天的打卡 0否 1是 (业务需要 先把明天的打卡统计出来)
     */
    private Integer nextDayFlag;

    /**
     * 是否外勤 0否 1是
     */
    private Integer fieldServiceFlag;
    /**
     * 日期yyyy-MM-dd格式 (归属于哪一天)
     */
    private String dayTime;

    /**
     * 日期yyyy-MM-dd格式 (实际是哪一天)
     */
    private String actualDayTime;
    /**
     * 打卡时间
     */
    private LocalDateTime punchTime;
    /**
     * 应打卡时间
     */
    private LocalDateTime shouldPunchTime;
    /**
     * 最晚打卡时间(超过即为缺卡)
     */
    private LocalDateTime latestPunchTime;
    /**
     * 打卡备注
     */
    private String remark;
    /**
     * 图片
     */
    private String image;

    /**
     * 用户打卡地点
     */
    private String punchAddress;

    /**
     * 迟到时长时间戳
     */
    private Long lateTime;

    /**
     * 早退时长时间戳
     */
    private Long leaveEarlyTime;

    /**
     * 下班加班时长时间戳
     */
    private Long downWorkOvertimeTime;

    /**
     * 上班加班时长时间戳
     */
    private Long upWorkOvertimeTime;

    /**
     * 是否已提醒 0否 1是
     */
    private Integer remindFlag;

    /**
     * 请假json对象
     */
    private String leaveJson;
}
