예제 #1
0
        private void PrePareTarget_Fab(MergedPegPart mpp)
        {
            if (InputMart.Instance.GlobalParameters.ApplyCellOutPlan == false)
            {
                mpp.Items.Clear();

                foreach (var mm in InputMart.Instance.FabMoMaster.Values)
                {
                    if (BopHelper.IsCellShop(mm.ShopID))
                    {
                        continue;
                    }

                    FabPegPart pp = new FabPegPart(mm, mm.Product);

                    foreach (FabMoPlan mo in mm.MoPlanList)
                    {
                        FabPegTarget pt = CreateHelper.CreateFabPegTarget(pp, mo);

                        pp.AddPegTarget(pt);

                        if (pp.SampleMs == null)
                        {
                            pp.SampleMs = pt;
                        }
                    }

                    mpp.Merge(pp);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public PegPart PREPARE_TARGET0(PegPart pegPart, ref bool handled, PegPart prevReturnValue)
        {
            //초기화
            PegMaster.InitPegMaster();

            //최초 MergedPegPart 생성.
            MergedPegPart mpp = pegPart as MergedPegPart;

            switch (pegPart.CurrentStage.StageID)
            {
            case ("InitStage"):
                PrePareTarget_Fab(mpp);
                break;

            case ("CellPreStage"):
                PrePareTarget_Cell(mpp);
                break;

            default:
                break;
            }


            return(mpp);
        }
예제 #3
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public PegPart PREPARE_TARGET0(PegPart pegPart, ref bool handled, PegPart prevReturnValue)
        {
            try
            {
                MergedPegPart mp = pegPart as MergedPegPart;

                foreach (MicronBEAssyBEMoMaster moMaster in InputMart.Instance.MicronBEAssyBEMoMaster.Values)
                {
                    MicronBEAssyBEPegPart pp = new MicronBEAssyBEPegPart(moMaster, moMaster.Product);

                    foreach (MicronBEAssyBEMoPlan moPlan in moMaster.MoPlanList)
                    {
                        MicronBEAssyBEPegTarget target = new MicronBEAssyBEPegTarget(pp, moPlan);
                        pp.AddPegTarget(target);
                    }

                    mp.Merge(pp);
                }

                return(mp);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(default(PegPart));
            }
        }
예제 #4
0
        internal static void PrePareTargetbyCell_InTarget(MergedPegPart mg)
        {
            List <PegPart> list = new List <PegPart>(mg.Items);

            foreach (FabPegPart pp in list)
            {
                string arrayCode = CellCodeMaster.GetArrayCode(pp.Product.ProductID);
                string cfCode    = CellCodeMaster.GetCfCode(pp.Product.ProductID);

                var arrayProd = BopHelper.FindProduct(Constants.ArrayShop, arrayCode);
                var cfProd    = BopHelper.FindProduct(Constants.CF, cfCode);

                if (arrayProd == null || cfProd == null)
                {
                    ErrHist.WriteIf(string.Format("BuildFabOutTarget{0}", pp.Product.ProductID),
                                    ErrCategory.PEGGING,
                                    ErrLevel.ERROR,
                                    pp.Current.Step.FactoryID,
                                    pp.Current.Step.ShopID,
                                    Constants.NULL_ID,
                                    pp.Product.ProductID,
                                    Constants.NULL_ID,
                                    Constants.NULL_ID,
                                    Constants.NULL_ID,
                                    pp.Current.ShopID,
                                    "NOT FOUND PRODUCT",
                                    string.Format("Do not build TFT OutTarget")
                                    );

                    mg.Items.Remove(pp);

                    continue;
                }

                FabStep arrayStep = BopHelper.GetSafeDummyStep(pp.Current.FactoryID, Constants.ArrayShop, "0000");
                FabStep cfStep    = BopHelper.GetSafeDummyStep(pp.Current.FactoryID, Constants.CfShop, "0000");

                FabPegPart cfPP = PegMaster.CreateCellBankPegPart(pp, cfProd);
                cfPP.AddCurrentPlan(cfProd, cfStep);


                pp.AddCurrentPlan(arrayProd, arrayStep);
                pp.Product = arrayProd;

                foreach (FabPegTarget pt in pp.PegTargetList)
                {
                    pt.TargetKey = PegHelper.CreateTargetKey(pt.TargetKey, arrayProd.ProductID.Substring(0, 2));
                }



                mg.Items.Add(cfPP);
            }
        }
예제 #5
0
파일: Rules.cs 프로젝트: yichunbong/CSOT
        public PegPart CELL_BANK_PREPARE(PegPart pegPart)
        {
            MergedPegPart mg = pegPart as MergedPegPart;

            //PREPARE_TARGET
            PegMaster.PrePareTargetbyCell_InTarget(mg);

            //PREPARE_WIP
            PegMaster.PrePareBankWip();

            return(pegPart);
        }
예제 #6
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public PegPart PREPARE_TARGET0(PegPart pegPart, ref bool handled, PegPart prevReturnValue)
        {
            MergedPegPart mp = new MergedPegPart();

            foreach (MicronBETestBEMoMaster moMaster in InputMart.Instance.MicronBETestBEMoMaster.Values)
            {
                MicronBETestBEPegPart pp = new MicronBETestBEPegPart(moMaster, moMaster.Product);

                foreach (MicronBETestBEMoPlan moPlan in moMaster.MoPlanList)
                {
                    MicronBETestBEPegTarget target = new MicronBETestBEPegTarget(pp, moPlan);
                    pp.AddPegTarget(target);
                }

                mp.Merge(pp);
            }

            return(mp);
        }
예제 #7
0
        /// <summary>
        /// </summary>
        /// <param name="parts"/>
        /// <returns/>
        public IEnumerable <PegPart> MERGEPEGPARTS(IEnumerable <PegPart> parts)
        {
            try
            {
                MergedPegPart mg = new MergedPegPart();

                foreach (var part in parts)
                {
                    mg.Merge(part);
                    mg.CurrentStep = part.CurrentStep;
                }

                List <PegPart> list = new List <PegPart>();
                list.Add(mg);

                return(list);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(default(IEnumerable <PegPart>));
            }
        }