internal static bool AdjustAheadPMProcessing(FabAoEquipment eqp, FabPMSchedule pm) { if (InputMart.Instance.GlobalParameters.ApplyFlexialePMSchedule == false) { return(false); } if (pm.IsNeedAdjust == false) { return(false); } if (pm.AllowAheadTime <= 0) { return(false); } Time idleTime = eqp.GetIdleTime(); if (AllowAheadPM(pm, idleTime) == false) { return(false); } AoScheduleItem aoItem = null; foreach (var item in eqp.DownManager.ScheduleTable) { if (pm.Equals(item.Tag)) { if (item.Value == 1) { aoItem = item; break; } } } if (aoItem == null) { return(false); } float aheadTime = Math.Min((float)idleTime.TotalMinutes, pm.AllowAheadTime); var adjSchedule = aoItem.Tag as PeriodSection; adjSchedule.EndTime = adjSchedule.EndTime.AddMinutes(-aheadTime); pm.AheadStartTime = adjSchedule.StartTime.AddMinutes(-aheadTime); eqp.AvailablePMTime = pm.AheadStartTime; aoItem.EventTime = adjSchedule.EndTime; return(true); }