Files
FT479/WPFWCSDemo/Utilities/Table/AlarmManager.cs
2026-06-29 14:46:32 +08:00

140 lines
3.7 KiB
C#

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
{
/// <summary>
/// 获取【实时报警】表所有行数据集合
/// </summary>
/// <returns>返回所有行的数据</returns>
public static List<Alarm> ListAll()
{
using (DataTable? dt = SqlHelper.ExecuteTable("SELECT * FROM ALARM ORDER BY GEN_TIME DESC"))
{
if (dt == null) return null;
List<Alarm> alarms = new List<Alarm>();
foreach (DataRow dr in dt.Rows)
{
alarms.Add(ToModels(dr));
}
#region 反射方法
/*
foreach (DataRow dr in dt.Rows)
{
tasks.Add(dr.DataRowToModel<ScheduleManager>());
}
*/
#endregion
return alarms;
}
}
/// <summary>
/// 将【调度管理】表的单行转换为实体数据对象
/// </summary>
/// <param name="dr">获取表的某行数据</param>
/// <returns>当前行所有字段的集合</returns>
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;
}
/// <summary>
/// 向【实时报警】表中插入数据
/// </summary>
/// <param name="alarm"></param>
/// <returns>返回受影响的行数</returns>
public static int Insert(Alarm alarm)
{
using var context = new AppDbContext();
int count = context.Set<Alarm>()
.Where(a => a.Point_Id == alarm.Point_Id)
.Count();
if (count > 0) return 0;
alarm.Gen_Time = DateTime.Now;
context.Set<Alarm>()
.Add(alarm);
if (context.SaveChanges() == 1)
{
return 1;
}
else
{
return 0;
}
}
/// <summary>
/// 从【实时报警】表中移除数据记入历史表
/// </summary>
/// <param name="alarm">当前已结束的报警</param>
/// <returns>执行后受影响的行数</returns>
public static int Delete(Alarm alarm)
{
using var context = new AppDbContext();
int count = context.Set<Alarm>()
.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<AlarmHistory>()
.Add(alarmHistory);
context.Set<Alarm>()
.Remove(alarm);
return context.SaveChanges();
}
}
}