package com.xzzn.ems.domain;

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

/**
 * 单体电池月级数据对象 ems_battery_data_month
 *
 * @author xzzn
 * @date 2025-08-22
 */
public class EmsBatteryDataMonth extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 电池堆 */
    @Excel(name = "电池堆")
    private String batteryPack;

    /** 电池簇 */
    @Excel(name = "电池簇")
    private String batteryCluster;

    /** 单体编号 */
    @Excel(name = "单体编号")
    private String batteryCellId;

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

    /** 温度 (℃) */
    @Excel(name = "温度 (℃)")
    private BigDecimal temperature;

    /** SOC (%) */
    @Excel(name = "SOC (%)")
    private BigDecimal soc;

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

    /** 数据采集时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "数据采集时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dataTimestamp;

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

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

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

    /** 单体电池内阻 */
    @Excel(name = "单体电池内阻")
    private BigDecimal interResistance;

    /** 月级时间维度 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "月级时间维度", width = 30, dateFormat = "yyyy-MM-dd")
    private Date monthTime;

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

    public Long getId()
    {
        return id;
    }

    public void setBatteryPack(String batteryPack)
    {
        this.batteryPack = batteryPack;
    }

    public String getBatteryPack()
    {
        return batteryPack;
    }

    public void setBatteryCluster(String batteryCluster)
    {
        this.batteryCluster = batteryCluster;
    }

    public String getBatteryCluster()
    {
        return batteryCluster;
    }

    public void setBatteryCellId(String batteryCellId)
    {
        this.batteryCellId = batteryCellId;
    }

    public String getBatteryCellId()
    {
        return batteryCellId;
    }

    public void setVoltage(BigDecimal voltage)
    {
        this.voltage = voltage;
    }

    public BigDecimal getVoltage()
    {
        return voltage;
    }

    public void setTemperature(BigDecimal temperature)
    {
        this.temperature = temperature;
    }

    public BigDecimal getTemperature()
    {
        return temperature;
    }

    public void setSoc(BigDecimal soc)
    {
        this.soc = soc;
    }

    public BigDecimal getSoc()
    {
        return soc;
    }

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

    public BigDecimal getSoh()
    {
        return soh;
    }

    public void setDataTimestamp(Date dataTimestamp)
    {
        this.dataTimestamp = dataTimestamp;
    }

    public Date getDataTimestamp()
    {
        return dataTimestamp;
    }

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

    public String getClusterDeviceId()
    {
        return clusterDeviceId;
    }

    public void setInterResistance(BigDecimal interResistance)
    {
        this.interResistance = interResistance;
    }

    public BigDecimal getInterResistance()
    {
        return interResistance;
    }

    public void setMonthTime(Date monthTime)
    {
        this.monthTime = monthTime;
    }

    public Date getMonthTime()
    {
        return monthTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("batteryPack", getBatteryPack())
                .append("batteryCluster", getBatteryCluster())
                .append("batteryCellId", getBatteryCellId())
                .append("voltage", getVoltage())
                .append("temperature", getTemperature())
                .append("soc", getSoc())
                .append("soh", getSoh())
                .append("dataTimestamp", getDataTimestamp())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("siteId", getSiteId())
                .append("deviceId", getDeviceId())
                .append("clusterDeviceId", getClusterDeviceId())
                .append("interResistance", getInterResistance())
                .append("monthTime", getMonthTime())
                .toString();
    }
}
