TaskStatusEnum.java 3.03 KB
package com.huaheng.control.management.dto;

/**
 * 任务状态枚举类
 * 描述任务从WMS生成到最终完成的整个流转过程
 */
public enum TaskStatusEnum {

    /**
     * WMS生成任务
     */
    WMS_CREATE("WMS_CREATE", "WMS生成任务"),

    /**
     * WMS下发至WCS
     */
    WMS_SEND_TO_WCS("WMS_SEND_TO_WCS", "WMS下发至WCS"),

    /**
     * WCS接收任务
     */
    WCS_RECEIVE_TASK("WCS_RECEIVE_TASK", "WCS接收任务"),

    /**
     * WCS下发至设备
     */
    WCS_SEND_TO_DEVICE("WCS_SEND_TO_DEVICE", "WCS下发至设备"),

    /**
     * 设备接收任务
     */
    DEVICE_RECEIVE_TASK("DEVICE_RECEIVE_TASK", "设备接收任务"),

    /**
     * 设备执行开始
     */
    DEVICE_EXECUTE_START("DEVICE_EXECUTE_START", "设备执行开始"),

    /**
     * 设备执行完成
     */
    DEVICE_EXECUTE_FINISH("DEVICE_EXECUTE_FINISH", "设备执行完成"),

    /**
     * WCS确认完成
     */
    WCS_CONFIRM_FINISH("WCS_CONFIRM_FINISH", "WCS确认完成"),

    /**
     * WMS确认完成
     */
    WMS_CONFIRM_FINISH("WMS_CONFIRM_FINISH", "WMS确认完成");

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

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

    /**
     * 构造函数
     * @param key         枚举键值
     * @param description 枚举描述
     */
    TaskStatusEnum(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 TaskStatusEnum fromKey(String key) {
        for (TaskStatusEnum status : TaskStatusEnum.values()) {
            if (status.getKey().equals(key)) {
                return status;
            }
        }
        throw new IllegalArgumentException("无效的任务状态键值: " + key);
    }

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

    /**
     * 获取所有枚举值的键值数组
     * @return 键值数组
     */
    public static String[] keys() {
        TaskStatusEnum[] 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;
    }
}