package com.yuchen.saas.integration.hik.isc.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.nest.springwrap.core.tenant.mp.TenantEntity;

import java.math.BigDecimal;

/**
 * <p>
 * 摄像头设备主表
 * </p>
 *
 * @author linyb
 * @since 2023-12-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("pmg_bat_camera_device_info")
@ApiModel(value = "PmgBatCameraDeviceInfo对象", description = "摄像头设备主表")
public class PmgBatCameraDeviceInfo extends TenantEntity {

    /**
     * 锐视佳摄像头id/分组i
     */
    @ApiModelProperty(name = "cid", value = "锐视佳摄像头id/分组id")
    private String cid;

    /**
     * 锐视佳父级id
     */
    @ApiModelProperty(name = "pid", value = "锐视佳父级id")
    private String pid;

    /**
     * ip/sn
     */
    @ApiModelProperty(name = "ip", value = "ip/sn")
    private String ip;

    /**
     * 纬度
     */
    @ApiModelProperty(name = "latitude", value = "纬度")
    private BigDecimal latitude;

    /**
     * 经度
     */
    @ApiModelProperty(name = "longitude", value = "经度")
    private BigDecimal longitude;

    /**
     * 设备名称/分组名称
     */
    @ApiModelProperty(name = "deviceName", value = "设备名称/分组名称")
    private String deviceName;

    /**
     * 端口号
     */
    @ApiModelProperty(name = "port", value = "端口号")
    private Integer port;

    /**
     * 密码
     */
    @ApiModelProperty(name = "pwd", value = "密码")
    private String pwd;

    /**
     *
     * 录像码流（0：主码流，1：子码流）
     */
    @ApiModelProperty(name = "rStreamNo", value = "录像码流（0：主码流，1：子码流）")
    private Integer rStreamNo;

    /**
     * 备注
     */
    @ApiModelProperty(name = "remark", value = "备注")
    private String remark;

    /**
     * 实时码流（0：多码流，1：主码流，2：子码流）
     */
    @ApiModelProperty(name = "streamMode", value = "实时码流（0：多码流，1：主码流，2：子码流）")
    private Integer streamMode;

    /**
     * 用户名
     */
    @ApiModelProperty(name = "uid", value = "用户名")
    private String uid;

    /**
     * 设备类型（ONVIF：ONVIF，GB28181：GB28181，HIK_RTSP：海康，StdHik：海康新协议，HikEhome：海康主动注册，HikIsup：海康主动注册新协议）
     */
    @ApiModelProperty(name = "vendor", value = "设备类型（ONVIF：ONVIF，GB28181：GB28181，HIK_RTSP：海康，StdHik：海康新协议，HikEhome：海康主动注册，HikIsup：海康主动注册新协议）")
    private String vendor;

    /**
     * 通道号
     */
    @ApiModelProperty(name = "channelNo", value = "通道号")
    private Integer channelNo;

    /**
     * 设备编码
     */
    @ApiModelProperty(name = "gbid", value = "设备编码")
    private String gbid;

    /**
     * 节点类别, group - 设备组，cam - 摄像机
     */
    @ApiModelProperty(name = "cat", value = "节点类别, group - 设备组，cam - 摄像机")
    private String cat;

    /**
     * 场站id
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(name = "siteId", value = "场站id")
    private Long siteId;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(name = "siteName", value = "场站名称")
    private String siteName;

    /**
     * 客户id
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(name = "customerId", value = "客户id")
    private Long customerId;

    /**
     * 父级id
     */
    @ApiModelProperty(name = "parentId", value = "父级id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long parentId;


    /**
     * 地址
     */
    @ApiModelProperty(name = "deviceAddress", value = "地址")
    private String deviceAddress;

    /**
     * 项目id
     */
    @ApiModelProperty(name = "projectId", value = "项目id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long projectId;

    /**
     * 所属产品
     */
    @ApiModelProperty(name = "productKey", value = "所属产品")
    private String productKey;


    /**
     * 设备编码（对应设备中心的deviceName）
     */
    @ApiModelProperty(name = "deviceNo", value = "设备编码（对应设备中心的deviceName）")
    private String deviceNo;


    /**
     * 设备类型名称
     */
    @ApiModelProperty(name = "deviceTypeName", value = "设备类型名称")
    private String deviceTypeName;


    /**
     * 设备类型id
     */
    @ApiModelProperty(name = "deviceTypeId", value = "设备类型id")
    private String deviceTypeId;


    /**
     * 设备图片地址
     */
    @ApiModelProperty(name = "deviceImages", value = "设备图片地址")
    private String deviceImages;


    /**
     * 监控类型（1：AI监控，2：普通监控）
     */
    @ApiModelProperty(name = "monitorType", value = "监控类型（1：AI监控，2：普通监控）")
    private String monitorType;
}
