package com.aidex.system.domain;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.aidex.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.aidex.common.utils.log.annotation.FieldRemark;
import com.aidex.common.utils.log.annotation.LogField;
import com.aidex.common.annotation.Excel;

/**
 * 报警信息对象 sys_alarm
 * @author ChenSir
 * @email 914769835
 * @date 2024-03-17
 */
@Data
public class SysAlarm extends BaseEntity<SysAlarm>
{
    private static final long serialVersionUID = 1L;

    /** 设备ID */
    @NotBlank(message = "设备ID不允许为空")
    @LogField
    @FieldRemark(name = "设备ID",field = "objectId")
    private String objectId;

    /** 设备号（IMEI） */
    @Excel(name = "设备号")
    @NotBlank(message = "设备号（IMEI）不允许为空")
    @LogField
    @FieldRemark(name = "设备号",field = "macId")
    private String macId;

    /** 设备名称（昵称） */
    @LogField
    @FieldRemark(name = "设备名称",field = "fullName")
    private String fullName;

    /** 设备型号 */
    @LogField
    @FieldRemark(name = "设备型号",field = "macName")
    private String macName;

    /** 发生时间（格式：utc时间戳毫秒数） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发生时间", width = 30, dateFormat = "yyyy-MM-dd")
    @LogField
    @FieldRemark(name = "发生时间",field = "alarmime")
    private Date alarmime;

    /** 发生时间（格式：utc时间戳毫秒数）开始 */
    private String beginAlarmime;

    /** 发生时间（格式：utc时间戳毫秒数）结束 */
    private String endAlarmime;

    /** 服务器处理时间（格式：utc时间戳毫秒数） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "服务器处理时间", width = 30, dateFormat = "yyyy-MM-dd")
    @LogField
    @FieldRemark(name = "服务器处理时间",field = "addtime")
    private Date addtime;

    /** 服务器处理时间（格式：utc时间戳毫秒数）开始 */
    private String beginAddtime;

    /** 服务器处理时间（格式：utc时间戳毫秒数）结束 */
    private String endAddtime;

    /** 速度（单位：km/h） */
    @Excel(name = "速度")
    @LogField
    @FieldRemark(name = "速度",field = "speed")
    private String speed;

    /** 纬度（坐标系根据mapType调整） */
    @Excel(name = "纬度")
    @LogField
    @FieldRemark(name = "纬度",field = "lat")
    private String lat;

    /** 经度（坐标系根据mapType调整） */
    @Excel(name = "经度")
    @LogField
    @FieldRemark(name = "经度",field = "lon")
    private String lon;

    /** 方向 */
    @Excel(name = "方向")
    @LogField
    @FieldRemark(name = "方向",field = "dir")
    private String dir;

    /** 描述 */
    @Excel(name = "描述")
    @LogField
    @FieldRemark(name = "描述",field = "describe")
    private String describe;

    /** 报警编号 */
    @Excel(name = "报警编号")
    @LogField
    @FieldRemark(name = "报警编号",field = "alarmType")
    private Long alarmType;

    /** 二级分类 */
    @LogField
    @FieldRemark(name = "二级分类",field = "classify")
    private String classify;

    /** 状态（0未处理 1已处理） */
    @Excel(name = "状态", dictType = "sys_alarm_status")
    @NotBlank(message = "状态（0未处理 1已处理）不允许为空")
    @LogField
    @FieldRemark(name = "状态",field = "status")
    private String status;

    public void setObjectId(String objectId)
    {
        this.objectId = objectId;
    }

    public String getObjectId()
    {
        return objectId;
    }

    public void setMacId(String macId)
    {
        this.macId = macId;
    }

    public String getMacId()
    {
        return macId;
    }

    public void setFullName(String fullName)
    {
        this.fullName = fullName;
    }

    public String getFullName()
    {
        return fullName;
    }

    public void setMacName(String macName)
    {
        this.macName = macName;
    }

    public String getMacName()
    {
        return macName;
    }

    public void setAlarmime(Date alarmime)
    {
        this.alarmime = alarmime;
    }

    public Date getAlarmime()
    {
        return alarmime;
    }

    public void setAddtime(Date addtime)
    {
        this.addtime = addtime;
    }

    public Date getAddtime()
    {
        return addtime;
    }

    public void setSpeed(String speed)
    {
        this.speed = speed;
    }

    public String getSpeed()
    {
        return speed;
    }

    public void setLat(String lat)
    {
        this.lat = lat;
    }

    public String getLat()
    {
        return lat;
    }

    public void setLon(String lon)
    {
        this.lon = lon;
    }

    public String getLon()
    {
        return lon;
    }

    public void setDir(String dir)
    {
        this.dir = dir;
    }

    public String getDir()
    {
        return dir;
    }

    public void setDescribe(String describe)
    {
        this.describe = describe;
    }

    public String getDescribe()
    {
        return describe;
    }

    public void setAlarmType(Long alarmType)
    {
        this.alarmType = alarmType;
    }

    public Long getAlarmType()
    {
        return alarmType;
    }

    public void setClassify(String classify)
    {
        this.classify = classify;
    }

    public String getClassify()
    {
        return classify;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("objectId", getObjectId())
            .append("macId", getMacId())
            .append("fullName", getFullName())
            .append("macName", getMacName())
            .append("alarmime", getAlarmime())
            .append("addtime", getAddtime())
            .append("speed", getSpeed())
            .append("lat", getLat())
            .append("lon", getLon())
            .append("dir", getDir())
            .append("describe", getDescribe())
            .append("alarmtype", getAlarmType())
            .append("classify", getClassify())
            .append("status", getStatus())
            .append("remark", getRemark())
            .append("id", getId())
            .append("createBy", getCreateBy())
            .append("createDept", getCreateDept())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("updateIp", getUpdateIp())
            .append("version", getVersion())
            .append("delFlag", getDelFlag())
            .toString();
    }
}
