private static DateTime GetAvailableSetupTime(FabAoEquipment eqp, DateTime now) { DateTime availableTime = eqp.AvailableSetupTime; //마스크 사용시 if (eqp.InUseMask != null) { //실제Setup시 Seize된 툴이 들어옴. 현재 이전의 LoadInfo을 참조해야함. if (eqp.InUseMask.LoadInfos.Count > 1) { MaskLoadInfo loadInfo = eqp.InUseMask.LoadInfos[eqp.InUseMask.LoadInfos.Count - 2]; if (loadInfo.EqpID != eqp.EqpID) { availableTime = LcdHelper.Max(eqp.AvailableSetupTime, (DateTime)loadInfo.AvailableTime); if (availableTime > now) { availableTime = now; } } } } return(availableTime); }
public static void AddLoadInfo(this FabMask mask, string eqpID, FabLot lot, bool isInit = false) { MaskLoadInfo info = new MaskLoadInfo(); if (lot != null) { info.EqpID = eqpID; info.AvailableTime = mask.AvailableTime; info.PlanInfo = lot.CurrentFabPlan; info.StartTime = AoFactory.Current.NowDT; info.LotID = lot.LotID; info.StepID = lot.CurrentStepID; info.ProductID = lot.CurrentProductID; info.ProductVersion = lot.CurrentProductVersion; string key = GetMaskLoadInfoKey(info.EqpID, info.LotID, info.StepID); if (mask.LoadInfosView.ContainsKey(key) == false) { mask.LoadInfosView.Add(key, info); } } else { info.StartTime = (DateTime)mask.AvailableTime; info.EndTime = isInit ? info.StartTime : info.StartTime.AddMinutes(GetMaskTransferTime(mask.EqpID, eqpID).TotalMinutes); info.EqpID = eqpID; info.LotID = isInit ? "INIT" : "MOVE"; info.StepID = Constants.NULL_ID; info.ProductID = Constants.NULL_ID; info.ProductVersion = Constants.NULL_ID; } mask.LoadInfos.Add(info); }