Esempio n. 1
0
        private static Time GetNextAvailableTime(FabAoEquipment eqp, FabLot lot)
        {
            AoProcess proc = eqp.Processes[0];

            Time outTime = proc.GetUnloadingTime(lot);

            return(outTime);
        }
Esempio n. 2
0
        /// <summary>
        /// 나의 직전 Step(Sub포함) Target시간+Move시간(잔여시간) 이내에 TrackOut 될 수 있는 Lot수량
        /// </summary>
        internal int GetPrevStepRunWipQty(AoEquipment aeqp, FabStep currentStep, string productVersion, DateTime targetTime)
        {
            List <FabLot> runWips = GetPrevStepWipList(currentStep, WipType.Run, productVersion);

            int qty = 0;

            foreach (var lot in runWips)
            {
                if (EqpArrangeMaster.IsLoadable_CheckOnly(aeqp as FabAoEquipment, lot))
                {
                    continue;
                }

                FabPlanInfo plan = lot.CurrentFabPlan;

                if (plan.IsLoaded)
                {
                    AoEquipment prevEqp   = AoFactory.Current.GetEquipment(plan.LoadedResource.Key);
                    AoProcess   proc      = prevEqp.Processes[0];
                    Time        tkOutTime = proc.GetUnloadingTime(lot);
                    tkOutTime += TransferMaster.GetTransferTime(prevEqp, aeqp);

                    if (targetTime < tkOutTime)
                    {
                        continue;
                    }
                }
                else
                {
                    Time tkOutTime = plan.TrackInTime + plan.AoBucketTime;

                    if (targetTime < tkOutTime)
                    {
                        continue;
                    }
                }

                qty += lot.UnitQty;
            }

            return(qty);
        }