|
@@ -271,7 +271,7 @@ namespace SAGA.GplotRelationComputerManage
|
|
|
|
|
|
#region 解析机房数据
|
|
|
|
|
|
- var useEquipments = ParseMachineRoomData(context, relationSetting, roomStartElements);
|
|
|
+ var useEquipments = ParseMachineRoomData2(context, relationSetting, roomStartElements);
|
|
|
useEquipments = useEquipments.Distinct().ToList();
|
|
|
#endregion
|
|
|
|
|
@@ -552,7 +552,42 @@ namespace SAGA.GplotRelationComputerManage
|
|
|
var arrays = parse.Execute(useStartElements);
|
|
|
arrays.RemoveAll(c => c.GetAvailableVertexes(null).All(v => !v.IsRealEquipment()));
|
|
|
|
|
|
-
|
|
|
+ #region 加载设备显示信息
|
|
|
+ foreach (var elementEdgesArray in arrays)
|
|
|
+ {
|
|
|
+ var vertexes = elementEdgesArray.Vertexes.Where(v => v.Children.Count == 0);
|
|
|
+ foreach (var elementsVertex in vertexes)
|
|
|
+ {
|
|
|
+ var equipmentItem = elementsVertex.GetEquipment();
|
|
|
+ if (equipmentItem == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (string.IsNullOrWhiteSpace(equipmentItem.BimId))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (equipmentItem.ElementType == ElementType.Space)
|
|
|
+ {
|
|
|
+ var spaceIem = context.Rooms.GetItem(equipmentItem.BimId);
|
|
|
+ if (spaceIem != null)
|
|
|
+ {
|
|
|
+ equipmentItem.Name = spaceIem.Name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (equipmentItem.ElementType == ElementType.Equipment)
|
|
|
+ {
|
|
|
+ var equipment = context.EquipmentItems.GetItem(equipmentItem.BimId);
|
|
|
+ if (equipment != null)
|
|
|
+ {
|
|
|
+ equipmentItem.Name = equipment.Name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
#region 生成图形数据
|
|
|
ColdRoomManager manager = new ColdRoomManager();
|
|
|
var doc = manager.CreateDocument(new List<ElementEdgesArray>(arrays));
|
|
@@ -575,20 +610,100 @@ namespace SAGA.GplotRelationComputerManage
|
|
|
node.To = ConverEquipmentNode(item.EquipmentItem2, context);
|
|
|
node.RelationType = item.LinkType;
|
|
|
relationRecord.RelationItems.Add(node);
|
|
|
-
|
|
|
-
|
|
|
var newIds = new List<string>() {item.EquipmentItem1.Id, item.EquipmentItem2.Id};
|
|
|
useEquipments.AddRange(newIds);
|
|
|
+ }
|
|
|
+ context[relationType].MachineRoomRelationRecords.Add(relationRecord);
|
|
|
+ #endregion
|
|
|
|
|
|
+ return useEquipments;
|
|
|
+
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 解析机房数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="context"></param>
|
|
|
+ /// <param name="relationSetting"></param>
|
|
|
+ /// <param name="startElements"></param>
|
|
|
+ private List<string> ParseMachineRoomData2(SystemComputerContext context, RelationTypeShell relationSetting,
|
|
|
+ List<Element> startElements)
|
|
|
+ {
|
|
|
+ /*
|
|
|
+ *1、解析过程中尽量少处理和后续相关的数据
|
|
|
+ * 2、设备整理,带缓存的设备信息读取
|
|
|
+ */
|
|
|
+ List<string> useEquipments = new List<string>();
|
|
|
+ var relationType = relationSetting.RelationItem.Type;
|
|
|
+ GplotGraphParse parse = new GplotGraphParse(new GplotGraphSetting(relationSetting));
|
|
|
+ List<Element> useStartElements = new List<Element>(startElements);
|
|
|
+ var graphs = parse.CreateGplotGraphs(useStartElements);
|
|
|
+ graphs.RemoveAll(c => c.Vertexes.All(v => !v.IsRealEquipment()));
|
|
|
+
|
|
|
+ #region 加载设备显示信息
|
|
|
+ foreach (var elementEdgesArray in graphs)
|
|
|
+ {
|
|
|
+ var vertexes = elementEdgesArray.Vertexes.Where(v => v.Children.Count == 0);
|
|
|
+ foreach (var elementsVertex in vertexes)
|
|
|
+ {
|
|
|
+ var equipmentItem = elementsVertex.GetEquipment();
|
|
|
+ if (equipmentItem == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (string.IsNullOrWhiteSpace(equipmentItem.BimId))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (equipmentItem.ElementType == ElementType.Space)
|
|
|
+ {
|
|
|
+ var spaceIem = context.Rooms.GetItem(equipmentItem.BimId);
|
|
|
+ if (spaceIem != null)
|
|
|
+ {
|
|
|
+ equipmentItem.Name = spaceIem.Name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (equipmentItem.ElementType == ElementType.Equipment)
|
|
|
+ {
|
|
|
+ var equipment = context.EquipmentItems.GetItem(equipmentItem.BimId);
|
|
|
+ if (equipment != null)
|
|
|
+ {
|
|
|
+ equipmentItem.Name = equipment.Name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 生成图形数据
|
|
|
+ var drawData = SystemParseManager.CreateRoomDrawing(graphs);
|
|
|
+ MachineRoomDrawRecord record = new MachineRoomDrawRecord();
|
|
|
+ record.RelationName = relationSetting.RelationItem.Name;
|
|
|
+ record.FloorName = MBIInfoUtil.GetFloorNameByLevel(UseLevel.Name);
|
|
|
+ record.NodePaths = drawData;
|
|
|
+ context[relationType].MachineRoomDrawRecords.Add(record);
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 生成关系数据
|
|
|
+ var relations = SystemParseManager.CreateRoomRelation(graphs);
|
|
|
+ MachineRoomRelationRecord relationRecord = new MachineRoomRelationRecord();
|
|
|
+ relationRecord.RelationName = relationSetting.RelationItem.Name;
|
|
|
+ foreach (var item in relations)
|
|
|
+ {
|
|
|
+ var node = new BinaryRelationItem();
|
|
|
+ node.From = ConverEquipmentNode(item.EquipmentItem1, context);
|
|
|
+ node.To = ConverEquipmentNode(item.EquipmentItem2, context);
|
|
|
+ node.RelationType = item.LinkType;
|
|
|
+ relationRecord.RelationItems.Add(node);
|
|
|
+ var newIds = new List<string>() { item.EquipmentItem1.Id, item.EquipmentItem2.Id };
|
|
|
+ useEquipments.AddRange(newIds);
|
|
|
+ }
|
|
|
context[relationType].MachineRoomRelationRecords.Add(relationRecord);
|
|
|
#endregion
|
|
|
|
|
|
return useEquipments;
|
|
|
|
|
|
}
|
|
|
-
|
|
|
private EquipmentNode ConverEquipmentNode(EquipmentItem item, SystemComputerContext context)
|
|
|
{
|
|
|
EquipmentNode result = new EquipmentNode();
|