private static Time GetNextAvailableTime(FabAoEquipment eqp, FabLot lot) { AoProcess proc = eqp.Processes[0]; Time outTime = proc.GetUnloadingTime(lot); return(outTime); }
/// <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); }