LotStatus.java

/*
 *        @ Copyright 2001 FA Software;
 *        All right reserved. No part of this program may be reproduced or
 *        transmitted in any form or by any means, electronic or
 *        mechanical, including photocopying, recording, or by any
 *        information storage or retrieval system without written
 *        permission from FA Software, except for inclusion of brief
 *        quotations in a review.
 */
package com.mycim.valueobject.wip;

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

public class LotStatus {

    public static final String CREATED = "CREATED";

    public static final String WAITING = "WAITING";

    public static final String RUNNING = "RUNNING";

    public static final String ACTIVE = "ACTIVE";

    public static final String HOLD = "HOLD";

    public static final String RELEASE = "RELEASE";

    public static final String TERMINATED = "TERMINATED";

    public static final String STORED = "STORED";

    public static final String LOSSED = "LOSSED";

    public static final String DISPATCH = "DISPATCH";

    public static final String MERGED = "MERGED";

    public static final String SCRAPPED = "SCRAPPED";

    public static final String SHIPPED = "SHIPPED";

    public static final String PROCESSED = "PROCESSED";

    public static final String RECEIVED = "RECEIVED";

    public static final String FINISH = "FINISH";               // NSI 中 COMPLETED 为 FINISH

    public static final String COMPLETEDSS = "COMPLETEDSS";

    public static final String BONDED = "BONDED";

    public static final String OUTSOURCING = "OUTSOURCING";          // 正在外包厂加工

    public static final String RUNNINGHOLD = "RUNNINGHOLD";

    public static final String UNACTIVE = "UNACTIVE";

    public static final String REWORK = "REWORK";

    public static final String ALL = "ALL";

    public static final String BANKED = "BANKED";               // nsi项目用以替换STORED状态

    public static final String SUBCON = "SUBCON";

    public static final String COMPLETED = "COMPLETED";

    public static final String SHIP = "SHIP";                 // ERP

    public static final String TRANSFER = "TRANSFER";

    public static final String RUNCARD_FINISH = "WAITMERGE";

    public static final String RUNCARD_HOLD = "RUNCARDHOLD";

    public static final String RUNCARD_WAITFINISH = "WAITRCFINISH";

    public static final String RUNCARD_WAITSPLIT = "WAITINGSPLIT";

    // 设备灯: 含有run状态批次
    public static final String STATUSLIGTH_RUN = "RUNNING";

    // 设备灯: 含有HOLD 没有run状态的批次
    public static final String STATUSLIGTH_HOLD_NO_RUN = "HOLD NO RUNNING";

    // 设备灯: 有批次的灯
    public static final String STATUSLIGTH_HAV = "OTHERS";

    public static final String DISPATCHLOTSTATUS = "WAITING,DISPATCH,HOLD";

    public static final String AUTO_MONITOR_JOB_FINISH = "AMFINISH";

    private LotStatus() {
    }

    /*
     * Status outside the station
     */
    public static Boolean isCreated(String lotStatus) {
        return StringUtils.equals(CREATED, lotStatus);
    }

    public static Boolean isWaiting(String lotStatus) {
        return StringUtils.equals(WAITING, lotStatus);
    }

    public static Boolean isHold(String lotStatus) {
        return StringUtils.equals(HOLD, lotStatus);
    }

    public static Boolean isStored(String lotStatus) {
        return StringUtils.equals(STORED, lotStatus);
    }

    public static Boolean isBanked(String lotStatus) {
        return StringUtils.equals(BANKED, lotStatus);
    }

    public static Boolean isShipped(String lotStatus) {
        return StringUtils.equals(SHIPPED, lotStatus);
    }

    // Ended status
    public static Boolean isCompleted(String lotStatus) {
        return StringUtils.equals(FINISH, lotStatus);
    }

    public static Boolean isTerminated(String lotStatus) {
        return StringUtils.equals(TERMINATED, lotStatus);
    }

    public static Boolean isLossed(String lotStatus) {
        return StringUtils.equals(LOSSED, lotStatus);
    }

    public static Boolean isScrapped(String lotStatus) {
        return StringUtils.equals(SCRAPPED, lotStatus);
    }

    public static Boolean isMerged(String lotStatus) {
        return StringUtils.equals(MERGED, lotStatus);
    }

    public static Boolean isEndStatus(String lotStatus) {
        return isCompleted(lotStatus) || isTerminated(lotStatus) || isScrapped(lotStatus) || isLossed(lotStatus);
    }

