123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using SAGA.GplotRelationComputerManage;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SAGA.GplotManage
- {
- public class RelationDataManager
- {
- #region 静态方法
- /// <summary>
- /// 获取所有使用uploader
- /// </summary>
- /// <returns></returns>
- public static List<RelationUploader> GetAllUploaders()
- {
- List<RelationUploader> uploaders = new List<RelationUploader>();
- uploaders.Add(new ElectricalRelationUploader("EquipPower", "设备电源"));
- uploaders.Add(new ElectricalRelationUploader("LUDistribution", "低压配电柜关系"));
- uploaders.Add(new ElectricalRelationUploader("ControlRelation","对象受控关系"));
- uploaders.Add(new SpaceRelationUploader("ElementSpNeighborhood", "空间邻接关系"));
- uploaders.Add(new SpaceRelationUploader("TrafficNetwork", "建筑交通网络"));
- uploaders.Add(new SpaceRelationUploader("ConvectionNetwork", "空气流通网络"));
- uploaders.Add(new SpaceRelationUploader("RadiationNetwork", "光照辐射网络"));
- var sytemRelationTypes = RelationTypeManager.GetSystemRelationTypes();
- foreach (RelationItem relation in sytemRelationTypes)
- {
- uploaders.Add(new SystemRelationUploader(relation.Type, relation.Name));
- }
- return uploaders;
- }
- public static void ComputerRelations(List<RelationUploader> uploaders, bool useCache)
- {
- bool containSpace = false;
- List<string> systems = new List<string>();
- foreach (var uploader in uploaders)
- {
- if (uploader is SystemRelationUploader)
- {
- systems.Add(uploader.RelationType);
- continue;
- }
- if (!containSpace && uploader is SpaceRelationUploader)
- {
- containSpace = true;
- continue;
- }
- }
- //计算数据,以后可能合并
- #region 计算空间数据
- SpaceComputerHandler spaceHandler = new SpaceComputerHandler();
- if (containSpace)
- {
- if (useCache)
- {
- spaceHandler.ComputerWidthCache();
- }
- else
- {
- spaceHandler.Computer();
- }
- }
- #endregion
- #region 计算管道数据
- SystemComputerHandler systemHandler = new SystemComputerHandler();
- if (useCache)
- {
- systemHandler.ComputerWidthCache(systems);
- }
- else
- {
- systemHandler.Computer(systems);
- }
- #endregion
- }
- #endregion
- public void InitRelationData(List<RelationUploader> uploaders)
- {
- ComputerRelations(uploaders, true);
- }
- public void CommitRelations(List<RelationUploader> uploaders)
- {
- InitRelationData(uploaders);
- foreach (RelationUploader uploader in uploaders)
- {
- uploader.Upload();
- }
- }
- /// <summary>
- /// 将传入各个关系,重新计算,在生成关系数据
- /// </summary>
- /// <param name="uploaders"></param>
- public void CommitRelationsByReComputer(List<RelationUploader> uploaders)
- {
- ComputerRelations(uploaders, false);
- foreach (RelationUploader uploader in uploaders)
- {
- uploader.Upload();
- }
- }
- }
- }
|