private static List <FabLot> CreateCellInputLot(this CellInProfile profile) { List <FabLot> list = new List <FabLot>(); var infos = profile.CellInfos; if (infos == null || infos.Count == 0) { return(list); } var prod = profile.Product; FabStep step = prod.Process.FirstStep as FabStep; foreach (InInfo info in infos) { DateTime avalableTime = info.ReleaseTime; int unitQty = info.Qty; string lotID = EntityHelper.CreateCellInLotID(prod); FabWipInfo wip = CreateHelper.CreateWipInfo(lotID, prod, step, unitQty); FabLot lot = CreateHelper.CreateLot(wip, Mozart.SeePlan.Simulation.LotState.CREATE); lot.ReleaseTime = LcdHelper.Max((DateTime)avalableTime, ModelContext.Current.StartTime); lot.LotState = Mozart.SeePlan.Simulation.LotState.CREATE; lot.FrontInTarget = info.InTarget; list.Add(lot); } return(list); }
internal static FabLot CreateFrontInLot(FabProduct product, ProductType prodType, int inQty, BatchInfo batch) { FabStep step = product.Process.FirstStep as FabStep; //TODO : 2019.8.27 미사용파악 //FabWipInfo info = CreateHelper.CreateWipInfoDummy( // CreateFrontInLotID(product), // batch, // product, // product.Process as FabProcess, // step, // prodType, // Constants.NULL_ID, // 2, // inQty, // EntityState.WAIT, // null, // string.Empty, // AoFactory.Current.NowDT, // DateTime.MinValue); FabWipInfo info = new FabWipInfo(); EntityHelper.AddBatchInfo(batch, step, inQty); FabLot lot = CreateHelper.CreateLot(info, LotState.CREATE); lot.LotState = Mozart.SeePlan.Simulation.LotState.CREATE; return(lot); }
private static void DoReserveBatch(this DcnMaster mst, DateTime now) { AoBatchRelease inputBatch = AoFactory.Current.BatchRelease; foreach (DcnPlan plan in mst.Current) { FabProduct prod = plan.Product; if (prod == null) { continue; } FabStep step = prod.Process.FirstStep as FabStep; if (step == null) { continue; } string lotID = EntityHelper.CreateFrontInLotID(prod); double unitQty = plan.AllocQty; FabWipInfo wip = CreateHelper.CreateWipInfo(lotID, prod, step, unitQty); FabLot lot = CreateHelper.CreateLot(wip, LotState.CREATE); DateTime releaseTime = LcdHelper.Max(plan.EqpEndTime, now); lot.ReleaseTime = releaseTime; lot.LotState = LotState.CREATE; lot.ReleasePlan = plan; var inTarget = plan.Target == null ? null : plan.Target.InTarget; lot.FrontInTarget = inTarget; inputBatch.AddEntity(releaseTime, lot); } }
/// <summary> /// </summary> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public IList <Mozart.SeePlan.Simulation.IHandlingBatch> GET_WIPS0(ref bool handled, IList <Mozart.SeePlan.Simulation.IHandlingBatch> prevReturnValue) { List <IHandlingBatch> list = new List <IHandlingBatch>(); foreach (FabWipInfo wip in InputMart.Instance.FabWipInfo.Values) { FabStep step = wip.InitialStep as FabStep; if (SimHelper.IsTftRunning && step.IsCellShop) { continue; } else if (SimHelper.IsCellRunning && step.IsCellShop == false) { continue; } FabLot lot = CreateHelper.CreateLot(wip, LotState.WIP); list.Add(lot); if (wip.IsRun) { string eqpID = wip.WipEqpID ?? string.Empty; FabEqp eqp; InputMart.Instance.FabEqp.TryGetValue(eqpID, out eqp); if (eqp != null) { eqp.InitRunWips.AddSort(lot, CompareHelper.RunWipComparer.Default); } } if (SimHelper.IsTftRunning) { WipCollector.AddProductByVersion(lot); } } //TODO : 임시로직, CF에 있는 Array제품 버전문제 if (SimHelper.IsTftRunning) { foreach (FabLot lot in list) { FabProduct prod = lot.FabProduct; if (BopHelper.IsCfShop(lot.Wip.ShopID) && prod.IsArrayShopProduct()) { string version = WipCollector.GetVersion(prod.ProductID); if (LcdHelper.IsEmptyID(version) == false) { lot.OrigProductVersion = version; } else { Console.WriteLine(); } } } } return(list); }