package com.sptg.iot.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 设备告警实体类
 *
 * @author BladeX
 * @since 2020-10-19
 */
@Setter
@Getter
@TableName(value = "iot_alarm")
public class IotAlarm {

	/**
	 * 主键
	 */
	@TableId(value = "l_id", type = IdType.AUTO)
	private Long id;
	/**
	* 告警id
	*/
		@TableField(value = "s_alarm_id")
		private String alarm_id;
	/**
	* 告警次数
	*/
		@TableField(value = "i_alarm_times")
		private Integer alarm_times;
	/**
	* 告警等级 1:严重告警,2:警告告警,3:提示告警
	*/
		@TableField(value = "s_level")
		private String level;
	/**
	* 告警原因
	*/
		@TableField(value = "s_name")
		private String name;
	/**
	* 告警设备sn号
	*/
		@TableField(value = "s_device_id")
		private String device_id;
	/**
	* 设备名称
	*/
		@TableField(value = "s_device_name")
		private String device_name;
	/**
	* 告警时间
	*/
		@TableField(value = "s_record_time")
		private String record_time;
	/**
	* 最新告警时间
	*/
		@TableField(value = "s_update_time")
		private String update_time;
	/**
	* 设备类型
	*/
		@TableField(value = "s_device_type")
		private String device_type;
	/**
	* 设备类型名称
	*/
		@TableField(value = "s_type_name")
		private String type_name;
	/**
	* 告警状态，0 实时告警，1-历史告警
	*/
		@TableField(value = "i_status")
		private Integer status;
	/**
	* 告警类型, 0-业务告警；1-设备告警
	*/
		@TableField(value = "i_alarm_type")
		private Integer alarm_type;

	/**
	 * 工单id
	 */
	@TableField(value = "s_order_id")
	private String order_id;

	/**
	 * 告警数据字段，见附录
	 */
	@TableField(value = "s_metric")
	private String metric;

	/**
	 * 数据字段（拼接后），见附录
	 */
	@TableField(value = "s_alarm_type_splice")
	private String alarmTypeSplice;

	/**
	 *  告警描述
	 */
	@TableField(value = "s_alarm_desc")
	private String alarm_desc;

	/**
	 * 仅有 1，3，4 说明：0:数据,1:告警,2: 心跳3解除单一告警,4解除所有告警
	 */
	@TableField(value = "i_is_alarm")
	private Integer is_alarm;

	/**
	 * 原始报文数据字段，见附录
	 */
	@TableField(value = "s_alarm_metric")
	private String alarm_metric;

	/**
	 * 原始报文数据字段对应值，见附录 （阈值告警除外）
	 */
	@TableField(value = "s_alarm_value")
	private String alarm_value;
//	/**
//	 * 记录创建时间
//	 */
//	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
//	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
//	@TableField(value = "t_create_date")
//	private Date createDate;
//
	/**
	 * 最近同步时间
	 */
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	@TableField(value = "t_last_sync_date")
	private Date lastSyncDate;

	/**
	 * 最近告警上报时间
	 */
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	@TableField(value = "t_last_notice_date")
	private Date lastNoticeDate;

	/**
	 * 应用ID
	 */
	@TableField(value = "s_app_id")
	private String appId;

	@TableField(value = "s_prefix")
	private String prefix;

	@TableField(value = "s_monitor_value")
	private String monitorValue;

}
