Пример #1
0
        public static bool OnParallelChamberPM(this FabAoEquipment eqp, PMSchedule pm, DownEventType det)
        {
            if (pm == null || eqp.IsParallelChamber || string.IsNullOrEmpty(pm.ComponentID))
            {
                return(false);
            }

            var chamberID = pm.ComponentID;

            if (string.IsNullOrEmpty(chamberID))
            {
                chamberID = Constants.NULL_ID;
            }

            var cproc = eqp.FirstProcess <AoChamberProc2>();

            if (det == DownEventType.End)
            {
                cproc.Live(chamberID);
                eqp.WriteHistoryAfterBreak();
                eqp.SetModified();
            }
            else
            {
                cproc.Die(chamberID, pm.EndTime);
                eqp.WriteHistory(LoadingStates.PM);
            }
            return(true);
        }
Пример #2
0
        internal static void AddPM(FabEqp eqp, PMSchedule pm)
        {
            List <PMSchedule> list;

            if (_pmDic.TryGetValue(eqp, out list) == false)
            {
                list = new List <PMSchedule>();
                _pmDic.Add(eqp, list);
            }

            list.Add(pm);
        }
Пример #3
0
        internal static void AddAdjustPmList()
        {
            DateTime planStartTime = ModelContext.Current.StartTime;
            DateTime planEndTime   = ModelContext.Current.EndTime;

            foreach (KeyValuePair <FabEqp, List <PMSchedule> > item in _pmDic)
            {
                FabEqp eqp = item.Key;
                item.Value.Sort((x, y) => x.StartTime.CompareTo(y.StartTime));

                PMSchedule lastPMSched = null;
                foreach (PMSchedule pm in item.Value)
                {
                    if (pm.EndTime < planStartTime)
                    {
                        continue;
                    }

                    if (pm.StartTime > planEndTime)
                    {
                        break;
                    }

                    if (lastPMSched != null)
                    {
                        if (lastPMSched.EndTime >= pm.StartTime && lastPMSched.EndTime < pm.EndTime)
                        {
                            lastPMSched.EndTime = pm.EndTime;
                            continue;
                        }
                    }

                    lastPMSched = pm;

                    List <PMSchedule> list;
                    if (_pmList.TryGetValue(eqp, out list) == false)
                    {
                        list = new List <PMSchedule>();
                        _pmList.Add(eqp, list);
                    }

                    list.Add(pm);
                }
            }
        }
Пример #4
0
 private static bool IsPmPeriodSection(this PMSchedule pm, DateTime date)
 {
     return(pm.StartTime <= date && date <= pm.EndTime);
 }