package com.xzzn.ems.domain;

import com.xzzn.common.annotation.Excel;
import com.xzzn.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;

/**
 * 策略运行参数配置对象 ems_strategy_runtime_config
 *
 * @author xzzn
 * @date 2026-02-13
 */
public class EmsStrategyRuntimeConfig extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 站点ID */
    @Excel(name = "站点ID")
    private String siteId;

    /** SOC下限(%) */
    @Excel(name = "SOC下限(%)")
    private BigDecimal socDown;

    /** SOC上限(%) */
    @Excel(name = "SOC上限(%)")
    private BigDecimal socUp;

    /** 防逆流阈值(kW) */
    @Excel(name = "防逆流阈值(kW)")
    private BigDecimal antiReverseThreshold;

    /** 防逆流阈值上浮比例(%) */
    @Excel(name = "防逆流阈值上浮比例(%)")
    private BigDecimal antiReverseRangePercent;

    /** 防逆流恢复上限(kW) */
    @Excel(name = "防逆流恢复上限(kW)")
    private BigDecimal antiReverseUp;

    /** 防逆流降功率比例(%) */
    @Excel(name = "防逆流降功率比例(%)")
    private BigDecimal antiReversePowerDownPercent;
    /** 防逆流硬停阈值(kW) */
    @Excel(name = "防逆流硬停阈值(kW)")
    private BigDecimal antiReverseHardStopThreshold;
    /** 设定功率倍率 */
    @Excel(name = "设定功率倍率")
    private BigDecimal powerSetMultiplier;

    /** 保护介入开关（1-启用，0-禁用） */
    @Excel(name = "保护介入开关")
    private Integer protectInterveneEnable;

    /** 一级保护降额比例(%) */
    @Excel(name = "一级保护降额比例(%)")
    private BigDecimal protectL1DeratePercent;

    /** 保护释放稳定时长(秒) */
    @Excel(name = "保护释放稳定时长(秒)")
    private Integer protectRecoveryStableSeconds;

    /** 三级保护锁存开关（1-启用，0-禁用） */
    @Excel(name = "三级保护锁存开关")
    private Integer protectL3LatchEnable;

    /** 保护冲突策略 */
    @Excel(name = "保护冲突策略")
    private String protectConflictPolicy;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getSiteId() {
        return siteId;
    }

    public void setSiteId(String siteId) {
        this.siteId = siteId;
    }

    public BigDecimal getSocDown() {
        return socDown;
    }

    public void setSocDown(BigDecimal socDown) {
        this.socDown = socDown;
    }

    public BigDecimal getSocUp() {
        return socUp;
    }

    public void setSocUp(BigDecimal socUp) {
        this.socUp = socUp;
    }

    public BigDecimal getAntiReverseThreshold() {
        return antiReverseThreshold;
    }

    public void setAntiReverseThreshold(BigDecimal antiReverseThreshold) {
        this.antiReverseThreshold = antiReverseThreshold;
    }

    public BigDecimal getAntiReverseRangePercent() {
        return antiReverseRangePercent;
    }

    public void setAntiReverseRangePercent(BigDecimal antiReverseRangePercent) {
        this.antiReverseRangePercent = antiReverseRangePercent;
    }

    public BigDecimal getAntiReverseUp() {
        return antiReverseUp;
    }

    public void setAntiReverseUp(BigDecimal antiReverseUp) {
        this.antiReverseUp = antiReverseUp;
    }

    public BigDecimal getAntiReversePowerDownPercent() {
        return antiReversePowerDownPercent;
    }

    public void setAntiReversePowerDownPercent(BigDecimal antiReversePowerDownPercent) {
        this.antiReversePowerDownPercent = antiReversePowerDownPercent;
    }

    public BigDecimal getAntiReverseHardStopThreshold() {
        return antiReverseHardStopThreshold;
    }

    public void setAntiReverseHardStopThreshold(BigDecimal antiReverseHardStopThreshold) {
        this.antiReverseHardStopThreshold = antiReverseHardStopThreshold;
    }

    public BigDecimal getPowerSetMultiplier() {
        return powerSetMultiplier;
    }

    public void setPowerSetMultiplier(BigDecimal powerSetMultiplier) {
        this.powerSetMultiplier = powerSetMultiplier;
    }

    public Integer getProtectInterveneEnable() {
        return protectInterveneEnable;
    }

    public void setProtectInterveneEnable(Integer protectInterveneEnable) {
        this.protectInterveneEnable = protectInterveneEnable;
    }

    public BigDecimal getProtectL1DeratePercent() {
        return protectL1DeratePercent;
    }

    public void setProtectL1DeratePercent(BigDecimal protectL1DeratePercent) {
        this.protectL1DeratePercent = protectL1DeratePercent;
    }

    public Integer getProtectRecoveryStableSeconds() {
        return protectRecoveryStableSeconds;
    }

    public void setProtectRecoveryStableSeconds(Integer protectRecoveryStableSeconds) {
        this.protectRecoveryStableSeconds = protectRecoveryStableSeconds;
    }

    public Integer getProtectL3LatchEnable() {
        return protectL3LatchEnable;
    }

    public void setProtectL3LatchEnable(Integer protectL3LatchEnable) {
        this.protectL3LatchEnable = protectL3LatchEnable;
    }

    public String getProtectConflictPolicy() {
        return protectConflictPolicy;
    }

    public void setProtectConflictPolicy(String protectConflictPolicy) {
        this.protectConflictPolicy = protectConflictPolicy;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("siteId", getSiteId())
                .append("socDown", getSocDown())
                .append("socUp", getSocUp())
                .append("antiReverseThreshold", getAntiReverseThreshold())
                .append("antiReverseRangePercent", getAntiReverseRangePercent())
                .append("antiReverseUp", getAntiReverseUp())
                .append("antiReversePowerDownPercent", getAntiReversePowerDownPercent())
                .append("antiReverseHardStopThreshold", getAntiReverseHardStopThreshold())
                .append("powerSetMultiplier", getPowerSetMultiplier())
                .append("protectInterveneEnable", getProtectInterveneEnable())
                .append("protectL1DeratePercent", getProtectL1DeratePercent())
                .append("protectRecoveryStableSeconds", getProtectRecoveryStableSeconds())
                .append("protectL3LatchEnable", getProtectL3LatchEnable())
                .append("protectConflictPolicy", getProtectConflictPolicy())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
