package com.zcloud.primeport.dto;

import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.*;

/**
 * web-client
 *
 * @Author dearLin
 * @Date 2026-04-22 17:04:01
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkmjSwipeCardRecordUpdateCmd extends Command {
    @ApiModelProperty(value = "所有卡片消息共享的自增长整型数值，从1开始，门禁子系统重启复位到1", name = "id", required = true)
    @NotNull(message = "所有卡片消息共享的自增长整型数值，从1开始，门禁子系统重启复位到1不能为空")
    private Long id;
    @ApiModelProperty(value = "刷卡记录表ID", name = "swipeCardRecordId", required = true)
    @NotEmpty(message = "刷卡记录表ID不能为空")
    private String swipeCardRecordId;
    @ApiModelProperty(value = "节点编码", name = "nodeCode", required = true)
    @NotEmpty(message = "节点编码不能为空")
    private String nodeCode;
    @ApiModelProperty(value = "报警编号", name = "alarmCode", required = true)
    @NotEmpty(message = "报警编号不能为空")
    private String alarmCode;
    @ApiModelProperty(value = "报警图片路径", name = "alarmPicture", required = true)
    @NotEmpty(message = "报警图片路径不能为空")
    private String alarmPicture;
    @ApiModelProperty(value = "节点类型", name = "nodeType", required = true)
    @NotEmpty(message = "节点类型不能为空")
    private String nodeType;
    @ApiModelProperty(value = "报警时间，10位时间戳", name = "alarmDate", required = true)
    @NotNull(message = "报警时间，10位时间戳不能为空")
    private Long alarmDate;
    @ApiModelProperty(value = "报警等级 1：严重，2：一般，3：轻微", name = "alarmGrade", required = true)
    @NotNull(message = "报警等级 1：严重，2：一般，3：轻微不能为空")
    private Integer alarmGrade;
    @ApiModelProperty(value = "单元类型", name = "unitType", required = true)
    @NotNull(message = "单元类型不能为空")
    private Integer unitType;
    @ApiModelProperty(value = "报警类型", name = "alarmType", required = true)
    @NotNull(message = "报警类型不能为空")
    private Integer alarmType;
    @ApiModelProperty(value = "通道序号", name = "channelSeq", required = true)
    @NotNull(message = "通道序号不能为空")
    private Integer channelSeq;
    @ApiModelProperty(value = "通道名称", name = "channelName", required = true)
    @NotEmpty(message = "通道名称不能为空")
    private String channelName;
    @ApiModelProperty(value = "报警状态 1：报警产生，2：报警消失", name = "alarmStat", required = true)
    @NotNull(message = "报警状态 1：报警产生，2：报警消失不能为空")
    private Integer alarmStat;
    @ApiModelProperty(value = "部门名称", name = "deptName", required = true)
    @NotEmpty(message = "部门名称不能为空")
    private String deptName;
    @ApiModelProperty(value = "通道编号", name = "acsChannelCode", required = true)
    @NotEmpty(message = "通道编号不能为空")
    private String acsChannelCode;
    @ApiModelProperty(value = "口罩状态 3-戴口罩，2-未戴口罩，1-未识别，0-未知", name = "maskState", required = true)
    @NotNull(message = "口罩状态 3-戴口罩，2-未戴口罩，1-未识别，0-未知不能为空")
    private Integer maskState;
    @ApiModelProperty(value = "进出门类型: 详见 读卡器业务类型字典", name = "enterOrExit", required = true)
    @NotEmpty(message = "进出门类型: 详见 读卡器业务类型字典不能为空")
    private String enterOrExit;
    @ApiModelProperty(value = "开门类型字符串", name = "openTypeStr", required = true)
    @NotEmpty(message = "开门类型字符串不能为空")
    private String openTypeStr;
    @ApiModelProperty(value = "刷卡时间，格式：yyyy-MM:dd HH:mm:ss", name = "swingTime", required = true)
    @NotEmpty(message = "刷卡时间，格式：yyyy-MM:dd HH:mm:ss不能为空")
    private String swingTime;
    @ApiModelProperty(value = "设备名称", name = "deviceName", required = true)
    @NotEmpty(message = "设备名称不能为空")
    private String deviceName;
    @ApiModelProperty(value = "人员编号", name = "personCode", required = true)
    @NotEmpty(message = "人员编号不能为空")
    private String personCode;
    @ApiModelProperty(value = "开门类型, 详见开门类型 字典", name = "openType", required = true)
    @NotEmpty(message = "开门类型, 详见开门类型 字典不能为空")
    private String openType;
    @ApiModelProperty(value = "组织编码", name = "orgCode", required = true)
    @NotEmpty(message = "组织编码不能为空")
    private String orgCode;
    @ApiModelProperty(value = "证件类型", name = "paperType", required = true)
    @NotEmpty(message = "证件类型不能为空")
    private String paperType;
    @ApiModelProperty(value = "证件号", name = "paperNumber", required = true)
    @NotEmpty(message = "证件号不能为空")
    private String paperNumber;
    @ApiModelProperty(value = "错误详情", name = "errorDetail", required = true)
    @NotEmpty(message = "错误详情不能为空")
    private String errorDetail;
    @ApiModelProperty(value = "开门错误码，0代表成功，96代表需远程验证(需结合平台上远程验证功能使用)，其他参考门禁开门错误码", name = "openFailedCod", required = true)
    @NotEmpty(message = "开门错误码，0代表成功，96代表需远程验证(需结合平台上远程验证功能使用)，其他参考门禁开门错误码不能为空")
    private String openFailedCod;
    @ApiModelProperty(value = "固定值：evo-accesscontrol", name = "from", required = true)
    @NotEmpty(message = "固定值：evo-accesscontrol不能为空")
    private String from;
    @ApiModelProperty(value = "extendId标识", name = "extendId", required = true)
    @NotNull(message = "extendId标识不能为空")
    private Long extendId;
    @ApiModelProperty(value = "开始时间, 13位时间戳", name = "beginTime", required = true)
    @NotNull(message = "开始时间, 13位时间戳不能为空")
    private Long beginTime;
    @ApiModelProperty(value = "通道名称", name = "acsChannelName", required = true)
    @NotEmpty(message = "通道名称不能为空")
    private String acsChannelName;
    @ApiModelProperty(value = "预留字段，暂未使用，默认值为0", name = "cardStatus", required = true)
    @NotNull(message = "预留字段，暂未使用，默认值为0不能为空")
    private Integer cardStatus;
    @ApiModelProperty(value = "组织名称", name = "orgName", required = true)
    @NotEmpty(message = "组织名称不能为空")
    private String orgName;
    @ApiModelProperty(value = "性别 1 男，2 女， 0 未知", name = "sex", required = true)
    @NotNull(message = "性别 1 男，2 女， 0 未知不能为空")
    private Integer sex;
    @ApiModelProperty(value = "人员部门id", name = "deptId", required = true)
    @NotNull(message = "人员部门id不能为空")
    private Long deptId;
    @ApiModelProperty(value = "卡类型", name = "cardType", required = true)
    @NotNull(message = "卡类型不能为空")
    private Integer cardType;
    @ApiModelProperty(value = "设备编号", name = "deviceCode", required = true)
    @NotEmpty(message = "设备编号不能为空")
    private String deviceCode;
    @ApiModelProperty(value = "人员姓名", name = "personName", required = true)
    @NotEmpty(message = "人员姓名不能为空")
    private String personName;
    @ApiModelProperty(value = "刷卡人在平台上的图片，相对路径", name = "personImg", required = true)
    @NotEmpty(message = "刷卡人在平台上的图片，相对路径不能为空")
    private String personImg;
    @ApiModelProperty(value = "开门结果 0 失败 1 成功", name = "openResult", required = true)
    @NotNull(message = "开门结果 0 失败 1 成功不能为空")
    private Integer openResult;
    @ApiModelProperty(value = "人员id", name = "personId", required = true)
    @NotNull(message = "人员id不能为空")
    private Long personId;
    @ApiModelProperty(value = "抓拍图，相对路径", name = "recordImage1", required = true)
    @NotEmpty(message = "抓拍图，相对路径不能为空")
    private String recordImage1;
    @ApiModelProperty(value = "卡介质  0 IC  1 有源RFID  2 CPU", name = "category", required = true)
    @NotEmpty(message = "卡介质  0 IC  1 有源RFID  2 CPU不能为空")
    private String category;
    @ApiModelProperty(value = "卡号", name = "cardNumber", required = true)
    @NotEmpty(message = "卡号不能为空")
    private String cardNumber;
    @ApiModelProperty(value = "rfid子类型，0：普通门禁，1：电动车，2：特殊人群关怀， 3：宠物", name = "rfidType", required = true)
    @NotNull(message = "rfid子类型，0：普通门禁，1：电动车，2：特殊人群关怀， 3：宠物不能为空")
    private Integer rfidType;
    @ApiModelProperty(value = "年龄", name = "age", required = true)
    @NotNull(message = "年龄不能为空")
    private Integer age;
    @ApiModelProperty(value = "0-非访客，1-访客", name = "vRecordFlag", required = true)
    @NotNull(message = "0-非访客，1-访客不能为空")
    private Integer vRecordFlag;
}

