| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | 
							- using Aitex.Common.Util;
 
- using Aitex.Core.RT.DataCenter;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Core.RT.OperationCenter;
 
- using Aitex.Core.RT.SCCore;
 
- using Aitex.Core.Util;
 
- using Aitex.Core.WCF;
 
- using MECF.Framework.Common.Account;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Event;
 
- using MECF.Framework.Common.FAServices;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.Linq;
 
- using System.ServiceModel;
 
- using System.Xml;
 
- namespace Aitex.Core.RT.Event
 
- {
 
-     public class DisplayManager : Singleton<DisplayManager>
 
-     {
 
-         public Dictionary<string, string> DisplayDict { get; set; } = new Dictionary<string, string>();
 
-         public Dictionary<string, string> ProcessDetailDisplayDict { get; set; } = new Dictionary<string, string>();
 
-         private string _displayReplaceFile = PathManager.GetCfgDir() + "DisplayReplace.xml";
 
-         private object _displayDicLocker = new object();
 
-         public Dictionary<string, Dictionary<string, string>> ProcessDetailInfoDict { get; set; } = new Dictionary<string, Dictionary<string, string>>();
 
-         public DisplayManager()
 
-         {
 
-         }
 
-         public void Initialize()
 
-         {
 
-             Initialize(_displayReplaceFile);
 
-             DATA.Subscribe($"System.Display", () => DisplayDict);
 
-             DATA.Subscribe($"System.ProcessDetailDisplay", () => ProcessDetailDisplayDict);
 
-             DATA.Subscribe($"System.ProcessDetailInfoDict", () => ProcessDetailInfoDict);
 
-         }
 
-         public void Initialize(string ListXmlFile)
 
-         {
 
-             try
 
-             {
 
-                 if (!string.IsNullOrEmpty(ListXmlFile))
 
-                 {
 
-                     lock (_displayDicLocker)
 
-                     {
 
-                         BuildItems(ListXmlFile);
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 throw new ApplicationException("DisplayReplace," + ListXmlFile + ",\r\n" + ex.Message);
 
-             }
 
-         }
 
-         private string GetGaslineHeaterIndex(string keyStr)
 
-         {
 
-             if (string.IsNullOrEmpty(keyStr))
 
-             {
 
-                 return "";
 
-             }
 
-             var item = keyStr.Split('.').Where(a => !string.IsNullOrEmpty(a) && a.Contains(ModuleName.GaslineHeater.ToString())).FirstOrDefault();
 
-             if (item == null)
 
-                 return "";
 
-             return item.Replace(ModuleName.GaslineHeater.ToString(), "");
 
-         }
 
-         private void BuildItems(string xmlFile)
 
-         {
 
-             Dictionary<string, string> values = new Dictionary<string, string>();
 
-             try
 
-             {
 
-                 if (File.Exists(xmlFile))
 
-                 {
 
-                     XmlDocument xml = new XmlDocument();
 
-                     xml.Load(xmlFile);
 
-                     XmlNodeList node = xml.SelectNodes("Displays/HistoryGroup");
 
-                     foreach (XmlElement AlarmTable in node)
 
-                     {
 
-                         XmlNodeList nodeList = AlarmTable.SelectNodes("Display");
 
-                         foreach (XmlElement nodeCategory in nodeList)
 
-                         {
 
-                             string key = nodeCategory.GetAttribute("Name");
 
-                             string value = nodeCategory.GetAttribute("DisplayName");
 
-                             if (ModuleHelper.IsHeaterBand(value))
 
-                             {
 
-                                 var auxIndex = GetGaslineHeaterIndex(key);
 
-                                 if (!SC.ContainsItem($"PM1.RecipeEditParameter.AUX.{auxIndex}.Display"))
 
-                                     continue;
 
-                                 var scAuxName = SCCore.SC.GetStringValue($"PM1.RecipeEditParameter.AUX.{auxIndex}.Display");
 
-                                 var valueArray = value.Split('.').ToList();
 
-                                 value = $"{valueArray[0]}.{scAuxName}.{valueArray[1]}";
 
-                             }
 
-                             if (DisplayDict.ContainsKey(key))
 
-                             {
 
-                                 DisplayDict[key] = value;
 
-                             }
 
-                             else
 
-                             {
 
-                                 DisplayDict.Add(key, value);
 
-                             }
 
-                         }
 
-                     }
 
-                     node = xml.SelectNodes("Displays/DetailGroup");
 
-                     foreach (XmlElement AlarmTable in node)
 
-                     {
 
-                         XmlNodeList nodeList = AlarmTable.SelectNodes("Display");
 
-                         foreach (XmlElement nodeCategory in nodeList)
 
-                         {
 
-                             string key = nodeCategory.GetAttribute("Name");
 
-                             string value = nodeCategory.GetAttribute("DisplayName");
 
-                             if (ModuleHelper.IsHeaterBand(value))
 
-                             {
 
-                                 var auxIndex = GetGaslineHeaterIndex(key);
 
-                                 if (!SC.ContainsItem($"PM1.RecipeEditParameter.AUX.{auxIndex}.Display"))
 
-                                     continue;
 
-                                 var scAuxName = SCCore.SC.GetStringValue($"PM1.RecipeEditParameter.AUX.{auxIndex}.Display");
 
-                                 var valueArray = value.Split('.').ToList();
 
-                                 value = $"{valueArray[0]}.{scAuxName}.{valueArray[1]}";
 
-                             }
 
-                             #region 存储各个节点信息
 
-                             Dictionary<string, string> attributesDict = new Dictionary<string, string>();
 
-                             foreach (XmlAttribute attr in nodeCategory.Attributes)
 
-                             {
 
-                                 if (ModuleHelper.IsHeaterBand(value) && attr.Name == "ColName" && string.IsNullOrEmpty(attr.Value))
 
-                                 {
 
-                                     attributesDict[attr.Name] = value;
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                     attributesDict[attr.Name] = attr.Value;
 
-                                 }
 
-                             }
 
-                             if (ProcessDetailInfoDict.ContainsKey(key))
 
-                             {
 
-                                 ProcessDetailInfoDict[key] = attributesDict;
 
-                             }
 
-                             else
 
-                             {
 
-                                 ProcessDetailInfoDict.Add(key, attributesDict);
 
-                             }
 
-                             #endregion
 
-                             if (ProcessDetailDisplayDict.ContainsKey(key))
 
-                             {
 
-                                 ProcessDetailDisplayDict[key] = value;
 
-                             }
 
-                             else
 
-                             {
 
-                                 ProcessDetailDisplayDict.Add(key, value);
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LOG.Write(ex);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |