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

import com.baomidou.mybatisplus.annotation.IdType;
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.sql.Timestamp;

/**
 * <p>
 * 告警日志表
 * </p>
 *
 *
 * @since 2023-05-03
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("iis_alarm_log")
public class AlarmLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * uuid
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 变电站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
     */
    private String mainDeviceId;

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

    /**
     * 部件ID
     */
    private String componentId;

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

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

    /**
     * 设备点位id
     */
    private String deviceId;

    /**
     * 巡视设备id(告警设备ID、巡视设备ID)
     */
    private String patroldeviceId;

    /**
     * 巡视设备编码
     */
    private String patroldeviceCode;

    /**
     * 巡视设备名称
     */
    private String patroldeviceName;

    /**
     * 任务id
     */
    private String taskId;

    /**
     * 巡视任务执行ID
     */
    private String taskPatrolledId;

    /**
     * 巡视任务结果id
     */
    private String taskResultId;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 任务编码
     */
    private String taskCode;

    /**
     * 实物ID
     */
    private String materialId;

    /**
     * 1:巡视任务告警；2:静默任务告警，3：巡视设备告警
     */
    private String taskAlarmType;

    /**
     * 字典项<1-100>: 行为类监视类型<101-200>: 环境类监视类型<201-300>: 设备类监视类型
     */
    private String monitorType;

    /**
     * 缺陷类别
     */
    private String defectType;

    /**
     *1:一般；2:严重；3;危急
     */
    private String alarmLevel;

    /**
     * 字典表<1>: = 超温报警<2>: = 温升报警<3>: = 三相温差报警<4>: = 三相对比报警<5>: = 声音异常<6>: = 外观异常<7>: = 仪表越限报警<8>: = 仪表超量程报警<9>: = 仪表三相对比<10>: = 变位报警
     */
    private String alarmType;

    /**
     * 1:表计读取；2:位置状态识别；3:设备外观查看；4:红外测温；5:声音检测；6:闪烁检测11:局放超声波检测12:局放地电压检测13:局放特高频检测101:环境温度检测102:环境湿度检测103:氧气浓度检测104SF6浓度检测
     */
    private String recognitionType;

    /**
     * 1:红外图谱；2:可见光照片；3:音频4:视频5:识别图片，存在多个文件，文件类型用逗号分隔
     */
    private String fileType;

    /**
     * 存在多个文件，路径用逗号分隔，并与文件类型一一对应
     */
    private String filePath;

    /**
     * 存在多个文件，路径用逗号分隔，并与文件类型一一对应
     */
    private String defectFilePath;

    /**
     * 值
     */
    private String value;

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

    /**
     * 告警描述
     */
    private String content;

    /**
     * 发送报警时间
     */
    private String alarmDate;

    /**
     * 0:未核查；1:已审核；2.已修正
     */
    private String checkFlag;

    /**
     * 核查人编号
     */
    private String checkUserCode;

    /**
     * 核查人名称
     */
    private String checkUserName;

    /**
     * 核查时间
     */
    private String checkDate;

    /**
     * 核查反馈意见
     */
    private String checkComment;

    /**
     * 是否属实
     */
    private String checkResult;

    /**
     * 格式：x1,y1,x2y2;x3,y3,x4,y4；多个报警框的左上角和右下角坐标
     */
    private String rectangle;

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

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


    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp lastmodifydate;

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

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

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

    /**
     * 所属系统：01-在线监测 02-消防系统 03-安防系统 04-动环系统 05-锁控系统 06-辅控系统 07-照明系统（辅控）
     */
    private String systemcode;



    /**
     * 辅控告警类型（辅控）
     */
    private String fkAlarmType;

    /**
     * 正常范围（辅控）
     */
    private String normalRange;

    /**
     * 01-组件变色  02-系统弹窗 ，03-邮件通知 ，04-触发联动  可多选：01,02（辅控）
     */
    private String noticeAction;

    /**
     * 邮件通知：[{name:"张三",email:"1122@163.com"}]（辅控）
     */
    private String noticeEmails;

    /**
     * 触发联动：[{name:"XX联动",id:"12345678"}]（辅控）
     */
    private String noticeLinkages;

    /**
     * 告警分类：1-越限告警 2-设备报警（辅控）
     */
    private String alarmClass;

    /**
     * 区域标识（辅控）
     */
    private String region;

    /**
     * 报警来源类型（1:智巡；2：辅控）
     */
    private String alarmSourceType;
}
