EquipmentStatusEnum.java 2.39 KB
package com.huaheng.control.management.dto;

/**
 * 设备状态枚举类
 * @author     TanYibin
 * @createDate 2026年1月13日
 */
public enum EquipmentStatusEnum {
    /**
     * 空闲
     */
    FREE("FREE", "空闲"),

    /**
     * 运行中
     */
    RUNNING("RUNNING", "运行中"),

    /**
     * 离线
     */
    OFFLINE("OFFLINE", "离线"),

    /**
     * 异常
     */
    EXCEPTION("EXCEPTION", "异常");

    /**
     * 枚举键值
     */
    private final String key;

    /**
     * 枚举描述
     */
    private final String description;

    /**
     * 构造函数
     * @param key         枚举键值
     * @param description 枚举描述
     */
    EquipmentStatusEnum(String key, String description) {
        this.key = key;
        this.description = description;
    }

    /**
     * 获取枚举键值
     * @return 键值
     */
    public String getKey() {
        return key;
    }

    /**
     * 获取枚举描述
     * @return 描述信息
     */
    public String getDescription() {
        return description;
    }

    /**
     * 根据键值获取枚举实例
     * @param  key                      键值
     * @return                          对应的枚举实例
     * @throws IllegalArgumentException 如果键值不存在
     */
    public static EquipmentStatusEnum fromKey(String key) {
        for (EquipmentStatusEnum status : EquipmentStatusEnum.values()) {
            if (status.getKey().equals(key)) {
                return status;
            }
        }
        throw new IllegalArgumentException("无效的设备状态键值: " + key);
    }

    /**
     * 检查键值是否存在
     * @param  key 键值
     * @return     是否存在
     */
    public static boolean containsKey(String key) {
        for (EquipmentStatusEnum status : EquipmentStatusEnum.values()) {
            if (status.getKey().equals(key)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 获取所有枚举值的键值数组
     * @return 键值数组
     */
    public static String[] keys() {
        EquipmentStatusEnum[] statuses = values();
        String[] keys = new String[statuses.length];
        for (int i = 0; i < statuses.length; i++) {
            keys[i] = statuses[i].getKey();
        }
        return keys;
    }

    @Override
    public String toString() {
        return key + ":" + description;
    }
}