TempPIDParameterData.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. using Aitex.Core.RT.Log;
  2. using Aitex.Core.RT.ParameterCenter;
  3. using Caliburn.Micro.Core;
  4. using MECF.Framework.Common.ParameterCenter;
  5. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  6. using RecipeEditorLib.RecipeModel.Params;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Collections.ObjectModel;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows;
  14. using System.Xml;
  15. namespace MECF.Framework.UI.Client.CenterViews.Parameter
  16. {
  17. public class TempPIDParameterData : ParameterDataBase
  18. {
  19. private ParameterProvider _parameterProvider = new ParameterProvider();
  20. private ParameterFormatBuilder _columnBuilder = new ParameterFormatBuilder();
  21. private Dictionary<string, ObservableCollection<ParameterTemplateColumnBase>> ParameterTemplate;
  22. public TempPIDParameterData() : base()
  23. {
  24. string vars = _parameterProvider.GetParameterFormatXml($"Parameter\\TempPID");
  25. _columnBuilder.Build($"Parameter\\TempPID");
  26. ParameterTemplate = _parameterProvider.GetGroupParameterTemplate();
  27. TableNumber = _columnBuilder.TableNumber;
  28. Version = _columnBuilder.Version;
  29. for (int i = 1; i < TableNumber+1; i++)
  30. {
  31. Steps.Add(CreateStep());
  32. }
  33. }
  34. public override ParameterTable CreateStep(XmlNode stepNode = null)
  35. {
  36. ParameterTable step = new TempPIDTable();
  37. if (stepNode != null)
  38. {
  39. if (stepNode.Attributes["StepNo"] != null)
  40. step.StepNo = int.Parse(stepNode.Attributes["StepNo"].Value);
  41. if (stepNode.Attributes["Name"] != null)
  42. step.Name = stepNode.Attributes["Name"].Value;
  43. if (stepNode.Attributes["UseTemp"] != null)
  44. step.UseTemp = stepNode.Attributes["UseTemp"].Value;
  45. }
  46. else
  47. {
  48. step.StepNo = StepNo;
  49. step.Name = "Name" + StepNo.ToString();
  50. step.UseTemp = "0";
  51. StepNo++;
  52. }
  53. int pIDIndex = 1;
  54. foreach (var item in ParameterTemplate)
  55. {
  56. if (item.Key != "Parameter Information")
  57. {
  58. var _pidData = new PIDData()
  59. {
  60. Name = item.Key,
  61. Index = pIDIndex
  62. };
  63. var pcom = item.Value.Where(x => x.ControlName == "P").FirstOrDefault();
  64. if (pcom != null)
  65. {
  66. DoubleParam pParam = new DoubleParam()
  67. {
  68. Name = pcom.ControlName,
  69. Value = pcom.Value.ToString(),
  70. DisplayName = pcom.DisplayName,
  71. Minimun = pcom.Minimun,
  72. Maximun = pcom.Maximun,
  73. Resolution = 0
  74. };
  75. _pidData.P = pParam;
  76. }
  77. var icom = item.Value.Where(x => x.ControlName == "I").FirstOrDefault();
  78. if (icom != null)
  79. {
  80. DoubleParam iParam = new DoubleParam()
  81. {
  82. Name = icom.ControlName,
  83. Value = icom.Value.ToString(),
  84. DisplayName = icom.DisplayName,
  85. Minimun = icom.Minimun,
  86. Maximun = icom.Maximun,
  87. Resolution = 0
  88. };
  89. _pidData.I = iParam;
  90. }
  91. var dcom = item.Value.Where(x => x.ControlName == "D").FirstOrDefault();
  92. if (dcom != null)
  93. {
  94. DoubleParam dParam = new DoubleParam()
  95. {
  96. Name = dcom.ControlName,
  97. Value = dcom.Value.ToString(),
  98. DisplayName = dcom.DisplayName,
  99. Minimun = dcom.Minimun,
  100. Maximun = dcom.Maximun,
  101. Resolution = 0
  102. };
  103. _pidData.D = dParam;
  104. }
  105. ((TempPIDTable)step).PIDDataList.Add(_pidData);
  106. pIDIndex++;
  107. }
  108. }
  109. if (stepNode != null)
  110. {
  111. foreach (var item in ((TempPIDTable)step).PIDDataList)
  112. {
  113. if (stepNode.Attributes["PIDData"] != null)
  114. {
  115. ((TempPIDTable)step).SetTempPIDData(stepNode.Attributes["PIDData"].Value.ToString());
  116. }
  117. }
  118. }
  119. return step;
  120. }
  121. public override string GetXmlString()
  122. {
  123. XmlElement nodeData = _doc.SelectSingleNode($"Aitex/TableParameterData") as XmlElement;
  124. nodeData.SetAttribute("CreatedBy", Creator);
  125. nodeData.SetAttribute("CreationTime", CreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
  126. nodeData.SetAttribute("LastRevisedBy", Revisor);
  127. nodeData.SetAttribute("LastRevisionTime", ReviseTime.ToString("yyyy-MM-dd HH:mm:ss"));
  128. nodeData.SetAttribute("Description", Description);
  129. nodeData.SetAttribute("ParameterChamberType", ChamberType);
  130. nodeData.SetAttribute("Version", Version);
  131. nodeData.SetAttribute("TableNumber", TableNumber.ToString());
  132. nodeData.SetAttribute("Permission", Permission);
  133. nodeData.SetAttribute("ParameterLevel", Level);
  134. XmlNode nodeModule = _doc.SelectSingleNode($"Aitex/TableParameterData/Module[@Name='{_module}']");
  135. if (nodeModule == null)
  136. {
  137. nodeModule = _doc.CreateElement("Module");
  138. nodeData.AppendChild(nodeModule);
  139. }
  140. nodeModule.RemoveAll();
  141. (nodeModule as XmlElement).SetAttribute("Name", _module);
  142. int i = 0;
  143. foreach (ParameterTable parameters in Steps)
  144. {
  145. XmlElement nodeStep = _doc.CreateElement("Step");
  146. nodeStep.SetAttribute("StepNo", parameters.StepNo.ToString());
  147. nodeStep.SetAttribute("Name", parameters.Name);
  148. nodeStep.SetAttribute("UseTemp", parameters.UseTemp);
  149. var pidDatas = ((TempPIDTable)parameters).PIDDataList.Select(x => x.ToString()).ToArray();
  150. nodeStep.SetAttribute($"PIDData",string.Join("|" ,pidDatas));
  151. nodeModule.AppendChild(nodeStep);
  152. i++;
  153. }
  154. return _doc.OuterXml;
  155. }
  156. public override void InitData(string prefixPath, string recipeName, string recipeContent, string module)
  157. {
  158. IsCompatibleWithCurrentFormat = false;
  159. _module = module;
  160. Name = recipeName;
  161. PrefixPath = prefixPath;
  162. try
  163. {
  164. _doc = new XmlDocument();
  165. _doc.LoadXml(recipeContent);
  166. if (!LoadHeader(_doc.SelectSingleNode("Aitex/TableParameterData")))
  167. return;
  168. XmlNodeList nodeSteps = _doc.SelectNodes($"Aitex/TableParameterData/Module[@Name='{module}']/Step");
  169. if (nodeSteps == null)
  170. nodeSteps = _doc.SelectNodes($"Aitex/TableParameterData/Step");
  171. LoadSteps(nodeSteps);
  172. var index = 1;
  173. foreach (ParameterTable parameters in Steps)
  174. {
  175. parameters.Value = index.ToString();
  176. index++;
  177. }
  178. // ValidLoopData();
  179. XmlNode nodeConfig =
  180. _doc.SelectSingleNode($"Aitex/TableParameterData/Module[@Name='{module}']/Config");
  181. if (nodeSteps == null)
  182. nodeConfig = _doc.SelectSingleNode($"Aitex/TableParameterData/Config");
  183. IsCompatibleWithCurrentFormat = true;
  184. }
  185. catch (Exception ex)
  186. {
  187. LOG.Write(ex);
  188. }
  189. }
  190. public override void LoadSteps(XmlNodeList steps)
  191. {
  192. Steps.Clear();
  193. PopSettingSteps.Clear();
  194. StepTolerances.Clear();
  195. StepNos.Clear();
  196. int index = 1;
  197. foreach (XmlNode nodeStep in steps)
  198. {
  199. ParameterTable stepTable = this.CreateStep(nodeStep);
  200. StepNos.Add(stepTable.StepNo);
  201. Steps.Add(stepTable);
  202. index++;
  203. }
  204. }
  205. }
  206. }