package com.ho.flow.vo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ho.common.tools.constant.CommonConstant;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @TableName event
 */
@Data
public class Event implements Serializable {


    @ApiModelProperty(value = "id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    @ApiModelProperty(value = "电站id")
    private Integer stationId;

    @ApiModelProperty(value = "部门id")
    private Integer deptId;

    @ApiModelProperty(value = "分组id")
    private Integer groupId;

    @ApiModelProperty(value = "事件类型")
    private Integer eventType;

    @ApiModelProperty(value = "事件类型等级：1; //一级（事故）2二级（故障）3三级（告警）4四级（提示）5;//五级（告知）")
    private Integer eventLevel;


    @ApiModelProperty(value = "事件时间")
    @JsonFormat(pattern = CommonConstant.DATE_YMD_HMSS)
    private Date timeStamp;

    @ApiModelProperty(value = "事件设备")
    private Integer targetDevice;

    @ApiModelProperty(value = "设备类型",hidden = true)
    private String deviceType;

    @ApiModelProperty(value = "关联device_type表的id" ,hidden = true)
    private Integer deviceTypeId;

    @ApiModelProperty(value = "事件信号")
    private String signal;

    @ApiModelProperty(value = "事件状态 1已确认 0 未确认")
    private Integer status;

    @ApiModelProperty(value = "事件值")
    private BigDecimal value;

    @ApiModelProperty(value = "事件描述")
    private String description;

    @ApiModelProperty(value = "事件描述-英文")
    private String descriptionEn;
    @ApiModelProperty(value = "事件描述-法语")
    private String descriptionFra;
    @ApiModelProperty(value = "事件描述-西班牙语")
    private String descriptionSpa;
    @ApiModelProperty(value = "事件描述-德语")
    private String descriptionDe;
    @ApiModelProperty(value = "事件描述-波兰语")
    private String descriptionPl;
    @ApiModelProperty(value = "事件描述-阿拉伯语")
    private String descriptionAra;

    @ApiModelProperty(value = "1 已确认 0 未确认")
    private Integer confirmStatus;

    @ApiModelProperty(value = "确认人")
    private String confirmMan;


    @ApiModelProperty(value = "确认时间")
    @JsonFormat(pattern = CommonConstant.DATE)
    private Date confirmTime;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "处理建议")
    private String suggestion;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = CommonConstant.DATE)
    private Date createTime;

    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = CommonConstant.DATE)
    private Date updateTime;

    @ApiModelProperty(value = "类别")
    private Integer category;

    @ApiModelProperty(value = "类型")
    private Integer type;

    @ApiModelProperty(value = "子类型")
    private Integer subType;

    @ApiModelProperty(value = "遥信遥测类型（1遥信、2遥测 ）")
    private Integer sensType;

    @ApiModelProperty(value = "故障还是故障恢复的类型（1是故障恢复 0否 ）")
    private Integer isRecovery;

    @ApiModelProperty(value = "告警恢复前一条告警的id")
    private Long beforeEventId;

    @ApiModelProperty(value = "排除id",hidden = true)
    private Long excludeId;
}