AlarmDefineFileContext.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. 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. if (alarm != null)
  43. {
  44. AlarmDefine alarmDefine = CreateAlarmDefine(alarm);
  45. if (alarmDefine != null)
  46. {
  47. try
  48. {
  49. alarmList.Add(alarmDefine.Number, alarmDefine);
  50. }
  51. catch (Exception ex)
  52. {
  53. LOG.Write($"Alarm mumber={alarmDefine.Number} {ex}");
  54. }
  55. }
  56. }
  57. }
  58. }
  59. return alarmList;
  60. }
  61. private AlarmDefine CreateAlarmDefine(XmlNode alarm)
  62. {
  63. AlarmDefine alarmDefine = new AlarmDefine();
  64. if (alarm != null && alarm.Attributes != null)
  65. {
  66. if (alarm.Attributes["Number"] != null)
  67. {
  68. if(alarm.Attributes["Number"].Value.ToLower().Contains("0x"))
  69. {
  70. alarmDefine.Number = int.Parse(alarm.Attributes["Number"].Value.Substring(2), NumberStyles.HexNumber);
  71. }
  72. else
  73. {
  74. alarmDefine.Number = int.Parse(alarm.Attributes["Number"].Value, NumberStyles.Integer);
  75. }
  76. }
  77. if (alarm.Attributes["Message"] != null)
  78. alarmDefine.Message = alarm.Attributes["Message"].Value;
  79. if (alarm.Attributes["Action"] != null)
  80. alarmDefine.Action = alarm.Attributes["Action"].Value;
  81. if (alarm.Attributes["Recovery"] != null)
  82. alarmDefine.Recovery = alarm.Attributes["Recovery"].Value;
  83. if (alarm.Attributes["Cause"] != null)
  84. alarmDefine.Cause = alarm.Attributes["Cause"].Value;
  85. return alarmDefine;
  86. }
  87. return null;
  88. }
  89. public string GetStringAlarmDefineTemplate()
  90. {
  91. try
  92. {
  93. string recipeSchema = PathManager.GetCfgDir() + @"\AlarmDefine.xml";
  94. XmlDocument xmlDom = new XmlDocument();
  95. xmlDom.Load(recipeSchema);
  96. return xmlDom.OuterXml;
  97. }
  98. catch (Exception ex)
  99. {
  100. LOG.Write(ex);
  101. return "";
  102. }
  103. }
  104. }
  105. }