public int Delete(AlarmLog entityToInsert) { using (Conn) { return(Conn.Delete(entityToInsert)); } }
public int Update(AlarmLog entityToInsert) { using (Conn) { return(Conn.Update(entityToInsert)); } }
public IActionResult Remove(Guid id) { using (var db = new AllInOneContext.AllInOneContext()) { try { AlarmLog delObj = db.AlarmLog.FirstOrDefault(s => s.AlarmLogId.Equals(id)); if (delObj == null || !delObj.AlarmLogId.Equals(id)) { return(NotFound()); } db.AlarmLog.Remove(delObj); db.SaveChanges(); return(NoContent()); } catch (Exception ex) { _logger.LogError("删除报警日志{0}异常,Message:{1}\r\n,StackTrace{2}", id, ex.Message, ex.StackTrace); return(BadRequest(new ApplicationException() { ErrorCode = "Unknow", ErrorMessage = ex.Message })); } } }
public int Insert(AlarmLog entityToInsert) { using (Conn) { return(Conn.Insert <int>(entityToInsert)); } }
/// <summary> /// 新增要上传到上级系统的报警消息 /// </summary> /// <param name="log"></param> public void ForwardAlarmLog(AlarmLog log) { lock (m_logLockObj) { m_alarmLogList.Add(log); m_forwardWaiter.Set(); } }
/// <summary> /// 获取设备报警配置 /// </summary> /// <param name="db"></param> /// <param name="alarmLog"></param> /// <returns></returns> private AlarmSetting GetAlarmSetting(AllInOneContext.AllInOneContext db, AlarmLog alarmLog) { AlarmSetting setting = db.AlarmSetting.Include(t => t.Schedule).ThenInclude(t => t.ScheduleCycle).ThenInclude(t => t.DayPeriods).ThenInclude(t => t.TimePeriods). Include(t => t.Schedule).ThenInclude(t => t.ScheduleCycle).ThenInclude(t => t.CycleType). Include(t => t.AlarmSource).ThenInclude(t => t.Organization).Include(t => t.AlarmType). FirstOrDefault(p => p.AlarmSourceId.Equals(alarmLog.AlarmSourceId) && p.AlarmTypeId.Equals(alarmLog.AlarmTypeId)); return(setting); }
public void Validate(AlarmLog obj) { if (!obj.Title.IsValidLength(1, 200)) { throw new Exception(Resources.Error_AlarmLogTitleInvalid); } if (!obj.Note.IsValidLength(-1, 500)) { throw new Exception(Resources.Error_AlarmLogNoteInvalid); } }
public IActionResult Add([FromBody] AlarmLog alarmLog) { if (alarmLog == null) { return(BadRequest("alarm log is null")); } using (var db = new AllInOneContext.AllInOneContext()) { try { _logger.LogInformation("收到报警日志....\r\n{0}", JsonConvert.SerializeObject(alarmLog)); if (alarmLog.AlarmLogId.Equals(Guid.Empty)) { alarmLog.AlarmLogId = Guid.NewGuid(); } alarmLog.AlarmLevelId = Guid.Parse("A0002016-E009-B019-E001-ABCD12900001"); alarmLog.ApplicationId = Guid.Parse("8DB3D774-5F99-4AA5-BA30-73E401137837"); alarmLog.AlarmStatusId = Guid.Parse("A0002016-E009-B019-E001-ABCD13100001"); alarmLog.AlarmStatus = db.SystemOption.FirstOrDefault(t => t.SystemOptionId.Equals(alarmLog.AlarmStatusId)); alarmLog.TimeCreated = DateTime.Now; db.AlarmLog.Add(alarmLog); db.SaveChanges(); _logger.LogInformation("完成保存报警日志......"); //报警类型 //报警设备 alarmLog.AlarmType = db.SystemOption.FirstOrDefault(t => t.SystemOptionId.Equals(alarmLog.AlarmTypeId)); alarmLog.AlarmSource = db.IPDeviceInfo.Include(t => t.Organization).FirstOrDefault(t => t.IPDeviceInfoId.Equals(alarmLog.AlarmSourceId)); //将报警日志加入队列 AlarmProcessExecutor.Instance.AddAlarmLogAction(alarmLog); _logger.LogInformation("完成报警日志处理...."); //启动应急预案 return(CreatedAtAction("", alarmLog)); } catch (DbUpdateException ex) { _logger.LogError("添加报警日志异常,Message:{0}\r\nStackTrace:{1}\r\n{2}", ex.Message, ex.StackTrace, ex.InnerException); return(BadRequest(new ApplicationException() { ErrorCode = "DbUpdate", ErrorMessage = ex.Message })); } catch (Exception ex) { _logger.LogError("添加报警日志异常,Message:{0}\r\nStackTrace:{1}", ex.Message, ex.StackTrace); return(BadRequest(new ApplicationException() { ErrorCode = "Unknow", ErrorMessage = ex.Message })); } } }
/// <summary> /// 转发报警到上级 /// </summary> /// <param name="alarmLog"></param> private void ForwardAlarmToTopOrganization(AlarmLog alarmLog) { Task.Run(() => { using (var db = new AllInOneContext.AllInOneContext()) { string error = ""; var topApplicationCenter = db.Organization.Include(t => t.Center). OrderBy(t => t.OrganizationFullName). Select(t => t.Center). FirstOrDefault(); if (topApplicationCenter != null && topApplicationCenter.EndPoints != null && topApplicationCenter.EndPoints.Count > 0) { _logger.LogInformation("开始推送{1}发生的{2}报警消息到上级系统...", alarmLog.AlarmSource.IPDeviceName, alarmLog.AlarmType.SystemOptionName); EndPointInfo endPoint = topApplicationCenter.EndPoints.First(); string url = string.Format("http://{0}:{1}/Alarm/AlarmLog/Publish", endPoint.IPAddress, endPoint.Port); _logger.LogInformation("推送URL:{0}...", url); var result = HttpClientHelper.Post <AlarmLog>(alarmLog, url, false); if (result.Success) { alarmLog.UploadStatus = 1; db.SaveChanges(); _logger.LogInformation("报警消息推送到上级系统成功"); } else { _logger.LogInformation("报警消息推送到上级系统失败,原因:{0},将推送添加到报警转发队列", result); ForwardAlarmLogTask.Instance.ForwardAlarmLog(alarmLog); } } else { error = "未配置上级应用服务"; } if (!string.IsNullOrEmpty(error)) { error = string.Format("由于{0},推送{1}发生的{2}报警消息到上级系统失败!", error, alarmLog.AlarmSource.IPDeviceName, alarmLog.AlarmType.SystemOptionName); ForwardAlarmLogError forwardErr = new ForwardAlarmLogError() { ErrorDesc = error, CreateTime = DateTime.Now }; MQPulish.PublishMessage("ForwardAlarmLogError", forwardErr); //改为提示..... } } }); }
public RepositoryActionResult <AlarmLog> AddAlarmLogValue(AlarmLog alarmvalue) { try { context.AlarmLog.Add(alarmvalue); context.SaveChanges(); return(new RepositoryActionResult <AlarmLog>(alarmvalue, RepositoryActionStatus.Created)); } catch (Exception) { return(new RepositoryActionResult <AlarmLog>(null, RepositoryActionStatus.Error)); } }
public IActionResult Post([FromBody] AlarmLog alarmlogvalue) { var newAlarmLogValue = repo.AddAlarmLogValue(alarmlogvalue); if (newAlarmLogValue.Status == RepositoryActionStatus.Created) { PushNotifications.AlarmNotification(alarmlogvalue); return(Ok()); } else { return(BadRequest()); } }
private void logGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (logGridView.SelectedRows.Count == 0) { MessageBox.Show(Resources.Warning_NoRecordSelected); return; } _editingLog = AlarmBLL.Current.GetByID(logGridView.SelectedRows[0].Cells["AlarmLogID"].Value.ToInt32TryParse()); if (_editingLog != null) { noteTextBox.Text = _editingLog.Note; saveButton.Enabled = true; } }
public bool Insert(AlarmLog obj) { using (var entityConntext = new GeoViewerEntities()) { Validate(obj); if (AppContext.Current.OpenProject != null) { obj.ProjectID = AppContext.Current.OpenProject.ProjectID; } obj.IsEnded = false; entityConntext.AlarmLogs.AddObject(obj); return(entityConntext.SaveChanges() > 0); } }
public bool Update(AlarmLog obj) { using (var entityConntext = new GeoViewerEntities()) { SecurityBLL.Current.CheckPermissionThrowException(new string[] { SecurityBLL.ROLE_ALARM_EDIT, SecurityBLL.ROLE_ALARM_MANAGE }); Validate(obj); obj.LastEditedDate = DateTime.Now; obj.LastEditedUser = AppContext.Current.LogedInUser.Username; entityConntext.AttachUpdatedObject(obj); return(entityConntext.SaveChanges() > 0); } }
void AddAlarmLog(byte alarmType, DateTime date, bool testOnly) { if (testOnly) { LogService.Logger.Debug(string.Format("AddAlarm({0},{1})", alarmType, date.ToString("HH:mm:ss"))); return; } using (var ctx = new NovaAlertContext()) { var al = new AlarmLog() { AlarmType = alarmType, AlarmTime = date }; ctx.AlarmLogs.Add(al); ctx.SaveChanges(); } }
public static void Main(string[] args) { AlarmLog al = new AlarmLog() { AlarmLogId = Guid.NewGuid(), AlarmSourceId = Guid.NewGuid(), Description = "移动侦测报警.....", AlarmTypeId = Guid.Parse("A0002016-E009-B019-E001-ABCD00001001"), TimeCreated = DateTime.Now, AlarmLevelId = Guid.Parse("A0002016-E009-B019-E001-ABCD12900001"), }; Console.WriteLine(JsonConvert.SerializeObject(al)); Console.ReadLine(); var host = new WebHostBuilder() .UseKestrel() .UseStartup <Startup>() .Build(); host.Run(); }
public IActionResult GetById(Guid id) { using (var db = new AllInOneContext.AllInOneContext()) { try { AlarmLog alarmLog = db.AlarmLog.FirstOrDefault(t => t.AlarmLogId.Equals(id)); if (alarmLog == null || !alarmLog.AlarmLogId.Equals(id)) { return(NotFound()); } return(new OkObjectResult(alarmLog)); } catch (Exception ex) { _logger.LogError("获取报警日志记录{0}异常,Message:{1}\r\n,StackTrace:{2}.", id, ex.Message, ex.StackTrace); return(BadRequest(new ApplicationException() { ErrorCode = "Unknow", ErrorMessage = ex.Message })); } } }
public void Run() { Task.Factory.StartNew(() => { _logger.LogInformation("Start forward alarmlog task......"); while (true) { if (m_alarmLogList.Count == 0) { m_forwardWaiter.WaitOne(-1); } using (var db = new AllInOneContext.AllInOneContext()) { //默认第一个为本地应用中心节点() var topApplicationCenter = db.Organization.Include(t => t.Center). OrderBy(t => t.OrganizationFullName).Select(t => t.Center). FirstOrDefault(); if (topApplicationCenter == null || topApplicationCenter.EndPoints == null || topApplicationCenter.EndPoints.Count == 0) { _logger.LogInformation("未配置上级服务器IP,报警上传等待10 min后再检测......"); m_forwardWaiter.WaitOne(10 * 60000); continue; } EndPointInfo endPoint = topApplicationCenter.EndPoints.First(); string url = string.Format("http://{0}:{1}/Alarm/AlarmLog/Publish", endPoint.IPAddress, endPoint.Port); //上传报警记录 string error = ""; lock (m_logLockObj) { for (int i = m_alarmLogList.Count - 1; i >= 0; i--) { AlarmLog log = m_alarmLogList[i]; if (log.UploadCount < 10) { var result = HttpClientHelper.Post <AlarmLog>(log, url); if (result.Success) { log.UploadStatus = 1; //上传完成 } else { log.UploadCount++; } db.AlarmLog.Update(log); db.SaveChanges(); m_alarmLogList.RemoveAt(i); } else if (log.UploadCount == 10) { //上传次数达到10次,记录.... log.UploadCount++; db.AlarmLog.Update(log); db.SaveChanges(); m_alarmLogList.Remove(log); //广播消息 error = string.Format("多次尝试推送报警失败,取消推送{0}发生的{1}报警消息到上级系统!", log.AlarmSource.IPDeviceName, log.AlarmType.SystemOptionName); ForwardAlarmLogError forwardErr = new ForwardAlarmLogError() { ErrorDesc = error, CreateTime = DateTime.Now }; MQPulish.PublishMessage("ForwardAlarmLogError", forwardErr); } } } } // m_uploadWaiter.WaitOne(10 * 1000); } }); }
public static int Update(AlarmLog t) { return(BaseDA.Update <AlarmLog>("UpdateAlarmLog", t)); }
public static object Insert(AlarmLog t) { return(BaseDA.Insert <AlarmLog>("InsertAlarmLog", t)); }
private void InsertSensorData(Equipment ex, Sensor sx, DateTime dt, Alarm al) { try { decimal value = 0; List <decimal> allVal = new List <decimal>(); List <SensorData> dr = new List <SensorData>(); DateTime dstart = new DateTime(dt.Year, dt.Month, dt.Day); DateTime dend = dt.AddHours(24); Random rx = new Random(); while (dstart < dend) { double v = 0; if (sx.Sensor_Category.Equals("Efficiency")) { v = rx.NextDouble() * 100; if (v < 50) { v += 40; } if (v > 90) { v = 90; } } else if (sx.Sensor_Category.Equals("Up Time")) { v = rx.NextDouble() * 3; if (v < 1) { v += 1; } if (v > 3) { v = 3; } } else if (sx.Sensor_Category.Equals("Power Consumed")) { v = (0.3 + rx.NextDouble()) * 15; } else if (sx.Sensor_Category.Equals("Cost")) { v = rx.NextDouble() * 10; } else { v = (0.3 + rx.NextDouble()) * 20; } SensorData sxx = new SensorData(); sxx.Related_Equipment = ex.Record_ID.ToString(); sxx.Related_Sensor = sx.Record_ID.ToString(); sxx.TimeStamp = dstart.ToString("s") + "Z"; sxx.TimeStampDt = DateTime.SpecifyKind(dstart, DateTimeKind.Utc); sxx.Sensor_Name_Lookup = sx.Tag.ToLower().Replace("/", "_"); sxx.Value = Math.Round(v, 4).ToString(); sxx.DecValue = Math.Round(v, 4); sxx.Site = ex.Site_Name_Lookup; sxx.SiteId = ex.Related_Site; sxx.EquipmentName = ex.Equipment_Name; allVal.Add((decimal)sxx.DecValue); dr.Add(sxx); dstart = dstart.AddHours(3); } InfluxConnector conn = new InfluxConnector(envconfiguration.GetSection("InfluxServer").Value, envconfiguration.GetSection("InfluxToken").Value, envconfiguration.GetSection("InfluxBucket").Value, envconfiguration.GetSection("InfluxOrg").Value); conn.WriteData(dr); SensorData s = new SensorData(); s.Related_Equipment = ex.Record_ID.ToString(); s.Related_Sensor = sx.Record_ID.ToString(); s.TimeStamp = dt.ToString("s") + "Z"; s.TimeStampDt = DateTime.SpecifyKind(dt, DateTimeKind.Utc); s.Sensor_Name_Lookup = sx.Tag.ToLower().Replace("/", "_"); if (sx.Sensor_Category.Equals("Efficiency")) { value = allVal.Average(); } else { value = allVal.Sum(); } s.Value = value.ToString(); List <SensorData> dx = UpsertData <SensorData>("SensorData", s, SensorData.fieldIds); if (dx.Count > 0) { // Alarm if (al != null) { bool isAlarm = false; decimal alVal = Decimal.Parse(al.Formula_Value); if (al.Formula_Operator.Equals(">")) { if (value > alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("<")) { if (value < alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals(">=")) { if (value >= alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("<=")) { if (value <= alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("==")) { if (value == alVal) { isAlarm = true; } } if (isAlarm) { AlarmLog a = new AlarmLog(); a.Alarm_Text = al.Alarm_Name + " Raised - " + al.Priority + " for " + ex.Site_Name_Lookup + "-" + ex.Equipment_Name; a.Related_Equipment = ex.Record_ID.ToString(); a.Related_Sensor_Datum = dx[0].Record_ID.ToString(); a.Related_Alarm = al.Record_ID.ToString(); List <AlarmLog> da = UpsertData <AlarmLog>("AlarmLog", a, AlarmLog.fieldIds); } } } } catch (Exception exx) { } }
private void InsertMQQTSensorData(Equipment ex, Sensor sx, DateTime dt, Alarm al, String value) { try { List <decimal> allVal = new List <decimal>(); List <SensorData> dr = new List <SensorData>(); double v = 0; Double.TryParse(value, out v); SensorData sxx = new SensorData(); sxx.Related_Equipment = ex.Record_ID.ToString(); sxx.Related_Sensor = sx.Record_ID.ToString(); sxx.TimeStamp = dt.ToString("s") + "Z"; sxx.TimeStampDt = DateTime.SpecifyKind(dt, DateTimeKind.Utc); sxx.Sensor_Name_Lookup = sx.Tag.ToLower().Replace("/", "_"); sxx.Value = Math.Round(v, 4).ToString(); sxx.DecValue = Math.Round(v, 4); sxx.Site = ex.Site_Name_Lookup; sxx.SiteId = ex.Related_Site; sxx.EquipmentName = ex.Equipment_Name; allVal.Add((decimal)sxx.DecValue); dr.Add(sxx); //Write to Influx InfluxConnector conn = new InfluxConnector(envconfiguration.GetSection("InfluxServer").Value, envconfiguration.GetSection("InfluxToken").Value, envconfiguration.GetSection("InfluxBucket").Value, envconfiguration.GetSection("InfluxOrg").Value); conn.WriteData(dr); String measure = sx.Tag.Replace("/", "_"); // Get data for current day from influx List <FluxTable> tab = conn.ReadData(ex.Record_ID.ToString(), dt, measure).Result; //Get data for current day from QB if (tab != null) { if (tab.Count > 0) { FluxTable ft = tab[0]; if (ft.Records.Count > 0) { foreach (var rec in ft.Records) { String cx = rec.GetValue().ToString(); decimal dxm = 0; if (Decimal.TryParse(cx, out dxm)) { allVal.Add(dxm); } } } } } DateTime start = new DateTime(dt.Year, dt.Month, dt.Day); SensorData s = new SensorData(); s.Related_Equipment = ex.Record_ID.ToString(); s.Related_Sensor = sx.Record_ID.ToString(); s.TimeStamp = start.ToString("s") + "Z"; s.TimeStampDt = DateTime.SpecifyKind(start, DateTimeKind.Utc); s.Sensor_Name_Lookup = sx.Tag.ToLower().Replace("/", "_"); decimal sensorValue = 0; if (sx.Sensor_Category.Equals("Efficiency")) { sensorValue = allVal.Average(); } else { sensorValue = allVal.Sum(); } s.Value = sensorValue.ToString(); List <SensorData> sensorData = GetData <SensorData>("SensorData", SensorData.fieldIds, "{15.EX.'" + ex.Record_ID + "'}AND{8.EX." + sx.Record_ID + "}AND{11.OBF.'" + dt.ToString("yyyy-MM-dd") + "'}AND{11.AF.'" + dt.AddDays(-2).ToString("yyyy-MM-dd") + "'}"); var ext = sensorData.Where(u => u.TimeStamp.Equals(dt.ToString("MM/dd/yyyy") + " 12:00:00 AM")).FirstOrDefault(); if (ext != null) { s.Record_ID = ext.Record_ID; } List <SensorData> dx = UpsertData <SensorData>("SensorData", s, SensorData.fieldIds); if (dx.Count > 0) { // Alarm if (al != null) { bool isAlarm = false; decimal alVal = Decimal.Parse(al.Formula_Value); if (al.Formula_Operator.Equals(">")) { if (sensorValue > alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("<")) { if (sensorValue < alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals(">=")) { if (sensorValue >= alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("<=")) { if (sensorValue <= alVal) { isAlarm = true; } } else if (al.Formula_Operator.Equals("==")) { if (sensorValue == alVal) { isAlarm = true; } } if (isAlarm) { AlarmLog a = new AlarmLog(); a.Alarm_Text = al.Alarm_Name + " Raised - " + al.Priority + " for " + ex.Site_Name_Lookup + "-" + ex.Equipment_Name; a.Related_Equipment = ex.Record_ID.ToString(); a.Related_Sensor_Datum = dx[0].Record_ID.ToString(); a.Related_Alarm = al.Record_ID.ToString(); List <AlarmLog> da = UpsertData <AlarmLog>("AlarmLog", a, AlarmLog.fieldIds); } } } } catch (Exception exx) { } }
/// <summary> /// Check sensor value and auto add alarm log if it is out of range. /// Non auto save changed to database, you must call entityConntext.SaveChanges() to save changed. /// </summary> /// <param name="sensorValue"></param> /// <returns></returns> public bool CheckAlarm(SensorValue sensorValue) { var sensor = sensorValue.Sensor; if (sensor.AlarmEnabled) { if ((sensor.MinValue != null && sensor.MinValue > sensorValue.CalcValue) || (sensor.MaxValue != null && sensor.MaxValue < sensorValue.CalcValue)) { if (sensor.AlarmFlag) { var lastAlarm = sensor.AlarmLogs.LastOrDefault( ent => !ent.IsEnded && ent.StartAlarmDatetime <= sensorValue.MeaTime); if (lastAlarm == null || lastAlarm.CalcValue == sensorValue.CalcValue) { return(false); } } // Add Alarm var alarm = new AlarmLog(); alarm.SensorID = sensor.SensorID; // Set project ID alarm.ProjectID = sensor.ProjectID; alarm.CalcValue = sensorValue.CalcValue; alarm.IsEnded = false; alarm.StartAlarmDatetime = sensorValue.MeaTime; alarm.Title = sensor.Logger.Name + " - " + sensor.Name; // Edited by binhpro 23/11/2012 decimal range = sensor.MaxValue.Value - sensor.MinValue.Value; if (range == 0) { range = sensor.MaxValue.Value; } if (alarm.CalcValue < sensor.MinValue && range != 0) { alarm.Title += " - dưới ngưỡng " + Math.Round(Math.Abs((decimal)((sensor.MinValue - alarm.CalcValue) / range * 100)), 0) + " %"; } else if (alarm.CalcValue > sensor.MaxValue && range != 0) { alarm.Title += " - vượt ngưỡng " + Math.Round(Math.Abs((decimal)((alarm.CalcValue - sensor.MaxValue) / range * 100)), 0) + " %"; } alarm.Title += " - " + alarm.StartAlarmDatetime; // Set Alarm Flag Of Sensor TRUE sensor.AlarmFlag = true; sensor.AlarmLogs.Add(alarm); return(true); } if (sensor.AlarmFlag) { // Set Alarm Flag Of Sensor FALSE sensor.AlarmFlag = false; // Close All Alarm Log Before var logs = sensor.AlarmLogs.Where(ent => !ent.IsEnded && ent.StartAlarmDatetime <= sensorValue.MeaTime); foreach (var alarmLog in logs) { alarmLog.IsEnded = true; alarmLog.EndAlarmDatetime = sensorValue.MeaTime; } // entityConntext.SaveChanges(); } return(false); } return(false); }
private void Run() { while (WaitHandle.WaitAny(m_WaitHandles) == 0) { if (m_alarmLogQueue.Count == 0) { m_queueThreadSemaphore.Reset(); } //出列,处理 AlarmLog alarmLog = null; bool dequeueOk = m_alarmLogQueue.TryDequeue(out alarmLog); if (dequeueOk) { //报警联动 using (var db = new AllInOneContext.AllInOneContext()) { try { var setting = GetAlarmSetting(db, alarmLog); if (setting != null) { int code = 0; if (Int32.TryParse(setting.AlarmSource.Organization.OrganizationCode, out code)) { setting.AlarmSource.IPDeviceCode = code; } Plan plan = null; DeviceAlarmStatus status = null; //本地广播报警消息 MQPulish.PublishMessage("AlarmLog", alarmLog); if (alarmLog.AlarmStatusId.Equals(Guid.Parse("A0002016-E009-B019-E001-ABCD13100001"))) //执行预案,状态未确认 { if (ScheduleUtility.IsValidSchedule(setting.Schedule, DateTime.Now)) //符合当前排班的情况 { ////本地广播报警消息 //MQPulish.PublishMessage("AlarmLog", alarmLog); plan = db.Plan.Include(t => t.Actions).ThenInclude(t => t.PlanActions).ThenInclude(t => t.Action).FirstOrDefault(t => t.PlanId.Equals(setting.BeforePlanId)); } } else if (alarmLog.AlarmStatusId.Equals(Guid.Parse("A0002016-E009-B019-E001-ABCD13100002"))) //执行应急预案 { //预案确认 plan = db.Plan.Include(t => t.Actions).ThenInclude(t => t.PlanActions).ThenInclude(t => t.Action).FirstOrDefault(t => t.PlanId.Equals(setting.EmergencyPlanId)); //哨位报警,确认需推送报警确认/取消到哨位中心服务 status = GetDeviceAlarmStatus(db, setting, true); } else if (alarmLog.AlarmStatusId.Equals(Guid.Parse("A0002016-E009-B019-E001-ABCD13100003"))) //报警取消,停止联动动作 { //哨位报警,取消需推送报警确认/取消到哨位中心服务 status = GetDeviceAlarmStatus(db, setting, false); StopPlan(setting); } else if (alarmLog.AlarmStatusId.Equals(Guid.Parse("A0002016-E009-B019-E001-ABCD13100004"))) //停止联动动作,已关闭 { status = GetDeviceAlarmStatus(db, setting, false); StopPlan(setting); } //找到满足条件的预案,发送到任务服务,启动预案 if (plan != null) { plan.PlanTrigger = new PlanTriggerSource() { AlarmSource = setting.AlarmSource, AlarmType = setting.AlarmType, BeforePlanId = setting.BeforePlanId, EmergencyPlanId = setting.EmergencyPlanId, AlarmLogId = alarmLog.AlarmLogId }; StartPlan(plan); } if (status != null) { SendAlarmStatusToASCS(status, setting.AlarmSource.OrganizationId); } } else { _logger.LogInformation("未配置报警,没有任务联动响应!!!!"); } } catch (Exception ex) { _logger.LogError("报警处理异常,Message:{0}\r\nStackTrace:{1}", ex.Message, ex.StackTrace); } } } } }
public void AddAlarmLogAction(AlarmLog alarmLog) { m_alarmLogQueue.Enqueue(alarmLog); m_queueThreadSemaphore.Set(); }
public void CreateAlarmLog(AlarmLog alarmLog) { _alarmRepository.AddAlarmLog(alarmLog); }
public void AddAlarmLog(AlarmLog alarmLog) { _ctx.AlarmLogs.Add(alarmLog); _ctx.SaveChanges(); }
public IActionResult publish([FromBody] AlarmLog alarmLog) { MQPulish.PublishMessage("ForwardAlarmProcessed", alarmLog); return(Ok()); }