WaferRule.java

package com.mycim.valueobject.edcspc.rule;

import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.valueobject.edcspc.DataCollectionRule;
import com.mycim.valueobject.wip.Unit;

import java.util.List;

/**
 * 通过UnitId的编号验证规则<br> 强制匹配,如匹配数量与选片数量不相等,则该规则不可用
 *
 * @author Qiansheng.Wang
 */
public class WaferRule extends CollectionRuleAbstract implements CollectionRule {

    protected WaferRule(DataCollectionRule dataCollectionRule, List<Unit> unitList) {
        super(dataCollectionRule, unitList);
    }

    @Override
    protected void setAndCheckAvailableUnit(String sample) {
        addToResultForNormalIndex(sample);
    }

    /**
     * 检查是否为可用的Unit<br> 通过UnitId判断
     *
     * @param sample
     * @return
     */
    @Override
    protected void addToResultForNormalIndex(String sample) {

        for (Unit unit : getUnitList()) {
            String num = StringUtils.substringAfter(unit.getUnitId(), Unit.SEPERATER_KEY);

            // 检查选择FIRST,或者Middle, 或者LAST时
            int index = getAndCheckSpecialIndex(sample);
            if (index != -1) {
                addToResultForSpecialIndex(index);
                break;
            } else {
                String id = NumberUtils.isNumber(num) ? StringUtils.toString(NumberUtils.toInt(num)) : num;
                if (sample.equals(id)) {
                    addToResult(StringUtils.toString(unit.getPositionInCarrier()), unit.getUnitId());
                    break;
                }
            }
        }

    }

}