private static bool IsNeedChamberSetup(FabAoEquipment eqp, FabLot lot) { //Equipment → ProcessControl → GetLoadableChambers : 투입가능한 챔버리스트 반환 List <FabSubEqp> list = ChamberMaster.GetLoadableSubEqps(eqp, lot); if (list.Count == 0) { return(false); } //Equipment → ProcessControl → GetNeedSetupChamber var needSetupChamberList = ChamberMaster.GetNeedSetupChamberList(list, lot); if (needSetupChamberList != null && needSetupChamberList.Count > 0) { return(true); } return(false); }
private static bool IsLoadable(AoEquipment eqp, FabLot lot) { string reason = string.Empty; //EqpArrange if (IsLoadableEqpArrange(eqp, lot) == false) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "EqpArrnage LimitQty"); return(false); } //Mask if (IsLoadableToolArrange(eqp, lot) == false) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Mask"); return(false); } //Jig if (IsLoadableJigArrange(eqp, lot) == false) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Jig"); return(false); } //ParallelChamber 확인 if (ChamberMaster.IsLoadable_ParallelChamber(eqp, lot) == false) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Not Available ChamberUnit"); return(false); } //설비간 이동시간 반영 if (IsArrive(eqp, lot, ref reason) == false) { reason = string.Format("TransferTime/{0} ", reason); lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.TransferTime); eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason); return(false); } //MinQtime 제약 if (IsStayDuringMinQTime(eqp, lot, ref reason) == false) { reason = string.Format("Stay MinTime/{0}", reason); lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.MinQtime); eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason); return(false); } //EqpRecipe 제약 if (IsEqpRecipeTime(eqp, lot, eqp.Now, ref reason) == false) { reason = string.Format("RecipeTime/{0}", reason); lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.RecipeTime); eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason); return(false); } //OwnerID Limit if (IsNotOwnerLimit(eqp, lot, ref reason) == false) { reason = string.Format("OwenrLimit/{0}", reason); lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.OwnerLimit); eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason); return(false); } //PREVENT_LAYER_CHANGE_FILTER if (IsFilterPreventLayerChange(eqp, lot)) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "PreventLayerChangeFilter"); return(false); } //CF_PHOTO_TARGET_LINE_FILTER if (IsCfPhotoTargetLine(eqp, lot) == false) { eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "CfPhotoTargetLineFilter"); return(false); } return(true); }