コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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");
 }
コード例 #4
0
        /// <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);
            }
        }
コード例 #5
0
        /// <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);
            }
        }
コード例 #6
0
        /// <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);
            }
        }
コード例 #7
0
        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
        }