package com.ruoyi.blockchain.domain;

import java.util.Date;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 合约监控对象 dc_contract_monitor
 * 
 * @author ruoyi
 * @date 2025-12-19
 */
public class ContractMonitor extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 监控ID */
    private Long monitorId;

    /** 合约地址 */
    @Excel(name = "合约地址")
    @NotBlank(message = "合约地址不能为空")
    @Size(max = 100, message = "合约地址长度不能超过100个字符")
    private String contractAddress;

    /** 监控名称 */
    @Excel(name = "监控名称")
    @NotBlank(message = "监控名称不能为空")
    @Size(max = 100, message = "监控名称长度不能超过100个字符")
    private String monitorName;

    /** 监控类型 */
    @Excel(name = "监控类型")
    @NotBlank(message = "监控类型不能为空")
    @Size(max = 50, message = "监控类型长度不能超过50个字符")
    private String monitorType;

    /** 监控配置 */
    @Size(max = 2000, message = "监控配置长度不能超过2000个字符")
    private String monitorConfig;

    /** 监控状态 */
    @Excel(name = "监控状态")
    @NotBlank(message = "监控状态不能为空")
    @Size(max = 20, message = "监控状态长度不能超过20个字符")
    private String monitorStatus;

    /** 开始时间 */
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "开始时间不能为空")
    private Date startTime;

    /** 结束时间 */
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 最后检查时间 */
    @Excel(name = "最后检查时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastCheckTime;

    /** 检查间隔(秒) */
    @Excel(name = "检查间隔")
    @NotNull(message = "检查间隔不能为空")
    private Long checkInterval;

    /** 告警阈值 */
    @Excel(name = "告警阈值")
    private String alertThreshold;

    /** 告警次数 */
    @Excel(name = "告警次数")
    private Integer alertCount;

    /** 最后告警时间 */
    @Excel(name = "最后告警时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastAlertTime;

    /** 描述 */
    @Excel(name = "描述")
    @Size(max = 500, message = "描述长度不能超过500个字符")
    private String description;

    public void setMonitorId(Long monitorId) {
        this.monitorId = monitorId;
    }

    public Long getMonitorId() {
        return monitorId;
    }

    public void setContractAddress(String contractAddress) {
        this.contractAddress = contractAddress;
    }

    public String getContractAddress() {
        return contractAddress;
    }

    public void setMonitorName(String monitorName) {
        this.monitorName = monitorName;
    }

    public String getMonitorName() {
        return monitorName;
    }

    public void setMonitorType(String monitorType) {
        this.monitorType = monitorType;
    }

    public String getMonitorType() {
        return monitorType;
    }

    public void setMonitorConfig(String monitorConfig) {
        this.monitorConfig = monitorConfig;
    }

    public String getMonitorConfig() {
        return monitorConfig;
    }

    public void setMonitorStatus(String monitorStatus) {
        this.monitorStatus = monitorStatus;
    }

    public String getMonitorStatus() {
        return monitorStatus;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setLastCheckTime(Date lastCheckTime) {
        this.lastCheckTime = lastCheckTime;
    }

    public Date getLastCheckTime() {
        return lastCheckTime;
    }

    public void setCheckInterval(Long checkInterval) {
        this.checkInterval = checkInterval;
    }

    public Long getCheckInterval() {
        return checkInterval;
    }

    public void setAlertThreshold(String alertThreshold) {
        this.alertThreshold = alertThreshold;
    }

    public String getAlertThreshold() {
        return alertThreshold;
    }

    public void setAlertCount(Integer alertCount) {
        this.alertCount = alertCount;
    }

    public Integer getAlertCount() {
        return alertCount;
    }

    public void setLastAlertTime(Date lastAlertTime) {
        this.lastAlertTime = lastAlertTime;
    }

    public Date getLastAlertTime() {
        return lastAlertTime;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    @Override
    public String toString() {
        return "ContractMonitor{" +
                "monitorId=" + monitorId +
                ", contractAddress='" + contractAddress + '\'' +
                ", monitorName='" + monitorName + '\'' +
                ", monitorType='" + monitorType + '\'' +
                ", monitorConfig='" + monitorConfig + '\'' +
                ", monitorStatus='" + monitorStatus + '\'' +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                ", lastCheckTime=" + lastCheckTime +
                ", checkInterval=" + checkInterval +
                ", alertThreshold='" + alertThreshold + '\'' +
                ", alertCount=" + alertCount +
                ", lastAlertTime=" + lastAlertTime +
                ", description='" + description + '\'' +
                '}';
    }
}