Example #1
0
 public void AddAlarm(DeviceAlarm alarm)
 {
     if (!alarms.Contains(alarm))
     {
         alarms.Add(alarm);
     }
 }
Example #2
0
 private void AlarmDepState(DepNode dep, bool isAlarm)
 {
     if (dep == null)
     {
         return;
     }
     if (FireAreas.Contains(dep.NodeID))
     {
         if (dep.monitorRangeObject != null)
         {
             if (!isAlarm)
             {
                 dep.monitorRangeObject.AlarmOff();
                 HideObjectFollowUI(AlarmDevUIName, dep);
             }
             else
             {
                 dep.monitorRangeObject.AlarmOn();
                 DeviceAlarm alarmInfo = AlarmInfoList.Find(i => (int)i.AreaId == dep.NodeID);
                 var         obj       = FollowTargetManage.Instance.CreateFireDevFollowUI(dep.monitorRangeObject.gameObject, dep, alarmInfo);
                 if (obj != null)
                 {
                     obj.gameObject.SetActive(true);
                 }
             }
         }
     }
 }
Example #3
0
    public void GetDevAlarmData(DeviceAlarm item)
    {
        if (item.Level == Abutment_DevAlarmLevel.高)
        {
            DevLevel.color = HighAlarm;
        }
        else if (item.Level == Abutment_DevAlarmLevel.中)
        {
            DevLevel.color = MiddleAlarm;
        }
        else if (item.Level == Abutment_DevAlarmLevel.低)
        {
            DevLevel.color = LowAlarm;
        }
        TypeNameText.text = item.DevTypeName;

        Num.text   = item.Id.ToString();
        Name.text  = item.DevName.ToString();
        Title.text = item.Title.ToString();
        string   time    = item.CreateTime.ToString();
        DateTime NewTime = Convert.ToDateTime(time);

        AlarmTime.text = NewTime.ToString("yyyy年MM月dd日 HH:mm:ss");
        Message.text   = item.Message.ToString();
        Normal.text    = "<color=#C66BABFF>未消除</color>";
        int dep = (int)item.AreaId;

        DevPos.onClick.AddListener(() =>
        {
            DevBut_Click(item, dep, item.Message);
        });
    }
Example #4
0
        private void BtnSendDevSimulateAlarms_Click(object sender, RoutedEventArgs e)
        {
            if (BtnSendDevSimulateAlarms.Content.ToString() == "逐个发送告警")
            {
                BtnSendDevSimulateAlarms.Content = "逐个发送告警";
                int interval  = TxtSendDevAlarmInterval.Text.ToInt();
                int onceCount = TxtOnceSendCount.Text.ToInt();

                var devList = DeviceListBox1.DeviceList;
                sendSimulateDevAlarmsWorker = Worker.Run(() =>
                {
                    List <DeviceAlarm> sendAlarms = new List <DeviceAlarm>();
                    for (int i = 0; i < devList.Count; i++)
                    {
                        var dev = devList[i];
                        DeviceAlarm devAlarm = CreateDevAlarm(dev);//创建设备告警
                        sendAlarms.Add(devAlarm);
                        if ((i + 1) % onceCount == 0)
                        {
                            Log.Info(LogTags.EventTest, string.Format("发送告警:{0}({1}/{2})", devAlarm, i + 1, devList.Count));
                            AlarmHub.SendDeviceAlarms(devAlarm);
                            Thread.Sleep(interval);
                        }
                    }
                }, null, null, "", true);
            }
            else
            {
                BtnSendDevSimulateAlarms.Content = "逐个发送告警";
                sendSimulateDevAlarmsWorker.CancelAsync();
            }
        }
Example #5
0
 /// <summary>
 /// 初始化告警信息
 /// </summary>
 /// <param name="dev"></param>
 /// <param name="alarmContent"></param>
 public void InitAlarmInfo(DeviceAlarm alarmContent, DevNode dev)
 {
     currentDev         = dev;
     currentDev.isAlarm = true;
     AlarmInfo          = alarmContent;
     dev.AddAlarm(alarmContent);
     SetNormalFollowUIState(dev, false);
 }
