private bool IsMatched_UnpredictWip(ICollection <UnpredictWip> list, string shopID, string checkValue) { if (list == null || list.Count == 0) { return(false); } foreach (var it in list) { if (it.SHOP_ID != shopID) { continue; } string pattern = it.PATTERN; if (string.IsNullOrEmpty(pattern) || LcdHelper.Equals(pattern, "EMPTY")) { if (string.IsNullOrEmpty(checkValue) || LcdHelper.IsEmptyID(pattern)) { return(true); } } else { if (LcdHelper.Like(checkValue, pattern)) { return(true); } } } return(false); }
/// <summary> /// </summary> /// <param name="aeqp"/> /// <param name="fs"/> /// <param name="det"/> /// <param name="handled"/> public void ON_PMEVENT3(Mozart.SeePlan.Simulation.AoEquipment aeqp, Mozart.SeePlan.DataModel.PMSchedule fs, Mozart.SeePlan.Simulation.DownEventType det, ref bool handled) { FabAoEquipment eqp = aeqp.ToFabAoEquipment(); if (eqp.SetParallelChamberPM(fs, det)) { if (det == DownEventType.Start) { eqp.OnStateChanged(LoadingStates.PM); } return; } if (det == DownEventType.Start) { ResHelper.SetLastLoadingInfo(aeqp, null); aeqp.Loader.Block(); aeqp.WriteHistory(LoadingStates.PM); FabPMSchedule pm = fs as FabPMSchedule; DownMaster.AdjustAheadPMProcessing(eqp, pm); //PM의 경우 OnStateChange 함수를 별도로 호출 필요함. LoadingStates state = GetPMLoadingState(pm.Type); eqp.OnStateChanged(state); FabLoadInfo loadInfo = eqp.LoadInfos.Last(); if (loadInfo.State == LoadingStates.PM) { if (pm.Type == ScheduleType.RENT) { loadInfo.StateInfo = "RENT"; } if (loadInfo.StateInfo != "AHEAD" && LcdHelper.IsEmptyID(pm.Description) == false) { loadInfo.StateInfo = pm.Description; } } } else { aeqp.Loader.Unblock(); aeqp.WriteHistoryAfterBreak(); aeqp.SetModified(); eqp.OnStateChanged(LoadingStates.IDLE); eqp.AvailablePMTime = DateTime.MaxValue; } }
private bool IsPhotoStep(Dictionary <string, string> photoStep, FabStdStep stdStep) { string steps; photoStep.TryGetValue(stdStep.ShopID, out steps); if (LcdHelper.IsEmptyID(steps)) { return(false); } return(steps.Contains(stdStep.StepID)); }
/// <summary> /// </summary> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public IList <Mozart.SeePlan.Simulation.IHandlingBatch> GET_WIPS0(ref bool handled, IList <Mozart.SeePlan.Simulation.IHandlingBatch> prevReturnValue) { List <IHandlingBatch> list = new List <IHandlingBatch>(); foreach (FabWipInfo wip in InputMart.Instance.FabWipInfo.Values) { FabStep step = wip.InitialStep as FabStep; if (SimHelper.IsTftRunning && step.IsCellShop) { continue; } else if (SimHelper.IsCellRunning && step.IsCellShop == false) { continue; } FabLot lot = CreateHelper.CreateLot(wip, LotState.WIP); list.Add(lot); if (wip.IsRun) { string eqpID = wip.WipEqpID ?? string.Empty; FabEqp eqp; InputMart.Instance.FabEqp.TryGetValue(eqpID, out eqp); if (eqp != null) { eqp.InitRunWips.AddSort(lot, CompareHelper.RunWipComparer.Default); } } if (SimHelper.IsTftRunning) { WipCollector.AddProductByVersion(lot); } } //TODO : 임시로직, CF에 있는 Array제품 버전문제 if (SimHelper.IsTftRunning) { foreach (FabLot lot in list) { FabProduct prod = lot.FabProduct; if (BopHelper.IsCfShop(lot.Wip.ShopID) && prod.IsArrayShopProduct()) { string version = WipCollector.GetVersion(prod.ProductID); if (LcdHelper.IsEmptyID(version) == false) { lot.OrigProductVersion = version; } else { Console.WriteLine(); } } } } return(list); }