package cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 用户打卡记录分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class AttendancePunchRecordPageReqVO extends PageParam {

    @Schema(description = "考勤组管理员id", example = "11409")
    private Long userId;

    @Schema(description = "考勤组id", example = "22293")
    private Long attendanceGroupId;

    @Schema(description = "班次id", example = "10780")
    private Long attendanceGroupShiftId;

    @Schema(description = "班次子表id", example = "10780")
    private Long attendanceGroupShiftItemId;

    @Schema(description = "考勤类型 1固定班制 2排班制", example = "2")
    private Integer type;

    @Schema(description = "打卡类型 1考勤机 2小程序范围打卡", example = "2")
    private Integer punchType;

    @Schema(description = "上下班类型 0上班 1下班", example = "1")
    private Integer workType;

    @Schema(description = "级别 1到～", example = "1")
    private Integer level;

    @Schema(description = "打卡状态 0正常 1迟到 2早退 3缺卡 4补卡", example = "1")
    private Integer status;

    @Schema(description = "是否外勤 0否 1是", example = "1")
    private Integer fieldServiceFlag;

    @Schema(description = "日期yyyy-MM-dd格式")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] dayTime;

    @Schema(description = "打卡时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] punchTime;

    @Schema(description = "打卡备注", example = "你说的对")
    private String remark;

    @Schema(description = "图片")
    private String image;

    @Schema(description = "用户打卡地点")
    private String punchAddress;

    @Schema(description = "迟到时长时间戳")
    private Long lateTime;

    @Schema(description = "早退时长时间戳")
    private Long leaveEarlyTime;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}