package com.usky.ems.enums;

import java.util.Objects;

/**
 * 数值类型枚举，对应 leo.sql 中 ems_device_function_formula.value_type 字段：
 * 0: 其他  1: 累计值  2: 波动值
 */
public enum ValueTypeEnum {

    OTHER("其他", 0),
    CUMULATIVE("累计值", 1),
    FLUCTUATION("波动值", 2);

    private final String name;
    private final Short value;

    ValueTypeEnum(String name, Integer value) {
        this.name = name;
        this.value = value.shortValue();
    }

    /**
     * 根据数值获取名称
     */
    public static String getName(Short type) {
        for (ValueTypeEnum e : values()) {
            if (Objects.equals(e.getValue(), type)) {
                return e.getName();
            }
        }
        return "";
    }

    /**
     * 根据数值获取枚举实例；如果不存在则抛出异常
     */
    public static ValueTypeEnum getInstance(Short type) {
        for (ValueTypeEnum e : values()) {
            if (Objects.equals(e.getValue(), type)) {
                return e;
            }
        }
        throw new IllegalArgumentException("错误的值类型");
    }

    public String getName() {
        return name;
    }

    public Short getValue() {
        return value;
    }
}

