Ejemplo n.º 1
0
        internal static List <IMaterial> GetOutAct(FabPegPart pp)
        {
            string shopID    = pp.FabProduct.ShopID;
            string productID = pp.FabProduct.ProductID;

            return(GetOutAct(shopID, productID));
        }
Ejemplo n.º 2
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);
                }
            }
        }
Ejemplo n.º 3
0
        internal static IList <IMaterial> GetBankWip(PegPart pegPart)
        {
            FabPegPart pp   = pegPart.ToFabPegPart();
            FabProduct prod = pp.Current.Product;
            FabStep    step = pp.Current.Step;

            string key = LcdHelper.CreateKey(step.ShopID, step.StepID);

            List <FabPlanWip> list;

            CellBankPlanWips.TryGetValue(key, out list);

            if (list == null)
            {
                return(null);
            }

            List <IMaterial> result = new List <IMaterial>();

            foreach (var item in list)
            {
                if (item.ProductID == prod.ProductID)
                {
                    result.Add(item);
                }
            }

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="isRun"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public List <object> GET_PART_CHANGE_INFOS0(Mozart.SeePlan.Pegging.PegPart pegPart, bool isRun, ref bool handled, List <object> prevReturnValue)
        {
            if (isRun)
            {
                return(null);
            }

            FabPegPart pp      = pegPart as FabPegPart;
            FabProduct product = pp.Product as FabProduct;
            FabStep    step    = pp.CurrentStage.Tag as FabStep;

            if (product.HasPrevInterBom == false)
            {
                return(null);
            }

            FabInterBom interbom;

            if (product.TryGetPrevInterRoute(step, out interbom) == false)
            {
                return(null);
            }

            List <object> result = new List <object>()
            {
                interbom
            };

            return(result);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public double GET_YIELD0(Mozart.SeePlan.Pegging.PegPart pegPart, ref bool handled, double prevReturnValue)
        {
            FabPegPart pp = pegPart.ToFabPegPart();

            FabStep step = pp.Current.Step;

            return(step.GetYield(pp.FabProduct.ProductID));
        }
Ejemplo n.º 6
0
        public static void AddCurrentPlan(this FabPegPart pp, PlanStep plan)
        {
            if (pp.Steps == null)
            {
                pp.Steps = new List <PlanStep>();
            }

            pp.Steps.Add(plan);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="isOut"/>
        /// <param name="handled"/>
        public void WRITE_TARGET0(Mozart.SeePlan.Pegging.PegPart pegPart, bool isOut, ref bool handled)
        {
            FabPegPart pp      = pegPart as FabPegPart;
            FabStep    step    = pegPart.CurrentStage.Tag as FabStep;
            FabProduct product = pp.Product as FabProduct;

            foreach (FabPegTarget pt in pegPart.PegTargetList)
            {
                PegHelper.WriteStepTarget(pt, isOut, step.StepType);
            }
        }
Ejemplo n.º 8
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);
            }
        }
