package com.jsowell.thirdparty.platform.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 车辆充放电过程信息
 *
 * @author Lemon
 * @Date 2024/5/21 10:01:02
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BMSInfo {

    /**
     * 车辆 VIN 码
     */
    @JSONField(name = "vinCode")
    private String vinCode;

    /**
     * 车辆 BMS 编码
     */
    @JSONField(name = "BMSCode")
    private String bmsCode;

    /**
     * 车辆 BMS 版本
     */
    @JSONField(name = "BMSVer")
    private String bmsVer;

    /**
     * 充电机接口编码
     */
    @JSONField(name = "ConnectorID")
    private String connectorID;

    /**
     * 最高允许充电电流
     */
    @JSONField(name = "MaxChargeCurrent")
    private BigDecimal maxChargeCurrent;

    /**
     * 单体最高允许电压
     */
    @JSONField(name = "MaxChargeCellVoltage")
    private BigDecimal maxChargeCellVoltage;

    /**
     * 最高允许温度
     */
    @JSONField(name = "MaxTemp")
    private Integer maxTemp;

    /**
     * 电池额定容量
     */
    @JSONField(name = "RatedCapacity")
    private Integer ratedCapacity;

    /**
     * 总电压
     */
    @JSONField(name = "TatalVoltage")
    private BigDecimal tatalVoltage;

    /**
     * 总电流
     */
    @JSONField(name = "TotalCurrent")
    private BigDecimal totalCurrent;

    /**
     * 荷电状态
     */
    @JSONField(name = "Soc")
    private Integer soc;

    /**
     * 单体最高电压
     */
    @JSONField(name = "VoltageH")
    private BigDecimal voltageH;

    /**
     * 单体最高电压编号
     */
    @JSONField(name = "VoltageHNumIndex")
    private Integer voltageHNumIndex;

    /**
     * 单体最高温度
     */
    @JSONField(name = "TemptureH")
    private Integer temptureH;

    /**
     * 单体最高温度编号
     */
    @JSONField(name = "TemptureHNumIndex")
    private Integer temptureHNumIndex;

    /**
     * 单体最低温度
     */
    @JSONField(name = "TemptureL")
    private Integer temptureL;

    /**
     * 单体最低温度编号
     */
    @JSONField(name = "TemptureLNumIndex")
    private Integer temptureLNumIndex;

    /**
     * 充放电侧能量变化
     */
    @JSONField(name = "CurrentCapacity")
    private BigDecimal currentCapacity;

    /**
     * 采集时间
     */
    @JSONField(name = "FreshTime")
    private String freshTime;

    /**
     * 开始充电时间
     */
    @JSONField(name = "StartChargingTime")
    private String startChargingTime;

    /**
     * 充电时长
     */
    @JSONField(name = "ChargingSessionMin")
    private Integer chargingSessionMin;
}
