package cn.iocoder.yudao.module.iot.dal.dataobject.alertrecord;

import cn.iocoder.yudao.module.iot.dal.dataobject.alert.AlertDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 告警记录 DO
 *
 * @author 内蒙必硕
 */
@TableName("iot_alert_record")
@KeySequence("iot_alert_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AlertRecordDO extends BaseDO {

    /**
     * ID
     */
    @TableId
    private Long id;
    /**
     * 编码
     */
    private String alertCode;
    /**
     * 名称
     */
    private String alertName;
    /**
     * 告警类型
     *
     */
    private String alertType;
    /**
     * 告警等级
     *
     */
    private String alertLevel;
    /**
     * 告警内容
     */
    private String content;
    /**
     * 告警条件
     */
    private String conditionInfo;
    /**
     * 逻辑表达式
     */
    private String conditionFormula;
    /**
     * 数据值
     */
    private String dataValue;
    /**
     * 数据类型
     *
     */
    private String dataType;
    /**
     * 单位
     */
    private String dataUnit;
    /**
     * 描述
     */
    private String dataTypeRemark;
    /**
     * 告警ID
     */
    private Long alertId;
    /**
     * 告警音频
     */
    private String alertAudio;
    /**
     * 重复告警
     *
     */
    private Boolean isRepeat;
    /**
     * 不重复间隔
     */
    private Long noRepeatDuration;
    /**
     * 来源ID
     */
    private Long dataId;
    /**
     * 来源编码
     */
    private String dataCode;
    /**
     * 来源名称
     */
    private String dataName;

    public AlertRecordDO(AlertDO alertDO){
        this.alertId = alertDO.getId();
        this.alertCode = alertDO.getAlertCode();
        this.alertName = alertDO.getAlertName();
        this.alertType = alertDO.getAlertType();
        this.alertLevel = alertDO.getAlertLevel();
        this.alertAudio = alertDO.getAlertAudio();
        this.isRepeat = alertDO.getIsRepeat();
        this.content = alertDO.getContent();
        this.conditionFormula = alertDO.getConditionFormula();
        this.conditionInfo = alertDO.getConditionInfo();
    }
    //属性报警时
    public void setData(DeviceAttributeDO attributeDO){
        this.dataId = attributeDO.getId();
        this.dataCode = attributeDO.getAttributeCode();
        this.dataName = attributeDO.getAttributeName();
        this.dataType = attributeDO.getDataType();
        this.dataUnit = attributeDO.getDataUnit();
        this.dataTypeRemark = attributeDO.getDataTypeRemark();
    }
}