SpecifiedActionEnum.java

package com.mycim.valueobject.consts;

import com.mycim.framework.utils.lang.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Qiansheng.Wang
 * @since 2020-02-28
 */
public enum SpecifiedActionEnum {
    /**
     * Normal
     */
    NORMAL("Normal"),
    /**
     * 离线导入,重新key值
     */
    RE_KEYIN_DATA("Re-Keyin Data"),
    /**
     * 重新测量
     */
    REMEASURE("Remeasure"),
    /**
     * 重新选择Recipe测量
     */
    REMEASURE_RECIPE("Remeasure With Other Recipes"),
    /**
     * 重新选择Units测量
     */
    REMEASURE_UNIT("Remeasure With Other Units"),
    /**
     * ocap 处理
     */
    OCAP_HANDLE("OCAP Handle"),
    /**
     * ocap 处理 - lot Hold
     */
    OCAP_HANDLE_LOTHOLD("OCAP Handle LotHold"),
    /**
     * ocap 处理 - lot Release
     */
    OCAP_HANDLE_LOTRELEASE("OCAP Handle LotRelease"),
    /**
     * ocap 处理 - 设备 Hold
     */
    OCAP_HANDLE_EQPHOLD("OCAP Handle EQPHold"),
    /**
     * ocap 处理 - 设备 Release
     */
    OCAP_HANDLE_EQPRELEASE("OCAP Handle EQPRelease"),
    /**
     * ocap 处理 - 确认
     */
    CONFIRM_OCAP_HANDLE("Confirm OCAP Handle"),
    /**
     * ocap 处理 - 确认 lot Hold
     */
    CONFIRM_OCAP_HANDLE_LOTHOLD("Confirm OCAP Handle LotHold"),
    /**
     * ocap 处理 - 确认 lot Release
     */
    CONFIRM_OCAP_HANDLE_LOTRELEASE("Confirm OCAP Handle LotRelease"),
    /**
     * ocap 处理 - 确认 设备 Hold
     */
    CONFIRM_OCAP_HANDLE_EPQHOLD("Confirm OCAP Handle EQPHold"),
    /**
     * ocap 处理 - 确认 设备 Release
     */
    CONFIRM_OCAP_HANDLE_EQPRELEASE("Confirm OCAP Handle EQPRelease");

    private String description;

    private SpecifiedActionEnum(String desc) {
        this.description = desc;
    }

    public static boolean isRemeasure(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.REMEASURE.toString(), specifiedAction);
    }

    public static boolean isRemeasureRecipe(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.REMEASURE_RECIPE.toString(), specifiedAction);
    }

    public static boolean isRemeasureUnit(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.REMEASURE_UNIT.toString(), specifiedAction);
    }

    public static boolean isConfirmOcapHandle(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.CONFIRM_OCAP_HANDLE.toString(), specifiedAction);
    }

    public static boolean isBelongConfirmOcapHandle(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.CONFIRM_OCAP_HANDLE.toString(), specifiedAction) ||
                StringUtils.contains(specifiedAction, CONFIRM_OCAP_HANDLE.toString());
    }

    public static boolean isOcapHandle(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.OCAP_HANDLE.toString(), specifiedAction);
    }

    /**
     * 是否是由于OCAP导致需要重量操作
     *
     * @param specifiedAction
     * @return true 是, false 否
     */
    public static boolean isSpcRemeasureAction(String specifiedAction) {
        return StringUtils.equals(SpecifiedActionEnum.REMEASURE.toString(), specifiedAction) ||
                StringUtils.equals(SpecifiedActionEnum.REMEASURE_RECIPE.toString(), specifiedAction) ||
                StringUtils.equals(SpecifiedActionEnum.RE_KEYIN_DATA.toString(), specifiedAction);
    }

    /**
     * Convert the {@code SpecifiedActionEnum} to {@code List<Map<String, String>>}
     * <p>
     * Key is element string, value is element description
     *
     * @return {"key": "element.toString", "value": "element.getDescription"}
     */
    public static List<Map<String, String>> toMapList() {
        List<Map<String, String>> list = new ArrayList<>();

        Map<String, String> map = new HashMap<>();
        map.put("key", "");
        map.put("value", "");
        list.add(map);

        for (SpecifiedActionEnum element : SpecifiedActionEnum.values()) {
            if (element.equals(NORMAL)) {
                continue;
            }
            map = new HashMap<>();
            map.put("key", element.toString());
            map.put("value", element.getDescription());
            list.add(map);
        }
        return list;
    }

    public String getDescription() {
        return description;
    }

}