/// <summary>Handles a message.</summary> public void HandleMessage(IMessage message) { try { Init(); int count1 = bll.DevInfos.GetCount(); string msg = Encoding.UTF8.GetString(message.Body); events recv = JsonConvert.DeserializeObject <events>(msg); if (recv == null) { return; } int nsrc = recv.src; DevInfo di = null; if (nsrc == 1 || nsrc == 2) { if (recv.raw_id == null || recv.raw_id == "") { return; } di = DevList.Find(p => p.Abutment_DevID == recv.raw_id); } else if (nsrc == 3) { if (recv.node == null || recv.node == "") { return; } di = DevList.Find(p => p.Code == recv.node); } long lTimeStamp = recv.t * 1000; bool bFlag = false; int nLevel = (int)recv.level; Abutment_DevAlarmLevel adLevel = (Abutment_DevAlarmLevel)nLevel; if (nLevel == 0) { adLevel = Abutment_DevAlarmLevel.未定; } if (di == null) { //DevAlarm da2 = new DevAlarm(); //da2.Abutment_Id = recv.id; //da2.Title = recv.title; //da2.Msg = recv.msg; //da2.Level = adLevel; //da2.Code = recv.code; //da2.Src = (Abutment_DevAlarmSrc)recv.src; //da2.DevInfoId = 0;//未找到设备 //da2.Device_desc = recv.deviceDesc; //da2.AlarmTime = TimeConvert.ToDateTime(lTimeStamp); //da2.AlarmTimeStamp = lTimeStamp; //bll.DevAlarms.Add(da2);//未找到设备的告警也记录下来, //Log. bv //LogEvent.Info("RealAlarm", string.Format("没找到设备信息,json:{0}", msg)); //LogEvent.Info("RealAlarm", string.Format("没找到设备信息:{0}", recv.title)); SaveMessageToFile(msg, "noDev"); return;//没找到设备信息,则不做任何处理, } if (recv.title.Contains("防拆") || recv.msg.Contains("防拆")) { SaveMessageToFile(msg, "filter"); return;//过滤掉有“防拆”字段的告警,没有意义。 } LogEvent.Info("RealAlarm", string.Format("获取设备:{0}", recv.title)); SaveMessageToFile(msg, ""); DevAlarm da = DaList.Find(p => p.DevInfoId == di.Id && p.AlarmTimeStamp == lTimeStamp); if (da == null) { if (recv.state == 0) { da = CreateDevAlarm(recv, di, lTimeStamp, adLevel); bll.DevAlarms.Add(da); DaList.Add(da); bFlag = true; } } else { if (recv.state == 1 || recv.state == 2) { DevAlarmHistory da_history = da.RemoveToHistory(); DaList.Remove(da); bll.DevAlarms.DeleteById(da.Id); bll.DevAlarmHistorys.Add(da_history);//告警恢复 放到历史数据中 da.Level = Abutment_DevAlarmLevel.无; bFlag = true; } else if (adLevel != da.Level) { da.Level = adLevel; da.Title = recv.title; da.Msg = recv.msg; bll.DevAlarms.Edit(da); bFlag = true; } } if (bFlag) { OnDevAlarmReceived(da); } int count2 = bll.DevInfos.GetCount(); if (count2 > count1) { Log.Info(LogTags.RealAlarm, "添加了数据:" + count1 + "->" + count2); } return; } catch (Exception ex) { Log.Info(LogTags.RealAlarm, "HandleMessage:" + ex); } }