package com.usky.sas.service.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 事件详情响应
 */
@Data
@ApiModel("事件详情响应")
public class EventDetailResponse {

    @ApiModelProperty("事件ID")
    private String eventId;

    @ApiModelProperty("设备ID")
    private String deviceId;

    @ApiModelProperty("设备类型")
    private Integer deviceType;

    @ApiModelProperty("通道号")
    private Integer channel;

    @ApiModelProperty("触发时间")
    private LocalDateTime triggerTime;

    private LocalDateTime createTime;

    @ApiModelProperty("事件代码")
    private String eventCode;

    @ApiModelProperty("事件类型名称")
    private String eventTypeName;

    @ApiModelProperty("备注")
    private String note;

    @ApiModelProperty("地址")
    private String address;

    @ApiModelProperty("事件图片URL")
    private String eventUrl;

    @ApiModelProperty("场景图片URL")
    private String sceneUrl;

    // Snap 专用字段
    @ApiModelProperty("人员编码")
    private String personCode;

    @ApiModelProperty("人员姓名")
    private String name;

    @ApiModelProperty("证件类型")
    private String credentialType;

    @ApiModelProperty("证件号码")
    private String credentialNo;

    @ApiModelProperty("相似度")
    private Integer similarity;

    @ApiModelProperty("是否通知")
    private Boolean notify;

    @ApiModelProperty("是否场景")
    private Boolean scene;

    // Entrance 专用字段
    @ApiModelProperty("认证类型")
    private Integer certifiedType;

    @ApiModelProperty("认证类型名称")
    private String certifiedTypeName;

    @ApiModelProperty("认证号码")
    private String certifiedNo;

    @ApiModelProperty("电话")
    private String phone;

    @ApiModelProperty("卡号")
    private String cardId;

    // Parking 专用字段
    @ApiModelProperty("入口编码")
    private String entranceCode;

    @ApiModelProperty("车牌号")
    private String plateNo;

    @ApiModelProperty("车牌类型")
    private String plateType;

    @ApiModelProperty("车牌颜色")
    private String plateColor;

    @ApiModelProperty("车辆类型")
    private String carType;

    @ApiModelProperty("通行类型")
    private Integer accessType;

    // Alarm 专用字段
    @ApiModelProperty("关联人员")
    private String relPerson;

    @ApiModelProperty("处理人员")
    private String dealPerson;

    @ApiModelProperty("事件系统")
    private Integer eventSystem;

    // Patrol 专用字段
    @ApiModelProperty("类型名称")
    private String typeName;

    // GIS 信息
    @ApiModelProperty("GIS信息")
    private GisInfo gisInfo;

    @Data
    @ApiModel("GIS信息")
    public static class GisInfo {
        @ApiModelProperty("GIS ID")
        private String id;

        @ApiModelProperty("名称")
        private String name;

        @ApiModelProperty("经度")
        private Double longitude;

        @ApiModelProperty("纬度")
        private Double latitude;

        @ApiModelProperty("地址")
        private String address;
    }
}
