package com.ruoyi.security.domain;

import java.util.Date;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 风险事件对象 dc_risk_event
 * 
 * @author ruoyi
 * @date 2025-12-22
 */
public class RiskEvent extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 风险事件ID */
    private Long eventId;

    /** 事件编号 */
    @Excel(name = "事件编号")
    private String eventNumber;

    /** 事件类型 */
    @Excel(name = "事件类型")
    private String eventType;

    /** 风险级别 */
    @Excel(name = "风险级别")
    private String riskLevel;

    /** 事件来源 */
    @Excel(name = "事件来源")
    private String eventSource;

    /** 关联实体ID */
    @Excel(name = "关联实体ID")
    private Long relatedEntityId;

    /** 实体类型 */
    @Excel(name = "实体类型")
    private String entityType;

    /** 事件描述(加密) */
    @Excel(name = "事件描述")
    private String eventDescription;

    /** 异常详情(加密) */
    @Excel(name = "异常详情")
    private String anomalyDetails;

    /** 事件状态 */
    @Excel(name = "事件状态")
    private String eventStatus;

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

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

    /** 处理人 */
    @Excel(name = "处理人")
    private String handledBy;

    /** 解决方案 */
    @Excel(name = "解决方案")
    private String resolution;

    // 风险级别常量
    public static final String RISK_LEVEL_HIGH = "HIGH";
    public static final String RISK_LEVEL_MEDIUM = "MEDIUM";
    public static final String RISK_LEVEL_LOW = "LOW";

    // 事件状态常量
    public static final String EVENT_STATUS_OPEN = "OPEN";
    public static final String EVENT_STATUS_IN_PROGRESS = "IN_PROGRESS";
    public static final String EVENT_STATUS_RESOLVED = "RESOLVED";
    public static final String EVENT_STATUS_CLOSED = "CLOSED";

    // 事件类型常量
    public static final String EVENT_TYPE_AMOUNT_INCONSISTENCY = "AMOUNT_INCONSISTENCY";
    public static final String EVENT_TYPE_PARTY_MISMATCH = "PARTY_MISMATCH";
    public static final String EVENT_TYPE_PERIOD_INCONSISTENCY = "PERIOD_INCONSISTENCY";
    public static final String EVENT_TYPE_DATA_ANOMALY = "DATA_ANOMALY";

    public void setEventId(Long eventId) 
    {
        this.eventId = eventId;
    }

    public Long getEventId() 
    {
        return eventId;
    }

    public void setEventNumber(String eventNumber) 
    {
        this.eventNumber = eventNumber;
    }

    public String getEventNumber() 
    {
        return eventNumber;
    }

    public void setEventType(String eventType) 
    {
        this.eventType = eventType;
    }

    public String getEventType() 
    {
        return eventType;
    }

    public void setRiskLevel(String riskLevel) 
    {
        this.riskLevel = riskLevel;
    }

    public String getRiskLevel() 
    {
        return riskLevel;
    }

    public void setEventSource(String eventSource) 
    {
        this.eventSource = eventSource;
    }

    public String getEventSource() 
    {
        return eventSource;
    }

    public void setRelatedEntityId(Long relatedEntityId) 
    {
        this.relatedEntityId = relatedEntityId;
    }

    public Long getRelatedEntityId() 
    {
        return relatedEntityId;
    }

    public void setEntityType(String entityType) 
    {
        this.entityType = entityType;
    }

    public String getEntityType() 
    {
        return entityType;
    }

    public void setEventDescription(String eventDescription) 
    {
        this.eventDescription = eventDescription;
    }

    public String getEventDescription() 
    {
        return eventDescription;
    }

    public void setAnomalyDetails(String anomalyDetails) 
    {
        this.anomalyDetails = anomalyDetails;
    }

    public String getAnomalyDetails() 
    {
        return anomalyDetails;
    }

    public void setEventStatus(String eventStatus) 
    {
        this.eventStatus = eventStatus;
    }

    public String getEventStatus() 
    {
        return eventStatus;
    }

    public void setDetectedTime(Date detectedTime) 
    {
        this.detectedTime = detectedTime;
    }

    public Date getDetectedTime() 
    {
        return detectedTime;
    }

    public void setResolvedTime(Date resolvedTime) 
    {
        this.resolvedTime = resolvedTime;
    }

    public Date getResolvedTime() 
    {
        return resolvedTime;
    }

    public void setHandledBy(String handledBy) 
    {
        this.handledBy = handledBy;
    }

    public String getHandledBy() 
    {
        return handledBy;
    }

    public void setResolution(String resolution) 
    {
        this.resolution = resolution;
    }

    public String getResolution() 
    {
        return resolution;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("eventId", getEventId())
            .append("eventNumber", getEventNumber())
            .append("eventType", getEventType())
            .append("riskLevel", getRiskLevel())
            .append("eventSource", getEventSource())
            .append("relatedEntityId", getRelatedEntityId())
            .append("entityType", getEntityType())
            .append("eventDescription", getEventDescription())
            .append("anomalyDetails", getAnomalyDetails())
            .append("eventStatus", getEventStatus())
            .append("detectedTime", getDetectedTime())
            .append("resolvedTime", getResolvedTime())
            .append("handledBy", getHandledBy())
            .append("resolution", getResolution())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}