EquipmentConstrainInfo.java

package com.mycim.valueobject.prp;

import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.ems.Equipment;
import com.mycim.valueobject.wip.Lot;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author gary
 */
public class EquipmentConstrainInfo implements Serializable {


    private static final long serialVersionUID = -4453259454341000922L;

    private static final String beReplaceTheSymbol = ".{0,}";

    private static final String replaceTheSymbol = "*";

    public static final String EQUIPMENT_RULE = "EQUIPMENT_RULE";

    public static final String NORMAL_EQUIPMENT_RULE = "NORMAL_EQUIPMENT_RULE";

    public static final String FREE_EQUIPMENT_RULE = "FREE_EQUIPMENT_RULE";

    public static final String CHECK_EQUIPMENT_RULE = "CHECK_EQUIPMENT_RULE";

    public static final String SPECIAL = "#$#";

    public static final String REPLACESPECIAL = "\\|";

    public static final String SEPARATOR = "|";

    public static final String COMMA = ",";

    public static final String LEFT_BRACKET = "(";

    public static final String RIGHT_BRACKET = ")";

    public static final String BOUNDARY = "\\b";

    // public static final String REJECT = "REJECT";

    public static final String ACCEPT = "ACCEPT";

    public static final String REJECTSTOP = "REJECT-STOP";

    // public static final String ACCEPTSTOP = "ACCEPT-STOP";

    public static final String ENABLE = "ENABLE";

    public static final String DISABLE = "DISABLE";

    public static final String APPROVE = "APPROVE";

    public static final String REJECT = "REJECT";

    public static final String LOT = "LOT";

    public static final String WAFER = "WAFER";

    private String constrainRule;

    private Long facilityRrn;

    private long constrainRrn;

    private String productId;

    private long productRrn;

    private String processId;

    private long processRrn;

    private String operationId;

    private long operationRrn;

    private String recipeId;

    private String lotId;

    private String parentEquipmentId;

    private String equipmentId;

    private long parentEquipmentRrn;

    private long equipmentRrn;

    private String constrainAction;

    private String constrainType;

    private String constrainStatus;

    private String remark;

    private String createBy;

    private String modifyBy;

    private Date createTime;

    private Date modifyTime;

    private String ATTRIBUTE_DATA1;

    private String ATTRIBUTE_DATA2;

    private String ATTRIBUTE_DATA3;

    private String ATTRIBUTE_DATA4;

    private String ATTRIBUTE_DATA5;

    private String constrainSeq;

    private String replaceEquipmentConstrain;

    private String routeId;

    private String customerId;

    private String stageId;

    private String expireDate;                                     // 2019/1/31 2:15:00 存储

    private String checkResult;

    private String transName;

    private String expireTime;                                     // 2:15:00 页面使用

    private String expireDates;                                    // 2019/1/31 页面使用

    private String startDate;                                      // 查询历史 时使用

    private String endDate;                                        // 查询历史 时使用

    private String effectiveDate;                                  // 生效日期

    private int dailyWaferCount;

    private long currentDailyWaferCount;

    private int totalWaferCount;

    private long currentTotalWaferCount;

    private String lotType;

    private String eqpGroupId;

    private int dailyLotCount;

    private long currentDailyLotCount;

    private int totalLotCount;

    private long currentTotalLotCount;

    private String autoSwitchTimeInterval;

    private Date nextEnableTime;

    private String lotPriority;

    private String internalPriority;

    private String qeFlag;

    private String exceptReplaceEquipmentConstrain;

    private String exceptProductId;

    private String exceptProcessId;

    private String exceptLotId;

    private String exceptOperationId;

    private String exceptRouteId;

    private String exceptStageId;

    private String exceptRecipeId;

    private String exceptCustomerId;

    private String exceptLotType;

    private String exceptLotPriority;

    private String exceptInternalPriority;

    private String exceptEqpGroupId;

    public Long getFacilityRrn() {
        return facilityRrn;
    }

    public void setFacilityRrn(Long facilityRrn) {
        this.facilityRrn = facilityRrn;
    }

    public long getConstrainRrn() {
        return constrainRrn;
    }

