public DevInfos GetDevToken(string UserIdentifier) { var qs = "f=getbillagaindevtoken&p=1&userid=" + UserIdentifier; string result = PostTransaction(URL, qs); StringReader strReader = new StringReader(result); XmlSerializer serializer = new XmlSerializer(typeof(DevInfos)); XmlTextReader xmlReader = new XmlTextReader(strReader); var obj = (DevInfos)serializer.Deserialize(xmlReader); var return_result = new DevInfos(); for (int i = 0; i < obj.Count; i++) { var Info = obj[i]; return_result.Add(new DevInfo { dev_devtoken = Info.dev_devtoken, dev_id = Info.dev_id }); } return(return_result); }
private void AddArchorDev(Archor archor1, PhysicalTopology parent) { DevInfo archor1Dev = new DevInfo() { Name = archor1.Name, DevID = Guid.NewGuid().ToString(), Parent = parent, TypeCode = 6345 }; archor1.Dev = archor1Dev; DevInfos.Add(archor1Dev); Archors.Add(archor1); }
public void ClearTopoTable() { Log.InfoStart("ClearTopoTable"); Archors.Clear(); DevInfos.Clear(); Maps.Clear(); PhysicalTopologys.Clear(); TransformMs.Clear(); NodeKKSs.Clear(); Points.Clear(); Bounds.Clear(); Log.InfoEnd("ClearTopoTable"); }
/// <summary> /// 获取物理逻辑拓扑 /// </summary> /// <returns></returns> public Area GetAreaTree(bool isWithDev = true, int?id = null) { try { Log.InfoStart("GetPhysicalTopologyTree"); List <Area> list = Areas.ToList(); List <Area> list2 = new List <Area>(); for (int i = 0; i < list.Count; i++) { if (list[i].Type != AreaTypes.CAD) { list2.Add(list[i]); } } list = list2; List <Bound> bounds = Bounds.ToList(); List <Point> points = Points.ToList(); BindBoundWithPoint(points, bounds); BindAreaWithBound(list, bounds); List <DevInfo> leafNodes = new List <DevInfo>(); if (isWithDev) { leafNodes = DevInfos.ToList(); } List <Area> roots = TreeHelper.CreateTree(list, leafNodes); Log.InfoEnd("GetPhysicalTopologyTree"); if (roots.Count > 0) { return(roots[0].FindChild(id)); } else { return(null); } } catch (Exception ex) { Log.Error("GetPhysicalTopologyTree", ex); return(null); } }
/// <summary> /// 获取物理逻辑拓扑 /// </summary> /// <returns></returns> public Area GetAreaTreeEx(bool isWithDev = true, int?id = null, Func <Area, bool> filterAction = null) { try { Log.InfoStart(LogTags.DbGet, "GetPhysicalTopologyTree"); List <Area> list = Areas.ToList(); //List<Area> list2 = new List<Area>(); //for (int i = 0; i < list.Count; i++) //{ // if (filterAction == null) // { // list2.Add(list[i]); // } // else // { // var r = filterAction(list[i]); // if (r == true) // { // list2.Add(list[i]); // } // } //} //list = list2; List <Bound> bounds = Bounds.ToList(); List <Point> points = Points.ToList(); BindBoundWithPoint(points, bounds); BindAreaWithBound(list, bounds); List <DevInfo> leafNodes = new List <DevInfo>(); if (isWithDev) { leafNodes = DevInfos.ToList(); } List <Area> roots = TreeHelper.CreateTree(list, leafNodes); if (filterAction != null) { var dict = list.ToDictionary(i => i.Id); for (int i = 0; i < list.Count; i++) { var item = list[i]; if (item.ParentId != null) { var parent = dict[(int)item.ParentId]; item.Parent = parent; } } for (int i = 0; i < list.Count; i++) { var item = list[i]; var r = filterAction(item); if (r == false && item.Parent != null) { var parent = item.Parent; parent.Children.Remove(item); RemoveEmpty(filterAction, dict, parent); } } } Log.InfoEnd("GetPhysicalTopologyTree"); if (roots.Count > 0) { var result = roots[0].FindChild(id); return(result); } else { return(null); } } catch (Exception ex) { Log.Error("GetPhysicalTopologyTree", ex); return(null); } }
/// <summary> /// 获取物理逻辑拓扑 /// </summary> /// <returns></returns> public Area GetAreaTree(bool isWithDev = true, int?id = null, bool containCAD = false) { //return GetAreaTreeEx(isWithDev, id, (a) => //{ // if (containCAD) // { // return true; // } // else // { // return a.Type != AreaTypes.CAD; // } //}); try { Log.InfoStart(LogTags.DbGet, "GetPhysicalTopologyTree"); List <Area> list = Areas.ToList(); if (list == null) { return(null); } List <Area> list2 = new List <Area>(); for (int i = 0; i < list.Count; i++) { if (containCAD) { list2.Add(list[i]); } else { if (list[i].Type != AreaTypes.CAD)//过滤掉柱子等CAD形状 { list2.Add(list[i]); } } } list = list2; List <Bound> bounds = Bounds.ToList(); List <Point> points = Points.ToList(); BindBoundWithPoint(points, bounds); BindAreaWithBound(list, bounds); List <DevInfo> leafNodes = new List <DevInfo>(); if (isWithDev) { leafNodes = DevInfos.ToList(); } List <Area> roots = TreeHelper.CreateTree(list, leafNodes); Log.InfoEnd("GetPhysicalTopologyTree"); if (roots.Count > 0) { var result = roots[0].FindChild(id); return(result); } else { return(null); } } catch (Exception ex) { Log.Error("GetPhysicalTopologyTree", ex); return(null); } }
private void InitElectricityGeneratingStation(PhysicalTopology root) { int defaultHeight = 20; PhysicalTopology factoryRoot = AddTopoNode("四会热电厂", "", root, Types.分组); //PhysicalTopologys.Add(factoryRoot); PhysicalTopology buildingGroup1 = AddTopoNode("主机装置建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup1); PhysicalTopology buildingGroup2 = AddTopoNode("常规燃料供应建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup2); PhysicalTopology buildingGroup3 = AddTopoNode("仪表与控制建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup3); PhysicalTopology buildingGroup4 = AddTopoNode("常规产热建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup4); PhysicalTopology buildingGroup5 = AddTopoNode("辅助系统建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup5); PhysicalTopology buildingGroup6 = AddTopoNode("电力送出与厂用电建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup6); PhysicalTopology buildingGroup7 = AddTopoNode("供水与水处理建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup7); PhysicalTopology buildingGroup8 = AddTopoNode("循环冷却水系统建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup8); PhysicalTopology buildingGroup9 = AddTopoNode("冷却塔系统建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup9); PhysicalTopology buildingGroup10 = AddTopoNode("一般服务类建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup10); #region 电厂主要建筑 PhysicalTopology J1 = AddTopoNode("主厂房", "J1UMA", buildingGroup1, Types.大楼, null, "J1"); SetInitBound(J1, 2200, 1800, 2244, 1648.2, defaultHeight, false); InitJ1(J1); PhysicalTopology building2 = AddTopoNode("#2燃气轮机房", "11UMB", buildingGroup1, Types.大楼); PhysicalTopology building3 = AddTopoNode("#4燃气轮机房", "21UMB", buildingGroup1, Types.大楼); PhysicalTopology building4 = AddTopoNode("调压站控制室", "J1UER", buildingGroup2, Types.大楼); PhysicalTopology J4 = AddTopoNode("集控楼", "J1UCA", buildingGroup3, Types.大楼, null, "J4"); SetInitBound(J4, 2249.5, 1769.4, 2304, 1792.5, 19.1, false); InitJ4(J4); PhysicalTopology J5 = AddTopoNode("联合车间", "", buildingGroup3, Types.大楼, null, "J5"); SetInitBound(J5, 2249.5, 1692.8, 2293, 1715.9, defaultHeight, false); InitJ5(J5); Db.SaveChanges(); //return; PhysicalTopology building7 = AddTopoNode("#1锅炉房", "", buildingGroup4, Types.大楼); PhysicalTopology building8 = AddTopoNode("#3锅炉房", "", buildingGroup4, Types.大楼); PhysicalTopology building9 = AddTopoNode("#1烟囱", "", buildingGroup4, Types.大楼); PhysicalTopology building10 = AddTopoNode("#3烟囱", "", buildingGroup4, Types.大楼); PhysicalTopology building11 = AddTopoNode("#1锅炉辅助间", "", buildingGroup5, Types.大楼); PhysicalTopology building12 = AddTopoNode("#3锅炉辅助间", "", buildingGroup5, Types.大楼); PhysicalTopology building13 = AddTopoNode("启动锅炉", "", buildingGroup5, Types.大楼); PhysicalTopology building14 = AddTopoNode("GIS配电装置楼", "", buildingGroup6, Types.大楼); PhysicalTopology building34 = AddTopoNode("#1启备变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building35 = AddTopoNode("#1主变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building36 = AddTopoNode("#2主变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building37 = AddTopoNode("#3主变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building38 = AddTopoNode("#4主变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building39 = AddTopoNode("#1高厂变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building40 = AddTopoNode("#2高厂变区域", "", buildingGroup6, Types.大楼); PhysicalTopology building15 = AddTopoNode("循环水泵房配电间", "", buildingGroup7, Types.大楼); PhysicalTopology building16 = AddTopoNode("补给水泵房", "", buildingGroup7, Types.大楼); PhysicalTopology building17 = AddTopoNode("净水站", "", buildingGroup7, Types.大楼); PhysicalTopology building18 = AddTopoNode("综合泵房", "", buildingGroup7, Types.大楼); PhysicalTopology building19 = AddTopoNode("雨水泵房", "", buildingGroup7, Types.大楼); PhysicalTopology H2 = AddTopoNode("锅炉补给水处理车间", "", buildingGroup7, Types.大楼, null, "H2"); InitH2(H2); SetInitBound(H2, 2330, 1712, 2362, 1650, defaultHeight, false); PhysicalTopology building21 = AddTopoNode("废水集中处理站", "", buildingGroup7, Types.大楼); PhysicalTopology building22 = AddTopoNode("生活污水处理站", "", buildingGroup7, Types.大楼); PhysicalTopology building23 = AddTopoNode("循环水加药间", "", buildingGroup7, Types.大楼); PhysicalTopology building24 = AddTopoNode("循环水泵房", "", buildingGroup8, Types.大楼); PhysicalTopology building25 = AddTopoNode("自然通风冷却塔", "", buildingGroup9, Types.大楼); PhysicalTopology building26 = AddTopoNode("供氢站", "", factoryRoot, Types.大楼); PhysicalTopology building27 = AddTopoNode("检修间及材料库", "", buildingGroup10, Types.大楼); //PhysicalTopologys.AddRange(building2, building3, building4, building5, building6, building7, building8,building9, building10, building11, building12, building13, building14, building15, building16,building17, building18, building19, building20, building21, building22, building23, building24,building25, building26, building27); DevInfo dev1 = new DevInfo() { DevID = "DevId1", IP = "12.11.11.11", Name = "设备1", TypeCode = 555, ParentId = building2.Id, CreateTime = DateTime.Now, ModifyTime = DateTime.Now }; building2.LeafNodes = new List <DevInfo>(); building2.LeafNodes.Add(dev1); DevInfos.Add(dev1); PhysicalTopology buildingGroup11 = AddTopoNode("非生产类建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup11); PhysicalTopology buildingGroup12 = AddTopoNode("电网和配电系统的建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup12); PhysicalTopology buildingGroup13 = AddTopoNode("电力送出与厂用电建筑物", "", factoryRoot, Types.分组); //PhysicalTopologys.Add(buildingGroup13); PhysicalTopology building28 = AddTopoNode("行政综合楼", "", buildingGroup11, Types.大楼); PhysicalTopology building29 = AddTopoNode("食堂及公寓", "", buildingGroup11, Types.大楼); PhysicalTopology building30 = AddTopoNode("主入口门卫值班室", "", buildingGroup11, Types.大楼); PhysicalTopology building31 = AddTopoNode("消防车库", "", buildingGroup11, Types.大楼); PhysicalTopology building32 = AddTopoNode("停车棚", "", buildingGroup11, Types.大楼); PhysicalTopology building33 = AddTopoNode("220kV升压站", "", buildingGroup12, Types.大楼); //PhysicalTopologys.AddRange(building28, building29, building30, building31, building32, building33,building34, building35, building36, building37, building38, building39, building40); #endregion #region #1锅炉辅助间 PhysicalTopology building11Floor1 = AddTopoNode("#1锅炉辅助间0m层", "", building11, Types.楼层); PhysicalTopology building11Floor2 = AddTopoNode("#1锅炉辅助间4.5m层", "", building11, Types.楼层); PhysicalTopology building11Floor3 = AddTopoNode("#1锅炉辅助间8.5m层", "", building11, Types.楼层); PhysicalTopology building11Floor4 = AddTopoNode("#1锅炉辅助间13.15m层", "", building11, Types.楼层); //PhysicalTopologys.AddRange(building11Floor1, building11Floor2, building11Floor3, building11Floor4); #endregion #region #3锅炉辅助间 PhysicalTopology building12Floor1 = AddTopoNode("#3锅炉辅助间0m层", "", building12, Types.楼层); PhysicalTopology building12Floor2 = AddTopoNode("#3锅炉辅助间4.5m层", "", building12, Types.楼层); PhysicalTopology building12Floor3 = AddTopoNode("#3锅炉辅助间8.5m层", "", building12, Types.楼层); PhysicalTopology building12Floor4 = AddTopoNode("#3锅炉辅助间13.15m层", "", building12, Types.楼层); //PhysicalTopologys.AddRange(building12Floor1, building12Floor2, building12Floor3, building12Floor4); #endregion }