AlarmData.java 5.13 KB
package com.bsth.entity;

import com.bsth.socket.protocol.Message0207;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Hill
 * 报警数据
 */
public class AlarmData extends Data {

    /**
     * 最高警报等级 0-3(亦可自定义)
     * 0 无故障
     * 1 级故障,不影响车辆行驶的故障
     * 2 级故障,影响车辆性能,需驾驶员限制行驶的故障
     * 3 级故障,停车待援
     * 0xfe 异常
     * 0xff 无效
     */
    private short maxAlarmLevel;

    /**
     * 通用报警标志
     * 0位 0正常 1温度差异 1位 电池高温 2位 车载储能装置类型过压 3位 车载储能装置类型欠压
     * 4位 SOC低 5位 单体电池过压 6位 单体电池欠压 7位 SOC过高
     * 8位 SOC跳变 9位 可充电储能系统不匹配 10位 电池单体一致性差 11位 绝缘
     * 12位 DC-DC温度 13位 制动系统 14位 DC-DC状态 15位 驱动电机控制器温度
     * 16位 高压互锁状态 17位 驱动电机温度 18位 车载储能装置类型过充
     * 19-31位 保留
     */
    private int commonAlarmFlag;

    /**
     * 储能装置数量 0-252
     * N1
     * 0xfe 异常
     * 0xff 无效
     */
    private short energyStorageDeviceQuantity;

    /**
     * 储能装置报警情况(自定义)
     * N1 * 4
     */
    private int[] esdAlarms;

    /**
     * 驱动电机数量 0-252
     * N2
     * 0xfe 异常
     * 0xff 无效
     */
    private short electricMotorQuantity;

    /**
     * 驱动电机报警情况(自定义)
     * N2 * 4
     */
    private int[] emAlarms;

    /**
     * 发动机数量 0-252
     * N3
     * 0xfe 异常
     * 0xff 无效
     */
    private short engineQuantity;

    /**
     * 发动机报警情况(自定义)
     * N3 * 4
     */
    private int[] engineAlarms;

    /**
     * 其它故障 0-252
     * N4
     * 0xfe 异常
     * 0xff 无效
     */
    private short otherQuantity;

    /**
     * 扩展故障详细
     */
    private List<String> troubles = new ArrayList<>();

    public AlarmData() {

    }

    public AlarmData(Message0207 message0207) {
        BeanUtils.copyProperties(message0207, this);
        this.maxAlarmLevel &= (short) 0xFF;
        this.energyStorageDeviceQuantity &= (short) 0xFF;
        this.electricMotorQuantity &= (short) 0xFF;
        this.engineQuantity &= (short) 0xFF;
        this.otherQuantity &= (short) 0xFF;
        for (Message0207.Trouble trouble : message0207.getTroubleList()) {
            troubles.add(trouble.toString());
        }
    }

    public short getMaxAlarmLevel() {
        return maxAlarmLevel;
    }

    public void setMaxAlarmLevel(short maxAlarmLevel) {
        this.maxAlarmLevel = maxAlarmLevel;
    }

    public int getCommonAlarmFlag() {
        return commonAlarmFlag;
    }

    public void setCommonAlarmFlag(int commonAlarmFlag) {
        this.commonAlarmFlag = commonAlarmFlag;
    }

    public short getEnergyStorageDeviceQuantity() {
        return energyStorageDeviceQuantity;
    }

    public void setEnergyStorageDeviceQuantity(short energyStorageDeviceQuantity) {
        this.energyStorageDeviceQuantity = energyStorageDeviceQuantity;
    }

    public int[] getEsdAlarms() {
        return esdAlarms;
    }

    public void setEsdAlarms(int[] esdAlarms) {
        this.esdAlarms = esdAlarms;
    }

    public short getElectricMotorQuantity() {
        return electricMotorQuantity;
    }

    public void setElectricMotorQuantity(short electricMotorQuantity) {
        this.electricMotorQuantity = electricMotorQuantity;
    }

    public int[] getEmAlarms() {
        return emAlarms;
    }

    public void setEmAlarms(int[] emAlarms) {
        this.emAlarms = emAlarms;
    }

    public short getEngineQuantity() {
        return engineQuantity;
    }

    public void setEngineQuantity(short engineQuantity) {
        this.engineQuantity = engineQuantity;
    }

    public int[] getEngineAlarms() {
        return engineAlarms;
    }

    public void setEngineAlarms(int[] engineAlarms) {
        this.engineAlarms = engineAlarms;
    }

    public short getOtherQuantity() {
        return otherQuantity;
    }

    public void setOtherQuantity(short otherQuantity) {
        this.otherQuantity = otherQuantity;
    }

    public List<String> getTroubles() {
        return troubles;
    }

    public void setTroubles(List<String> troubles) {
        this.troubles = troubles;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(" 最大报警级别: ").append(maxAlarmLevel)
        .append(" 通用报警标志: ").append(commonAlarmFlag)
        .append(" 储能设备报警数: ").append(energyStorageDeviceQuantity)
        .append(" 电机报警数: ").append(electricMotorQuantity)
        .append(" 发动机报警数: ").append(engineQuantity)
        .append(" 其它报警数: ").append(otherQuantity)
        .append(" 自定义报警详情: ");

        for (String trouble : troubles) {
            sb.append(trouble);
        }

        return sb.toString();
    }

    @Override
    public String getType() {
        return "alarm_data";
    }
}