package com.tofly.scada.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.springframework.data.annotation.Transient;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

/**
 * 
 * @TableName TF_SCADA_REPORT
 */
@Data
@EqualsAndHashCode
@TableName(value = "TF_SCADA_REPORT")
@KeySequence("TF_SCADA_REPORT")
public class ScadaReport implements Serializable {
    /**
     * ID
     */
    @NotNull(message="[ID]不能为空",groups = Update.class)
    @ApiModelProperty("ID")
    @TableId(value = "ID", type = IdType.INPUT)
    private Long id;

    /**
     * 指标ID
     */
    @NotNull(message="[指标CODE]不能为空")
    @ApiModelProperty("指标CODE")
    private String allocationId;


    /**
     * 报警等级
     */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("报警等级")
    @Length(max= 255,message="编码长度不能超过255")
    private String reportLevel;
    /**
     * 报警上限
     */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("报警上限")
    @Length(max= 20,message="编码长度不能超过20")
    private String reportUpper;
    /**
     * 报警下限
     */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("报警下限")
    @Length(max= 20,message="编码长度不能超过20")
    private String reportLower;
    /**
     * 报警联系人
     */
    @ApiModelProperty("报警联系人")
    private Long liaisonPeople;
    /**
     * 联系人电话
     */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("联系人电话")
    @Length(max= 255,message="编码长度不能超过255")
    private String liaisonPhone;
    /**
     * 负责人
     */
    @ApiModelProperty("负责人")
    private Long leaderPeople;
    /**
     * 负责人电话
     */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("负责人电话")
    @Length(max= 100,message="编码长度不能超过100")
    private String leaderPhone;
    /**
     * 详细描述
     */
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("详细描述")
    @Length(max= 500,message="编码长度不能超过500")
    private String detail;
    /**
     * 消息通知模版
     */
    @Size(max= 2000,message="编码长度不能超过2000")
    @ApiModelProperty("消息通知模版")
    @Length(max= 2000,message="编码长度不能超过2,000")
    private String msgTemplate;
    /**
     * 排序号
     */
    @ApiModelProperty("排序号")
    private Long sort;
    /**
     * 是否报警,0否，1是
     */
    @ApiModelProperty("是否报警,0否，1是")
    private Integer report;
    /**
     * 创建时间
     */
    @JsonIgnore
    @ApiModelProperty(value = "创建时间", hidden = true)
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 创建人
     */
    @JsonIgnore
    @ApiModelProperty(value = "创建人", hidden = true)
    @TableField(value = "CREATE_USER", fill = FieldFill.INSERT)
    private Long createUser;
    /**
     * 更新用户
     */
    @JsonIgnore
    @ApiModelProperty(value = "更新用户", hidden = true)
    @TableField(value = "CREATE_USER", fill = FieldFill.UPDATE)
    private Long updateUser;
    /**
     * 修改时间
     */
    @JsonIgnore
    @ApiModelProperty(value = "修改时间", hidden = true)
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "UPDATE_TIME", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 是否删除1删除；0未删除
     */
    @JsonIgnore
    @ApiModelProperty("是否删除1删除；0未删除")
    private Integer isDel;

    /**
     * 负责人
     */
    @Transient
    @TableField(exist = false)
    private String leaderName;


    /**
     * 报警人
     */
    @Transient
    @TableField(exist = false)
    private String liaisonName;

    /**
     * 指标
     */
    @Transient
    @ApiModelProperty("指标")
    @TableField(exist = false)
    private String dataTypeName;

    @ApiModelProperty("消息联系人")
    private String noticeUser;


    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    public interface Update{}
}