예제 #1
0
        private static bool IsMatched(this EqpArrangeInfo item,
                                      string stepID, string productID, string productVer, bool isFixedProductVer)
        {
            if (item.HasLimitType(LimitType.O))
            {
                if (IsMatched(item.StepID, stepID) == false)
                {
                    return(false);
                }
            }

            if (item.HasLimitType(LimitType.P))
            {
                if (IsMatched(item.ProductID, productID) == false)
                {
                    return(false);
                }
            }

            if (item.HasLimitType(LimitType.B))
            {
                if (isFixedProductVer)
                {
                    if (IsMatched(item.ProductVer, productVer) == false)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
예제 #2
0
        private static bool IsLoadable_Etc(EqpArrangeInfo item,
                                           Dictionary <string, List <EqpArrangeInfo> > group, int qty)
        {
            if (item == null)
            {
                return(false);
            }

            if (group == null || group.Count == 0)
            {
                return(true);
            }

            foreach (var it in group.Values)
            {
                //Etc Group에 일치하는 비가용 존재시 비가용 처리
                var find = it.Find(t => t.IsLoadable(item, qty) == false);
                if (find != null)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #3
0
        private static void AddItem(this EqpArrangeSet setInfo, EqpArrangeInfo item)
        {
            if (item == null)
            {
                return;
            }

            //All Items
            LcdHelper.AddSort(setInfo.Items, item, EqpArrangeInfoComparer.Default);

            //Group Items
            //SubEqp는 defaultArrange 미지정, 모두 Default로 처리(2019.09.07)
            bool isDefault = setInfo.IsSubEqp ? true : LcdHelper.Equals(item.LimitType, setInfo.DefaultArrange);

            var    groups   = isDefault ? setInfo.DefaultGroups : setInfo.EtcGroups;
            string groupKey = item.GetGroupKey();

            List <EqpArrangeInfo> list;

            if (groups.TryGetValue(groupKey, out list) == false)
            {
                groups.Add(groupKey, list = new List <EqpArrangeInfo>());
            }

            LcdHelper.AddSort(list, item, EqpArrangeInfoComparer.Default);
        }
예제 #4
0
        private static void AddLimitInfo(this FabMask mask, EqpArrangeInfo info)
        {
            if (info == null)
            {
                return;
            }

            mask.Limits.Add(info);
        }
예제 #5
0
        private static int GetLimitTypeCount(this EqpArrangeInfo item)
        {
            if (item.LimitTypeList == null)
            {
                return(0);
            }

            return(item.LimitTypeList.Count);
        }
예제 #6
0
        private static bool IsMatchedByProductVersion(this EqpArrangeInfo item, string productVer)
        {
            if (item.HasLimitType(LimitType.B))
            {
                if (IsMatched(item.ProductVer, productVer) == false)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #7
0
        internal static void AddEqpArrangeInfo(EqpArrangeInfo info)
        {
            var infos = EqpArrangeMaster.AllArrange;

            List <EqpArrangeInfo> list;

            if (infos.TryGetValue(info.EqpID, out list) == false)
            {
                list = new List <EqpArrangeInfo>();
                infos.Add(info.EqpID, list);
            }

            list.Add(info);
        }
예제 #8
0
        public static string GetGroupKey(this EqpArrangeInfo item)
        {
            bool   hasB = item.HasLimitType(LimitType.B);
            string key  = hasB ? item.ProductVer : Constants.NULL_ID;

            bool hasM = item.HasLimitType(LimitType.M);

            if (hasM)
            {
                key = string.Format("{0}{1}", key, item.MaskID);
            }

            return(key);
        }
예제 #9
0
        private static bool IsLoadable(this EqpArrangeInfo item, EqpArrangeInfo targetItem, int qty)
        {
            //check matched
            bool isFixedProductVer = targetItem.HasLimitType(LimitType.B);

            bool isMatched = item.IsMatched(targetItem.StepID,
                                            targetItem.ProductID,
                                            item.ProductVer,
                                            isFixedProductVer);

            if (isMatched == false)
            {
                return(true);
            }

            return(item.IsLoadable(qty));
        }
예제 #10
0
        private static bool IsMatchedByMask(this EqpArrangeInfo item, FabMask mask)
        {
            if (item.HasLimitType(LimitType.M))
            {
                if (mask == null)
                {
                    return(false);
                }

                if (IsMatched(item.MaskID, mask.ToolID) == false)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #11
0
        internal static void AddLimit(EqpArrangeInfo info)
        {
            if (info == null)
            {
                return;
            }

            string maskID = info.MaskID;

            var mask = FindMask(maskID);

            if (mask == null)
            {
                return;
            }

            mask.AddLimitInfo(info);
        }
예제 #12
0
        private static bool IsLoadable_ActivateType(this EqpArrangeInfo item)
        {
            if (item.ActivateType == ActivateType.N)
            {
                return(false);
            }

            if (item.ActivateType == ActivateType.M)
            {
                return(true);
            }

            if (item.ActivateType == ActivateType.Y)
            {
                return(true);
            }

            return(false);
        }
예제 #13
0
        private static int GetSupportAllCount(this EqpArrangeInfo item)
        {
            int count = 0;

            if (IsSupportAll(item.StepID))
            {
                count++;
            }

            if (IsSupportAll(item.ProductID))
            {
                count++;
            }

            if (IsSupportAll(item.ProductVer))
            {
                count++;
            }

            return(count);
        }
예제 #14
0
        public static bool IsLoadable(this EqpArrangeInfo item, int qty)
        {
            if (item.IsLoadable_ActivateType() == false)
            {
                return(false);
            }

            //M 잔여 수량 미체크
            if (qty <= 0)
            {
                return(true);
            }

            if (item.ActivateType == ActivateType.M)
            {
                //잔량보다 Capa가 작은 경우 미투입 처리
                if (qty > item.RemainQty)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #15
0
        public static bool HasLimitType(this EqpArrangeInfo item, LimitType limitType)
        {
            var list = item.LimitTypeList;

            return(HasLimitType(list, limitType));
        }