/// <summary> /// Генерация дерева (списка) балансов (приложения 63) для выгрузки xml /// </summary> private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateBalance63Tree(FreeHierarchyTreeDescriptor descriptor) { var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); var rootNodes = DeclaratorService.Service.Get_ExportService_Balances63(); if (rootNodes == null) { return(result); } foreach (var rootNode in rootNodes) { var newItemNode = new FreeHierarchyTreeItem(descriptor, rootNode, false, string.Empty, descriptor.GetMinIdAndDecrement(), null, true, nodeRights: null, freeHierItemType: EnumFreeHierarchyItemType.FiasFullAddress); //{ // StringName = rootNode.StringName, //}; newItemNode.Descriptor.Tree = result; //newItemNode.UpdateCountParents(); result[newItemNode.FreeHierItem_ID] = newItemNode; } return(result); }
private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateOldTelescopeTree(FreeHierarchyTreeDescriptor descriptor) { var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); var rootNodes = EnumClientServiceDictionary.OldTelescopeTreeNodes.Values.Where(i => i.TreeLevel == 0); if (rootNodes == null) { return(result); } foreach (var rootNode in rootNodes) { rootNode.Parent_Absolute_Number = ""; //иначе зацикливание где нибудь будет var newItemNode = new FreeHierarchyTreeItem(descriptor, rootNode, false, string.Empty, descriptor.GetMinIdAndDecrement(), null, true, nodeRights: null, freeHierItemType: EnumFreeHierarchyItemType.OldTelescopeTreeNode); newItemNode.Descriptor.Tree = result; result[newItemNode.FreeHierItem_ID] = newItemNode; } return(result); }
private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateStandartTreeBySupplyPS(FreeHierarchyTreeDescriptor descriptor, bool isHideTi) { var items = new List <FreeHierarchyTreeItem>(); var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); foreach (var value in from ps in EnumClientServiceDictionary.DetailPSList join ps_sup in GlobalTreeDictionary.PowerSupply_PS_List on ps.Key equals ps_sup.PS_ID into temp from ps_t in temp.DefaultIfEmpty() where ps_t == null orderby ps.Value.Name select ps.Value) { if (!IsGlobalFilterHaveItem(value)) { continue; } UserRightsForTreeObject right; if (!Manager.User.AccumulateRightsAndVerify(value, EnumObjectRightType.SeeDbObjects, value.GetObjectRightType(), out right)) { continue; } FreeHierarchyTreeItem newItem = new FreeHierarchyTreeItem(descriptor, value, nodeName: value.Name) { FreeHierItem_ID = descriptor.GetMinIdAndDecrement(), IncludeObjectChildren = true, IsHideTi = isHideTi, FreeHierItemType = EnumFreeHierarchyItemType.PS, NodeRights = right, }; items.Add(newItem); newItem.Descriptor.Tree = result; if (newItem.IncludeObjectChildren) { newItem.LoadStaticChildren(true, isHideTi); newItem.Descriptor.NeedFindTI = true; } } if (FreeHierarchyTreeDescriptor.Sort != null) { FreeHierarchyTreeDescriptor.Sort(items); } foreach (var i in items) { result[i.FreeHierItem_ID] = i; } return(result); }
private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateStandartTreeSections(FreeHierarchyTreeDescriptor descriptor) { var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); var items = new List <FreeHierarchyTreeItem>(); HashSet <ID_TypeHierarchy> objectsHasRightDbSee = null; var hiers1 = EnumClientServiceDictionary.HierLev1List.Values; if (Manager.User != null && !Manager.User.IsAdmin) { try { //Запрашиваем права на список объектов objectsHasRightDbSee = Manager.User.UserHasRightDbSee(hiers1.Select(h1 => new ID_TypeHierarchy { ID = h1.Id, TypeHierarchy = enumTypeHierarchy.Dict_HierLev1, }).ToList()); } catch (Exception ex) { Manager.UI.ShowMessage("Ошибка запроса прав: " + ex.Message); } } foreach (var item in hiers1.OrderBy(v => v.Item)) { //Глобальный фильтр if (!IsGlobalFilterHaveItem(item)) { continue; } var minID = descriptor.GetMinIdAndDecrement(); UserRightsForTreeObject hier1Right; var isExistsRight = Manager.User.AccumulateRightsAndVerify(item, EnumObjectRightType.SeeDbObjects, null, out hier1Right); if (!isExistsRight && Manager.User != null && !Manager.User.IsAdmin && objectsHasRightDbSee != null) { //Проверяем через дочерних объектов isExistsRight = objectsHasRightDbSee.Any(o => o.ID == item.Id && o.TypeHierarchy == item.GetTypeHierarchy()); } var newItem = new FreeHierarchyTreeItem(descriptor, item, nodeName: item.Name) { FreeHierItem_ID = minID, IncludeObjectChildren = true, FreeHierItemType = EnumFreeHierarchyItemType.HierLev1, NodeRights = hier1Right }; newItem.Descriptor.Tree = result; bool isExistsChildSeeDbObjects = false; if (newItem.IncludeObjectChildren) { isExistsChildSeeDbObjects = newItem.LoadStaticChildren(isExistsRight, isLoadStatic: true); } isExistsChildSeeDbObjects = newItem.IncludeChildrenSection(item.Id, item.Type, newItem.Children) || isExistsChildSeeDbObjects || item.TIStatus.HasFlag(EnumTIStatus.Is_Section_Enabled); //У объекта нет прав на просмотр, или нет дочерних объектов на которые есть такие права if (isExistsChildSeeDbObjects) //Включаем только если есть сечения { items.Add(newItem); } else { newItem.Dispose(); } } //Сечения которые не привязаны ни к чему foreach (var section in EnumClientServiceDictionary.GetSections().Values.Where(s => s.ParentId <= 0 && s.Section_ID > 0).OrderBy(s => s.Item)) { UserRightsForTreeObject right; if (!Manager.User.AccumulateRightsAndVerify(section, EnumObjectRightType.SeeDbObjects, null, out right)) { continue; } var minID = descriptor.GetMinIdAndDecrement(); FreeHierarchyTreeItem newItem = new FreeHierarchyTreeItem(descriptor, section) { FreeHierItem_ID = minID, IncludeObjectChildren = true, NodeRights = right, FreeHierItemType = EnumFreeHierarchyItemType.Section, }; newItem.Descriptor.Tree = result; newItem.LoadStaticChildren(true); items.Add(newItem); } if (FreeHierarchyTreeDescriptor.Sort != null) { FreeHierarchyTreeDescriptor.Sort(items); } foreach (var i in items) { result[i.FreeHierItem_ID] = i; } return(result); }
/// <summary> /// Генерация стандартного дерева ПС /// </summary> /// <returns></returns> private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateStandartTreePS(FreeHierarchyTreeDescriptor descriptor, bool isHideTi) { var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); var hiers1 = EnumClientServiceDictionary.HierLev1List.Values; var filterStatus = descriptor.FilterStatus; foreach (var item in hiers1.OrderBy(v => v.Item)) //сортируем по названию { if (item == null || (filterStatus.HasValue && (item.TIStatus & filterStatus.Value) == EnumTIStatus.None) || //Используется фильтр на дереве !IsGlobalFilterHaveItem(item)) //Глобальный фильтр { continue; } var isExistsChildSeeDbObjects = Manager.User.IsAssentRight(item, EnumObjectRightType.SeeDbObjects, null); if (!isExistsChildSeeDbObjects && //Нет собственных прав !FreeHierarchyTreePreparer.ExistsStandartChildSeeDbObjects(item, descriptor.Tree_ID ?? -101, true) //И нет дочерних объектов с правами ) { continue; } var newItem = new FreeHierarchyTreeItem(descriptor, item, false, item.Name, descriptor.GetMinIdAndDecrement(), null, true, isHideTi, item.ObjectRights, EnumFreeHierarchyItemType.HierLev1) { Descriptor = { Tree = result } }; if (newItem.IncludeObjectChildren) { isExistsChildSeeDbObjects = newItem.LoadStaticChildren(isExistsChildSeeDbObjects, isHideTi); } //У объекта нет прав на просмотр, или нет дочерних объектов на которые есть такие права //if (isExistsRight || isExistsChildSeeDbObjects) //{ result[newItem.FreeHierItem_ID] = newItem; //} //else //{ // newItem.Dispose(); //} } //if (FreeHierarchyTreeDescriptor.Sort != null) FreeHierarchyTreeDescriptor.Sort(items); //foreach (var i in items) result[i.FreeHierItem_ID] = i; return(result); }
/// <summary> /// Генерация стандартного дерева Список OPCUA серверов /// </summary> private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateStandartTree_Dict_OPCUAServers(FreeHierarchyTreeDescriptor descriptor) { var items = new List <FreeHierarchyTreeItem>(); var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); var uaServers = UAHierarchyDictionaries.UaServers(Manager.UI.ShowMessage); if (uaServers == null) { return(null); } descriptor.NeedFindUaNode = true; foreach (var item in uaServers.Values) { UserRightsForTreeObject right; if (!Manager.User.AccumulateRightsAndVerify(item, EnumObjectRightType.SeeDbObjects, null, out right)) { continue; } var newItem = new FreeHierarchyTreeItem(descriptor, item) { FreeHierItem_ID = descriptor.GetMinIdAndDecrement(), IncludeObjectChildren = true, IsHideTi = false, FreeHierItemType = EnumFreeHierarchyItemType.UAServer, NodeRights = null, }; newItem.Descriptor.Tree = result; items.Add(newItem); //дабавляем корневые узлы вручную //дальше будут подгружаться при раскрытии? List <TUANode> rootNodes = UAService.Service.UA_Get_RootNodes(item.UAServer_ID); foreach (var rootNode in rootNodes) { TUANode node = null; UAHierarchyDictionaries.UANodesDict.TryGetValue(rootNode.UANodeId, out node); if (node == null) { continue; } FreeHierarchyTreeItem newItemNode = new FreeHierarchyTreeItem(newItem.Descriptor, node) { FreeHierItem_ID = descriptor.GetMinIdAndDecrement(), Parent = newItem, IncludeObjectChildren = true, FreeHierItemType = EnumFreeHierarchyItemType.UANode, NodeRights = right, }; newItem.Children.Add(newItemNode); newItem.Descriptor.Tree.TryAdd(newItemNode.FreeHierItem_ID, newItemNode); //добавляем дочерние //newItemNode.IncludeChildrenOPCNodes(newItemNode.Children, false); } } if (FreeHierarchyTreeDescriptor.Sort != null) { FreeHierarchyTreeDescriptor.Sort(items); } foreach (var i in items) { result[i.FreeHierItem_ID] = i; } return(result); }
/// <summary> /// Генерация стандартного дерева FIAS адреса, которые используются /// </summary> private static ConcurrentDictionary <int, FreeHierarchyTreeItem> GenerateStandartTree_FIAS(bool IncludeHerarchyObjects, FreeHierarchyTreeDescriptor descriptor) { var result = new ConcurrentDictionary <int, FreeHierarchyTreeItem>(); //добавляем корневые узлы IEnumerable <TFIASNode> rootNodes; if (!IncludeHerarchyObjects) { rootNodes = DeclaratorService.FIAS_Get_RootNodes(); } else { rootNodes = DeclaratorService.FIASToHierarchy_Get_RootNodes(); } if (rootNodes == null) { return(result); } foreach (var rootNode in rootNodes) { var newItemNode = new FreeHierarchyTreeItem(descriptor, rootNode, false, string.Empty, descriptor.GetMinIdAndDecrement(), null, true, nodeRights: null, freeHierItemType: EnumFreeHierarchyItemType.FiasFullAddress) { StringName = rootNode.StringName, FIASNode = rootNode, }; newItemNode.Descriptor.Tree = result; //newItemNode.UpdateCountParents(); //добавляем дочерние if (rootNode.IsChildrenExists) { newItemNode.IncludeChildrenFIASNodes((rootNode.IsHierObjectExists || descriptor.Tree_ID == TreeTypeStandart_Dict_FIASToHierarchy)); } result[newItemNode.FreeHierItem_ID] = newItemNode; } return(result); }