Beispiel #1
0
 /// <summary>
 /// 设置设备状态到子网状态集合
 /// </summary>
 /// <param name="sid"></param>
 /// <param name="status"></param>
 static void SetStatusToSubnet(int sid, TopoNodeStatus status)
 {
     if (_dicSubnetDeviceStatusSet.ContainsKey(sid))
     {//存在该子网
         var list      = _dicSubnetDeviceStatusSet[sid];
         var oldStatus = (from s in list
                          where s.ID == status.ID
                          select s).FirstOrDefault();
         //存在该设备则更新
         if (oldStatus != null)
         {
             oldStatus.Status          = status.Status;
             oldStatus.BackgroundColor = status.BackgroundColor;
         }
         else
         {
             list.Add(status);
         }
     }
     else
     {//不存在该子网的状态数据
         List <TopoNodeStatus> list = new List <TopoNodeStatus>();
         list.Add(status);
         _dicSubnetDeviceStatusSet.Add(sid, list);
     }
 }
Beispiel #2
0
        //获取某个子网的状态
        public static TopoNodeStatus GetSubnetStatus(Subnet net)
        {
            TopoNodeStatus status = new TopoNodeStatus();

            status.ID     = net.ID;
            status.Status = "OFFLINE";
            //确保该子网状态下的设备都取到状态
            IEnumerable <Device> devices = null;

            using (var ctx = new GlsunViewEntities())
            {
                devices = ctx.Device.Where(d => d.SID == net.ID).ToList();
            }
            _dicSubnetDeviceStatusSet.Clear();
            foreach (var d in devices)
            {
                SetStatusToSubnet(net.ID, GetDeviceStatus(d));
            }
            if (_dicSubnetDeviceStatusSet.ContainsKey(net.ID))
            {
                var list   = _dicSubnetDeviceStatusSet[net.ID];
                var alarms = (from s in list
                              group s by s.Status into r
                              select r.Key).ToList();
                if (alarms.Contains("CRITICAL"))
                {
                    status.Status = "CRITICAL";
                }
                else if (alarms.Contains("MAJOR"))
                {
                    status.Status = "MAJOR";
                }
                else if (alarms.Contains("MINOR"))
                {
                    status.Status = "MINOR";
                }
                else if (alarms.Contains("WARN"))
                {
                    status.Status = "WARN";
                }
                else if (alarms.Contains("NORMAL"))
                {
                    status.Status = "NORMAL";
                }
            }
            status.BackgroundColor = _dicColor[status.Status];
            return(status);
        }
Beispiel #3
0
        /// <summary>
        /// 获取某个设备的状态
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        public static TopoNodeStatus GetDeviceStatus(Device d)
        {
            TopoNodeStatus status = new TopoNodeStatus();

            status.ID = d.ID;
            if (d != null)
            {
                if (TcpClientDetectTool.IsOnline(d.DAddress, d.DPort.Value))
                {
                    //在线的则取当前告警状态
                    //status.Status = "NORMAL";
                    IEnumerable <string> alarms = null;
                    using (var ctx = new GlsunViewEntities())
                    {
                        alarms = (from a in ctx.AlarmInformation
                                  where a.AIConfirm.Value == false && a.DID == d.ID
                                  group a by a.AILevel into r
                                  select r.Key).ToList();
                    }
                    if (alarms.Contains("CRITICAL"))
                    {
                        status.Status = "CRITICAL";
                    }
                    else if (alarms.Contains("MAJOR"))
                    {
                        status.Status = "MAJOR";
                    }
                    else if (alarms.Contains("MINOR"))
                    {
                        status.Status = "MINOR";
                    }
                    else if (alarms.Contains("WARN"))
                    {
                        status.Status = "WARN";
                    }
                    else
                    {
                        status.Status = "NORMAL";
                    }
                }
                else
                {
                    status.Status = "OFFLINE";
                }
                status.BackgroundColor = _dicColor[status.Status];
            }
            return(status);
        }