コード例 #1
0
        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);
        }