Пример #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 CheckAvailableSubEqps(this FabAoEquipment eqp)
        {
            if (eqp.IsParallelChamber == false)
            {
                return;
            }

            var info = eqp.TriggerInfo;

            if (info == null)
            {
                return;
            }

            var currSubEqp = info.TriggerSubEqp;

            info.RemoveAvailableList(currSubEqp);

            if (info.AvailableList == null || info.AvailableList.Count == 0)
            {
                eqp.TriggerInfo = null;
                return;
            }

            info.SetTriggerSubEqp();
            if (info.TriggerSubEqp != null)
            {
                //recall dispatch
                eqp.SetModified();
            }
        }