Example #1
0
        internal static FabStep GetNextMandatoryStep(FabLot lot)
        {
            string key = LcdHelper.CreateKey(lot.CurrentProductID, lot.CurrentFabStep.Key);

            FabStep next;

            if (_nextMainEqpStepCache.TryGetValue(key, out next) == false)
            {
                FabProduct nextProd = lot.FabProduct;
                next = lot.CurrentFabStep.GetNextStep(nextProd, ref nextProd);

                int safeCnt = 0;
                while (next != null && next.StdStep.IsMandatory == false)
                {
                    next = next.GetNextStep(nextProd, ref nextProd);

                    if (next == null)
                    {
                        break;
                    }

                    safeCnt++;
                    if (safeCnt == 100)
                    {
                        Logger.MonitorInfo("CHECK ROUTE : {0} → NEXT MAIN EQP STEP", lot.CurrentFabStep.StepKey);
                        next = null;
                        break;
                    }
                }

                _nextMainEqpStepCache.Add(key, next);
            }

            return(next);
        }
Example #2
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);
        }
Example #3
0
        public static FabProduct FindProduct(string shopID, string productID)
        {
            string key = LcdHelper.CreateKey(shopID, productID);

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

            FabProduct prod;

            InputMart.Instance.FabProduct.TryGetValue(key, out prod);

            return(prod);
        }
Example #4
0
        internal static FabStep GetSafeDummyStep(string factoryID, string shopID, string stepID)
        {
            if (DummySteps == null)
            {
                DummySteps = new Dictionary <string, FabStep>();
            }

            string key = LcdHelper.CreateKey(shopID, stepID);

            FabStep step;

            if (DummySteps.TryGetValue(key, out step) == false)
            {
                step = CreateDummyStep(factoryID, shopID, stepID);
                DummySteps.Add(key, step);
            }

            return(step);
        }
Example #5
0
        private static void AddOut(OutInfo info)
        {
            var outProfiles = InOutProfileMaster.OutProfiles;

            var key = LcdHelper.CreateKey(info.ProductID, info.ProductVersion, info.OwnerType);

            FabOutProfile op;

            if (outProfiles.TryGetValue(key, out op) == false)
            {
                op = CreateHelper.CreateFabOutProfile(info);
                outProfiles.Add(key, op);

                //set matched cell info
                op.CellCodeList = CellCodeMaster.GetCellCodeList(info.ProductID);
            }

            AddInfo(op.Infos, info);
        }
Example #6
0
        private static bool IsNotOwnerLimit(AoEquipment aeqp, FabLot lot, ref string reason)
        {
            string         key = LcdHelper.CreateKey(lot.CurrentShopID, lot.CurrentStepID, lot.OwnerID);
            OwnerLimitInfo info;

            InputMart.Instance.OwnerLimitInfo.TryGetValue(key, out info);

            if (info == null)
            {
                return(true);
            }

            string eqpID = aeqp.EqpID;

            //N >> Y 순
            if (info.HasN)
            {
                if (info.NList.Contains(eqpID))
                {
                    reason = string.Format("Type N");
                    return(false);
                }
            }

            if (info.HasY)
            {
                if (info.YList.Contains(eqpID))
                {
                    return(true);
                }
                else
                {
                    //Y인 정보가 한개라도 등록된 경우 (등록된 Eqp만 가능)
                    reason = string.Format("No Register Type Y");
                    return(false);
                }
            }

            return(true);
        }
Example #7
0
        internal static void PrePareBankWip()
        {
            if (CellBankPlanWips == null)
            {
                CellBankPlanWips = new Dictionary <string, List <FabPlanWip> >();
            }


            foreach (var item in InputMart.Instance.CellBankWips.Values)
            {
                FabPlanWip wip = CreateHelper.CreatePlanWip(item);

                string key = LcdHelper.CreateKey(item.ShopID, item.WipStepID);

                List <FabPlanWip> list;
                if (CellBankPlanWips.TryGetValue(key, out list) == false)
                {
                    CellBankPlanWips.Add(key, list = new List <FabPlanWip>());
                }

                list.Add(wip);
            }
        }
Example #8
0
 /// <param name="isMain">true: MainL-ine, false:U-Line</param>
 public static string GetTatKey(string productID, bool isMain)
 {
     return(LcdHelper.CreateKey(productID, isMain.ToString()));
 }
Example #9
0
 private string GetWipProfileKey(FabStep step, string productVer)
 {
     return(LcdHelper.CreateKey(step.StepKey, productVer));
 }