Example #6
0
 /// <summary>
 /// 区域告警/消警
 /// </summary>
 private void AlarmMonitorRange(bool isAlarm, DeviceAlarm alarmInfo, DepNode parentNode)
 {
     if (parentNode == null)
     {
         return;
     }
     if (!TypeCodeHelper.IsFireFightDevType(alarmInfo.DevTypeCode.ToString()))
     {
         return;
     }
     if (isAlarm)
     {
         if ((parentNode is RoomController || parentNode is FloorController) && parentNode.monitorRangeObject != null)
         {
             if (!FireAreas.Contains(parentNode.NodeID))
             {
                 FireAreas.Add(parentNode.NodeID);
                 FollowTargetManage.Instance.CreateFireDevFollowUI(parentNode.monitorRangeObject.gameObject, parentNode, alarmInfo);
             }
             parentNode.monitorRangeObject.AlarmOn();
         }
     }
     else
     {
         if ((parentNode is RoomController || parentNode is FloorController))
         {
             parentNode.monitorRangeObject.AlarmOff();
             RemoveAlarmDevFollowUI(parentNode);
             if (FireAreas.Contains(parentNode.NodeID))
             {
                 FireAreas.Remove(parentNode.NodeID);
             }
             #region TestPart
             //List<DevNode> roomDevs = RoomFactory.Instance.GetDepDevs(parentNode);
             //if (roomDevs == null || roomDevs.Count == 0) return;
             //bool isOtherDevAlarm = false;
             //for (int i = 0; i < roomDevs.Count; i++)
             //{
             //    if (roomDevs[i].Info == null) continue;
             //    if (roomDevs[i].isAlarm && roomDevs[i].Info.Id != dev.Id)
             //    {
             //        isOtherDevAlarm = true;
             //        break;
             //    }
             //}
             ////区域下没有告警设备,取消告警
             //if (!isOtherDevAlarm && parentNode.monitorRangeObject != null)
             //{
             //    parentNode.monitorRangeObject.AlarmOff();
             //    RemoveAlarmDevFollowUI(parentNode);
             //    if (!FireAreas.Contains(parentNode.NodeID)) FireAreas.Remove(parentNode.NodeID);
             //}
             #endregion
         }
     }
 }
 /// <summary>
 /// 设置告警跟随UI的信息
 /// </summary>
 /// <param name="dev"></param>
 /// <param name="alarmInfo"></param>
 public void SetAlarmFollowUI(DevNode dev, DeviceAlarm alarmInfo)
 {
     if (dev.alarmUi == null)
     {
         dev.alarmUi = CreateAlarmFollowUI(dev, dev.ParentDepNode, alarmInfo);
     }
     else
     {
         dev.alarmUi.InitInfo(alarmInfo);
     }
 }
Example #8
0
 /// <summary>
 /// 点击定位设备
 /// </summary>
 /// <param name="devId"></param>
 public void DevBut_Click(DeviceAlarm devAlarm, int DepID, string msg)
 {
     RoomFactory.Instance.FocusDev(devAlarm.DevId.ToString(), DepID, result =>
     {
         if (!result)
         {
             string msgTitle = DeviceAlarmHelper.TryGetDeviceAlarmInfo(devAlarm);
             UGUIMessageBox.Show(msgTitle);
         }
     });
     ParkDevAlarmInfo.Instance.CloseDevAlarmWindow();
 }
Example #9
0
 /// <summary>
 /// 点击定位设备
 /// </summary>
 /// <param name="devId"></param>
 public void DevBut_Click(DeviceAlarm alarmInfo, int DepID, string msg)
 {
     RoomFactory.Instance.FocusDev(alarmInfo.DevId.ToString(), DepID, result =>
     {
         if (!result)
         {
             //string msgTitle = DevAlarmListManage.TryGetDeviceAlarmInfo(alarmInfo);
             string msgTitle = string.Format("未找到对应设备,设备ID:{0} 区域ID:{1}", alarmInfo.DevId, DepID);
             UGUIMessageBox.Show(msgTitle);
         }
     });
 }
        private void BtnRandomSelect100_OnClick(object sender, RoutedEventArgs e)
        {
            List <DeviceAlarm> alarms = new List <DeviceAlarm>();
            int    count = 100;
            Random r     = new Random((int)DateTime.Now.Ticks);

            for (int i = 0; i < count; i++)
            {
                int         index = r.Next(deviceAlarms.Count);
                DeviceAlarm alarm = deviceAlarms[i];
                alarms.Add(alarm);
            }
            DataGridDeviceAlarms.ItemsSource = alarms;
        }
