using Serilog; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using WPFWCSDemo.StateCode; using WPFWCSDemo.Models.Tables; using WPFWCSDemo.Data; namespace WPFWCSDemo.Utilities.Table { public class AlarmManager { /// /// 获取【实时报警】表所有行数据集合 /// /// 返回所有行的数据 public static List ListAll() { using (DataTable? dt = SqlHelper.ExecuteTable("SELECT * FROM ALARM ORDER BY GEN_TIME DESC")) { if (dt == null) return null; List alarms = new List(); foreach (DataRow dr in dt.Rows) { alarms.Add(ToModels(dr)); } #region 反射方法 /* foreach (DataRow dr in dt.Rows) { tasks.Add(dr.DataRowToModel()); } */ #endregion return alarms; } } /// /// 将【调度管理】表的单行转换为实体数据对象 /// /// 获取表的某行数据 /// 当前行所有字段的集合 public static Alarm ToModels(DataRow dr) { Alarm alarm = new Alarm(); alarm.Point_Id = dr["Point_Id"].ToString(); alarm.Description = dr["Description"].ToString(); alarm.Priority = dr["Priority"].ToString(); alarm.Device_Id = dr["Device_Id"].ToString(); alarm.Gen_Time = Convert.ToDateTime(dr["Generation_Time"]); return alarm; } /// /// 向【实时报警】表中插入数据 /// /// /// 返回受影响的行数 public static int Insert(Alarm alarm) { using var context = new AppDbContext(); int count = context.Set() .Where(a => a.Point_Id == alarm.Point_Id) .Count(); if (count > 0) return 0; alarm.Gen_Time = DateTime.Now; context.Set() .Add(alarm); if (context.SaveChanges() == 1) { return 1; } else { return 0; } } /// /// 从【实时报警】表中移除数据记入历史表 /// /// 当前已结束的报警 /// 执行后受影响的行数 public static int Delete(Alarm alarm) { using var context = new AppDbContext(); int count = context.Set() .Where(a => a.Point_Id == alarm.Point_Id) .Count(); if(count == 0) return 0; AlarmHistory alarmHistory = new AlarmHistory() { Point_Id = alarm.Point_Id, Description = alarm.Description, Priority = alarm.Priority, Device_Id = alarm.Device_Id, Gen_Time = alarm.Gen_Time, End_Time = DateTime.Now, }; context.Set() .Add(alarmHistory); context.Set() .Remove(alarm); return context.SaveChanges(); } } }