Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        /// <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);
        }