    public static String[] getEndedStatus() {
        return new String[]{FINISH, COMPLETEDSS, TERMINATED, LOSSED, SCRAPPED, MERGED};
    }

    /*
     * Status within the station
     */
    public static Boolean isDispatch(String lotStatus) {
        return StringUtils.equals(DISPATCH, lotStatus);
    }

    public static Boolean isRunning(String lotStatus) {
        return StringUtils.equals(RUNNING, lotStatus);
    }

    public static Boolean isRunningHold(String lotStatus) {
        return StringUtils.equals(RUNNINGHOLD, lotStatus);
    }

    public static Boolean isProcessed(String lotStatus) {
        return StringUtils.equals(PROCESSED, lotStatus);
    }

    public static Boolean isProcessingStatus(String lotStatus) {
        return isDispatch(lotStatus) || isRunning(lotStatus) || isProcessed(lotStatus) || isRunningHold(lotStatus);
    }

    public static String[] getProcessingStatus() {
        return new String[]{DISPATCH, RUNNING, RUNNINGHOLD, PROCESSED};
    }

    /**
     * These lot status can do track in action: <br>
     * {@value #WAITING}, {@value #DISPATCH}
     *
     * @param lotStatus
     * @return
     */
    public static Boolean isMoveInCheckStatus(String lotStatus) {
        return isWaiting(lotStatus) || isDispatch(lotStatus);
    }

    /**
     * These lot status can do track out action: <br>
     * {@value #RUNNING}, {@value #PROCESSED}
     *
     * @param lotStatus
     * @return
     */
    public static Boolean isMoveOutCheckStatus(String lotStatus) {
        return isRunning(lotStatus) || isProcessed(lotStatus);
    }

    public static Boolean isInSpecialStepStatus(String lotStatus) {
        return isBanked(lotStatus);
    }

    public static String[] getFilterStatus() {
        return new String[]{OUTSOURCING};
    }

    public static String[] getUnclosedStatus() {
        return new String[]{CREATED, WAITING, RUNNING, HOLD, STORED, DISPATCH, SHIPPED, PROCESSED, RECEIVED, BONDED,
                            RUNNINGHOLD, BANKED, SUBCON};
    }

    public static Boolean isWaitingOrHold(String lotStatus) {
        return isWaiting(lotStatus) || isHold(lotStatus);
    }

    public static Boolean isActiveHold(String lotStatus) {
        return isRunning(lotStatus) || isWaiting(lotStatus) || isHold(lotStatus) || isRunningHold(lotStatus);
    }

    public static String[] getActiveStatus() {
        return new String[]{WAITING, RUNNING, DISPATCH, PROCESSED};
    }

    public static Boolean isRunCardWaitMerge(String lotStatus) {
        return StringUtils.equals(RUNCARD_FINISH, lotStatus);
    }

    public static Boolean isRunCardWaitFinish(String lotStatus){
        return StringUtils.equals(RUNCARD_WAITFINISH,lotStatus);
    }

    public static Boolean isCanRunningHold(String lotStatus) {
        return isRunning(lotStatus) || isRunningHold(lotStatus);
    }

    public static Boolean isCanHold(String lotStatus) {
        return isWaiting(lotStatus) || isHold(lotStatus);
    }

    /**
     * These lot status can do track in action: <br>
     * {@value #DISPATCH}, {@value #RUNNING}, {@value #PROCESSED}
     *
     * @param lotStatus
     * @return
     */
    public static Boolean isCanCancelMoveIn(String lotStatus) {
        return isDispatch(lotStatus) || isRunning(lotStatus) || isProcessed(lotStatus);
    }

    public static Boolean isRunCardHold(String lotStatus) {
        return StringUtils.equals(RUNCARD_HOLD, lotStatus);
    }

    public static Boolean isRunCardFinish(String lotStatus){
        return StringUtils.equals(RUNCARD_FINISH,lotStatus);
    }

    public static Boolean isAutoMonitorMerge(String lotStatus) {
        return StringUtils.equals(TERMINATED, lotStatus) || StringUtils.equals(AUTO_MONITOR_JOB_FINISH, lotStatus);
    }

    public static Boolean isRunCardWaitingSplit(String lotStatus) {
        return StringUtils.equals(RUNCARD_WAITSPLIT,lotStatus);
    }

    public static Boolean isRunCardSpecialStatus(String lotStatus) {
        return isRunCardWaitFinish(lotStatus) || isRunCardWaitMerge(lotStatus) || isRunCardWaitingSplit(lotStatus);
    }
}

/*
 * Modification Log Log No : Name : Modified Date: Description :
 */