Esempio n. 1
0
 /// <summary>
 /// Обновление таблицы Dict_FreeHierarchyIncludedObjectChildren (кэш поиска и построения пути в дереве)
 /// </summary>
 public void UpdateIncludedObjectChildrenAsync(string userId)
 {
     Task.Factory.StartNew(() =>
     {
         try
         {
             FreeHierarchyService.UpdateIncludedObjectChildren(userId, Tree_ID.GetValueOrDefault());
         }
         catch
         {
         }
     });
 }
Esempio n. 2
0
        /// <summary>
        /// Формирование дочерних объектов сразу по нескольким узлам
        /// </summary>
        /// <param name="tempList">Список объектов, по которым прогружаем дочерние</param>
        /// <param name="descriptor">Описатель дерева</param>
        public void LoadDynamicChildren(IEnumerable <FreeHierarchyTreeItem> tempList)
        {
#if DEBUG
            var sw = new System.Diagnostics.Stopwatch();
            sw.Start();
#endif

            var comparer = new FreeHierarchyTreeItemComparer();

            //Это стандартные деревья
            foreach (var item in tempList)
            {
                if (item.IncludeObjectChildren)
                {
                    if (Tree_ID <= 0)
                    {
                        item.IsFreeHierLoadedInitializet = true;
                    }

                    var brunch = item.AddStandartChildren(false, true, false, false);
                    if (brunch != null)
                    {
                        item.Children.AddRange(brunch.OrderBy(b => b, comparer));
                    }
                }

                item.IsLocalChildrenInitializet = true;
                if (Tree_ID <= 0)
                {
                    item.IsChildrenInitializet = true;
                }
            }

#if DEBUG
            sw.Stop();
            Console.WriteLine("LoadDynamicChildren: стандартные деревья {0} млс", sw.ElapsedMilliseconds);
            sw.Restart();
#endif

            if (Tree_ID <= 0)
            {
                return;
            }

            //Пока работает кроме ФИАС

            var parendIds = tempList
                            .Where(tl => !tl.IsFreeHierLoadedInitializet)
                            .Select(tl => tl.FreeHierItem_ID)
                            .ToList();

            var branches = FreeHierarchyService.GetBranches(Manager.User.User_ID, Tree_ID.GetValueOrDefault(), parendIds, false);
            if (branches == null)
            {
                return;
            }

            var itemsForPrepare = new List <TFreeHierarchyTreeItem>();
            foreach (var branch in branches)
            {
                if (branch.Value == null)
                {
                    continue;
                }

                itemsForPrepare.AddRange(branch.Value);
            }

#if DEBUG
            sw.Stop();
            Console.WriteLine("LoadDynamicChildren: GetBranches {0} млс", sw.ElapsedMilliseconds);
            sw.Restart();
#endif

            FreeHierarchyTreePreparer.PrepareGlobalDictionaries(itemsForPrepare);

            foreach (var item in tempList)
            {
                if (item.IsFreeHierLoadedInitializet)
                {
                    continue;
                }

                List <TFreeHierarchyTreeItem> children;
                if (branches.TryGetValue(item.FreeHierItem_ID, out children) && children != null)
                {
                    var brunch = FreeHierarchyTreePreparer.BuildBranch(item, children, this, false, null, false);
                    if (brunch != null)
                    {
                        item.Children.AddRange(brunch.OrderBy(b => b, comparer));
                    }
                }

                item.IsChildrenInitializet = true;
            }

#if DEBUG
            sw.Stop();
            Console.WriteLine("LoadDynamicChildren: PrepareGlobalDictionaries and BuildBranch {0} млс", sw.ElapsedMilliseconds);
#endif
        }