private static void AddEvent(EventThreadManagerConfig eventConfig, float value) { var dateTime = DateTime.Now; var dateTimeString = dateTime.ToString(DtFormat); // Добавляем event в базу. //var rawVal = value.Replace(',', '.'); var event_ = context.Events.Create(); event_.TagId = eventConfig.TagId; event_.Value = value; event_.Time = dateTime; context.Events.Add(event_); // сохраняем context.SaveChanges(); var z = (from ti in context.Events where ti.TagId == eventConfig.TagId //&& ti.STime == dateTime orderby ti.Time descending select ti.Id); var id = z.ToList();// Создадим тревогу чтобы не дергать каждый раз базу. var result = new EventThreadManagerEvent { Id = id.First(), TagId = eventConfig.TagId, Time = dateTime, Value = value, }; _events.Add(result); logger.Logged("Info", "add event [" + eventConfig.TagId + "][" + value + "] to alarmserver...", "AlarmThreadManager", "OpenAlarm"); }
// Загружает конфигурацию тревог при старте системы. 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"); } } } }