package com.xzzn.ems.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xzzn.common.annotation.Excel;
import com.xzzn.common.core.domain.BaseEntity;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 电池堆数据对象 ems_battery_stack
 *
 * @author xzzn
 * @date 2025-07-02
 */
public class EmsBatteryStack extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    private Long id;

    /** 数据更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "数据更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date dataUpdateTime;

    /** 工作状态：0-运行 1-停机 2-故障 */
    @Excel(name = "工作状态：0-运行 1-停机 2-故障")
    private String workStatus;

    /** 与PCS通信状态：0-正常 1-通信中断 2-异常 */
    @Excel(name = "与PCS通信状态：0-正常 1-通信中断 2-异常")
    private String pcsCommunicationStatus;

    /** 与EMS通信状态：0-正常 1-通信中断 2-异常 */
    @Excel(name = "与EMS通信状态：0-正常 1-通信中断 2-异常")
    private String emsCommunicationStatus;

    /** 电操状态 */
    @Excel(name = "电操状态")
    private String operationStatus;

    /** 电池堆电压/V */
    @Excel(name = "电池堆电压/V")
    private BigDecimal stackVoltage;

    /** 电池堆电流/A */
    @Excel(name = "电池堆电流/A")
    private BigDecimal stackCurrent;

    /** 电池堆SOC/% */
    @Excel(name = "电池堆SOC/%")
    private BigDecimal stackSoc;

    /** 电池堆SOH/% */
    @Excel(name = "电池堆SOH/%")
    private BigDecimal stackSoh;

    /** 最高电池电压/V */
    @Excel(name = "最高电池电压/V")
    private BigDecimal maxCellVoltage;

    /** 最高电池电压组号 */
    @Excel(name = "最高电池电压组号")
    private Long maxVoltageGroupId;

    /** 高电压电池所在组中的点号 */
    @Excel(name = "高电压电池所在组中的点号")
    private Long maxVoltageCellId;

    /** 最低电池电压/V */
    @Excel(name = "最低电池电压/V")
    private BigDecimal minCellVoltage;

    /** 最低电池电压组号 */
    @Excel(name = "最低电池电压组号")
    private Long minVoltageGroupId;

    /** 最低电压电池所在组中的点号 */
    @Excel(name = "最低电压电池所在组中的点号")
    private Long minVoltageCellId;

    /** 最高电池温度/℃ */
    @Excel(name = "最高电池温度/℃")
    private BigDecimal maxCellTemp;

    /** 最高温度电池组号 */
    @Excel(name = "最高温度电池组号")
    private Long maxTempGroupId;

    /** 最高温度电池所在组中的点号 */
    @Excel(name = "最高温度电池所在组中的点号")
    private Long maxTempCellId;

    /** 最低电池温度/℃ */
    @Excel(name = "最低电池温度/℃")
    private BigDecimal minCellTemp;

    /** 最低电池温度组号 */
    @Excel(name = "最低电池温度组号")
    private Long minTempGroupId;

    /** 最低温度电池所在组中的点号 */
    @Excel(name = "最低温度电池所在组中的点号")
    private Long minTempCellId;

    /** 堆累计充电电量/kWh */
    @Excel(name = "堆累计充电电量/kWh")
    private BigDecimal totalChargeCapacity;

    /** 堆累计放电电量/kWh */
    @Excel(name = "堆累计放电电量/kWh")
    private BigDecimal totalDischargeCapacity;

    /** 堆单次累计充电电量/kWh */
    @Excel(name = "堆单次累计充电电量/kWh")
    private BigDecimal sessionChargeCapacity;

    /** 堆单次累计放电电量/kWh */
    @Excel(name = "堆单次累计放电电量/kWh")
    private BigDecimal sessionDischargeCapacity;

    /** 堆可充电量/kWh */
    @Excel(name = "堆可充电量/kWh")
    private BigDecimal availableChargeCapacity;

    /** 堆可放电量/kWh */
    @Excel(name = "堆可放电量/kWh")
    private BigDecimal availableDischargeCapacity;

    /** 可用放电时间/min */
    @Excel(name = "可用放电时间/min")
    private Long remainingDischargeTime;

    /** 可用充电时间/min */
    @Excel(name = "可用充电时间/min")
    private Long remainingChargeTime;

    /** 允许最大放电功率/kW */
    @Excel(name = "允许最大放电功率/kW")
    private BigDecimal maxDischargePower;

    /** 允许最大充电功率/kW */
    @Excel(name = "允许最大充电功率/kW")
    private BigDecimal maxChargePower;

    /** 允许最大放电电流/A */
    @Excel(name = "允许最大放电电流/A")
    private BigDecimal maxDischargeCurrent;

    /** 允许最大充电电流/A */
    @Excel(name = "允许最大充电电流/A")
    private BigDecimal maxChargeCurrent;

    /** 当天放电次数 */
    @Excel(name = "当天放电次数")
    private Long dailyDischargeCycles;

    /** 当天充电次数 */
    @Excel(name = "当天充电次数")
    private Long dailyChargeCycles;

    /** 当天放电电量/kWh */
    @Excel(name = "当天放电电量/kWh")
    private BigDecimal dailyDischargeCapacity;

    /** 当天充电电量/kWh */
    @Excel(name = "当天充电电量/kWh")
    private BigDecimal dailyChargeCapacity;

    /** 运行温度/℃ */
    @Excel(name = "运行温度/℃")
    private BigDecimal operatingTemp;

    /** BMS堆当前状态 */
    @Excel(name = "BMS堆当前状态")
    private String bmsStatus;

    /** BMS充放电状态 */
    @Excel(name = "BMS充放电状态")
    private String bmsChargeStatus;

    /** 电池堆绝缘电阻/kΩ */
    @Excel(name = "电池堆绝缘电阻/kΩ")
    private BigDecimal stackInsulationResistance;

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

    /** 设备id */
    @Excel(name = "设备id")
    private String deviceId;

    /** 单体个数 */
    @Excel(name = "单体个数")
    private Long batteryNumber;

    /** 单体平均电压 */
    @Excel(name = "单体平均电压")
    private BigDecimal batteryAvgVoltage;

    /** 单体电池压差 */
    @Excel(name = "单体电池压差")
    private BigDecimal batteryDifferentPressure;

    /** 平均温度 */
    @Excel(name = "平均温度")
    private BigDecimal avgTemperature;

    /** 单体电池温度差 */
    @Excel(name = "单体电池温度差")
    private BigDecimal batteryDifferentTemperature;

    /** 最大单体内阻 */
    @Excel(name = "最大单体内阻")
    private BigDecimal maxInternalResistance;

    /** 最小单体内阻 */
    @Excel(name = "最小单体内阻")
    private BigDecimal minInternalResistance;

    /** 平均单体内阻 */
    @Excel(name = "平均单体内阻")
    private BigDecimal avgInternalResistance;

    /** 单体内阻差 */
    @Excel(name = "单体内阻差")
    private BigDecimal batteryDefferentResistance;

    /** 最大单体内阻编号 */
    @Excel(name = "最大单体内阻编号")
    private Long maxResistanceCellId;

    /** 最小单体内阻编号 */
    @Excel(name = "最小单体内阻编号")
    private Long minResistanceCellId;

    /** 环境温度 */
    @Excel(name = "环境温度")
    private BigDecimal environmentTemperature;

    /** 环境湿度 */
    @Excel(name = "环境湿度")
    private BigDecimal environmentHumidity;

    /** 断路器状态 */
    @Excel(name = "断路器状态")
    private String circuitBreakerStatus;

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

    public Long getId()
    {
        return id;
    }

    public Date getDataUpdateTime() {
        return dataUpdateTime;
    }

    public void setDataUpdateTime(Date dataUpdateTime) {
        this.dataUpdateTime = dataUpdateTime;
    }

    public void setWorkStatus(String workStatus)
    {
        this.workStatus = workStatus;
    }

    public String getWorkStatus()
    {
        return workStatus;
    }

    public void setPcsCommunicationStatus(String pcsCommunicationStatus)
    {
        this.pcsCommunicationStatus = pcsCommunicationStatus;
    }

    public String getPcsCommunicationStatus()
    {
        return pcsCommunicationStatus;
    }

    public void setEmsCommunicationStatus(String emsCommunicationStatus)
    {
        this.emsCommunicationStatus = emsCommunicationStatus;
    }

    public String getEmsCommunicationStatus()
    {
        return emsCommunicationStatus;
    }

    public void setOperationStatus(String operationStatus)
    {
        this.operationStatus = operationStatus;
    }

    public String getOperationStatus()
    {
        return operationStatus;
    }

    public void setStackVoltage(BigDecimal stackVoltage)
    {
        this.stackVoltage = stackVoltage;
    }

    public BigDecimal getStackVoltage()
    {
        return stackVoltage;
    }

    public void setStackCurrent(BigDecimal stackCurrent)
    {
        this.stackCurrent = stackCurrent;
    }

    public BigDecimal getStackCurrent()
    {
        return stackCurrent;
    }

    public void setStackSoc(BigDecimal stackSoc)
    {
        this.stackSoc = stackSoc;
    }

    public BigDecimal getStackSoc()
    {
        return stackSoc;
    }

    public void setStackSoh(BigDecimal stackSoh)
    {
        this.stackSoh = stackSoh;
    }

    public BigDecimal getStackSoh()
    {
        return stackSoh;
    }

    public void setMaxCellVoltage(BigDecimal maxCellVoltage)
    {
        this.maxCellVoltage = maxCellVoltage;
    }

    public BigDecimal getMaxCellVoltage()
    {
        return maxCellVoltage;
    }

    public void setMaxVoltageGroupId(Long maxVoltageGroupId)
    {
        this.maxVoltageGroupId = maxVoltageGroupId;
    }

    public Long getMaxVoltageGroupId()
    {
        return maxVoltageGroupId;
    }

    public void setMaxVoltageCellId(Long maxVoltageCellId)
    {
        this.maxVoltageCellId = maxVoltageCellId;
    }

    public Long getMaxVoltageCellId()
    {
        return maxVoltageCellId;
    }

    public void setMinCellVoltage(BigDecimal minCellVoltage)
    {
        this.minCellVoltage = minCellVoltage;
    }

    public BigDecimal getMinCellVoltage()
    {
        return minCellVoltage;
    }

    public void setMinVoltageGroupId(Long minVoltageGroupId)
    {
        this.minVoltageGroupId = minVoltageGroupId;
    }

    public Long getMinVoltageGroupId()
    {
        return minVoltageGroupId;
    }

    public void setMinVoltageCellId(Long minVoltageCellId)
    {
        this.minVoltageCellId = minVoltageCellId;
    }

    public Long getMinVoltageCellId()
    {
        return minVoltageCellId;
    }

    public void setMaxCellTemp(BigDecimal maxCellTemp)
    {
        this.maxCellTemp = maxCellTemp;
    }

    public BigDecimal getMaxCellTemp()
    {
        return maxCellTemp;
    }

    public void setMaxTempGroupId(Long maxTempGroupId)
    {
        this.maxTempGroupId = maxTempGroupId;
    }

    public Long getMaxTempGroupId()
    {
        return maxTempGroupId;
    }

    public void setMaxTempCellId(Long maxTempCellId)
    {
        this.maxTempCellId = maxTempCellId;
    }

    public Long getMaxTempCellId()
    {
        return maxTempCellId;
    }

    public void setMinCellTemp(BigDecimal minCellTemp)
    {
        this.minCellTemp = minCellTemp;
    }

    public BigDecimal getMinCellTemp()
    {
        return minCellTemp;
    }

    public void setMinTempGroupId(Long minTempGroupId)
    {
        this.minTempGroupId = minTempGroupId;
    }

    public Long getMinTempGroupId()
    {
        return minTempGroupId;
    }

    public void setMinTempCellId(Long minTempCellId)
    {
        this.minTempCellId = minTempCellId;
    }

    public Long getMinTempCellId()
    {
        return minTempCellId;
    }

    public void setTotalChargeCapacity(BigDecimal totalChargeCapacity)
    {
        this.totalChargeCapacity = totalChargeCapacity;
    }

    public BigDecimal getTotalChargeCapacity()
    {
        return totalChargeCapacity;
    }

    public void setTotalDischargeCapacity(BigDecimal totalDischargeCapacity)
    {
        this.totalDischargeCapacity = totalDischargeCapacity;
    }

    public BigDecimal getTotalDischargeCapacity()
    {
        return totalDischargeCapacity;
    }

    public void setSessionChargeCapacity(BigDecimal sessionChargeCapacity)
    {
        this.sessionChargeCapacity = sessionChargeCapacity;
    }

    public BigDecimal getSessionChargeCapacity()
    {
        return sessionChargeCapacity;
    }

    public void setSessionDischargeCapacity(BigDecimal sessionDischargeCapacity)
    {
        this.sessionDischargeCapacity = sessionDischargeCapacity;
    }

    public BigDecimal getSessionDischargeCapacity()
    {
        return sessionDischargeCapacity;
    }

    public void setAvailableChargeCapacity(BigDecimal availableChargeCapacity)
    {
        this.availableChargeCapacity = availableChargeCapacity;
    }

    public BigDecimal getAvailableChargeCapacity()
    {
        return availableChargeCapacity;
    }

    public void setAvailableDischargeCapacity(BigDecimal availableDischargeCapacity)
    {
        this.availableDischargeCapacity = availableDischargeCapacity;
    }

    public BigDecimal getAvailableDischargeCapacity()
    {
        return availableDischargeCapacity;
    }

    public void setRemainingDischargeTime(Long remainingDischargeTime)
    {
        this.remainingDischargeTime = remainingDischargeTime;
    }

    public Long getRemainingDischargeTime()
    {
        return remainingDischargeTime;
    }

    public void setRemainingChargeTime(Long remainingChargeTime)
    {
        this.remainingChargeTime = remainingChargeTime;
    }

    public Long getRemainingChargeTime()
    {
        return remainingChargeTime;
    }

    public void setMaxDischargePower(BigDecimal maxDischargePower)
    {
        this.maxDischargePower = maxDischargePower;
    }

    public BigDecimal getMaxDischargePower()
    {
        return maxDischargePower;
    }

    public void setMaxChargePower(BigDecimal maxChargePower)
    {
        this.maxChargePower = maxChargePower;
    }

    public BigDecimal getMaxChargePower()
    {
        return maxChargePower;
    }

    public void setMaxDischargeCurrent(BigDecimal maxDischargeCurrent)
    {
        this.maxDischargeCurrent = maxDischargeCurrent;
    }

    public BigDecimal getMaxDischargeCurrent()
    {
        return maxDischargeCurrent;
    }

    public void setMaxChargeCurrent(BigDecimal maxChargeCurrent)
    {
        this.maxChargeCurrent = maxChargeCurrent;
    }

    public BigDecimal getMaxChargeCurrent()
    {
        return maxChargeCurrent;
    }

    public void setDailyDischargeCycles(Long dailyDischargeCycles)
    {
        this.dailyDischargeCycles = dailyDischargeCycles;
    }

    public Long getDailyDischargeCycles()
    {
        return dailyDischargeCycles;
    }

    public void setDailyChargeCycles(Long dailyChargeCycles)
    {
        this.dailyChargeCycles = dailyChargeCycles;
    }

    public Long getDailyChargeCycles()
    {
        return dailyChargeCycles;
    }

    public void setDailyDischargeCapacity(BigDecimal dailyDischargeCapacity)
    {
        this.dailyDischargeCapacity = dailyDischargeCapacity;
    }

    public BigDecimal getDailyDischargeCapacity()
    {
        return dailyDischargeCapacity;
    }

    public void setDailyChargeCapacity(BigDecimal dailyChargeCapacity)
    {
        this.dailyChargeCapacity = dailyChargeCapacity;
    }

    public BigDecimal getDailyChargeCapacity()
    {
        return dailyChargeCapacity;
    }

    public void setOperatingTemp(BigDecimal operatingTemp)
    {
        this.operatingTemp = operatingTemp;
    }

    public BigDecimal getOperatingTemp()
    {
        return operatingTemp;
    }

    public void setBmsStatus(String bmsStatus)
    {
        this.bmsStatus = bmsStatus;
    }

    public String getBmsStatus()
    {
        return bmsStatus;
    }

    public void setBmsChargeStatus(String bmsChargeStatus)
    {
        this.bmsChargeStatus = bmsChargeStatus;
    }

    public String getBmsChargeStatus()
    {
        return bmsChargeStatus;
    }

    public void setStackInsulationResistance(BigDecimal stackInsulationResistance)
    {
        this.stackInsulationResistance = stackInsulationResistance;
    }

    public BigDecimal getStackInsulationResistance()
    {
        return stackInsulationResistance;
    }

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

    public String getSiteId()
    {
        return siteId;
    }

    public void setDeviceId(String deviceId)
    {
        this.deviceId = deviceId;
    }

    public String getDeviceId()
    {
        return deviceId;
    }

    public void setBatteryNumber(Long batteryNumber)
    {
        this.batteryNumber = batteryNumber;
    }

    public Long getBatteryNumber()
    {
        return batteryNumber;
    }

    public void setBatteryAvgVoltage(BigDecimal batteryAvgVoltage)
    {
        this.batteryAvgVoltage = batteryAvgVoltage;
    }

    public BigDecimal getBatteryAvgVoltage()
    {
        return batteryAvgVoltage;
    }

    public void setBatteryDifferentPressure(BigDecimal batteryDifferentPressure)
    {
        this.batteryDifferentPressure = batteryDifferentPressure;
    }

    public BigDecimal getBatteryDifferentPressure()
    {
        return batteryDifferentPressure;
    }

    public void setAvgTemperature(BigDecimal avgTemperature)
    {
        this.avgTemperature = avgTemperature;
    }

    public BigDecimal getAvgTemperature()
    {
        return avgTemperature;
    }

    public void setBatteryDifferentTemperature(BigDecimal batteryDifferentTemperature)
    {
        this.batteryDifferentTemperature = batteryDifferentTemperature;
    }

    public BigDecimal getBatteryDifferentTemperature()
    {
        return batteryDifferentTemperature;
    }

    public void setMaxInternalResistance(BigDecimal maxInternalResistance)
    {
        this.maxInternalResistance = maxInternalResistance;
    }

    public BigDecimal getMaxInternalResistance()
    {
        return maxInternalResistance;
    }

    public void setMinInternalResistance(BigDecimal minInternalResistance)
    {
        this.minInternalResistance = minInternalResistance;
    }

    public BigDecimal getMinInternalResistance()
    {
        return minInternalResistance;
    }

    public void setAvgInternalResistance(BigDecimal avgInternalResistance)
    {
        this.avgInternalResistance = avgInternalResistance;
    }

    public BigDecimal getAvgInternalResistance()
    {
        return avgInternalResistance;
    }

    public void setBatteryDefferentResistance(BigDecimal batteryDefferentResistance)
    {
        this.batteryDefferentResistance = batteryDefferentResistance;
    }

    public BigDecimal getBatteryDefferentResistance()
    {
        return batteryDefferentResistance;
    }

    public void setMaxResistanceCellId(Long maxResistanceCellId)
    {
        this.maxResistanceCellId = maxResistanceCellId;
    }

    public Long getMaxResistanceCellId()
    {
        return maxResistanceCellId;
    }

    public void setMinResistanceCellId(Long minResistanceCellId)
    {
        this.minResistanceCellId = minResistanceCellId;
    }

    public Long getMinResistanceCellId()
    {
        return minResistanceCellId;
    }

    public void setEnvironmentTemperature(BigDecimal environmentTemperature)
    {
        this.environmentTemperature = environmentTemperature;
    }

    public BigDecimal getEnvironmentTemperature()
    {
        return environmentTemperature;
    }

    public void setEnvironmentHumidity(BigDecimal environmentHumidity)
    {
        this.environmentHumidity = environmentHumidity;
    }

    public BigDecimal getEnvironmentHumidity()
    {
        return environmentHumidity;
    }

    public void setCircuitBreakerStatus(String circuitBreakerStatus)
    {
        this.circuitBreakerStatus = circuitBreakerStatus;
    }

    public String getCircuitBreakerStatus()
    {
        return circuitBreakerStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("workStatus", getWorkStatus())
                .append("pcsCommunicationStatus", getPcsCommunicationStatus())
                .append("emsCommunicationStatus", getEmsCommunicationStatus())
                .append("operationStatus", getOperationStatus())
                .append("stackVoltage", getStackVoltage())
                .append("stackCurrent", getStackCurrent())
                .append("stackSoc", getStackSoc())
                .append("stackSoh", getStackSoh())
                .append("maxCellVoltage", getMaxCellVoltage())
                .append("maxVoltageGroupId", getMaxVoltageGroupId())
                .append("maxVoltageCellId", getMaxVoltageCellId())
                .append("minCellVoltage", getMinCellVoltage())
                .append("minVoltageGroupId", getMinVoltageGroupId())
                .append("minVoltageCellId", getMinVoltageCellId())
                .append("maxCellTemp", getMaxCellTemp())
                .append("maxTempGroupId", getMaxTempGroupId())
                .append("maxTempCellId", getMaxTempCellId())
                .append("minCellTemp", getMinCellTemp())
                .append("minTempGroupId", getMinTempGroupId())
                .append("minTempCellId", getMinTempCellId())
                .append("totalChargeCapacity", getTotalChargeCapacity())
                .append("totalDischargeCapacity", getTotalDischargeCapacity())
                .append("sessionChargeCapacity", getSessionChargeCapacity())
                .append("sessionDischargeCapacity", getSessionDischargeCapacity())
                .append("availableChargeCapacity", getAvailableChargeCapacity())
                .append("availableDischargeCapacity", getAvailableDischargeCapacity())
                .append("remainingDischargeTime", getRemainingDischargeTime())
                .append("remainingChargeTime", getRemainingChargeTime())
                .append("maxDischargePower", getMaxDischargePower())
                .append("maxChargePower", getMaxChargePower())
                .append("maxDischargeCurrent", getMaxDischargeCurrent())
                .append("maxChargeCurrent", getMaxChargeCurrent())
                .append("dailyDischargeCycles", getDailyDischargeCycles())
                .append("dailyChargeCycles", getDailyChargeCycles())
                .append("dailyDischargeCapacity", getDailyDischargeCapacity())
                .append("dailyChargeCapacity", getDailyChargeCapacity())
                .append("operatingTemp", getOperatingTemp())
                .append("bmsStatus", getBmsStatus())
                .append("bmsChargeStatus", getBmsChargeStatus())
                .append("stackInsulationResistance", getStackInsulationResistance())
                .append("siteId", getSiteId())
                .append("deviceId", getDeviceId())
                .append("createTime", getCreateTime())
                .append("createBy", getCreateBy())
                .append("updateTime", getUpdateTime())
                .append("updateBy", getUpdateBy())
                .append("batteryNumber", getBatteryNumber())
                .append("batteryAvgVoltage", getBatteryAvgVoltage())
                .append("batteryDifferentPressure", getBatteryDifferentPressure())
                .append("avgTemperature", getAvgTemperature())
                .append("batteryDifferentTemperature", getBatteryDifferentTemperature())
                .append("maxInternalResistance", getMaxInternalResistance())
                .append("minInternalResistance", getMinInternalResistance())
                .append("avgInternalResistance", getAvgInternalResistance())
                .append("batteryDefferentResistance", getBatteryDefferentResistance())
                .append("maxResistanceCellId", getMaxResistanceCellId())
                .append("minResistanceCellId", getMinResistanceCellId())
                .append("environmentTemperature", getEnvironmentTemperature())
                .append("environmentHumidity", getEnvironmentHumidity())
                .append("circuitBreakerStatus", getCircuitBreakerStatus())
                .toString();
    }
}