    public void setConstrainRrn(long constrainRrn) {
        this.constrainRrn = constrainRrn;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getProcessId() {
        return processId;
    }

    public void setProcessId(String processId) {
        this.processId = processId;
    }

    public String getOperationId() {
        return operationId;
    }

    public void setOperationId(String operationId) {
        this.operationId = operationId;
    }

    public String getRecipeId() {
        return recipeId;
    }

    public void setRecipeId(String recipeId) {
        this.recipeId = recipeId;
    }

    public String getLotId() {
        return lotId;
    }

    public void setLotId(String lotId) {
        this.lotId = lotId;
    }

    public String getEquipmentId() {
        return equipmentId;
    }

    public void setEquipmentId(String equipmentId) {
        this.equipmentId = equipmentId;
    }

    public String getConstrainAction() {
        return constrainAction;
    }

    public String getConstrainActionForShow() {
        return StringUtils.equalsIgnoreCase(this.constrainAction, EquipmentConstrainInfo.REJECTSTOP) ? "RN" : "PN";
    }

    public void setConstrainAction(String constrainAction) {
        this.constrainAction = constrainAction;
    }

    public String getConstrainType() {
        return constrainType;
    }

    public void setConstrainType(String constrainType) {
        this.constrainType = constrainType;
    }

    public String getConstrainStatus() {
        return constrainStatus;
    }

    public void setConstrainStatus(String constrainStatus) {
        this.constrainStatus = constrainStatus;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public String getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getModifyTime() {
        return modifyTime;
    }

    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    public String getATTRIBUTE_DATA1() {
        return ATTRIBUTE_DATA1;
    }

    public void setATTRIBUTE_DATA1(String aTTRIBUTE_DATA1) {
        ATTRIBUTE_DATA1 = aTTRIBUTE_DATA1;
    }

    public String getATTRIBUTE_DATA2() {
        return ATTRIBUTE_DATA2;
    }

    public void setATTRIBUTE_DATA2(String aTTRIBUTE_DATA2) {
        ATTRIBUTE_DATA2 = aTTRIBUTE_DATA2;
    }

    public String getATTRIBUTE_DATA3() {
        return ATTRIBUTE_DATA3;
    }

    public void setATTRIBUTE_DATA3(String aTTRIBUTE_DATA3) {
        ATTRIBUTE_DATA3 = aTTRIBUTE_DATA3;
    }

    public String getATTRIBUTE_DATA4() {
        return ATTRIBUTE_DATA4;
    }

    public void setATTRIBUTE_DATA4(String aTTRIBUTE_DATA4) {
        ATTRIBUTE_DATA4 = aTTRIBUTE_DATA4;
    }

    public String getATTRIBUTE_DATA5() {
        return ATTRIBUTE_DATA5;
    }

    public void setATTRIBUTE_DATA5(String aTTRIBUTE_DATA5) {
        ATTRIBUTE_DATA5 = aTTRIBUTE_DATA5;
    }

    public String getConstrainSeq() {
        return constrainSeq;
    }

    public void setConstrainSeq(String constrainSeq) {
        this.constrainSeq = constrainSeq;
    }

    /**
     * @return the constrainRule
     */
    public String getConstrainRule() {
        if (StringUtils.equals("0", constrainType)) {
            this.constrainRule = NORMAL_EQUIPMENT_RULE;
        } else if (StringUtils.equals("1", constrainType)) {
            this.constrainRule = FREE_EQUIPMENT_RULE;
        }
        return constrainRule;
    }

    public void setConstrainRule(String constrainRule) {
        this.constrainRule = constrainRule;
    }

    public String getEquipmentIdRegex() {
        String equipmentIdRegex = "";
        if (StringUtils.isNotBlank(this.equipmentId)) {
            String value = this.equipmentId;
            value = getListMatches(value);
            equipmentIdRegex = "^" + StringUtils.replace(value, replaceTheSymbol, beReplaceTheSymbol) + "$";
        }

        return equipmentIdRegex;
    }

    private String getListMatches(String value) {
        List list = new ArrayList();
        list.add("\\");
        list.add("$");
        list.add("(");
        list.add(")");
        list.add("{");
        list.add("}");
        list.add("?");
        list.add("+");
        list.add(".");
        list.add("/");
        list.add("@");
        list.add("^");
        list.add("|");
        String regex = "[^$(){}?+./^@|\\\\]{1,}";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(value);
        if (!m.matches()) {
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).equals("\\")) {
                    value = StringUtils.replace(value, list.get(i) + "", "\\\\");
                } else {
                    value = StringUtils.replace(value, list.get(i) + "", "\\" + list.get(i));
                }
            }
        }
        return value;
    }

    public String getReplaceEquipmentConstrain() {
        StringBuilder constrainValue = new StringBuilder("^");
        if (StringUtils.isNotEmpty(this.equipmentId)) {

            String[] equipmentIds = this.equipmentId.split(COMMA);
            String value = this.equipmentId;
            value = getListMatches(value);
            constrainValue.append(StringUtils.replace(value, replaceTheSymbol, beReplaceTheSymbol));
        }

        if (StringUtils.isNotEmpty(this.productId)) {
            buildConstrainInfo(constrainValue, this.productId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.processId)) {
            buildConstrainInfo(constrainValue, this.processId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.lotId)) {

            buildConstrainInfo(constrainValue, this.lotId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.operationId)) {
            buildConstrainInfo(constrainValue, this.operationId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.routeId)) {
            buildConstrainInfo(constrainValue, this.routeId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.recipeId)) {
            buildConstrainInfo(constrainValue, this.recipeId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.stageId)) {
            buildConstrainInfo(constrainValue, this.stageId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.customerId)) {
            buildConstrainInfo(constrainValue, this.customerId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.lotType)) {
            buildConstrainInfo(constrainValue, this.lotType);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.lotPriority)) {
            buildConstrainInfo(constrainValue, this.lotPriority);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.internalPriority)) {
            buildConstrainInfo(constrainValue, this.internalPriority);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        /*  eqptGroup单独匹配
        if (StringUtils.isNotEmpty(this.eqpGroupId)) {
            buildConstrainInfo(constrainValue, this.eqpGroupId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }*/

        constrainValue.append("$");
        replaceEquipmentConstrain = constrainValue.toString();
        return replaceEquipmentConstrain;
    }

    public String getExceptReplaceEquipmentConstrain() {
        StringBuilder constrainValue = new StringBuilder("^");
        if (StringUtils.isNotEmpty(this.equipmentId)) {

            String[] equipmentIds = this.equipmentId.split(COMMA);
            String value = this.equipmentId;
            value = getListMatches(value);
            constrainValue.append(StringUtils.replace(value, replaceTheSymbol, beReplaceTheSymbol));
        }

        if (StringUtils.isNotEmpty(this.exceptProductId)) {
            buildConstrainInfo(constrainValue, this.exceptProductId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptProcessId)) {
            buildConstrainInfo(constrainValue, this.exceptProcessId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptLotId)) {

            buildConstrainInfo(constrainValue, this.exceptLotId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptOperationId)) {
            buildConstrainInfo(constrainValue, this.exceptOperationId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.exceptRouteId)) {
            buildConstrainInfo(constrainValue, this.exceptRouteId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.exceptRecipeId)) {
            buildConstrainInfo(constrainValue, this.exceptRecipeId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptStageId)) {
            buildConstrainInfo(constrainValue, this.exceptStageId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }
        if (StringUtils.isNotEmpty(this.exceptCustomerId)) {
            buildConstrainInfo(constrainValue, this.exceptCustomerId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptLotType)) {
            buildConstrainInfo(constrainValue, this.exceptLotType);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptLotPriority)) {
            buildConstrainInfo(constrainValue, this.exceptLotPriority);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        if (StringUtils.isNotEmpty(this.exceptInternalPriority)) {
            buildConstrainInfo(constrainValue, this.exceptInternalPriority);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }

        /* eqptGroup单独匹配
        if (StringUtils.isNotEmpty(this.exceptEqpGroupId)) {
            buildConstrainInfo(constrainValue, this.exceptEqpGroupId);
        } else {
            constrainValue.append(REPLACESPECIAL + beReplaceTheSymbol);
        }*/

        constrainValue.append("$");
        exceptReplaceEquipmentConstrain = constrainValue.toString();
        return exceptReplaceEquipmentConstrain;
    }

    public boolean isExceptionEmpty() {
        return StringUtils.isBlank(exceptProductId) && StringUtils.isBlank(exceptProcessId) &&
                StringUtils.isBlank(exceptLotId) && StringUtils.isBlank(exceptOperationId) &&
                StringUtils.isBlank(exceptStageId) && StringUtils.isBlank(exceptRecipeId) &&
                StringUtils.isBlank(exceptCustomerId) && StringUtils.isBlank(exceptLotType) &&
                StringUtils.isBlank(exceptLotPriority) && StringUtils.isBlank(exceptInternalPriority) &&
                StringUtils.isBlank(exceptEqpGroupId);
    }

    private void buildConstrainInfo(StringBuilder constrainValue, String data) {
        constrainValue.append(REPLACESPECIAL).append(LEFT_BRACKET);
        String[] datas = data.split(COMMA);
        for (int i = 1; i <= datas.length; i++) {
            String value = datas[i - 1];
            value = getListMatches(value);
            constrainValue.append(StringUtils.replace(value, replaceTheSymbol, beReplaceTheSymbol));

            if (i != datas.length) {
                constrainValue.append(SEPARATOR);
            }
        }
        constrainValue.append(RIGHT_BRACKET);
    }

    public boolean constraintsMatch(Equipment eqpt, Lot lot) {
        Pattern pattern = Pattern.compile(getReplaceEquipmentConstrain(), Pattern.CASE_INSENSITIVE);
        String matchStr = matchesEquipmenConstrainInfo(eqpt, lot);
        Boolean matchFlag = pattern.matcher(matchStr).matches();
        if (matchFlag && StringUtils.isNotEmpty(getEqpGroupId())) {
            matchFlag = Pattern.compile(buildEqptGroupsMatchStr(getEqpGroupId()), Pattern.CASE_INSENSITIVE)
                               .matcher(lot.getEqptGroupIds()).find();
        }
        boolean exceptFlag = false;
        if (!isExceptionEmpty()) {
            //排除掉exception
            Pattern exceptPattern = Pattern.compile(getExceptReplaceEquipmentConstrain(), Pattern.CASE_INSENSITIVE);
            exceptFlag = exceptPattern.matcher(matchStr).matches();
            if (exceptFlag && StringUtils.isNotEmpty(getExceptEqpGroupId())) {
                exceptFlag = Pattern.compile(buildEqptGroupsMatchStr(getExceptEqpGroupId()), Pattern.CASE_INSENSITIVE)
                                    .matcher(lot.getEqptGroupIds()).find();
            }
        }

        return matchFlag && !exceptFlag&&!areadyExpire();
    }

    /**
     * <p>过期-true</p>
     * <p>不过期-false</p>
     * @return
     */
    public boolean areadyExpire(){
        if(StringUtils.isEmpty(this.expireDate)){
            return false;
        }
        if(DateUtils.parse(this.expireDate, DateUtils.DATE_FORMAT4DATE).getTime() < new Date().getTime()){
            return true;
        }
        return false;
    }

    private String buildEqptGroupsMatchStr(String eqptGroups) {
        StringBuffer regStr = new StringBuffer(BOUNDARY).append(LEFT_BRACKET);
        if (StringUtils.isNotEmpty(eqptGroups)) {
            String[] eqptGroupArr = StringUtils.split(eqptGroups, ",");
            for (int i = 1; i <= eqptGroupArr.length; i++) {
                String eqptGroup = eqptGroupArr[i - 1];
                eqptGroup = getListMatches(eqptGroup);
                regStr.append(StringUtils.replace(eqptGroup, replaceTheSymbol, beReplaceTheSymbol));

                if (i != eqptGroupArr.length) {
                    regStr.append(SEPARATOR);
                }
            }
        }
        regStr.append(RIGHT_BRACKET).append(BOUNDARY);
        return regStr.toString();
    }

    public void setReplaceEquipmentConstrain(String replaceEquipmentConstrain) {
        this.replaceEquipmentConstrain = replaceEquipmentConstrain;
    }

    public boolean matchesEquipmentId(String equipmentId) {
        Pattern pattern = Pattern.compile(this.getEquipmentIdRegex());
        if (StringUtils.isEmpty(equipmentId) || StringUtils.equals(equipmentId, "*")) {
            return true;
        }
        return pattern.matcher(equipmentId).matches();
    }

    public String matchesEquipmenConstrainInfo(Equipment equipment, Lot lot) {
        StringBuilder constrainValue = new StringBuilder();
        if (StringUtils.isNotEmpty(equipment.getInstanceId())) {
            constrainValue.append(equipment.getInstanceId());
        }
        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getProductId())) {
            constrainValue.append(lot.getProductId());
        } else {
            constrainValue.append(" ");
        }
        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getProcessId())) {
            constrainValue.append(lot.getProcessId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getLotId())) {
            constrainValue.append(lot.getLotId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getOperationId())) {
            constrainValue.append(lot.getOperationId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getRouteId())) {
            constrainValue.append(lot.getRouteId());
        } else if (StringUtils.isNotEmpty(lot.getBuildRouteId())) {
            constrainValue.append(lot.getBuildRouteId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getRecipeId())) {
            constrainValue.append(lot.getRecipeId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getStageId())) {
            constrainValue.append(lot.getStageId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getCustomerId())) {
            constrainValue.append(lot.getCustomerId());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getLotType())) {
            constrainValue.append(lot.getLotType());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotBlank(lot.getHotFlag())) {
            constrainValue.append(lot.getHotFlag());
        } else {
            constrainValue.append(" ");
        }

        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (lot.getPriority() != null) {
            constrainValue.append(lot.getPriority());
        } else {
            constrainValue.append(" ");
        }

        /* eqptGroup 单独匹配
        constrainValue.append(EquipmentConstrainInfo.SEPARATOR);
        if (StringUtils.isNotEmpty(lot.getEqptGroupIds())) {
            constrainValue.append(lot.getEqptGroupIds());
        } else {
            constrainValue.append(" ");
        }*/

        return constrainValue.toString();
    }

    public String getRouteId() {
        return routeId;
    }

    public void setRouteId(String routeId) {
        this.routeId = routeId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getStageId() {
        return stageId;
    }

    public void setStageId(String stageId) {
        this.stageId = stageId;
    }

    public String getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(String expireDate) {
        this.expireDate = expireDate;
    }

    public String getCheckResult() {
        return checkResult;
    }

    public void setCheckResult(String checkResult) {
        this.checkResult = checkResult;
    }

    public String getTransName() {
        return transName;
    }

    public void setTransName(String transName) {
        this.transName = transName;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public String getExpireDates() {
        return expireDates;
    }

    public void setExpireDates(String expireDates) {
        this.expireDates = expireDates;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(String effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public Integer getDailyWaferCount() {
        return dailyWaferCount;
    }

    public Integer getTotalWaferCount() {
        return totalWaferCount;
    }

    public long getEquipmentRrn() {
        return equipmentRrn;
    }

    public void setEquipmentRrn(long equipmentRrn) {
        this.equipmentRrn = equipmentRrn;
    }

    public long getProductRrn() {
        return productRrn;
    }

    public void setProductRrn(long productRrn) {
        this.productRrn = productRrn;
    }

    public long getProcessRrn() {
        return processRrn;
    }

    public void setProcessRrn(long processRrn) {
        this.processRrn = processRrn;
    }

    public long getOperationRrn() {
        return operationRrn;
    }

    public void setOperationRrn(long operationRrn) {
        this.operationRrn = operationRrn;
    }

    public String getParentEquipmentId() {
        return parentEquipmentId;
    }

    public void setParentEquipmentId(String parentEquipmentId) {
        this.parentEquipmentId = parentEquipmentId;
    }

    public long getParentEquipmentRrn() {
        return parentEquipmentRrn;
    }

    public void setParentEquipmentRrn(long parentEquipmentRrn) {
        this.parentEquipmentRrn = parentEquipmentRrn;
    }

    public String getLotType() {
        return lotType;
    }

    public void setLotType(String lotType) {
        this.lotType = lotType;
    }

    public String getEqpGroupId() {
        return eqpGroupId;
    }

    public void setEqpGroupId(String eqpGroupId) {
        this.eqpGroupId = eqpGroupId;
    }

    public int getDailyLotCount() {
        return dailyLotCount;
    }

    public void setDailyLotCount(int dailyLotCount) {
        this.dailyLotCount = dailyLotCount;
    }

    public long getCurrentDailyLotCount() {
        return currentDailyLotCount;
    }

    public void setCurrentDailyLotCount(long currentDailyLotCount) {
        this.currentDailyLotCount = currentDailyLotCount;
    }

    public int getTotalLotCount() {
        return totalLotCount;
    }

    public void setTotalLotCount(int totalLotCount) {
        this.totalLotCount = totalLotCount;
    }

    public long getCurrentTotalLotCount() {
        return currentTotalLotCount;
    }

    public void setCurrentTotalLotCount(long currentTotalLotCount) {
        this.currentTotalLotCount = currentTotalLotCount;
    }

    public String getAutoSwitchTimeInterval() {
        return autoSwitchTimeInterval;
    }

    public void setAutoSwitchTimeInterval(String autoSwitchTimeInterval) {
        this.autoSwitchTimeInterval = autoSwitchTimeInterval;
    }

    public Date getNextEnableTime() {
        return nextEnableTime;
    }

    public void setNextEnableTime(Date nextEnableTime) {
        this.nextEnableTime = nextEnableTime;
    }

    public String getLotPriority() {
        return lotPriority;
    }

    public void setLotPriority(String lotPriority) {
        this.lotPriority = lotPriority;
    }

    public String getInternalPriority() {
        return internalPriority;
    }

    public void setInternalPriority(String internalPriority) {
        this.internalPriority = internalPriority;
    }

    public String getExceptProductId() {
        return exceptProductId;
    }

    public void setExceptProductId(String exceptProductId) {
        this.exceptProductId = exceptProductId;
    }

    public String getExceptProcessId() {
        return exceptProcessId;
    }

    public void setExceptProcessId(String exceptProcessId) {
        this.exceptProcessId = exceptProcessId;
    }

    public String getExceptLotId() {
        return exceptLotId;
    }

    public void setExceptLotId(String exceptLotId) {
        this.exceptLotId = exceptLotId;
    }

    public String getExceptOperationId() {
        return exceptOperationId;
    }

    public void setExceptOperationId(String exceptOperationId) {
        this.exceptOperationId = exceptOperationId;
    }

    public String getExceptRouteId() {
        return exceptRouteId;
    }

    public void setExceptRouteId(String exceptRouteId) {
        this.exceptRouteId = exceptRouteId;
    }

    public String getExceptStageId() {
        return exceptStageId;
    }

    public void setExceptStageId(String exceptStageId) {
        this.exceptStageId = exceptStageId;
    }

    public String getExceptRecipeId() {
        return exceptRecipeId;
    }

    public void setExceptRecipeId(String exceptRecipeId) {
        this.exceptRecipeId = exceptRecipeId;
    }

    public String getExceptCustomerId() {
        return exceptCustomerId;
    }

    public void setExceptCustomerId(String exceptCustomerId) {
        this.exceptCustomerId = exceptCustomerId;
    }

    public String getExceptLotType() {
        return exceptLotType;
    }

    public void setExceptLotType(String exceptLotType) {
        this.exceptLotType = exceptLotType;
    }

    public String getExceptLotPriority() {
        return exceptLotPriority;
    }

    public void setExceptLotPriority(String exceptLotPriority) {
        this.exceptLotPriority = exceptLotPriority;
    }

    public String getExceptInternalPriority() {
        return exceptInternalPriority;
    }

    public void setExceptInternalPriority(String exceptInternalPriority) {
        this.exceptInternalPriority = exceptInternalPriority;
    }

    public String getExceptEqpGroupId() {
        return exceptEqpGroupId;
    }

    public void setExceptEqpGroupId(String exceptEqpGroupId) {
        this.exceptEqpGroupId = exceptEqpGroupId;
    }

    public String getQeFlag() {
        return qeFlag;
    }

    public void setQeFlag(String qeFlag) {
        this.qeFlag = qeFlag;
    }

    public void setDailyWaferCount(int dailyWaferCount) {
        this.dailyWaferCount = dailyWaferCount;
    }

    public long getCurrentDailyWaferCount() {
        return currentDailyWaferCount;
    }

    public void setCurrentDailyWaferCount(long currentDailyWaferCount) {
        this.currentDailyWaferCount = currentDailyWaferCount;
    }

    public void setTotalWaferCount(int totalWaferCount) {
        this.totalWaferCount = totalWaferCount;
    }

    public long getCurrentTotalWaferCount() {
        return currentTotalWaferCount;
    }

    public void setCurrentTotalWaferCount(long currentTotalWaferCount) {
        this.currentTotalWaferCount = currentTotalWaferCount;
    }

}