private void EngineClient_NewAlarmsFired(List <DbModel.Location.Alarm.LocationAlarm> obj)
        {
            var alarms = obj.ToTModel().ToArray();

            AlarmHub.SendLocationAlarms(alarms);
            AreaCanvas1.ShowLocationAlarms(alarms);
        }
    // Use this for initialization
    void Start()
    {
        RegisterImporter();
        if (alarmHub == null)
        {
            alarmHub = new AlarmHub();
        }
        if (echoHub == null)
        {
            echoHub = new EchoHubT();
        }
        URI = new Uri(string.Format("http://{0}:{1}/realtime", Ip, Port));
        // Create the SignalR connection, passing all the three hubs to it
        signalRConnection = new Connection(URI, alarmHub, echoHub);

        signalRConnection.JsonEncoder = new LitJsonEncoder();

        signalRConnection.OnStateChanged  += signalRConnection_OnStateChanged;
        signalRConnection.OnError         += signalRConnection_OnError;
        signalRConnection.OnNonHubMessage += signaleRConnection_OnNoHubMsg;
        signalRConnection.OnConnected     += (connection) =>
        {
            // Call the demo functions
            echoHub.Send("Start Connect...");
        };

        // Start opening the signalR connection
        signalRConnection.Open();
    }
        private void BtnSendDevAlarms_Click(object sender, RoutedEventArgs e)
        {
            if (BtnSendDevAlarms.Content.ToString() == "逐个发送告警")
            {
                BtnSendDevAlarms.Content = "停止发送告警";
                int interval  = TxtSendDevAlarmInterval.Text.ToInt();
                int onceCount = TxtOnceSendCount.Text.ToInt();

                var currentDevAlarms = DataGridDeviceAlarms.ItemsSource as List <DeviceAlarm>;
                sendDevAlarmsWorker = Worker.Run(() =>
                {
                    List <DeviceAlarm> sendAlarms = new List <DeviceAlarm>();
                    for (int i = 0; i < currentDevAlarms.Count; i++)
                    {
                        var devAlarm = currentDevAlarms[i];
                        sendAlarms.Add(devAlarm);
                        if ((i + 1) % onceCount == 0)
                        {
                            Log.Info(LogTags.EventTest,
                                     string.Format("发送告警:{0}({1}/{2})", devAlarm, i + 1, currentDevAlarms.Count));
                            AlarmHub.SendDeviceAlarms(devAlarm);
                            Thread.Sleep(interval);
                        }
                    }
                }, null, null, "", true);
            }
            else
            {
                BtnSendDevAlarms.Content = "逐个发送告警";

                sendDevAlarmsWorker.CancelAsync();
            }
        }
Exemple #4
0
 private async void InitAlarmHub()
 {
     alarmHub = new AlarmHub(SignalRServerURI);
     alarmHub.GetDeviceAlarms   += AlarmHub_GetDeviceAlarms;
     alarmHub.GetLocationAlarms += AlarmHub_GetLocationAlarms;
     await alarmHub.Start();
 }
Exemple #5
0
        private void BtnRemoveAlarm_Click(object sender, RoutedEventArgs e)
        {
            var service = new LocationService();
            var alarms  = service.GetLocationAlarms(2, false);

            AlarmHub.SendLocationAlarms(alarms.ToArray());
        }
Exemple #6
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();
            }
        }
Exemple #7
0
        private void BtnPushAlarm_OnClick(object sender, RoutedEventArgs e)
        {
            //LocationCallbackService.NotifyServiceStop();
            var service = new LocationService();
            var alarms  = service.GetLocationAlarms(2);

            AlarmHub.SendLocationAlarms(alarms.ToArray());
        }
        /// <summary>
        /// 批量删除告警
        /// </summary>
        /// <param name="idList"></param>
        /// <returns></returns>
        public bool DeleteLocationAlarm(List <int> idList)
        {
            BLL.Bll bll = new BLL.Bll(false, true, true);
            BLL.Buffers.AuthorizationBuffer             ab           = BLL.Buffers.AuthorizationBuffer.Instance(bll);
            List <DbModel.Location.Alarm.LocationAlarm> reviseAlarms = ab.DeleteSpecifiedLocationAlarm(idList);

            if (reviseAlarms == null || reviseAlarms.Count == 0)
            {
                return(false);
            }
            else
            {
                //新增,服务端消警后,把消警信息发给客户端
                var alarms = reviseAlarms.ToTModel().ToArray();
                AlarmHub.SendLocationAlarms(alarms);
                return(true);
            }
        }
        public override bool TickFunction()
        {
            try
            {
                //每天清除进入区域记录
                DateTime now = DateTime.Now;
                if (now.Hour == 23)
                {
                    bool result = DeleteRecord();
                }

                //产生告警
                List <LocationAlarm> newAlarmList = new List <LocationAlarm>();
                newAlarmList.AddRange(GetAlarmList());
                dbAlarmList = db.LocationAlarms.ToList();
                foreach (var item in dbAlarmList)
                {
                    newAlarmList.RemoveAll(i => i.PersonnelId == item.PersonnelId && i.AreaId == item.AreaId && i.AlarmType == item.AlarmType);
                }
                if (newAlarmList != null && newAlarmList.Count > 0)
                {
                    //dbAlarmList.AddRange(newAlarmList);
                    List <LocationAlarm> boolList = new List <LocationAlarm>();
                    foreach (LocationAlarm alarm in newAlarmList)
                    {
                        bool result = db.LocationAlarms.Add(alarm);
                        if (result)
                        {
                            boolList.Add(alarm);
                        }
                    }
                    //db.LocationAlarms.AddRange(newAlarmList);

                    AlarmHub.SendLocationAlarms(boolList.ToTModel().ToArray());
                }
            }
            catch (Exception ex)
            {
                Log.Error("SignInAlarmThread:" + ex.ToString());
            }

            return(true);
        }
