using Newtonsoft.Json; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PLC.PLCAlarm { /// /// 报警信息管理器 /// public class AlarmManager { private readonly ConcurrentDictionary activeAlarms = new ConcurrentDictionary(); /// /// 添加报警 /// /// public void AddAlarm(RecordAlarmDataArgs e) { var alarmInfo = new AlarmEntry { AlarmCode = e.AlarmCode, AlarmInfo = e.AlarmInfo, AlarmDate = e.AlarmDate, StartTime = e.StartTime }; activeAlarms.TryAdd(e.AlarmCode, alarmInfo); } /// /// 删除报警 /// /// public void RemoveAlarm(RecordAlarmDataArgs e) { activeAlarms.TryRemove(e.AlarmCode, out _); } /// /// 获取报警文本 /// /// public string GetFormattedAlarmText() { var sb = new StringBuilder(); foreach (var alarm in activeAlarms.Values.OrderByDescending(a => a.StartTime)) { sb.AppendLine($"报警: 代码 {alarm.AlarmCode}, 内容 {alarm.AlarmInfo}, 日期 {alarm.AlarmDate}, 开始时间 {alarm.StartTime:HH:mm:ss}"); } return sb.ToString().TrimEnd(); } /// /// 获取报警JOSN /// /// public string GetActiveAlarmsJson() { return JsonConvert.SerializeObject(activeAlarms.Values); } } /// /// 报警类 /// public class AlarmEntry { /// /// 报警代码 /// public string AlarmCode { get; set; } /// /// 报警信息 /// public string AlarmInfo { get; set; } /// /// 报警时间 /// public string AlarmDate { get; set; } /// /// 报警开始时间 /// public DateTime StartTime { get; set; } } }