package com.ltgk.boat.domain.entity;

import com.ltgk.common.constant.CacheConstants;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.solr.core.mapping.Indexed;
import org.springframework.data.solr.core.mapping.SolrDocument;

import java.util.Date;

/**
 * @Author: wan kun
 * @Description: solr 雷达数据
 * @Date: 2024/9/20 10:49
 * @Version: 1.0
 */
@Data
@SolrDocument(collection = CacheConstants.radarPoint)
public class RadarSolrEntity {
    @Id
    @Indexed(name = "id", type = "String")
    @ApiModelProperty("主键")
    private String id;
    @ApiModelProperty("目标来源 1雷达，2ais")
    @Indexed(name = "source", type = "int")
    public Integer source;

    @ApiModelProperty("目标源id 目标在设备端的唯一标识")
    @Indexed(name = "targetSourceId", type = "string")
    public String targetSourceId;

    @ApiModelProperty("DPL_ID 站点编号0~255")
    @Indexed(name = "stationNumber", type = "int")
    public Integer stationNumber;
    @ApiModelProperty("设备id 设备唯一ID号")
    @Indexed(name = "deviceId", type = "int")
    public Integer deviceId;
    @ApiModelProperty("当前系统时间，格式：yyyy-MM-dd hh:mm:ss.ms")
    @Indexed(name = "time", type = "string")
    public String time;
    @ApiModelProperty("时间 当前系统时间，格式：yyyy-MM-dd hh:mm:ss.ms")
    @Indexed(name = "locationTime", type = "date")

    public Date locationTime;
    @ApiModelProperty("存在标识 0：目标消失1：目标存在 2：外推")
    @Indexed(name = "exist", type = "int")
    public Integer exist;
    @ApiModelProperty("目标类型 -1:未知其他,0:大船,1:中型船,2:小船,10:行人,20:无人机,30:汽车")
    @Indexed(name = "type", type = "int")
    public Integer type;
    @ApiModelProperty("目标名：船名")
    @Indexed(name = "name", type = "string")
    public String name;
    @ApiModelProperty("长度 目标长度，单位：米(m)")
    @Indexed(name = "length", type = "double")
    public Double length;
    @ApiModelProperty("宽度 目标宽度，单位：米(m)")
    @Indexed(name = "width", type = "double")
    public Double width;
    @ApiModelProperty(" 质量等级 默认无，1~255，质量等级由低到高。")
    @Indexed(name = "level", type = "int")
    public Integer level;
    @ApiModelProperty("方位 目标所在方位（相对设备），单位：度(°)")
    @Indexed(name = "azimuth", type = "double")
    public Double azimuth;
    @ApiModelProperty("距离 目标和设备之间的距离，单位：米(m)")
    @Indexed(name = "distance", type = "double")
    public Double distance;
    @ApiModelProperty("纬度 目标所在的纬度，单位：度(°)")
    @Indexed(name = "latitude", type = "double")
    public String latitude;
    @ApiModelProperty("经度 目标所在的经度，单位：度(°)")
    @Indexed(name = "longitude", type = "double")
    public String longitude;
    @ApiModelProperty("径向速度 目标相对设备的径向速度，单位：米/秒(m/s)。")
    @Indexed(name = "radialVelocity", type = "double")
    public Double radialVelocity;
    @ApiModelProperty("仰角 目标相对设备的仰角，单位：度(°)")
    @Indexed(name = "elevation", type = "double")
    public Double elevation;
    @ApiModelProperty("航向 目标的绝对航向（0-360°），单位：度(°)")
    @Indexed(name = "course", type = "double")
    public Double course;
    @ApiModelProperty("航速 目标的实际速度（m/s）")
    @Indexed(name = "speed", type = "double")
    public Double speed;
    @ApiModelProperty(" 高度 目标相对设备的高度，单位：米(m)")
    @Indexed(name = "altitude", type = "double")
    public Double altitude;
    @ApiModelProperty(" 幅度目标幅度，单位：分贝（dB）")
    @Indexed(name = "amplitude", type = "double")
    public Double amplitude;
    @ApiModelProperty(" 噪声 目标噪声，单位:分贝(dB)")
    @Indexed(name = "noise", type = "double")
    public Double noise;
    @ApiModelProperty(value = "设备类型 AIS 雷达")
    @Indexed(name = "deviceType", type = "String")
    private String deviceType;
    @ApiModelProperty(value = "船舶类型")
    @Indexed(name = "boatType", type = "String")
    private String boatType;
    @ApiModelProperty(value = "是不是本地渔船")
    @Indexed(name = "idLocal", type = "int")
    private Integer idLocal;
    @ApiModelProperty(value = "AIS设备号")
    @Indexed(name = "mmsi", type = "String")
    private String mmsi;
    @Indexed(name = "boatName", type = "String")
    @ApiModelProperty(value = "船舶名称")
    private String boatName;
    @Indexed(name = "boatId", type = "String")
    @ApiModelProperty(value = "船舶Id")
    private String boatId;
    /**
     * 船舶所有人名称
     */
    @Indexed(name = "holderName", type = "String")
    @ApiModelProperty(value = "船舶所有人名称")
    private String holderName;

    /**
     * 船舶所有人地址
     */
    @Indexed(name = "holderAddress", type = "String")
    @ApiModelProperty(value = "船舶所有人地址")
    private String holderAddress;
    @Indexed(name = "mainPower", type = "double")
    @ApiModelProperty(value = "主机总功率")
    private Double mainPower;
    /**
     * 船舶所有人电话
     */
    @Indexed(name = "holderPhone", type = "String")
    @ApiModelProperty(value = "船舶所有人电话")
    private String holderPhone;
    @Indexed(name = "homePort", type = "String")
    @ApiModelProperty(value = "船港籍")
    private String homePort;
    @Indexed(name = "boatImage", type = "String")
    @ApiModelProperty(value = "船舶照片")
    private String boatImage;
    @Indexed(name = "boatLength", type = "double")
    @ApiModelProperty(value = "船长")
    private Double boatLength;
    @Indexed(name = "boatWidth", type = "double")
    @ApiModelProperty(value = "型宽")
    private Double boatWidth;
    /**
     * 型深
     */
    @Indexed(name = "height", type = "double")
    @ApiModelProperty(value = "型深")
    private Double height;
    /**
     * 总吨位
     */
    @Indexed(name = "tonnage", type = "double")
    @ApiModelProperty(value = "总吨位")
    private Double tonnage;

    /**
     * 净吨位
     */
    @Indexed(name = "netTonnage", type = "double")
    @ApiModelProperty(value = "净吨位")
    private Double netTonnage;
    /**
     * 是不是黑白名单
     */
    @Indexed(name = "isBlack", type = "int")
    @ApiModelProperty(value = "是不是黑白名单 0都不是 1白名单 2黑名单")
    private Integer isBlack = 0;

    @Indexed(name = "storeLocation", type = "location")
    @ApiModelProperty(value = "点位数据存储 latitude,longitude 28.201514412386377,121.12529333335621")
    private String storeLocation;
}