Example #10
0
        internal static List <EqpRecipeInfo> GetRecipeMatchList(FabAoEquipment eqp, FabLot lot)
        {
            FabStep step      = lot.CurrentFabStep;
            FabMask mask      = lot.CurrentMask;
            string  productID = lot.CurrentProductID;

            string stepID  = step.StdStep.RecipeLPOBM.Contains("O") ? lot.CurrentFabStep.StepID : Constants.NULL_ID;
            string prodVer = step.StdStep.RecipeLPOBM.Contains("B") ? lot.CurrentProductVersion : Constants.NULL_ID;;
            string toolID  = step.StdStep.RecipeLPOBM.Contains("M") ? mask != null ? mask.ToolID : Constants.NULL_ID : Constants.NULL_ID;

            string key = LcdHelper.CreateKey(eqp.EqpID, step.StepID, productID, prodVer, toolID);

            List <EqpRecipeInfo> list;

            if (_cacheRecipeInfo.TryGetValue(key, out list))
            {
                return(list);
            }

            FabEqp targetEqp = eqp.TargetEqp;

            if (targetEqp.RecipeTime.TryGetValue(productID, out list) == false)
            {
                return(new List <EqpRecipeInfo>());
            }

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

            foreach (var item in list)
            {
                if (item.Flag == RecipeFlag.N || item.Flag == RecipeFlag.None)
                {
                    continue;
                }

                if (item.Flag == RecipeFlag.M && item.IsVaildMFlag == false)
                {
                    continue;
                }

                string runMode = eqp.GetCurrentRunMode();

                //RunMode
                if (LcdHelper.IsEmptyID(runMode) == false)
                {
                    if (runMode != item.RunMode)
                    {
                        continue;
                    }
                }

                //Shop
                if (step.ShopID != item.ShopID)
                {
                    continue;
                }

                //O - Step
                if (LcdHelper.IsEmptyID(stepID) == false && stepID != item.StepID)
                {
                    continue;
                }

                //B - Version
                if (LcdHelper.IsEmptyID(prodVer) == false)
                {
                    if (item.ProductVersion != prodVer)
                    {
                        continue;
                    }
                }

                //M - Mask
                if (LcdHelper.IsEmptyID(toolID) == false)
                {
                    if (toolID != item.ToolID)
                    {
                        continue;
                    }
                }

                result.Add(item);
            }

            result.Sort(new CompareHelper.EqpRecipeTimeComparer());

            _cacheRecipeInfo.Add(key, result);

            return(result);
        }
Example #11
0
 public override string ToString()
 {
     return(LcdHelper.CreateKey(this.ProductID, this.OwnerType));
 }
Example #12
0
 private static string CreateKey(string cellCode, string ownerType)
 {
     return(LcdHelper.CreateKey(cellCode, ownerType));
 }
Example #13
0
 internal static string CreateKeyForJobFilter(string shop, string stepID, string productID, string prodVer, string ownerType)
 {
     return(LcdHelper.CreateKey(shop, stepID, productID, prodVer, ownerType));
 }
Example #14
0
 private static string CreateKey(string eqpGroup, string runMode)
 {
     return(LcdHelper.CreateKey(eqpGroup, runMode));
 }
Example #15
0
 private static string GetFromListKey(string productID, CellActionType actionType)
 {
     return(LcdHelper.CreateKey(productID, actionType.ToString()));
 }
Example #16
0
 public static string CreateKey(string productID, string ownerType)
 {
     return(LcdHelper.CreateKey(productID, ownerType));
 }
Example #17
0
 private static string GetMaskLoadInfoKey(string eqpID, string lotID, string stepID)
 {
     return(LcdHelper.CreateKey(eqpID, lotID, stepID));
 }
Example #18
0
        private static string GetKey(string shopID, string holdCode)
        {
            string key = LcdHelper.CreateKey(shopID, holdCode);

            return(key);
        }
Example #19
0
 private static string GetLayerKey(string shopID, string layerID)
 {
     return(LcdHelper.CreateKey(shopID, layerID));
 }
Example #20
0
 public static string GetProcessKey2(string productID, string stepID)
 {
     return(LcdHelper.CreateKey(productID, stepID));
 }
Example #21
0
 private static string CreateKey_EqpArrangeSet(string eqpID, string stepID, string productID, string productVer)
 {
     return(LcdHelper.CreateKey(eqpID, stepID, productID, productVer));
 }