AlarmDefineFileContext.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Aitex.Common.Util;
  2. using Aitex.Core.RT.Event;
  3. using Aitex.Core.RT.Log;
  4. using Aitex.Core.Util;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Globalization;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Xml;
  12. namespace MECF.Framework.Common.Alarms
  13. {
  14. public class AlarmDefineFileContext : IAlarmDefineService
  15. {
  16. public Dictionary<string, Dictionary<string, EventItem>> GetAlarmDefineTemplate()
  17. {
  18. Dictionary<string, Dictionary<string, EventItem>> result = new Dictionary<string, Dictionary<string, EventItem>>();
  19. foreach (var key in Singleton<EventManager>.Instance.AlarmDic.Keys)
  20. {
  21. Dictionary<string, EventItem> temp = new Dictionary<string, EventItem>();
  22. foreach (var name in Singleton<EventManager>.Instance.AlarmDic[key].Keys)
  23. {
  24. var item = Singleton<EventManager>.Instance.AlarmDic[key][name].Clone();
  25. temp[name] = item;
  26. }
  27. result[key] = temp;
  28. }
  29. return result;
  30. }
  31. public Dictionary<int, AlarmDefine> GetAlarmDefine()
  32. {
  33. string recipeSchema = PathManager.GetCfgDir() + @"\AlarmDefine.xml";
  34. XmlDocument xmlDom = new XmlDocument();
  35. xmlDom.Load(recipeSchema);
  36. XmlNodeList AlarmGroup = xmlDom.SelectNodes($"Alarms/AlarmGroup");
  37. Dictionary<int, AlarmDefine> alarmList = new Dictionary<int, AlarmDefine>();
  38. foreach (XmlNode item in AlarmGroup)
  39. {
  40. foreach (XmlNode alarm in item.ChildNodes)
  41. {
  42. AlarmDefine alarmDefine = CreateAlarmDefine(alarm);
  43. if (alarmDefine != null)
  44. {
  45. try
  46. {
  47. alarmList.Add(alarmDefine.Number, alarmDefine);
  48. }
  49. catch (Exception ex)
  50. {
  51. LOG.Write($"Alarm mumber={alarmDefine.Number} {ex}");
  52. }
  53. }
  54. }
  55. }
  56. return alarmList;
  57. }
  58. private AlarmDefine CreateAlarmDefine(XmlNode alarm)
  59. {
  60. AlarmDefine alarmDefine = new AlarmDefine();
  61. if (alarm != null && alarm.Attributes != null)
  62. {
  63. if (alarm.Attributes["Number"] != null)
  64. {
  65. if (alarm.Attributes["Number"].Value.ToLower().Contains("0x"))
  66. {
  67. alarmDefine.Number = int.Parse(alarm.Attributes["Number"].Value.Substring(2), NumberStyles.HexNumber);
  68. }
  69. else
  70. {
  71. alarmDefine.Number = int.Parse(alarm.Attributes["Number"].Value, NumberStyles.Integer);
  72. }
  73. }
  74. if (alarm.Attributes["Message"] != null)
  75. alarmDefine.Message = alarm.Attributes["Message"].Value;
  76. if (alarm.Attributes["Action"] != null)
  77. alarmDefine.Action = alarm.Attributes["Action"].Value;
  78. if (alarm.Attributes["Recovery"] != null)
  79. alarmDefine.Recovery = alarm.Attributes["Recovery"].Value;
  80. if (alarm.Attributes["Cause"] != null)
  81. alarmDefine.Cause = alarm.Attributes["Cause"].Value;
  82. return alarmDefine;
  83. }
  84. return null;
  85. }
  86. public string GetStringAlarmDefineTemplate()
  87. {
  88. try
  89. {
  90. string recipeSchema = PathManager.GetCfgDir() + @"\AlarmDefine.xml";
  91. XmlDocument xmlDom = new XmlDocument();
  92. xmlDom.Load(recipeSchema);
  93. return xmlDom.OuterXml;
  94. }
  95. catch (Exception ex)
  96. {
  97. LOG.Write(ex);
  98. return "";
  99. }
  100. }
  101. }
  102. }