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;
}
}
}
}
}