package com.yfd.platform.modules.basedata.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 变电站_巡视点位
 * </p>
 *
 *
 * @since 2023-03-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("iis_substation_device")
public class SubstationDevice implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 设备点位id
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String deviceId;

    /**
     * 设备点位编号
     */
    private String deviceCode;

    /**
     * 设备点位名称
     */
    private String deviceName;

    /**
     * 变电站id
     */
    private String stationId;

    private String stationName;

    /**
     * 和中台对应资源 ID 保持一致
     */
    private String stationCode;

    /**
     * 和中台对应资源 ID 保持一致
     */
    private String areaId;

    /**
     * 区域全名
     */
    private String areaName;

    /**
     * 和中台对应资源 ID 保持一致
     */
    private String bayId;

    /**
     * 间隔全名
     */
    private String bayName;

    /**
     * 主设备ID，和中台对应资源 ID 保持一致
     */
    private String mainDeviceId;

    /**
     * 主设备全名
     */
    private String mainDeviceName;

    /**
     * 主设备类型，字典项，选择主设备列表的时候带过来
     */
    private String deviceType;

    /**
     * 和中台对应资源 ID 保持一致
     */
    private String componentId;

    /**
     * 部件名称
     */
    private String componentName;

    /**
     * 表计类型，字典项
     */
    private String meterType;

    /**
     * 辅助设施类型，字典项
     */
    private String appearanceType;

    /**
     * 采集/保存文件类型列表，格式：多个采集文件类型，采用","分隔
     */
    private String saveTypeList;

    /**
     * 识别类型列表，格式：多个识别类型，采用","分隔
     */
    private String recognitionTypeList;

    /**
     * <1>:=A 相<2>:=B 相<3>:=C 相 多个相位，采用"，"分隔
     */
    private String phase;

    /**
     * 备注信息
     */
    private String deviceInfo;

    /**
     * 按位定义数据来源，支持 32 位 1 为有效， 0 为无效，如下：第 0 位：摄像机第 1 位：机器人第 2 位：无人机第 3 位：声纹第 4 位：在线监测区域巡视主机上报上级系统填写
     */
    private String dataType;

    /**
     * 正常范围下限，巡视主机上报上级系统填写（选填）数值或者百分比
     */
    private String lowerValue;

    /**
     * 正常范围上限，巡视主机上报上级系统填写（选填）
     */
    private String upperValue;

    /**
     * 关联视频编码及预置位，json格式
     */
    private String videoPos;

    /**
     * 0：不进行告警；1：进行告警
     */
    private String isAlarm;

    /**
     * 数据状态
     */
    private String datastatus;

    /**
     * 修改人
     */
    private String lastmodifier;

    /**
     * 最近修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime lastmodifydate;

    /**
     * json串,包含设备编号、预置位号、识别类型、文件类型、上限、下限
     * { "device_name":"摄像头名称","device_code":"摄像头编码","channel_code":"视频通道编码","device_pos":"预置位号" }
     *
     */
    private String patroldeviceJson                                                                                                                                                                                                        ;

    /**
     * 备用1
     */
    private String custom1;

    /**
     * 备用2
     */
    private String custom2;

    /**
     * 备用3
     */
    private String custom3;

    /**
     * 是否识别实物ID，默认0:不识别；1:识别
     */
    @TableField("identify_material_id")
    private String identifyMaterialId;


    /**
     * 识别类型列表，格式：多个识别类型名称，采用","分隔
     */
    private String recognitionTypeNameList;

    /**
     * 表计量程角度,{min_temp:0,max_temp:2.5,min_angle:170,max_angle}
     */
    private String outsideAngle;

    /**
     * 单位
     */
    private String unit;

    /**
     * 分析类型、缺陷类型、判别类型List集合，采用","分隔
     */
    private String pictureAnalysisTypeList;

    /**
     * 巡视点位表表计特征
     */
    private String outsideFeature;

    /**
     * 点位分类：字典项；1：Ⅰ类；2：Ⅱ类；3：Ⅲ类
     */
    private String deviceClass;

    /**
     * 模板图片地址
     */
    private String imageNormalUrlpath;

    /**
     * 延时报警时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime delayedAlarmDate;

    /**
     * 生效区域
     */
    private String effectiveArea;

    /**
     * 声纹装置的录制时长，当前点位选中声纹装置时，需要维护该字段，单位：秒
     */
    private String duration;
    /**
     * 声纹设备缺陷类型，声纹缺陷list集合，采用","分隔
     */
    private String voiceAnalysisTypeList;
}