Example #11
0
 /// <summary>
 /// 点击定位设备
 /// </summary>
 /// <param name="devId"></param>
 public void DevBut_Click(DeviceAlarm alarm, int DepID, string msg)
 {
     RoomFactory.Instance.FocusDev(alarm.DevId.ToString(), DepID, result =>
     {
         if (!result)
         {
             string msgTitle = DeviceAlarmHelper.TryGetDeviceAlarmInfo(alarm);
             UGUIMessageBox.Show(msgTitle);
         }
     });
     DevAlarmListManage.Instance.CloseDevAlarmWindow();
     AlarmPushManage.Instance.CloseAlarmPushWindow(false);
     DevSubsystemManage.Instance.OnQueryToggleChange(false);
 }
Example #12
0
 /// <summary>
 /// 告警等级
 /// </summary>
 /// <param name="alarm"></param>
 /// <returns></returns>
 public bool DevLevels(DeviceAlarm alarm)
 {
     //int level = ParkDevAlarmLevel.instance.devAlarmLeveldropdown.value;
     if (AlarmLevel == 0)
     {
         return(true);
     }
     else if (alarm.Level == GetDevAlarmdropdownItems())
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #13
0
    /// <summary>
    /// 告警恢复
    /// </summary>
    /// <param name="alarmInfo"></param>
    private void RemoveAlarmInfo(DeviceAlarm alarmInfo)
    {
        //if (AlarmDevsId.Contains(alarmInfo.DevId)) AlarmDevsId.Remove(alarmInfo.DevId);
        //else
        //{
        //    Debug.Log("CancelAlarm Failed,Dev is null.DevId:" + alarmInfo.DevId);
        //    return;
        //}
        DeviceAlarm alarmInfoTemp = AlarmInfoList.Find(dev => dev.DevId == alarmInfo.DevId);

        if (alarmInfoTemp == null)
        {
            return;
        }
        AlarmInfoList.Remove(alarmInfoTemp);
        //恢复正在告警的设备
        if (IsDepDev(FactoryDepManager.currentDep, alarmInfo.AreaId.ToString()))
        {
            try
            {
                if (TypeCodeHelper.IsFireFightDevType(alarmInfo.DevTypeCode.ToString()))
                {
                    DepNode area = RoomFactory.Instance.GetDepNodeById((int)alarmInfo.AreaId);
                    if (area != null)
                    {
                        AlarmMonitorRange(false, alarmInfo, area);
                    }
                }
                else
                {
                    DevAlarmInfo dev = AlarmDevList.Find(i => i.AlarmInfo.DevId == alarmInfo.DevId);
                    if (dev == null)
                    {
                        return;
                    }
                    dev.AlarmOff(true);
                    AlarmDevList.Remove(dev);
                    DestroyImmediate(dev);
                }
            }
            catch (Exception e)
            {
                Debug.Log(e.ToString());
            }
        }
    }
Example #14
0
    /// <summary>
    /// 服务端推送告警信息
    /// </summary>
    private void PushAlarmInfo(DeviceAlarm alarmInfo)
    {
        var logTag = "DevAlarmManage.PushAlarmInfo";

        Log.Info(logTag);
        //if (AlarmDevsId.Contains(alarmInfo.DevId))
        //{
        //    Debug.Log("Alarm is already exist.");
        //    return;
        //}
        //AlarmDevsId.Add(alarmInfo.DevId);
        if (AlarmInfoList.Contains(alarmInfo))
        {
            Debug.Log("Alarm is already exist.");
            return;
        }
        AlarmInfoList.Add(alarmInfo);

        string parentId           = alarmInfo.AreaId.ToString();
        bool   isDepDev           = IsDepDev(FactoryDepManager.currentDep, parentId);
        bool   isFireFightDevType = TypeCodeHelper.IsFireFightDevType(alarmInfo.DevTypeCode.ToString());

        Log.Info(logTag, string.Format("isDepDev:{0},isFireFightDevType:{1}", isDepDev, isFireFightDevType));
        if (isDepDev)
        {
            DevNode dev = RoomFactory.Instance.GetCreateDevById(alarmInfo.DevId.ToString(), int.Parse(parentId));
            if (dev == null && !isFireFightDevType)
            {
                Debug.LogError("Dev not find:" + alarmInfo.DevId);
                return;
            }
            AlarmDev(dev, alarmInfo);
        }
        else
        {
            if (isFireFightDevType)
            {
                int areaId = (int)alarmInfo.AreaId;
                if (!FireAreas.Contains(areaId))
                {
                    FireAreas.Add(areaId);
                }
            }
        }
    }
    public FireDevFollowUI CreateFireDevFollowUI(GameObject fireDev, DepNode dep, DeviceAlarm alarmInfo)
    {
        //string depNodeId = dep is RoomController ? dep.ParentNode.NodeID.ToString():dep.NodeID.ToString();
        string     groupName = string.Format("{0}{1}", AlarmDevUIName, dep.NodeID);
        GameObject followObj = CreateFollowTarget(FireDevUIPrefab, fireDev, groupName);

        if (followObj == null)
        {
            return(null);
        }
        FireDevFollowUI followUI = followObj.GetComponent <FireDevFollowUI>();

        if (followUI != null)
        {
            followUI.InitInfo(alarmInfo);
        }
        return(followUI);
    }
Example #16
0
        public DevAlarmHistory RemoveToHistory(DeviceAlarm alarm)
        {
            DevAlarmHistory newItem = new DevAlarmHistory();

            newItem.Id               = alarm.Id;
            newItem.Abutment_Id      = alarm.Abutment_Id;
            newItem.Title            = alarm.Title;
            newItem.Msg              = alarm.Message;
            newItem.Level            = alarm.Level;
            newItem.Code             = alarm.Code;
            newItem.Src              = alarm.Src;
            newItem.DevInfoId        = alarm.DevId;
            newItem.Device_desc      = alarm.Device_desc;
            newItem.AlarmTime        = alarm.CreateTime;
            newItem.AlarmTimeStamp   = alarm.AlarmTimeStamp;
            newItem.HistoryTime      = DateTime.Now;
            newItem.HistoryTimeStamp = TimeConvert.ToStamp((DateTime)newItem.HistoryTime);
            return(newItem);
        }
    private DeviceAlarmFollowUI CreateAlarmFollowUI(DevNode alarmDev, DepNode dep, DeviceAlarm alarmInfo)
    {
        try
        {
            string depNodeId = dep is RoomController?dep.ParentNode.NodeID.ToString() : dep.NodeID.ToString();

            string     groupName = string.Format("{0}{1}", AlarmDevUIName, depNodeId);
            string     typeCode  = alarmDev.Info.TypeCode.ToString();
            GameObject followObj = null;
            if (TypeCodeHelper.IsLocationDev(typeCode))
            {
                followObj = CreateFollowTarget(ArchorAlarmUI, alarmDev.gameObject, groupName);
            }
            else if (TypeCodeHelper.IsCamera(typeCode))
            {
                followObj = CreateFollowTarget(CameraAlarmUI, alarmDev.gameObject, groupName);
            }
            else if (TypeCodeHelper.IsDoorAccess(typeCode))
            {
                followObj = CreateFollowTarget(DoorAccessAlarmUI, alarmDev.gameObject, groupName);
            }
            else
            {
                followObj = CreateFollowTarget(BorderDevUIPrefab, alarmDev.gameObject, groupName);
            }
            if (followObj == null)
            {
                return(null);
            }
            DeviceAlarmFollowUI followUI = followObj.GetComponent <DeviceAlarmFollowUI>();
            if (followUI != null)
            {
                followUI.InitInfo(alarmInfo);
            }
            return(followUI);
        }
        catch (Exception ex)
        {
            Log.Error("FollowTargetManage.CreateAlarmDevFollowUI", ex.ToString());
            return(null);
        }
    }
        public void LoadConfig()
        {
            log.Debug("LoadConfig()");
            //clear the existing interface
            GPIOService.CloseGpio();
            Solenoids.Clear();

            List <Solenoid> solenoids = DataService.Proxy.GetSolenoids(device.Id);

            foreach (Solenoid s in solenoids)
            {
                DeviceSolenoid sol = new DeviceSolenoid(s);
                Solenoids.Add(sol);
                log.DebugFormat("Solenoid Id:{0}", sol.Id);
                if (device.PumpSolenoidId == sol.Id)
                {
                    Pump = sol;
                    log.DebugFormat("Found pump solenoid {0}", Pump.Id);
                }
            }

            Analogs.Clear();
            List <Analog> analogs = DataService.Proxy.GetAnalogs(device.Id);

            foreach (Analog a in analogs)
            {
                DeviceAnalog an = new DeviceAnalog(a);
                Analogs.Add(an);
            }

            Alarms.Clear();
            List <Alarm> alarms = DataService.Proxy.GetAlarms(device.Id);

            foreach (Alarm a in alarms)
            {
                DeviceAlarm al = new DeviceAlarm(a);
                Alarms.Add(al);
            }

            Schedules = DataService.Proxy.GetSchedules(device.Id);
        }
Example #19
0
 /// <summary>
 /// 设备类型
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 public bool ScreenDevType(DeviceAlarm type, int level)
 {
     //if (ParkDevAlarmType.instance == null) return true;
     //if (ParkDevAlarmType.instance.DevTypedropdownItem == null) return true;
     //int level = ParkDevAlarmType.instance.DevTypedropdownItem.value;
     if (level == 0)
     {
         return(true);
     }
     else
     {
         if (type.DevTypeName == GetDevType())
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
Example #20
0
    /// <summary>
    /// 显示设备告警
    /// </summary>
    /// <param name="dev"></param>
    /// <param name="alarmInfo"></param>
    private void AlarmDev(DevNode dev, DeviceAlarm alarmInfo)
    {
        var logTag = "DevAlarmManage.AlarmDev";

        Log.Info(logTag);
        if (TypeCodeHelper.IsFireFightDevType(alarmInfo.DevTypeCode.ToString()))
        {
            DepNode area = RoomFactory.Instance.GetDepNodeById((int)alarmInfo.AreaId);
            if (area != null)
            {
                AlarmMonitorRange(true, alarmInfo, area);
            }
        }
        else
        {
            if (dev == null || dev.gameObject == null)
            {
                return;
            }
            DevAlarmInfo info = dev.gameObject.GetComponent <DevAlarmInfo>();
            if (info == null)
            {
                info = dev.gameObject.AddMissingComponent <DevAlarmInfo>();
            }
            if (!AlarmDevList.Contains(info))
            {
                AlarmDevList.Add(info);
            }

            //Debug.LogError("增加告警信息:"+alarmInfo.Message);
            info.InitAlarmInfo(alarmInfo, dev); //设置告警内容
            info.AlarmOn();                     //高亮显示

            if (FollowTargetManage.Instance)    //告警跟随UI信息
            {
                FollowTargetManage.Instance.SetAlarmFollowUI(dev, alarmInfo);
            }
        }
    }
        /// <summary>
        /// 查询时间段内报警记录
        /// </summary>
        /// <param name="date1">开始时间,大于等于</param>
        /// <param name="date2">结束时间,小于等于</param>
        /// <param name="state">状态,-1只查询Old,1只查询New,0查询所有状态 </param>
        /// <returns></returns>
        public static List <DeviceAlarm> GetAlarm(DateTime date1, DateTime date2, int state)
        {
            ModelHandler <DeviceAlarm> modelHandler = new ModelHandler <DeviceAlarm>();
            List <DeviceAlarm>         list         = new List <DeviceAlarm>();
            int year = date1.Year;

            while (year <= date2.Year)
            {
                DataTable table  = new DataTable();
                string    strSql = "select * from DeviceAlarm_" + year + " where 1=1";
                if (year == date1.Year)
                {
                    strSql += " and StartTime>='" + date1.ToString("yyyy-MM-dd HH:mm:ss") + "'";
                }
                if (year == date2.Year)
                {
                    strSql += " and StartTime<='" + date2.ToString("yyyy-MM-dd HH:mm:ss") + "'";
                }
                if (state == 1)
                {
                    strSql += " and State='New'";
                }
                else if (state == -1)
                {
                    strSql += " and State='Old'";
                }

                table = DbHelperSQL.Query(strSql).Tables[0];
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    DeviceAlarm deviceAlarm = modelHandler.FillModel(table.Rows[i]);
                    list.Add(deviceAlarm);
                }

                year += 1;
            }
            return(list);
        }
Example #22
0
        private void LoadDevList()
        {
            LocationService service = new LocationService();
            var             devlist = service.GetAllDevInfos();

            DeviceListBox1.LoadData(devlist);

            DeviceListBox1.AddMenu("告警", (se, arg) =>
            {
                //MessageBox.Show("告警" + DeviceListBox1.CurrentDev.Name);
                //todo:告警事件推送
                var dev           = DeviceListBox1.CurrentDev;
                DeviceAlarm alarm = new DeviceAlarm()
                {
                    Id         = dev.Id,
                    Level      = Abutment_DevAlarmLevel.低,
                    Title      = "告警" + dev.Id,
                    Message    = GetAlarmMsg(dev),
                    CreateTime = new DateTime(2018, 8, 28, 9, 5, 34)
                }.SetDev(dev);
                AlarmHub.SendDeviceAlarms(alarm);
            });
            DeviceListBox1.AddMenu("消警", (se, arg) =>
            {
                //MessageBox.Show("消警" + DeviceListBox1.CurrentDev.Name);
                var dev           = DeviceListBox1.CurrentDev;
                DeviceAlarm alarm = new DeviceAlarm()
                {
                    Id         = dev.Id,
                    Level      = Abutment_DevAlarmLevel.无,
                    Title      = "消警" + dev.Id,
                    Message    = "设备消警",
                    CreateTime = new DateTime(2018, 8, 28, 9, 5, 34)
                }.SetDev(dev);
                AlarmHub.SendDeviceAlarms(alarm);
            });
        }
Example #23
0
        private void LoadDevList()
        {
            LocationService service = new LocationService();
            var             devlist = service.GetAllDevInfos();

            DeviceListBox1.LoadData(devlist.ToList());

            DeviceListBox1.AddMenu("告警", (se, arg) =>
            {
                //MessageBox.Show("告警" + DeviceListBox1.CurrentDev.Name);
                //todo:告警事件推送
                //var dev = DeviceListBox1.CurrentDev;
                //DeviceAlarm alarm = CreateDevAlarm(dev);
                //AlarmHub.SendDeviceAlarms(alarm);
                var dev           = DeviceListBox1.CurrentDev;
                DeviceAlarm alarm = CreateDevAlarm(dev);
                Bll bll           = Bll.NewBllNoRelation();
                var hisItem       = RemoveToHistory(alarm);
                bll.DevAlarmHistorys.Add(hisItem);
                AlarmHub.SendDeviceAlarms(alarm);
            });
            DeviceListBox1.AddMenu("消警", (se, arg) =>
            {
                //MessageBox.Show("消警" + DeviceListBox1.CurrentDev.Name);
                var dev           = DeviceListBox1.CurrentDev;
                DeviceAlarm alarm = new DeviceAlarm()
                {
                    Id         = dev.Id,
                    Level      = Abutment_DevAlarmLevel.无,
                    Title      = "消警" + dev.Id,
                    Message    = "设备消警",
                    CreateTime = new DateTime(2018, 8, 28, 9, 5, 34)
                }.SetDev(dev);
                AlarmHub.SendDeviceAlarms(alarm);
            });
        }
Example #24
0
    /// <summary>
    /// 设备告警
    /// </summary>
    /// <param name="devList"></param>
    public void OnDeviceAlarmRecieved(List <DeviceAlarm> devList)
    {
        try
        {
            FullViewController mainPage = FullViewController.Instance;
            AllDevAlarmPushInfo = new List <DeviceAlarm>();
            if (mainPage && mainPage.IsFullView)
            {
                foreach (var dev in devList)
                {
                    if (dev == null)
                    {
                        continue;
                    }
                    if (AllDevAlarmPushInfo.Count != 0)
                    {
                        DeviceAlarm devAlarm = AllDevAlarmPushInfo.Find(m => m != null && m.Level == Abutment_DevAlarmLevel.无 && m.DevId == dev.DevId);
                        if (devAlarm == null)
                        {
                            AllDevAlarmPushInfo.Remove(devAlarm);
                        }
                        else
                        {
                            AllDevAlarmPushInfo.Add(devAlarm);
                        }
                    }
                }
            }
            else
            {
                foreach (var alarm in devList)
                {
                    if (alarm == null)
                    {
                        continue;
                    }
                    AllDevAlarmPushInfo.Add(alarm);
                }
                foreach (var dev in AllDevAlarmPushInfo)
                {
                    if (dev == null)
                    {
                        continue;
                    }
                    if (dev.Level == Abutment_DevAlarmLevel.无)
                    {
                        AlarmPushInfo Alarm         = CurrentAlarmPushInfoList.Find(m => m != null && m.devAlarmInfo.Level == Abutment_DevAlarmLevel.无 && m.devAlarmInfo.DevId == dev.DevId);
                        AlarmPushInfo CompleteAlarm = CompleteAlarmPushInfoList.Find(n => n != null && n.devAlarmInfo.DevId == dev.DevId && n.devAlarmInfo.Level != Abutment_DevAlarmLevel.无);

                        if (Alarm != null || CompleteAlarm != null)
                        {
                            AlarmPushInfo NormalAlarmInformation = new AlarmPushInfo();
                            NormalAlarmInformation.SetAlarmInfo(dev);
                            CurrentAlarmPushInfoList.Add(NormalAlarmInformation);
                        }
                    }
                    else
                    {
                        AlarmPushInfo CurrentAlarm = CurrentAlarmPushInfoList.Find(m => m != null && m.devAlarmInfo.DevId == dev.DevId && m.devAlarmInfo.Level == dev.Level);
                        if (CurrentAlarm == null)
                        {
                            AlarmPushInfo AlarmInformation = new AlarmPushInfo();
                            AlarmInformation.SetAlarmInfo(dev);
                            CurrentAlarmPushInfoList.Add(AlarmInformation);
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
            Log.Error("AlarmPushManage.Error:" + e.ToString());
        }
    }
 /// <summary>
 /// 设备信息
 /// </summary>
 /// <param name="alarm"></param>
 public void SetAlarmInfo(DeviceAlarm alarm)
 {
     AlarmType    = AlarmPushInfoType.devAlarm;
     devAlarmInfo = alarm;
 }
        public static void DeviceAlarmAnalyse(DeviceEvent deviceEvent)
        {
            string DeviceNo    = deviceEvent.DeviceNo;
            string DeviceState = deviceEvent.DeviceState;

            if (DeviceState == null || DeviceState.Length < 32)
            {
                return;
            }
            for (int i = 0; i < 32; i++)
            {
                int keyi = 31 - i + 1;
                if (BaseModule.GetAlarmTypeByKey(keyi.ToString()) == null)
                {
                    continue;
                }
                if (keyi == 5)
                {
                    string s = "";
                }
                string key = DeviceNo + "_" + keyi;
                if (DeviceAlarmConllection.ContainsKey(key))
                {
                    DeviceAlarm alarm = DeviceAlarmConllection[key];
                    if (alarm.AlarmValue != DeviceState[i].ToString())
                    {
                        alarm.EndTime  = deviceEvent.EventTime;
                        alarm.Duration = Convert.ToInt64((alarm.EndTime - alarm.StartTime).TotalSeconds);
                        alarm.State    = "Old";

                        DeviceAlarmModule.UpdateDeviceAlarm(alarm);
                        DeviceAlarmConllection.Remove(key);

                        DeviceAlarm alarmNew = new DeviceAlarm();
                        alarmNew.DeviceNo   = DeviceNo;
                        alarmNew.AlarmValue = DeviceState[i].ToString();
                        alarmNew.StartTime  = deviceEvent.EventTime;
                        alarmNew.EndTime    = deviceEvent.EventTime;
                        alarmNew.Duration   = 0;
                        alarmNew.SaveTime   = DateTime.Now;
                        alarmNew.AlarmType  = keyi.ToString();
                        alarmNew.State      = "New";
                        try
                        {
                            long id = DeviceAlarmModule.AddDeviceAlarm(alarmNew);
                            if (id > 0)
                            {
                                alarmNew.Id = id;
                            }
                            DeviceAlarmConllection.Add(key, alarmNew);
                        }
                        catch { }
                    }
                }
                else
                {
                    DeviceAlarm alarm = new DeviceAlarm();
                    alarm.DeviceNo   = DeviceNo;
                    alarm.AlarmValue = DeviceState[i].ToString();
                    alarm.StartTime  = deviceEvent.EventTime;
                    alarm.EndTime    = deviceEvent.EventTime;
                    alarm.Duration   = 0;
                    alarm.SaveTime   = DateTime.Now;
                    alarm.AlarmType  = keyi.ToString();
                    alarm.State      = "New";
                    try
                    {
                        long id = DeviceAlarmModule.AddDeviceAlarm(alarm);
                        if (id > 0)
                        {
                            alarm.Id = id;
                        }
                        DeviceAlarmConllection.Add(key, alarm);
                    }
                    catch { }
                }
            }
        }
Example #27
0
    /// <summary>
    /// 区域是否有消防告警
    /// </summary>
    /// <param name="depId"></param>
    /// <returns></returns>
    public bool IsDepFireAlarm(int depId)
    {
        DeviceAlarm alarmT = AlarmInfoList.Find(dev => dev != null && dev.AreaId == depId && TypeCodeHelper.IsFireFightDevType(dev.DevTypeCode.ToString()));

        return(alarmT == null ? false : true);
    }