Ejemplo n.º 9
0
        public Step GETLASTPEGGINGSTEP(Mozart.SeePlan.Pegging.PegPart pegPart)
        {
            if (InputMart.Instance.GlobalParameters.ApplyCellOutPlan == false)
            {
                return(null);
            }


            FabPegPart pp = pegPart.ToFabPegPart();

            return(pp.Current.Step);;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// </summary>
        /// <param name="pegPart"/>
        /// <param name="partChangeInfo"/>
        /// <param name="isRun"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public PegPart APPLY_PART_CHANGE_INFO0(PegPart pegPart, object partChangeInfo, bool isRun, ref bool handled, PegPart prevReturnValue)
        {
            FabInterBom bom = partChangeInfo as FabInterBom;

            FabPegPart pp = pegPart.ToFabPegPart();


            pp.AddCurrentPlan(bom.Product, bom.CurrentStep);

            pp.Product  = bom.ChangeProduct;
            pp.InterBom = bom;

            return(pp);
        }
Ejemplo n.º 11
0
        public static void AddCurrentPlan(this FabPegPart pp, FabProduct prod, FabStep step)
        {
            if (prod == null || step == null)
            {
                //TODO : Write Error
                return;
            }

            PlanStep plan = new PlanStep();

            plan.Product = prod;
            plan.Step    = step;
            plan.isDummy = step.IsDummy;

            pp.AddCurrentPlan(plan);
        }
Ejemplo n.º 12
0
        internal static Step GetPrevPeggingStep(PegPart pegPart, Step currentStep)
        {
            Step prevStep = currentStep.GetDefaultPrevStep();

            FabPegPart pp = pegPart.ToFabPegPart();

            if (pp.HasInterBom)
            {
                prevStep    = pp.InterBom.ChangeStep;
                pp.InterBom = null;
            }

            pp.AddCurrentPlan(pp.FabProduct, prevStep as FabStep);

            return(prevStep);
        }
Ejemplo n.º 13
0
        internal static Step GetLastPeggingStgep(PegPart pegPart)
        {
            FabPegPart pp      = pegPart as FabPegPart;
            FabProduct product = pp.Product as FabProduct;
            Step       step    = product.Process.LastStep;

            pp.AddCurrentPlan(product, step as FabStep);

            //StepTarget 추가기록
            foreach (FabPegTarget pt in pp.PegTargetList)
            {
                PegHelper.WriteStepTarget(pt, true, Constants.OUT, true);
            }

            return(step);
        }
Ejemplo n.º 14
0
        internal static FabPegPart CreateCellBankPegPart(FabPegPart pp, FabProduct prod)
        {
            FabPegPart newPP = new FabPegPart(pp.MoMaster as FabMoMaster, prod);

            newPP.Steps = new List <PlanStep>(pp.Steps);

            foreach (FabPegTarget item in pp.PegTargetList)
            {
                FabPegTarget pt = item.Clone(newPP) as FabPegTarget;
                pt.TargetKey = PegHelper.CreateTargetKey(pt.TargetKey, prod.ProductID.Substring(0, 2));

                newPP.AddPegTarget(pt);

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

            return(newPP);
        }
Ejemplo n.º 15
0
        public Step GETPREVPEGGINGSTEP(PegPart pegPart, Step currentStep)
        {
            if (InputMart.Instance.GlobalParameters.ApplyCellOutPlan == false)
            {
                return(null);
            }

            FabPegPart pp = pegPart.ToFabPegPart();

            if (pp.Current.StepID == "0000")
            {
                string stepID = BopHelper.IsArrayShop(pp.FabProduct.ShopID) ? "9900" : "9990";

                FabStep step = BopHelper.GetSafeDummyStep(pp.Current.FactoryID, pp.Current.ShopID, stepID);

                pp.AddCurrentPlan(pp.FabProduct, step);

                return(step);
            }

            return(null);
        }
Ejemplo n.º 16
0
        internal static int ComparePegPart(PegPart x, PegPart y)
        {
            FabPegPart a = x.ToFabPegPart();
            FabPegPart b = y.ToFabPegPart();

            int cmp = a.SampleMs.DueDate.CompareTo(b.SampleMs.DueDate);

            if (cmp == 0)
            {
                cmp = a.SampleMs.LineType.CompareTo(b.SampleMs.LineType);
            }

            if (cmp == 0)
            {
                cmp = a.SampleMs.Qty.CompareTo(b.SampleMs.Qty);
            }

            if (cmp == 0)
            {
                cmp = a.Product.ProductID.CompareTo(b.Product.ProductID);
            }

            return(cmp);
        }
Ejemplo n.º 17
0
        internal static void WriteStepTarget(FabPegTarget pt, bool isOut, string stepType, bool isExtraAdd)
        {
            FabPegPart pp   = pt.PegPart as FabPegPart;
            FabStep    step = pp.Current.Step;
            FabProduct prod = pp.FabProduct;

            //Key : FactoryID, ShopID, ProductID, StepID, StepType, TargetShift, TargetKey
            string factoryID  = step.FactoryID;
            string shopID     = step.ShopID;
            string prodductID = prod.ProductID;
            string stepID     = step.StepID;

            stepType = GetStepType(stepType);

            if (stepType == Constants.IN)
            {
                stepID = string.Format("{0}_{1}", shopID, Constants.IN);
            }
            else if (stepType == Constants.OUT)
            {
                stepID = string.Format("{0}_{1}", shopID, Constants.OUT);
            }


            DateTime targetShift = ShopCalendar.ShiftStartTimeOfDayT(pt.CalcDate);
            string   targetKey   = pt.TargetKey;

            Outputs.StepTarget row
                = OutputMart.Instance.StepTarget.Find(factoryID, shopID, prodductID, stepID, stepType, targetShift, targetKey);

            if (row != null)
            {
                if (isOut)
                {
                    row.TARGET_OUT_QTY = +Convert.ToDecimal(pt.CalcQty);
                }
                else
                {
                    row.TARGET_IN_QTY = +Convert.ToDecimal(pt.CalcQty);
                }
            }
            else
            {
                row = new Outputs.StepTarget();

                row.VERSION_NO = ModelContext.Current.VersionNo;
                row.FACTORY_ID = step.FactoryID;
                row.AREA_ID    = step.AreaID;
                row.SHOP_ID    = step.ShopID;
                row.PRODUCT_ID = prod.ProductID;
                row.STEP_ID    = stepID;

                row.TARGET_DATE  = pt.CalcDate;
                row.TARGET_SHIFT = targetShift;

                row.DEMAND_ID         = pt.FabMoPlan.DemandID;
                row.DEMAND_PRODUCT_ID = pt.FabMoPlan.PreMoPlan.ProductID;
                row.DEMAND_PLAN_DATE  = pt.FabMoPlan.DueDate;
                row.DEMAND_QTY        = pt.FabMoPlan.Qty;

                row.TARGET_KEY = pt.TargetKey;

                row.STEP_TYPE = stepType;
                row.SEQ       = pt.Seq++;          // GetSequence(step, stepType, isExtraAdd);

                if (isOut)
                {
                    row.TARGET_IN_QTY  = 0;
                    row.TARGET_OUT_QTY = Convert.ToDecimal(pt.CalcQty);
                }
                else
                {
                    row.TARGET_IN_QTY  = Convert.ToDecimal(pt.CalcQty);
                    row.TARGET_OUT_QTY = 0;
                }

                //InTarget용(BuildInPlan)
                if (isExtraAdd)
                {
                    row.TARGET_IN_QTY  = Convert.ToDecimal(pt.CalcQty);
                    row.TARGET_OUT_QTY = Convert.ToDecimal(pt.CalcQty);
                }



                OutputMart.Instance.StepTarget.Add(row);
            }
        }