package com.mosty.bkzx.sjjs.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.mosty.bkzx.sjjs.dto.SubImageListDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "创建布控对象", description = "创建布控对象")
public class Dispositions implements Serializable, Cloneable {

    private static final long serialVersionUID = 1l;

    @ApiModelProperty(value = "布控id，【必填】 总共33位，前12位机构编码，其中1-6位为省市县的行政区划代码；第7-12位为前六位所标识的公安机关的下辖机构，分为三层，每层编码2位，00代表本级机构。13-14位为子类型编码，详细定义：01-布/撤控 ；02-告警；03-订阅；04-通知；99-其它 ；15-28位为当前时间；最后5位为随机数。")
    @JSONField(name = "DispositionID")
    private String dispositionID;

    @ApiModelProperty(value = "布控标题，布控时【必填】")
    @JSONField(name = "Title")
    private String title;

    @ApiModelProperty(value = "布控类别，人、机动车、非机动车、关键字、人脸等布控时【必填】 详细定义见A10 布控类别（DispositionCategoryType）")
    @JSONField(name = "DispositionCategory")
    private Integer dispositionCategory;

    @ApiModelProperty(value = "布控对象特征 ，【选填】。")
    @JSONField(name = "TargetFeature")
    private String targetFeature;

    @ApiModelProperty(value = "布控对象图像，图像路径，以目标图像特征进行布控时使用。【选填】")
    @JSONField(name = "TargetImageURI")
    private Object targetImageURI;

    @ApiModelProperty(value = "布控优先级 ，1-3 级，1 级最高，3 级最低。预警灵敏度越高，则触发预警的相似度阈值越低，误报率越高。各厂商分析系统可根据预警灵敏度级别，设置布控的相似度阈值。【选填】")
    @JSONField(name = "PriorityLevel")
    private Integer priorityLevel;

    @ApiModelProperty(value = "：申请人 姓名 【必填】")
    @JSONField(name = "ApplicantName")
    private String applicantName;

    @ApiModelProperty(value = "申请人联系方式 【选填】")
    @JSONField(name = "ApplicantInfo")
    private Object applicantInfo;

    @ApiModelProperty(value = "申请单位 【必填】")
    @JSONField(name = "ApplicantOrg")
    private String applicantOrg;

    @ApiModelProperty(value = "布控开始时间 【必填】")
    @JSONField(name = "BeginTime")
    private String beginTime;

    @ApiModelProperty(value = "布控结束时间 【必填】")
    @JSONField(name = "EndTime")
    private String endTime;

    @ApiModelProperty(value = "创建时间，系统自动生成")
    @JSONField(name = "CreatTime")
    private String creatTime;

    @ApiModelProperty(value = " 布控操作类型 ,【必填】 0:布控；1：撤控")
    @JSONField(name = "OperateType")
    private Integer operateType;

    @ApiModelProperty(value = "布控执行状态，0：布控中；1：已撤控；2：布控到期；9：未布控。【选填】")
    @JSONField(name = "DispositionStatus")
    private Integer dispositionStatus;

    @ApiModelProperty(value = "布控范围，1:卡口；2：区域布控；3：设备。【必填】")
    @JSONField(name = "DispositionRange")
    private Integer dispositionRange;

    @ApiModelProperty(value = "布控卡口 ，DispositionRange为1时使用； 可带多个卡口ID，多个以”;”间隔(英文半角分号)； 为空表示布控到所有卡口；")
    @JSONField(name = "TollgateList")
    private Object tollgateList;

    @ApiModelProperty(value = "布控行政区代码，DispositionRange为2时使用；实际需要执行布控的行政区域代码，县际联动填6位行政区号码（GB/T2260规定），地市联动填4位行政区号码，省际联动填2位行政区号码，多个区域间以”;”间隔；为空表示布控到所有区域；")
    @JSONField(name = "DispositionArea")
    private Object dispositionArea;

    @ApiModelProperty(value = " 告警信息接收地址, 【必填】")
    @JSONField(name = "ReceiveAddr")
    private String receiveAddr;

    @ApiModelProperty(value = "告警信息接收手机号")
    @JSONField(name = "ReceiveMobile")
    private String receiveMobile;

    @ApiModelProperty(value = "布控原因")
    @JSONField(name = "Reason")
    private String reason;

    @ApiModelProperty(value = "撤控单位名称")
    @JSONField(name = "DispositionRemoveOrg")
    private String dispositionRemoveOrg;

    @ApiModelProperty(value = "撤控人")
    @JSONField(name = "DispositionRemovePerson")
    private String dispositionRemovePerson;

    @ApiModelProperty(value = "撤控时间")
    @JSONField(name = "DispositionRemoveTime")
    private String dispositionRemoveTime;

    @ApiModelProperty(value = "撤控原因")
    @JSONField(name = "DispositionRemoveReason")
    private String dispositionRemoveReason;

    @ApiModelProperty(value = "图像列表 ，可以包含0个或者多个子图像对象实现单图片/多图布控；一般用于单图布控，多图布控建议使用TabIDList")
    @JSONField(name = "SubImageList")
    private SubImageListDTO subImageList;

    @ApiModelProperty(value = " 布控库id列表，库布控时【必填】，其他情况无需填写；可多值，此时类型为string，多个值之间使用英文半角分号隔开")
    @JSONField(name = "TabIDList")
    private String tabIDList;

    @ApiModelProperty(value = " 布控设备，设备布控时使用。可对多个设备进行布控。携带多个设备ID时使用英文半角分号分隔；为空表示布控到当前行政区域所有设备")
    @JSONField(name = "DeviceList")
    private String deviceList;

    @ApiModelProperty(value = "特征")
    @JSONField(name = "FeatureObject")
    private Object featureObject;

    @ApiModelProperty(value = "结果图像声明")
    @JSONField(name = "ResultImageDeclare")
    private Object resultImageDeclare;

    @ApiModelProperty(value = "结果特征声明")
    @JSONField(name = "ResultFeatureDeclare")
    private Object resultFeatureDeclare;

    @ApiModelProperty(value = "布控库ID")
    @JSONField(name = "TabID")
    private String tabID;

    @ApiModelProperty(value = "预警灵敏度 ，预警灵敏度：1-3 级，1 级最高（相似度低于70低，误报率越高。各厂商分析系统可根据预警灵敏度级别，设置布控的相似度阈值 .【选填】")
    @JSONField(name = "AlarmSensitivity")
    private Integer alarmSensitivity;
}
