private static void SetWipStayHours(this QTimeInfo info, string lotID, DateTime planStartTime) { if (info.HasQTime() == false) { return; } foreach (var it in info.List) { string fromStepID = it.FromStep.StepID; var finds = InputMart.Instance.WipStayHoursDict.FindRows(lotID, fromStepID); if (finds == null) { continue; } var find = finds.FirstOrDefault(); if (find == null) { continue; } DateTime fromStepOutTime = LcdHelper.Min(find.FROM_STEP_OUT_TIME, planStartTime); if (fromStepOutTime == DateTime.MinValue) { continue; } it.FromStepOutTime = fromStepOutTime; } }
public static bool HasMaxQTime(this QTimeInfo info) { if (info.MaxList != null && info.MaxList.Count > 0) { return(true); } return(false); }
private static void StepChange_Curr(this QTimeInfo info, FabStep currStep, DateTime now) { if (info.HasMinQTime()) { info.MinList.ForEach(t => t.StepChange_Curr(currStep, now)); } if (info.HasMaxQTime()) { info.MaxList.ForEach(t => t.StepChange_Curr(currStep, now)); } }
private static void SetMatchedList(this QTimeInfo info, FabStep step) { if (step == null) { return; } if (info.HasQTime() == false) { return; } info.MinList = info.List.FindAll(t => t.IsMatched(step, QTimeType.MIN)); info.MaxList = info.List.FindAll(t => t.IsMatched(step, QTimeType.MAX)); }
private static void StepChange(this QTimeInfo info, FabStep prevStep, FabStep currStep, DateTime now) { var lot = info.Lot; if (lot == null) { return; } if (info.HasQTime() == false) { return; } info.StepChange_Prev(prevStep, now); info.SetMatchedList(currStep); info.StepChange_Curr(currStep, now); }
internal static void SetQTimeInfo(FabLot lot, FabStep initStep) { if (lot == null) { return; } FabStep currStep = initStep; if (currStep == null) { return; } FabProduct prod = lot.FabProduct; List <StayHour> finds = QTimeMaster.GetStayHours(prod); if (finds == null) { return; } QTimeInfo info = CreateHelper.CreateQTimeInfo(lot); lot.QtimeInfo = info; foreach (var it in finds) { var clone = it.Clone(); clone.Lot = lot; info.List.Add(clone); } DateTime now = AoFactory.Current.NowDT; info.StepChange(null, currStep, now); }
internal static StayHour FindMaximumMinHoldTime(this QTimeInfo info, DateTime now) { if (info.HasMinQTime() == false) { return(null); } var lot = info.Lot; var currStep = lot.CurrentFabStep; var list = info.MinList.FindAll(x => x.ToStep == currStep); if (list.Count == 0) { return(null); } if (list.Count > 1) { list.Sort(new CompareHelper.MinQTimeComparer(lot, currStep, now, OrderType.DESC)); } return(list[0]); }
internal static StayHour FindMinimumRemainTime(this QTimeInfo info, DateTime now) { if (info.HasMaxQTime() == false) { return(null); } var list = info.MaxList.FindAll(x => x.FromStepOutTime != DateTime.MinValue); if (list == null || list.Count == 0) { return(null); } var lot = info.Lot; var currStep = lot.CurrentFabStep; if (list.Count > 1) { list.Sort(new CompareHelper.MaxQTimeComparer(lot, currStep, now, OrderType.ASC)); } return(list[0]); }