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 com.xzzn.common.utils.StringUtils;

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

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

/**
 * 电池簇数据对象 ems_battery_cluster
 *
 * @author xzzn
 * @date 2025-07-29
 */
public class EmsBatteryCluster 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;

    /** 簇电压 (V) */
    @Excel(name = "簇电压 (V)")
    private BigDecimal clusterVoltage;

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

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

    /** 簇电流 (A) */
    @Excel(name = "簇电流 (A)")
    private BigDecimal clusterCurrent;

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

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

    /** SOH (%) */
    @Excel(name = "SOH (%)")
    private BigDecimal soh;

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

    /** 绝缘电阻 (Ω) */
    @Excel(name = "绝缘电阻 (Ω)")
    private BigDecimal insulationResistance;

    /** 当前SOC (%) */
    @Excel(name = "当前SOC (%)")
    private BigDecimal currentSoc;

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

    /** 设备唯一标识符 */
    @Excel(name = "设备唯一标识符")
    private String deviceId;

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

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

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

    /** 允许充电最大电压 */
    @Excel(name = "允许充电最大电压")
    private BigDecimal maxAllowedChargeVoltage;

    /** 允许放电最大电压 */
    @Excel(name = "允许放电最大电压")
    private BigDecimal maxAllowedDischargeVoltage;

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

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

    /** 组电压 */
    @Excel(name = "组电压")
    private BigDecimal batteryPackVoltage;

    /** 组电流 */
    @Excel(name = "组电流")
    private BigDecimal batteryPackCurrent;

    /** 模块温度 */
    @Excel(name = "模块温度")
    private BigDecimal batteryPackTemp;

    /** 组SOC */
    @Excel(name = "组SOC")
    private BigDecimal batteryPackSoc;

    /** 组SOH */
    @Excel(name = "组SOH")
    private BigDecimal batteryPackSoh;

    /** 组绝缘电阻 */
    @Excel(name = "组绝缘电阻")
    private BigDecimal batteryPackInsulationResistance;

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

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

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

    /** 最高单体电压对应点号 */
    @Excel(name = "最高单体电压对应点号")
    private String maxCellVoltageId;

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

    /** 最低单体电压对应点号 */
    @Excel(name = "最低单体电压对应点号")
    private String minCellVoltageId;

    /** 最高单体温度 */
    @Excel(name = "最高单体温度")
    private BigDecimal maxCellTemp;

    /** 最高单体温度对应点号 */
    @Excel(name = "最高单体温度对应点号")
    private String maxCellTempId;

    /** 最低单体温度 */
    @Excel(name = "最低单体温度")
    private BigDecimal minCellTemp;

    /** 最低单体温度对应点号 */
    @Excel(name = "最低单体温度对应点号")
    private String minCellTempId;

    /** 最高单体SOC */
    @Excel(name = "最高单体SOC")
    private BigDecimal maxCellSoc;

    /** 最高单体SOC对应点号 */
    @Excel(name = "最高单体SOC对应点号")
    private String maxCellSocId;

    /** 最低单体SOC */
    @Excel(name = "最低单体SOC")
    private BigDecimal minCellSoc;

    /** 最低单体SOC对应点号 */
    @Excel(name = "最低单体SOC对应点号")
    private String minCellSocId;

    /** 最高单体SOH */
    @Excel(name = "最高单体SOH")
    private BigDecimal maxCellSoh;

    /** 最高单体SOH对应点号 */
    @Excel(name = "最高单体SOH对应点号")
    private String maxCellSohId;

    /** 最低单体SOH */
    @Excel(name = "最低单体SOH")
    private BigDecimal minCellSoh;

    /** 最低单体SOH对应点号 */
    @Excel(name = "最低单体SOH对应点号")
    private String minCellSohId;

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

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

    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 setClusterVoltage(BigDecimal clusterVoltage)
    {
        this.clusterVoltage = clusterVoltage;
    }

    public BigDecimal getClusterVoltage()
    {
        return clusterVoltage;
    }

    public void setChargeableCapacity(BigDecimal chargeableCapacity)
    {
        this.chargeableCapacity = chargeableCapacity;
    }

    public BigDecimal getChargeableCapacity()
    {
        return chargeableCapacity;
    }

    public void setTotalChargedCapacity(BigDecimal totalChargedCapacity)
    {
        this.totalChargedCapacity = totalChargedCapacity;
    }

    public BigDecimal getTotalChargedCapacity()
    {
        return totalChargedCapacity;
    }

    public void setClusterCurrent(BigDecimal clusterCurrent)
    {
        this.clusterCurrent = clusterCurrent;
    }

    public BigDecimal getClusterCurrent()
    {
        return clusterCurrent;
    }

    public void setDischargeableCapacity(BigDecimal dischargeableCapacity)
    {
        this.dischargeableCapacity = dischargeableCapacity;
    }

    public BigDecimal getDischargeableCapacity()
    {
        return dischargeableCapacity;
    }

    public void setTotalDischargedCapacity(BigDecimal totalDischargedCapacity)
    {
        this.totalDischargedCapacity = totalDischargedCapacity;
    }

    public BigDecimal getTotalDischargedCapacity()
    {
        return totalDischargedCapacity;
    }

    public void setSoh(BigDecimal soh)
    {
        this.soh = soh;
    }

    public BigDecimal getSoh()
    {
        return soh;
    }

    public void setAverageTemperature(BigDecimal averageTemperature)
    {
        this.averageTemperature = averageTemperature;
    }

    public BigDecimal getAverageTemperature()
    {
        return averageTemperature;
    }

    public void setInsulationResistance(BigDecimal insulationResistance)
    {
        this.insulationResistance = insulationResistance;
    }

    public BigDecimal getInsulationResistance()
    {
        return insulationResistance;
    }

    public void setCurrentSoc(BigDecimal currentSoc)
    {
        this.currentSoc = currentSoc;
    }

    public BigDecimal getCurrentSoc()
    {
        return currentSoc;
    }

    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 setStackDeviceId(String stackDeviceId)
    {
        this.stackDeviceId = stackDeviceId;
    }

    public String getStackDeviceId()
    {
        return stackDeviceId;
    }

    public void setMaxAllowedChargePower(BigDecimal maxAllowedChargePower)
    {
        this.maxAllowedChargePower = maxAllowedChargePower;
    }

    public BigDecimal getMaxAllowedChargePower()
    {
        return maxAllowedChargePower;
    }

    public void setMaxAllowedDischargePower(BigDecimal maxAllowedDischargePower)
    {
        this.maxAllowedDischargePower = maxAllowedDischargePower;
    }

    public BigDecimal getMaxAllowedDischargePower()
    {
        return maxAllowedDischargePower;
    }

    public void setMaxAllowedChargeVoltage(BigDecimal maxAllowedChargeVoltage)
    {
        this.maxAllowedChargeVoltage = maxAllowedChargeVoltage;
    }

    public BigDecimal getMaxAllowedChargeVoltage()
    {
        return maxAllowedChargeVoltage;
    }

    public void setMaxAllowedDischargeVoltage(BigDecimal maxAllowedDischargeVoltage)
    {
        this.maxAllowedDischargeVoltage = maxAllowedDischargeVoltage;
    }

    public BigDecimal getMaxAllowedDischargeVoltage()
    {
        return maxAllowedDischargeVoltage;
    }

    public void setMaxAllowedChargeCurrent(BigDecimal maxAllowedChargeCurrent)
    {
        this.maxAllowedChargeCurrent = maxAllowedChargeCurrent;
    }

    public BigDecimal getMaxAllowedChargeCurrent()
    {
        return maxAllowedChargeCurrent;
    }

    public void setMaxAllowedDischargeCurrent(BigDecimal maxAllowedDischargeCurrent)
    {
        this.maxAllowedDischargeCurrent = maxAllowedDischargeCurrent;
    }

    public BigDecimal getMaxAllowedDischargeCurrent()
    {
        return maxAllowedDischargeCurrent;
    }

    public void setBatteryPackVoltage(BigDecimal batteryPackVoltage)
    {
        this.batteryPackVoltage = batteryPackVoltage;
    }

    public BigDecimal getBatteryPackVoltage()
    {
        return batteryPackVoltage;
    }

    public void setBatteryPackCurrent(BigDecimal batteryPackCurrent)
    {
        this.batteryPackCurrent = batteryPackCurrent;
    }

    public BigDecimal getBatteryPackCurrent()
    {
        return batteryPackCurrent;
    }

    public void setBatteryPackTemp(BigDecimal batteryPackTemp)
    {
        this.batteryPackTemp = batteryPackTemp;
    }

    public BigDecimal getBatteryPackTemp()
    {
        return batteryPackTemp;
    }

    public void setBatteryPackSoc(BigDecimal batteryPackSoc)
    {
        this.batteryPackSoc = batteryPackSoc;
    }

    public BigDecimal getBatteryPackSoc()
    {
        return batteryPackSoc;
    }

    public void setBatteryPackSoh(BigDecimal batteryPackSoh)
    {
        this.batteryPackSoh = batteryPackSoh;
    }

    public BigDecimal getBatteryPackSoh()
    {
        return batteryPackSoh;
    }

    public void setBatteryPackInsulationResistance(BigDecimal batteryPackInsulationResistance)
    {
        this.batteryPackInsulationResistance = batteryPackInsulationResistance;
    }

    public BigDecimal getBatteryPackInsulationResistance()
    {
        return batteryPackInsulationResistance;
    }

    public void setAvgCellVoltage(BigDecimal avgCellVoltage)
    {
        this.avgCellVoltage = avgCellVoltage;
    }

    public BigDecimal getAvgCellVoltage()
    {
        return avgCellVoltage;
    }

    public void setAvgCellTemp(BigDecimal avgCellTemp)
    {
        this.avgCellTemp = avgCellTemp;
    }

    public BigDecimal getAvgCellTemp()
    {
        return avgCellTemp;
    }

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

    public BigDecimal getMaxCellVoltage()
    {
        return maxCellVoltage;
    }

    public void setMaxCellVoltageId(String maxCellVoltageId)
    {
        this.maxCellVoltageId = StringUtils.fillThreeDigits(maxCellVoltageId);
    }

    public String getMaxCellVoltageId()
    {
        return maxCellVoltageId;
    }

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

    public BigDecimal getMinCellVoltage()
    {
        return minCellVoltage;
    }

    public void setMinCellVoltageId(String minCellVoltageId)
    {
        this.minCellVoltageId = StringUtils.fillThreeDigits(minCellVoltageId);
    }

    public String getMinCellVoltageId()
    {
        return minCellVoltageId;
    }

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

    public BigDecimal getMaxCellTemp()
    {
        return maxCellTemp;
    }

    public void setMaxCellTempId(String maxCellTempId)
    {
        this.maxCellTempId = StringUtils.fillThreeDigits(maxCellTempId);
    }

    public String getMaxCellTempId()
    {
        return maxCellTempId;
    }

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

    public BigDecimal getMinCellTemp()
    {
        return minCellTemp;
    }

    public void setMinCellTempId(String minCellTempId)
    {
        this.minCellTempId = StringUtils.fillThreeDigits(minCellTempId);
    }

    public String getMinCellTempId()
    {
        return minCellTempId;
    }

    public void setMaxCellSoc(BigDecimal maxCellSoc)
    {
        this.maxCellSoc = maxCellSoc;
    }

    public BigDecimal getMaxCellSoc()
    {
        return maxCellSoc;
    }

    public void setMaxCellSocId(String maxCellSocId)
    {
        this.maxCellSocId = StringUtils.fillThreeDigits(maxCellSocId);
    }

    public String getMaxCellSocId()
    {
        return maxCellSocId;
    }

    public void setMinCellSoc(BigDecimal minCellSoc)
    {
        this.minCellSoc = minCellSoc;
    }

    public BigDecimal getMinCellSoc()
    {
        return minCellSoc;
    }

    public void setMinCellSocId(String minCellSocId)
    {
        this.minCellSocId = StringUtils.fillThreeDigits(minCellSocId);
    }

    public String getMinCellSocId()
    {
        return minCellSocId;
    }

    public void setMaxCellSoh(BigDecimal maxCellSoh)
    {
        this.maxCellSoh = maxCellSoh;
    }

    public BigDecimal getMaxCellSoh()
    {
        return maxCellSoh;
    }

    public void setMaxCellSohId(String maxCellSohId)
    {
        this.maxCellSohId = StringUtils.fillThreeDigits(maxCellSohId);
    }

    public String getMaxCellSohId()
    {
        return maxCellSohId;
    }

    public void setMinCellSoh(BigDecimal minCellSoh)
    {
        this.minCellSoh = minCellSoh;
    }

    public BigDecimal getMinCellSoh()
    {
        return minCellSoh;
    }

    public void setMinCellSohId(String minCellSohId)
    {
        this.minCellSohId = StringUtils.fillThreeDigits(minCellSohId);
    }

    public String getMinCellSohId()
    {
        return minCellSohId;
    }

    public void setTotalChargeEnergy(BigDecimal totalChargeEnergy)
    {
        this.totalChargeEnergy = totalChargeEnergy;
    }

    public BigDecimal getTotalChargeEnergy()
    {
        return totalChargeEnergy;
    }

    public void setTotalDischargeEnergy(BigDecimal totalDischargeEnergy)
    {
        this.totalDischargeEnergy = totalDischargeEnergy;
    }

    public BigDecimal getTotalDischargeEnergy()
    {
        return totalDischargeEnergy;
    }

    @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("clusterVoltage", getClusterVoltage())
                .append("chargeableCapacity", getChargeableCapacity())
                .append("totalChargedCapacity", getTotalChargedCapacity())
                .append("clusterCurrent", getClusterCurrent())
                .append("dischargeableCapacity", getDischargeableCapacity())
                .append("totalDischargedCapacity", getTotalDischargedCapacity())
                .append("soh", getSoh())
                .append("averageTemperature", getAverageTemperature())
                .append("insulationResistance", getInsulationResistance())
                .append("currentSoc", getCurrentSoc())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("siteId", getSiteId())
                .append("deviceId", getDeviceId())
                .append("stackDeviceId", getStackDeviceId())
                .append("maxAllowedChargePower", getMaxAllowedChargePower())
                .append("maxAllowedDischargePower", getMaxAllowedDischargePower())
                .append("maxAllowedChargeVoltage", getMaxAllowedChargeVoltage())
                .append("maxAllowedDischargeVoltage", getMaxAllowedDischargeVoltage())
                .append("maxAllowedChargeCurrent", getMaxAllowedChargeCurrent())
                .append("maxAllowedDischargeCurrent", getMaxAllowedDischargeCurrent())
                .append("batteryPackVoltage", getBatteryPackVoltage())
                .append("batteryPackCurrent", getBatteryPackCurrent())
                .append("batteryPackTemp", getBatteryPackTemp())
                .append("batteryPackSoc", getBatteryPackSoc())
                .append("batteryPackSoh", getBatteryPackSoh())
                .append("batteryPackInsulationResistance", getBatteryPackInsulationResistance())
                .append("avgCellVoltage", getAvgCellVoltage())
                .append("avgCellTemp", getAvgCellTemp())
                .append("maxCellVoltage", getMaxCellVoltage())
                .append("maxCellVoltageId", getMaxCellVoltageId())
                .append("minCellVoltage", getMinCellVoltage())
                .append("minCellVoltageId", getMinCellVoltageId())
                .append("maxCellTemp", getMaxCellTemp())
                .append("maxCellTempId", getMaxCellTempId())
                .append("minCellTemp", getMinCellTemp())
                .append("minCellTempId", getMinCellTempId())
                .append("maxCellSoc", getMaxCellSoc())
                .append("maxCellSocId", getMaxCellSocId())
                .append("minCellSoc", getMinCellSoc())
                .append("minCellSocId", getMinCellSocId())
                .append("maxCellSoh", getMaxCellSoh())
                .append("maxCellSohId", getMaxCellSohId())
                .append("minCellSoh", getMinCellSoh())
                .append("minCellSohId", getMinCellSohId())
                .append("totalChargeEnergy", getTotalChargeEnergy())
                .append("totalDischargeEnergy", getTotalDischargeEnergy())
                .toString();
    }
}