Exemple #10
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);
            });
        }
Exemple #11
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);
            });
        }
        private void MenuSendDeviceAlarm_Click(object sender, RoutedEventArgs e)
        {
            var alarm = DataGridDeviceAlarms.SelectedItem as DeviceAlarm;

            AlarmHub.SendDeviceAlarms(alarm);
        }
 private void Mh_DevAlarmReceived(DbModel.Location.Alarm.DevAlarm obj)
 {
     AlarmHub.SendDeviceAlarms(obj.ToTModel());
 }
 private void EngineClient_NewAlarmsFired(List <DbModel.Location.Alarm.LocationAlarm> obj)
 {
     AlarmHub.SendLocationAlarms(obj.ToTModel().ToArray());
 }
Exemple #15
0
 private void EngineClient_NewAlarmsFired(List <DbModel.Location.Alarm.LocationAlarm> obj)
 {
     Log.Info("LocationAlarm", "AlarmHub.SendLocationAlarms:" + obj.Count);
     AlarmHub.SendLocationAlarms(obj.ToTModel().ToArray());
 }
        private void SendAlarm()
        {
            try
            {
                //var count1 = bll.Archors.GetCount();

                UDPArchorList list0 = GetOfflineList();

                List <DevAlarm> alarms = GenerateNewAlarm(list0);

                using (Bll bll = Bll.NewBllNoRelation())
                {
                    if (currentAlarms == null)
                    {
                        var realAlarms = bll.DevAlarms.FindAll(i => i.Src == Abutment_DevAlarmSrc.人员定位);//拿到数据库中已经有的告警数据
                        currentAlarms = new DbUpdateSet <DevAlarm>(realAlarms);
                    }

                    var set = currentAlarms;

                    set.Update(alarms);//更新告警

                    bll.DevAlarms.AddRange(set.AddList);

                    bll.DevAlarms.EditRange(set.EditList);

                    List <DevAlarmHistory> newHist = new List <DevAlarmHistory>();
                    foreach (var item in set.DeleteList)
                    {
                        var hisItem = item.RemoveToHistory();
                        newHist.Add(hisItem);

                        var clone = item.Clone();
                        clone.Msg   = clone.Msg.Replace("基站离线", "基站正常");
                        clone.Level = Abutment_DevAlarmLevel.无;
                        set.SendList.Add(clone);

                        set.CurrentList.Remove(item);
                    }
                    bll.DevAlarmHistorys.AddRange(newHist);
                    bll.DevAlarms.RemoveList(set.DeleteList);

                    if (set.IsChanged)
                    {
                        LocationService.RefreshDeviceAlarmBuffer(Name);
                    }

                    if (AppContext.AnchorScanSendMode == 1)
                    {
                        set.SendList.AddRange(set.CurrentList);//每次都发送当前的告警和恢复的告警
                    }

                    var sendList = set.SendList;

                    foreach (var item in sendList)
                    {
                        item.DictKey = item.Msg;
                        if (devDict.ContainsKey(item.DevInfoId))
                        {
                            var dev = devDict[item.DevInfoId];
                            item.DevInfo = dev;
                        }
                        else
                        {
                            Log.Error(Name, string.Format("未查到设备 devId:{0},code:{1}", item.DevInfoId, item.Code));
                        }
                    }

                    var alarmsM = sendList.ToTModel().ToArray();

                    //var count2 = bll.Archors.GetCount();
                    //if (count2 != count1)
                    //{
                    //    Log.Error(Name, count1 + "-" + count2);
                    //}

                    Log.Info(Name, string.Format("发送告警 当前离线数量:{0},新离线数量:{1},恢复数量:{2},发送数量:{3}", alarms.Count, set.AddList.Count, set.DeleteList.Count, alarmsM.Length));
                    AlarmHub.SendDeviceAlarms(alarmsM);
                }
            }
            catch (Exception ex)
            {
                Log.Error(Name, "Exception!!:" + ex);
            }
        }