Beispiel #1
0
        private void RecursivelyConstructHierarchicalBOM(IBOMNode node, ModelBOM modelBom,
                                                                                    IList<IBOMNode> allNodes, IList<ModelBOM> allModelBom,
                                                                                    int iDeepLimit, int level,
                                                                                    IDictionary<int, IList<IPart>> allPartList)
        {
            IList<ModelBOM> rootChildren = allModelBom.Where(x => x.Level == level &&
                                                                                                    x.Material == modelBom.Component &&
                                                                                                    x.Flag == 1).ToList();
            if (rootChildren != null && rootChildren.Count > 0)
            {
                if (iDeepLimit == 0)
                {
                    throw new FisException("BOML01", new string[] { "", "" });
                }

                IList<IPart> nodePartList = null;
                if (allPartList.ContainsKey(level))
                {
                    nodePartList = allPartList[level];
                }
                else
                {
                    var partNoList = allModelBom.Where(x => x.Level == level && x.Flag == 1).Select(x => x.Component).Distinct().ToList();
                    nodePartList = PrtRepository.FindPart(partNoList);
                    allPartList.Add(level, nodePartList);
                }

                foreach (ModelBOM childItem in rootChildren)
                {
                    //IPart nodePart = PrtRepository.Find(childItem.Component);
                    IPart nodePart = nodePartList.Where(x => x != null && x.PN == childItem.Component).FirstOrDefault();
                    if (nodePart != null)
                    {
                        IBOMNode newNode = new BOMNode(nodePart, int.Parse(childItem.Quantity), childItem.Alternative_item_group);
                        node.AddChild(newNode);
                        allNodes.Add(newNode);
                        RecursivelyConstructHierarchicalBOM(newNode, childItem, allNodes, allModelBom, iDeepLimit - 1, level + 1, allPartList);
                    }

                }
            }
        }
Beispiel #2
0
        private void RecursivelyConstructHierarchicalBOM(IBOMNode node, MoBOMInfo peerInfo, IList<IBOMNode> allNodes, int iDeepLimit)
        {
            IList<MoBOMInfo> rootChildren = GetChildrenInModelBOM(peerInfo.component);
            if (rootChildren != null && rootChildren.Count > 0)
            {
                if (iDeepLimit == 0)
                {
                    throw new FisException("BOML01", new string[] { "", "" }); 
                }

                foreach (MoBOMInfo childItem in rootChildren)
                {
                    IPart nodePart = PrtRepository.Find(childItem.component);
                    if (nodePart != null)
                    {
                        IBOMNode newNode = new BOMNode(nodePart, int.Parse(childItem.quantity), childItem.alternative_item_group);
                        node.AddChild(newNode);
                        allNodes.Add(newNode);
                        RecursivelyConstructHierarchicalBOM(newNode, childItem, allNodes, iDeepLimit - 1);
                    }
                }
            }
        }