package com.dcs.hnyz.domain;

import com.dcs.hnyz.enums.OperationType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.dcs.common.annotation.Excel;
import com.dcs.common.core.domain.BaseEntity;


import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;

/**
 * 告警配置管理对象 alarm_config
 *
 * @author hmy
 * @date 2025-05-22
 */

@Data
@TableName("alarm_config")
@ApiModel(value = "告警配置管理对象")
public class AlarmConfig extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键，自增
     */
    @TableId(value = "config_id", type = IdType.AUTO)
    @ApiModelProperty(value="配置")
    private Long configId;

    /**
     * 关联设备ID，NULL表示适用于所有设备
     */
    @Excel(name = "关联设备ID，NULL表示适用于所有设备")
    @TableField(value = "equipment_id")
    @ApiModelProperty(value = "关联设备ID，NULL表示适用于所有设备")
    private Long equipmentId;

    /**
     * 告警代码，唯一标识
     */
    @Excel(name = "告警代码，唯一标识")
    @TableField(value = "alarm_code")
    @ApiModelProperty(value = "告警代码，唯一标识")
    private String alarmCode;

    /**
     * 告警名称，便于识别和管理
     */
    @Excel(name = "告警名称，便于识别和管理")
    @TableField(value = "alarm_name")
    @ApiModelProperty(value = "告警名称，便于识别和管理")
    private String alarmName;

    /**
     * 告警等级（1-信息，2-警告，3-严重，4-紧急）
     */
    @Excel(name = "告警等级", readConverterExp = "1-信息,2-警告,3-严重,4-紧急")
    @TableField(value = "alarm_level")
    @ApiModelProperty(value = "告警等级（1-信息，2-警告，3-严重，4-紧急）")
    private String alarmLevel;

    /**
     * 告警类型，例如：高温、低压、通信异常等
     */
    @Excel(name = "告警类型，例如：高温、低压、通信异常等")
    @TableField(value = "alarm_type")
    @ApiModelProperty(value = "告警类型:1通信2温度3压力4硬件")
    private String alarmType;

    /**
     * 告警源（1-PLC，2-DCS）
     */
    @Excel(name = "告警源", readConverterExp = "1-PLC,2-DCS")
    @ApiModelProperty(value = "告警源（1-PLC，2-DCS）")
    private String source;

    /**
     * 阈值类型，支持多种比较方式
     */
    @Excel(name = "阈值类型，支持多种比较方式")
    @TableField(value = "threshold_type")
    @ApiModelProperty(value = "阈值类型,gt:大于,lt:小于,eq:等于,ge:大于等于,le:小于等于,range:范围")
    private OperationType thresholdType;

    /**
     * 阈值设置，单值或范围，例如：75 或 60-80
     */
    @Excel(name = "阈值设置，单值或范围，例如：75 或 60-80")
    @TableField(value = "threshold_value")
    @ApiModelProperty(value = "阈值设置，单值或范围，例如：75 或 60-80")
    private String thresholdValue;

    /**
     * 单位，例如：°C、kPa、ppm 等
     */
    @Excel(name = "单位,例如：°C、Mpa 等")
    @ApiModelProperty(value = "单位,例如：°C、Mpa 等")
    private String unit;

    /**
     * 延迟触发时间（秒），用于避免瞬时波动引发告警
     */
    @Excel(name = "延迟触发时间")
    @TableField(value = "delay_seconds")
    @ApiModelProperty(value = "延迟触发时间（秒），用于避免瞬时波动引发告警")
    private Long delaySeconds;

    /**
     * 告警通知
     */
    @Excel(name = "告警通知")
    @ApiModelProperty(value = "告警通知内容")
    private String description;

    /**
     * （email, sms, app, none）
     */
    @Excel(name = "通知方式")
    @TableField(value = "notification_method")
    @ApiModelProperty(value = "（1:email, 2:sms, 3:app, 0:none）")
    private String notificationMethod;

    /**
     * 是否启用该告警配置
     */
    @Excel(name = "是否启用该告警配置")
    @ApiModelProperty(value = "是否启用该告警配置 0启用1停用")
    private String status;


}
