// Перезагружает конфигурацию одной тревоги. Если к примеру изменили её через конфигуратор тревог. public void LoadOneAlarm(int tagid) { lock (ConfigLocker) { if (tagid == null) { logger.Logged("Error", " TagName is null or empty.", "AlarmThreadManager", "LoadOneAlarm"); return; } AlarmThreadManagerConfig alarm_ = null; var tags = (from ti in context.Objects join to in context.Properties on ti.Id equals to.ObjectId where ti.Type == 2 && to.PropId == 0 && ti.Id == tagid select new { Id = ti.Id, Prop = to.Value }); var taglist = tags.ToList(); foreach (var tagjson in taglist) { dynamic alarm = _json.Deserialize(tagjson.Prop); var tag = new TagId { TagName = Convert.ToString(alarm.Connection), PollerId = Convert.ToInt32(alarm.Opc) }; var alarms = Convert.ToString(alarm.Alarms); if (alarms != null) { alarm_ = new AlarmThreadManagerConfig(); var _props = _json.Deserialize(alarms, alarm_.GetType()); alarm_ = (AlarmThreadManagerConfig)_props; if (alarm_.Enabled) { alarm_.TagId = Convert.ToInt32(tagjson.Id); alarm_.Tag = tag; if (alarm_.Sound) { _soundalarms.Add(tagjson.Id); } if (alarm_.HihiSeverity == null) { alarm_.HihiSeverity = Double.MaxValue; } if (alarm_.HiSeverity == null) { alarm_.HiSeverity = Double.MaxValue; } if (alarm_.LoSeverity == null) { alarm_.LoSeverity = Double.MinValue; } if (alarm_.LoloSeverity == null) { alarm_.LoloSeverity = Double.MinValue; } _cfgs.Add(alarm_); } var tagId = Convert.ToInt32(alarm.Id); if (alarm_.HihiSeverity == null) { alarm_.HihiSeverity = Double.MaxValue; } if (alarm_.HiSeverity == null) { alarm_.HiSeverity = Double.MaxValue; } if (alarm_.LoSeverity == null) { alarm_.LoSeverity = Double.MinValue; } if (alarm_.LoloSeverity == null) { alarm_.LoloSeverity = Double.MinValue; } } var index = -1; for (var cfgi = 0; cfgi < _cfgs.Count; cfgi++) { if (_cfgs[cfgi].TagId == tagid) { index = cfgi; break; } } if (index != -1) { _cfgs[index] = alarm_; } else { _cfgs.Add(alarm_); } } } }
// Загружает конфигурацию тревог при старте системы. public static void LoadAlarmsConfigurations() { lock (ConfigLocker) { _cfgs.Clear(); _cfgsEv.Clear(); _soundalarms.Clear(); var taglist = _tags.Where(x => x.Type == 2 && !String.IsNullOrEmpty(x.Prop)); foreach (var tagjson in taglist) { dynamic alarm = JsonConvert.DeserializeObject(tagjson.Prop); var tag = new TagId { TagName = ("Sfera." + Convert.ToString(alarm.Connection) + "." + tagjson.Name.Replace("_unreal", "")).Replace('/', '.'), PollerId = Convert.ToInt32(alarm.Opc) }; try { var events = Convert.ToString(alarm.Events); if (events != null && events != "") { var event_ = new EventThreadManagerConfig(); var _props = _json.Deserialize(events, event_.GetType()); event_ = (EventThreadManagerConfig)_props; if (event_.Enabled) { event_.Tag = tag; event_.TagId = Convert.ToInt32(tagjson.Id); _cfgsEv.Add(event_); } } } catch (Exception ex) { logger.Logged("Err", "add Event tag [" + tag.PollerId + "][" + tag.TagName + "] to alarmserver failed: " + ex.Message, "AlarmThreadManager", "LoadAlarmsLastStates"); } try { var tagId = Convert.ToInt32(tagjson.Id); var alarms = Convert.ToString(alarm.Alarms); if (alarms != null && alarms != "") { var alarm_ = new AlarmThreadManagerConfig(); var _props = _json.Deserialize(alarms, alarm_.GetType()); alarm_ = (AlarmThreadManagerConfig)_props; if (alarm_.Enabled) { alarm_.TagId = Convert.ToInt32(tagjson.Id); alarm_.Tag = tag; if (alarm_.Sound) { _soundalarms.Add(tagId); } if (alarm_.HihiSeverity == null) { alarm_.HihiSeverity = Double.MaxValue; } if (alarm_.HiSeverity == null) { alarm_.HiSeverity = Double.MaxValue; } if (alarm_.LoSeverity == null) { alarm_.LoSeverity = Double.MinValue; } if (alarm_.LoloSeverity == null) { alarm_.LoloSeverity = Double.MinValue; } _cfgs.Add(alarm_); } logger.Logged("Info", "Конфигурация тревоги [" + tag.PollerId + "][" + tag.TagName + "] добавлена...", "AlarmThreadManager", "LoadAlarmsLastStates"); } } catch (Exception ex) { logger.Logged("Err", "Неверная конфигурация тревоги [" + tag.PollerId + "][" + tag.TagName + "] : " + ex.Message, "AlarmThreadManager", "LoadAlarmsLastStates"); } } } }