GasDetailViewModel.cs 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413
  1. using Aitex.Core.Common.DeviceData;
  2. using Aitex.Core.Util;
  3. using Caliburn.Micro;
  4. using Caliburn.Micro.Core;
  5. using MECF.Framework.Common.DataCenter;
  6. using MECF.Framework.Common.OperationCenter;
  7. using MECF.Framework.Common.RecipeCenter;
  8. using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
  9. using MECF.Framework.UI.Client.CenterViews.Dialogs;
  10. using MECF.Framework.UI.Core.Control;
  11. using OpenSEMI.ClientBase;
  12. using System.Collections.Generic;
  13. using System.Collections.ObjectModel;
  14. using System.Linq;
  15. using System.Windows;
  16. using System.Windows.Controls;
  17. using FurnaceUI.Models;
  18. using FurnaceUI.Views.Editors;
  19. using Aitex.Core.RT.Device;
  20. namespace FurnaceUI.Views.Operations
  21. {
  22. public class GasDetailViewModel : FurnaceUIViewModelBase
  23. {
  24. private GasDetailView _view;
  25. #region DeviceModelPM
  26. private Dictionary<string, List<string>> _ioNameKeyDict;
  27. #endregion
  28. #region MFC
  29. [Subscription("PM1.MFC1.DeviceData")]
  30. public AITMfcData MFC1Data { get; set; }
  31. [Subscription("PM1.MFC2.DeviceData")]
  32. public AITMfcData MFC2Data { get; set; }
  33. [Subscription("PM1.MFC3.DeviceData")]
  34. public AITMfcData MFC3Data { get; set; }
  35. [Subscription("PM1.MFC4.DeviceData")]
  36. public AITMfcData MFC4Data { get; set; }
  37. [Subscription("PM1.MFC5.DeviceData")]
  38. public AITMfcData MFC5Data { get; set; }
  39. [Subscription("PM1.MFC6.DeviceData")]
  40. public AITMfcData MFC6Data { get; set; }
  41. [Subscription("PM1.MFC7.DeviceData")]
  42. public AITMfcData MFC7Data { get; set; }
  43. [Subscription("PM1.MFC8.DeviceData")]
  44. public AITMfcData MFC8Data { get; set; }
  45. [Subscription("PM1.MFC9.DeviceData")]
  46. public AITMfcData MFC9Data { get; set; }
  47. [Subscription("PM1.MFC10.DeviceData")]
  48. public AITMfcData MFC10Data { get; set; }
  49. [Subscription("PM1.MFC11.DeviceData")]
  50. public AITMfcData MFC11Data { get; set; }
  51. [Subscription("PM1.MFC12.DeviceData")]
  52. public AITMfcData MFC12Data { get; set; }
  53. [Subscription("PM1.MFC13.DeviceData")]
  54. public AITMfcData MFC13Data { get; set; }
  55. [Subscription("PM1.MFC14.DeviceData")]
  56. public AITMfcData MFC14Data { get; set; }
  57. [Subscription("PM1.MFC15.DeviceData")]
  58. public AITMfcData MFC15Data { get; set; }
  59. [Subscription("PM1.MFC16.DeviceData")]
  60. public AITMfcData MFC16Data { get; set; }
  61. [Subscription("PM1.MFC17.DeviceData")]
  62. public AITMfcData MFC17Data { get; set; }
  63. [Subscription("PM1.MFC31.DeviceData")]
  64. public AITMfcData MFC31Data { get; set; }
  65. [Subscription("PM1.MFC32.DeviceData")]
  66. public AITMfcData MFC32Data { get; set; }
  67. [Subscription("PM1.MFC51.DeviceData")]
  68. public AITMfcData MFC51Data { get; set; }
  69. #endregion
  70. #region MFM
  71. [Subscription("PM1.MFM57.DeviceData")]
  72. public AITWaterFlowMeterData MFM57FlowData { get; set; }
  73. [Subscription("PM1.MFM1.DeviceData")]
  74. public AITWaterFlowMeterData MFM1FlowData { get; set; }
  75. [Subscription("PM1.MFM6.DeviceData")]
  76. public AITWaterFlowMeterData MFM6FlowData { get; set; }
  77. [Subscription("PM1.MFM7.DeviceData")]
  78. public AITWaterFlowMeterData MFM7FlowData { get; set; }
  79. [Subscription("PM1.MFM8.DeviceData")]
  80. public AITWaterFlowMeterData MFM8FlowData { get; set; }
  81. [Subscription("PM1.MFM9.DeviceData")]
  82. public AITWaterFlowMeterData MFM9FlowData { get; set; }
  83. [Subscription("PM1.MFM11.DeviceData")]
  84. public AITWaterFlowMeterData MFM11FlowData { get; set; }
  85. [Subscription("PM1.MFM12.DeviceData")]
  86. public AITWaterFlowMeterData MFM12FlowData { get; set; }
  87. [Subscription("PM1.MFM13.DeviceData")]
  88. public AITWaterFlowMeterData MFM13FlowData { get; set; }
  89. [Subscription("PM1.MFM16.DeviceData")]
  90. public AITWaterFlowMeterData MFM16FlowData { get; set; }
  91. #endregion
  92. #region Valve
  93. [Subscription("PM1.ValveAV1.DeviceData")] public AITValveData ValveAV1Data { get; set; }
  94. [Subscription("PM1.ValveAV2.DeviceData")] public AITValveData ValveAV2Data { get; set; }
  95. [Subscription("PM1.ValveAV3.DeviceData")] public AITValveData ValveAV3Data { get; set; }
  96. [Subscription("PM1.ValveAV4.DeviceData")] public AITValveData ValveAV4Data { get; set; }
  97. [Subscription("PM1.ValveAV5.DeviceData")] public AITValveData ValveAV5Data { get; set; }
  98. [Subscription("PM1.ValveAV6.DeviceData")] public AITValveData ValveAV6Data { get; set; }
  99. [Subscription("PM1.ValveAV7.DeviceData")] public AITValveData ValveAV7Data { get; set; }
  100. [Subscription("PM1.ValveAV8.DeviceData")] public AITValveData ValveAV8Data { get; set; }
  101. [Subscription("PM1.ValveAV9.DeviceData")] public AITValveData ValveAV9Data { get; set; }
  102. [Subscription("PM1.ValveAV10.DeviceData")] public AITValveData ValveAV10Data { get; set; }
  103. [Subscription("PM1.ValveAV11.DeviceData")] public AITValveData ValveAV11Data { get; set; }
  104. [Subscription("PM1.ValveAV12.DeviceData")] public AITValveData ValveAV12Data { get; set; }
  105. [Subscription("PM1.ValveAV13.DeviceData")] public AITValveData ValveAV13Data { get; set; }
  106. [Subscription("PM1.ValveAV14.DeviceData")] public AITValveData ValveAV14Data { get; set; }
  107. [Subscription("PM1.ValveAV15.DeviceData")] public AITValveData ValveAV15Data { get; set; }
  108. [Subscription("PM1.ValveAV16.DeviceData")] public AITValveData ValveAV16Data { get; set; }
  109. [Subscription("PM1.ValveAV17.DeviceData")] public AITValveData ValveAV17Data { get; set; }
  110. [Subscription("PM1.ValveAV18.DeviceData")] public AITValveData ValveAV18Data { get; set; }
  111. [Subscription("PM1.ValveAV19.DeviceData")] public AITValveData ValveAV19Data { get; set; }
  112. [Subscription("PM1.ValveAV20.DeviceData")] public AITValveData ValveAV20Data { get; set; }
  113. [Subscription("PM1.ValveAV21.DeviceData")] public AITValveData ValveAV21Data { get; set; }
  114. [Subscription("PM1.ValveAV22.DeviceData")] public AITValveData ValveAV22Data { get; set; }
  115. [Subscription("PM1.ValveAV23.DeviceData")] public AITValveData ValveAV23Data { get; set; }
  116. [Subscription("PM1.ValveAV24.DeviceData")] public AITValveData ValveAV24Data { get; set; }
  117. [Subscription("PM1.ValveAV25.DeviceData")] public AITValveData ValveAV25Data { get; set; }
  118. [Subscription("PM1.ValveAV26.DeviceData")] public AITValveData ValveAV26Data { get; set; }
  119. [Subscription("PM1.ValveAV27.DeviceData")] public AITValveData ValveAV27Data { get; set; }
  120. [Subscription("PM1.ValveAV28.DeviceData")] public AITValveData ValveAV28Data { get; set; }
  121. [Subscription("PM1.ValveAV29.DeviceData")] public AITValveData ValveAV29Data { get; set; }
  122. [Subscription("PM1.ValveAV30.DeviceData")] public AITValveData ValveAV30Data { get; set; }
  123. [Subscription("PM1.ValveAV31.DeviceData")] public AITValveData ValveAV31Data { get; set; }
  124. [Subscription("PM1.ValveAV32.DeviceData")] public AITValveData ValveAV32Data { get; set; }
  125. [Subscription("PM1.ValveAV33.DeviceData")] public AITValveData ValveAV33Data { get; set; }
  126. [Subscription("PM1.ValveAV34.DeviceData")] public AITValveData ValveAV34Data { get; set; }
  127. [Subscription("PM1.ValveAV35.DeviceData")] public AITValveData ValveAV35Data { get; set; }
  128. [Subscription("PM1.ValveAV36.DeviceData")] public AITValveData ValveAV36Data { get; set; }
  129. [Subscription("PM1.ValveAV37.DeviceData")] public AITValveData ValveAV37Data { get; set; }
  130. [Subscription("PM1.ValveAV38.DeviceData")] public AITValveData ValveAV38Data { get; set; }
  131. [Subscription("PM1.ValveAV39.DeviceData")] public AITValveData ValveAV39Data { get; set; }
  132. [Subscription("PM1.ValveAV40.DeviceData")] public AITValveData ValveAV40Data { get; set; }
  133. [Subscription("PM1.ValveAV41.DeviceData")] public AITValveData ValveAV41Data { get; set; }
  134. [Subscription("PM1.ValveAV42.DeviceData")] public AITValveData ValveAV42Data { get; set; }
  135. [Subscription("PM1.ValveAV43.DeviceData")] public AITValveData ValveAV43Data { get; set; }
  136. [Subscription("PM1.ValveAV44.DeviceData")] public AITValveData ValveAV44Data { get; set; }
  137. [Subscription("PM1.ValveAV45.DeviceData")] public AITValveData ValveAV45Data { get; set; }
  138. [Subscription("PM1.ValveAV46.DeviceData")] public AITValveData ValveAV46Data { get; set; }
  139. [Subscription("PM1.ValveAV47.DeviceData")] public AITValveData ValveAV47Data { get; set; }
  140. [Subscription("PM1.ValveAV48.DeviceData")] public AITValveData ValveAV48Data { get; set; }
  141. [Subscription("PM1.ValveAV49.DeviceData")] public AITValveData ValveAV49Data { get; set; }
  142. [Subscription("PM1.ValveAV50.DeviceData")] public AITValveData ValveAV50Data { get; set; }
  143. [Subscription("PM1.ValveAV51.DeviceData")] public AITValveData ValveAV51Data { get; set; }
  144. [Subscription("PM1.ValveAV52.DeviceData")] public AITValveData ValveAV52Data { get; set; }
  145. [Subscription("PM1.ValveAV53.DeviceData")] public AITValveData ValveAV53Data { get; set; }
  146. [Subscription("PM1.ValveAV54.DeviceData")] public AITValveData ValveAV54Data { get; set; }
  147. [Subscription("PM1.ValveAV55.DeviceData")] public AITValveData ValveAV55Data { get; set; }
  148. [Subscription("PM1.ValveAV56.DeviceData")] public AITValveData ValveAV56Data { get; set; }
  149. [Subscription("PM1.ValveAV57.DeviceData")] public AITValveData ValveAV57Data { get; set; }
  150. [Subscription("PM1.ValveAV58.DeviceData")] public AITValveData ValveAV58Data { get; set; }
  151. [Subscription("PM1.ValveAV59.DeviceData")] public AITValveData ValveAV59Data { get; set; }
  152. [Subscription("PM1.ValveAV60.DeviceData")] public AITValveData ValveAV60Data { get; set; }
  153. [Subscription("PM1.ValveAV61.DeviceData")] public AITValveData ValveAV61Data { get; set; }
  154. [Subscription("PM1.ValveAV62.DeviceData")] public AITValveData ValveAV62Data { get; set; }
  155. [Subscription("PM1.ValveAV63.DeviceData")] public AITValveData ValveAV63Data { get; set; }
  156. [Subscription("PM1.ValveAV64.DeviceData")] public AITValveData ValveAV64Data { get; set; }
  157. [Subscription("PM1.ValveAV65.DeviceData")] public AITValveData ValveAV65Data { get; set; }
  158. [Subscription("PM1.ValveAV66.DeviceData")] public AITValveData ValveAV66Data { get; set; }
  159. [Subscription("PM1.ValveAV67.DeviceData")] public AITValveData ValveAV67Data { get; set; }
  160. [Subscription("PM1.ValveAV68.DeviceData")] public AITValveData ValveAV68Data { get; set; }
  161. [Subscription("PM1.ValveAV69.DeviceData")] public AITValveData ValveAV69Data { get; set; }
  162. [Subscription("PM1.ValveAV70.DeviceData")] public AITValveData ValveAV70Data { get; set; }
  163. [Subscription("PM1.APC.ModeFeedback")]
  164. public int APCModeFeedback { get; set; }
  165. [Subscription("PM1.ValveAV71.DeviceData")] public AITValveData ValveAV70Data1 { get; set; }
  166. public AITValveData ValveAV71Data
  167. {
  168. get
  169. {
  170. return new AITValveData()
  171. {
  172. DeviceName = ValveAV70Data1.DeviceName,
  173. DisplayName = ValveAV70Data1.DisplayName,
  174. UniqueName = ValveAV70Data1.UniqueName,
  175. DefaultValue = ValveAV70Data1.DefaultValue,
  176. SetPoint = ValveAV70Data1.SetPoint,
  177. Feedback = APCModeFeedback != 5,
  178. VirtualFeedback = ValveAV70Data1.VirtualFeedback
  179. };
  180. }
  181. }
  182. [Subscription("PM1.ValveAV72.DeviceData")] public AITValveData ValveAV72Data { get; set; }
  183. [Subscription("PM1.ValveAV73.DeviceData")] public AITValveData ValveAV73Data { get; set; }
  184. [Subscription("PM1.ValveAV74.DeviceData")] public AITValveData ValveAV74Data { get; set; }
  185. [Subscription("PM1.ValveAV75.DeviceData")] public AITValveData ValveAV75Data { get; set; }
  186. [Subscription("PM1.ValveAV76.DeviceData")] public AITValveData ValveAV76Data { get; set; }
  187. [Subscription("PM1.ValveAV77.DeviceData")] public AITValveData ValveAV77Data { get; set; }
  188. [Subscription("PM1.ValveAV78.DeviceData")] public AITValveData ValveAV78Data { get; set; }
  189. [Subscription("PM1.ValveAV79.DeviceData")] public AITValveData ValveAV79Data { get; set; }
  190. [Subscription("PM1.ValveAV80.DeviceData")] public AITValveData ValveAV80Data { get; set; }
  191. [Subscription("PM1.ValveAV81.DeviceData")] public AITValveData ValveAV81Data { get; set; }
  192. [Subscription("PM1.ValveAV82.DeviceData")] public AITValveData ValveAV82Data { get; set; }
  193. [Subscription("PM1.ValveAV83.DeviceData")] public AITValveData ValveAV83Data { get; set; }
  194. [Subscription("PM1.ValveAV84.DeviceData")] public AITValveData ValveAV84Data { get; set; }
  195. [Subscription("PM1.ValveAV85.DeviceData")] public AITValveData ValveAV85Data { get; set; }
  196. [Subscription("PM1.ValveAV86.DeviceData")] public AITValveData ValveAV86Data { get; set; }
  197. [Subscription("PM1.ValveAV87.DeviceData")] public AITValveData ValveAV87Data { get; set; }
  198. [Subscription("PM1.ValveAV88.DeviceData")] public AITValveData ValveAV88Data { get; set; }
  199. [Subscription("PM1.ValveAV89.DeviceData")] public AITValveData ValveAV89Data { get; set; }
  200. [Subscription("PM1.ValveAV90.DeviceData")] public AITValveData ValveAV90Data { get; set; }
  201. [Subscription("PM1.ValveAV91.DeviceData")] public AITValveData ValveAV91Data { get; set; }
  202. [Subscription("PM1.ValveAV92.DeviceData")] public AITValveData ValveAV92Data { get; set; }
  203. [Subscription("PM1.ValveAV93.DeviceData")] public AITValveData ValveAV93Data { get; set; }
  204. [Subscription("PM1.ValveAV94.DeviceData")] public AITValveData ValveAV94Data { get; set; }
  205. [Subscription("PM1.ValveAV95.DeviceData")] public AITValveData ValveAV95Data { get; set; }
  206. [Subscription("PM1.ValveAV96.DeviceData")] public AITValveData ValveAV96Data { get; set; }
  207. [Subscription("PM1.ValveAV97.DeviceData")] public AITValveData ValveAV97Data { get; set; }
  208. [Subscription("PM1.ValveAV98.DeviceData")] public AITValveData ValveAV98Data { get; set; }
  209. [Subscription("PM1.ValveAV99.DeviceData")] public AITValveData ValveAV99Data { get; set; }
  210. [Subscription("PM1.ValveAV100.DeviceData")] public AITValveData ValveAV100Data { get; set; }
  211. [Subscription("PM1.ValveAV101.DeviceData")] public AITValveData ValveAV101Data { get; set; }
  212. [Subscription("PM1.ValveAV102.DeviceData")] public AITValveData ValveAV102Data { get; set; }
  213. [Subscription("PM1.ValveAV103.DeviceData")] public AITValveData ValveAV103Data { get; set; }
  214. [Subscription("PM1.ValveAV104.DeviceData")] public AITValveData ValveAV104Data { get; set; }
  215. [Subscription("PM1.ValveAV105.DeviceData")] public AITValveData ValveAV105Data { get; set; }
  216. [Subscription("PM1.ValveAV106.DeviceData")] public AITValveData ValveAV106Data { get; set; }
  217. [Subscription("PM1.ValveAV107.DeviceData")] public AITValveData ValveAV107Data { get; set; }
  218. [Subscription("PM1.ValveAV108.DeviceData")] public AITValveData ValveAV108Data { get; set; }
  219. [Subscription("PM1.ValveAV109.DeviceData")] public AITValveData ValveAV109Data { get; set; }
  220. [Subscription("PM1.ValveAV110.DeviceData")] public AITValveData ValveAV110Data { get; set; }
  221. [Subscription("PM1.ValveAV111.DeviceData")] public AITValveData ValveAV111Data { get; set; }
  222. [Subscription("PM1.ValveAV112.DeviceData")] public AITValveData ValveAV112Data { get; set; }
  223. [Subscription("PM1.ValveAV113.DeviceData")] public AITValveData ValveAV113Data { get; set; }
  224. [Subscription("PM1.ValveAV114.DeviceData")] public AITValveData ValveAV114Data { get; set; }
  225. [Subscription("PM1.ValveAV115.DeviceData")] public AITValveData ValveAV115Data { get; set; }
  226. [Subscription("PM1.ValveAV116.DeviceData")] public AITValveData ValveAV116Data { get; set; }
  227. [Subscription("PM1.ValveAV117.DeviceData")] public AITValveData ValveAV117Data { get; set; }
  228. [Subscription("PM1.ValveAV118.DeviceData")] public AITValveData ValveAV118Data { get; set; }
  229. [Subscription("PM1.ValveAV119.DeviceData")] public AITValveData ValveAV119Data { get; set; }
  230. [Subscription("PM1.ValveAV120.DeviceData")] public AITValveData ValveAV120Data { get; set; }
  231. [Subscription("PM1.ValveAV121.DeviceData")] public AITValveData ValveAV121Data { get; set; }
  232. [Subscription("PM1.ValveAV122.DeviceData")] public AITValveData ValveAV122Data { get; set; }
  233. [Subscription("PM1.ValveAV123.DeviceData")] public AITValveData ValveAV123Data { get; set; }
  234. [Subscription("PM1.ValveAV124.DeviceData")] public AITValveData ValveAV124Data { get; set; }
  235. [Subscription("PM1.ValveAV125.DeviceData")] public AITValveData ValveAV125Data { get; set; }
  236. [Subscription("PM1.ValveAV126.DeviceData")] public AITValveData ValveAV126Data { get; set; }
  237. [Subscription("PM1.ValveAV127.DeviceData")] public AITValveData ValveAV127Data { get; set; }
  238. [Subscription("PM1.ValveAV128.DeviceData")] public AITValveData ValveAV128Data { get; set; }
  239. [Subscription("PM1.ValveAV129.DeviceData")] public AITValveData ValveAV129Data { get; set; }
  240. [Subscription("PM1.ValveAV130.DeviceData")] public AITValveData ValveAV130Data { get; set; }
  241. [Subscription("PM1.ValveAV131.DeviceData")] public AITValveData ValveAV131Data { get; set; }
  242. [Subscription("PM1.ValveAV132.DeviceData")] public AITValveData ValveAV132Data { get; set; }
  243. [Subscription("PM1.ValveAV133.DeviceData")] public AITValveData ValveAV133Data { get; set; }
  244. [Subscription("PM1.ValveAV134.DeviceData")] public AITValveData ValveAV134Data { get; set; }
  245. [Subscription("PM1.ValveAV135.DeviceData")] public AITValveData ValveAV135Data { get; set; }
  246. [Subscription("PM1.ValveAV136.DeviceData")] public AITValveData ValveAV136Data { get; set; }
  247. #endregion
  248. #region APC
  249. [Subscription("PM1.APC.DeviceData")]
  250. public AITAPCData APCData { get; set; }
  251. #endregion
  252. #region Analog
  253. //[Subscription("PM1.HTCurrent1.DeviceData")]
  254. //public AITWaterFlowMeterData HTCurrent1 { get; set; }
  255. //[Subscription("PM1.HTCurrent2.DeviceData")]
  256. //public AITWaterFlowMeterData HTCurrent2 { get; set; }
  257. //[Subscription("PM1.HTCurrent3.DeviceData")]
  258. //public AITWaterFlowMeterData HTCurrent3 { get; set; }
  259. //[Subscription("PM1.HTCurrent4.DeviceData")]
  260. //public AITWaterFlowMeterData HTCurrent4 { get; set; }
  261. //[Subscription("PM1.HTCurrent5.DeviceData")]
  262. //public AITWaterFlowMeterData HTCurrent5 { get; set; }
  263. //[Subscription("PM1.HTVoltage1.DeviceData")]
  264. //public AITWaterFlowMeterData HTVoltage1 { get; set; }
  265. //[Subscription("PM1.HTVoltage2.DeviceData")]
  266. //public AITWaterFlowMeterData HTVoltage2 { get; set; }
  267. //[Subscription("PM1.HTVoltage3.DeviceData")]
  268. //public AITWaterFlowMeterData HTVoltage3 { get; set; }
  269. //[Subscription("PM1.HTVoltage4.DeviceData")]
  270. //public AITWaterFlowMeterData HTVoltage4 { get; set; }
  271. //[Subscription("PM1.HTVoltage5.DeviceData")]
  272. //public AITWaterFlowMeterData HTVoltage5 { get; set; }
  273. //[Subscription("PM1.HeaterWaterFlow.DeviceData")]
  274. //public AITWaterFlowMeterData HeaterWaterFlow { get; set; }
  275. //[Subscription("PM1.MFWaterFlow.DeviceData")]
  276. //public AITWaterFlowMeterData MFWaterFlow { get; set; }
  277. //[Subscription("PM1.CAPWaterFlow.DeviceData")]
  278. //public AITWaterFlowMeterData CAPWaterFlow { get; set; }
  279. //[Subscription("PM1.A_SWaterFlow.DeviceData")]
  280. //public AITWaterFlowMeterData A_SWaterFlow { get; set; }
  281. //[Subscription("PM1.HeaterEXH.DeviceData")]
  282. //public AITWaterFlowMeterData HeaterEXH { get; set; }
  283. //[Subscription("PM1.SCVEXH.DeviceData")]
  284. //public AITWaterFlowMeterData SCVEXH { get; set; }
  285. //[Subscription("PM1.G_UEXH.DeviceData")]
  286. //public AITWaterFlowMeterData G_UEXH { get; set; }
  287. //[Subscription("PM1.PT1Value.DeviceData")]
  288. //public AITWaterFlowMeterData PT1Value { get; set; }
  289. //[Subscription("PM1.PT2Value.DeviceData")]
  290. //public AITWaterFlowMeterData PT2Value { get; set; }
  291. //[Subscription("PM1.PT3Value.DeviceData")]
  292. //public AITWaterFlowMeterData PT3Value { get; set; }
  293. //[Subscription("PM1.PT4Value.DeviceData")]
  294. //public AITWaterFlowMeterData PT4Value { get; set; }
  295. //[Subscription("PM1.PT5Value.DeviceData")]
  296. //public AITWaterFlowMeterData PT5Value { get; set; }
  297. //[Subscription("PM1.PT6Value.DeviceData")]
  298. //public AITWaterFlowMeterData PT6Value { get; set; }
  299. //[Subscription("PM1.P_SW1Value.DeviceData")]
  300. //public AITWaterFlowMeterData P_SW1Value { get; set; }
  301. //[Subscription("PM1.P_SW2Value.DeviceData")]
  302. //public AITWaterFlowMeterData P_SW2Value { get; set; }
  303. //[Subscription("PM1.VG2Pressure.DeviceData")]
  304. //public AITWaterFlowMeterData VG2Pressure { get; set; }
  305. //[Subscription("PM1.Tank1Pressure.DeviceData")]
  306. //public AITWaterFlowMeterData Tank1Pressure { get; set; }
  307. //[Subscription("PM1.Tank2Pressure.DeviceData")]
  308. //public AITWaterFlowMeterData Tank2Pressure { get; set; }
  309. //[Subscription("PM1.VG21.DeviceData")]
  310. //public AITWaterFlowMeterData VG21Data { get; set; }
  311. //[Subscription("PM1.VG22.DeviceData")]
  312. //public AITWaterFlowMeterData VG22Data { get; set; }
  313. //[Subscription("PM1.VG32Pressure.DeviceData")]
  314. //public AITWaterFlowMeterData VG32Pressure { get; set; }
  315. //[Subscription("PM1.VG33Pressure.DeviceData")]
  316. //public AITWaterFlowMeterData VG33Pressure { get; set; }
  317. #endregion
  318. #region PM
  319. [Subscription("PM1.Status")]
  320. public string PM1Status { get; set; }
  321. [Subscription("PM1.RecipeHold")]
  322. public bool PM1RecipeHold { get; set; }
  323. public bool IsMannualButtonEnabled
  324. {
  325. get
  326. {
  327. return PM1Status != "Process" || (PM1Status == "Process" && PM1RecipeHold);
  328. }
  329. }
  330. #endregion
  331. [Subscription("PM1.CurrentAuxData")]
  332. public List<AITAuxData> AUXDetailDatas { get; set; }
  333. private bool _mFCIsChecked = false;
  334. public bool MFCIsChecked
  335. {
  336. get => _mFCIsChecked;
  337. set
  338. {
  339. _mFCIsChecked = value;
  340. NotifyOfPropertyChange("MFCIsChecked");
  341. }
  342. }
  343. private bool _mFMIsChecked = false;
  344. public bool MFMIsChecked
  345. {
  346. get => _mFMIsChecked;
  347. set
  348. {
  349. _mFMIsChecked = value;
  350. NotifyOfPropertyChange("MFMIsChecked");
  351. }
  352. }
  353. private bool _auxIsChecked = false;
  354. public bool AuxIsChecked
  355. {
  356. get => _auxIsChecked;
  357. set
  358. {
  359. _auxIsChecked = value;
  360. NotifyOfPropertyChange("AuxIsChecked");
  361. }
  362. }
  363. private bool _valveIsChecked = false;
  364. public bool ValveIsChecked
  365. {
  366. get => _valveIsChecked;
  367. set
  368. {
  369. _valveIsChecked = value;
  370. NotifyOfPropertyChange("ValveIsChecked");
  371. }
  372. }
  373. private Visibility _gridMFCVisibility = Visibility.Hidden;
  374. public Visibility GridMFCVisibility
  375. {
  376. get => _gridMFCVisibility;
  377. set
  378. {
  379. _gridMFCVisibility = value;
  380. NotifyOfPropertyChange("GridMFCVisibility");
  381. }
  382. }
  383. private Visibility _gridMFMVisibility = Visibility.Hidden;
  384. public Visibility GridMFMVisibility
  385. {
  386. get => _gridMFMVisibility;
  387. set
  388. {
  389. _gridMFMVisibility = value;
  390. NotifyOfPropertyChange("GridMFMVisibility");
  391. }
  392. }
  393. private Visibility _gridValveVisibility = Visibility.Hidden;
  394. public Visibility GridValveVisibility
  395. {
  396. get => _gridValveVisibility;
  397. set
  398. {
  399. _gridValveVisibility = value;
  400. NotifyOfPropertyChange("GridValveVisibility");
  401. }
  402. }
  403. private Visibility _gridAPCVisibility = Visibility.Hidden;
  404. public Visibility GridAPCVisibility
  405. {
  406. get => _gridAPCVisibility;
  407. set
  408. {
  409. _gridAPCVisibility = value;
  410. NotifyOfPropertyChange("GridAPCVisibility");
  411. }
  412. }
  413. private Visibility _gridAnalogVisibility = Visibility.Hidden;
  414. public Visibility GridAnalogVisibility
  415. {
  416. get => _gridAnalogVisibility;
  417. set
  418. {
  419. _gridAnalogVisibility = value;
  420. NotifyOfPropertyChange("GridAnalogVisibility");
  421. }
  422. }
  423. private Visibility _gridAUXVisibility = Visibility.Hidden;
  424. public Visibility GridAUXVisibility
  425. {
  426. get => _gridAUXVisibility;
  427. set
  428. {
  429. _gridAUXVisibility = value;
  430. NotifyOfPropertyChange("GridAUXVisibility");
  431. }
  432. }
  433. private ObservableCollection<MFCDetailValue> _mfcDetailDatas = new ObservableCollection<MFCDetailValue>();
  434. public ObservableCollection<MFCDetailValue> MFCDetailDatas
  435. {
  436. get => _mfcDetailDatas;
  437. set
  438. {
  439. _mfcDetailDatas = value;
  440. NotifyOfPropertyChange("MFCDetailDatas");
  441. }
  442. }
  443. private ObservableCollection<MFMDetailValue> _mfmDetailDatas = new ObservableCollection<MFMDetailValue>();
  444. public ObservableCollection<MFMDetailValue> MFMDetailDatas
  445. {
  446. get => _mfmDetailDatas;
  447. set
  448. {
  449. _mfmDetailDatas = value;
  450. NotifyOfPropertyChange("MFMDetailDataLists");
  451. }
  452. }
  453. private ObservableCollection<ValveDetailValue> _valveDetailDatas = new ObservableCollection<ValveDetailValue>();
  454. public ObservableCollection<ValveDetailValue> ValveDetailDatas
  455. {
  456. get => _valveDetailDatas;
  457. set
  458. {
  459. _valveDetailDatas = value;
  460. NotifyOfPropertyChange("ValveDetailDatas");
  461. }
  462. }
  463. private ObservableCollection<MFMDetailValue> _apcDetailDatas = new ObservableCollection<MFMDetailValue>();
  464. public ObservableCollection<MFMDetailValue> APCDetailDatas
  465. {
  466. get => _apcDetailDatas;
  467. set
  468. {
  469. _apcDetailDatas = value;
  470. NotifyOfPropertyChange("APCDetailDatas");
  471. }
  472. }
  473. private ObservableCollection<AnalogDetailValue> _analogDetailDatas = new ObservableCollection<AnalogDetailValue>();
  474. public ObservableCollection<AnalogDetailValue> AnalogDetailDatas
  475. {
  476. get => _analogDetailDatas;
  477. set
  478. {
  479. _analogDetailDatas = value;
  480. NotifyOfPropertyChange("AnalogDetailDatas");
  481. }
  482. }
  483. private bool _isEnableMannual;
  484. public bool IsEnableMannual
  485. {
  486. get => _isEnableMannual;
  487. set
  488. {
  489. _isEnableMannual = value;
  490. NotifyOfPropertyChange(nameof(IsEnableMannual));
  491. }
  492. }
  493. private int _mannualSelectCount;
  494. protected override void OnActivate()
  495. {
  496. base.OnActivate();
  497. MFCIsChecked = true;
  498. MFMIsChecked = false;
  499. ValveIsChecked = false;
  500. AuxIsChecked = false;
  501. GASSettingSelectCmd("MFC", null);
  502. _ioNameKeyDict = QueryDataClient.Instance.Service.GetData("System.NameKeyDict") as Dictionary<string,List<string>>;
  503. }
  504. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  505. {
  506. base.InvokeAfterUpdateProperty(data);
  507. if (!IsEnableMannual)
  508. UpdateFlowValue();
  509. }
  510. private void UpdateFlowValue()
  511. {
  512. List<AITMfcData> allmfcData = new List<AITMfcData>()
  513. {
  514. MFC1Data,
  515. MFC2Data,
  516. MFC3Data,
  517. MFC4Data,
  518. MFC5Data,
  519. MFC6Data,
  520. MFC7Data,
  521. MFC8Data,
  522. MFC9Data,
  523. MFC10Data,
  524. MFC11Data,
  525. MFC12Data,
  526. MFC13Data,
  527. MFC14Data,
  528. MFC15Data,
  529. MFC16Data,
  530. MFC17Data,
  531. MFC31Data,
  532. MFC32Data,
  533. MFC51Data,
  534. };
  535. List<AITMfcData> mfcData = new List<AITMfcData>()
  536. {
  537. };
  538. foreach (var item in allmfcData)
  539. {
  540. if (item != null)
  541. {
  542. mfcData.Add(item);
  543. }
  544. }
  545. List<AITMfcData> tempMFC = new List<AITMfcData>();
  546. for (int i = 0; i < mfcData.Count; i++)
  547. {
  548. if (mfcData[i] == null) continue;
  549. var IsMFCInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{mfcData[i].DeviceName}.IsMFCInstalled");
  550. if (IsMFCInstalled)
  551. {
  552. tempMFC.Add(mfcData[i]);
  553. }
  554. }
  555. List<AITWaterFlowMeterData> allmfmData = new List<AITWaterFlowMeterData>()
  556. {
  557. MFM1FlowData,
  558. MFM6FlowData,
  559. MFM7FlowData,
  560. MFM8FlowData,
  561. MFM9FlowData,
  562. MFM11FlowData,
  563. MFM12FlowData,
  564. MFM13FlowData,
  565. MFM16FlowData,
  566. MFM57FlowData,
  567. };
  568. List<AITWaterFlowMeterData> mfmData = new List<AITWaterFlowMeterData>()
  569. {
  570. };
  571. foreach (var item in allmfmData)
  572. {
  573. if (item != null)
  574. {
  575. mfmData.Add(item);
  576. }
  577. }
  578. List<AITWaterFlowMeterData> tempMFM = new List<AITWaterFlowMeterData>();
  579. for (int i = 0; i < mfmData.Count; i++)
  580. {
  581. if (mfmData[i] == null) continue;
  582. var IsMFMInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{mfmData[i].DeviceName}.IsMFMInstalled");
  583. if (IsMFMInstalled)
  584. {
  585. tempMFM.Add(mfmData[i]);
  586. }
  587. }
  588. List<AITAPCData> apcData = new List<AITAPCData>()
  589. {
  590. APCData,
  591. };
  592. List<AITValveData> allValveData = new List<AITValveData>()
  593. {
  594. ValveAV1Data,
  595. ValveAV2Data,
  596. ValveAV3Data,
  597. ValveAV4Data,
  598. ValveAV5Data,
  599. ValveAV6Data,
  600. ValveAV7Data,
  601. ValveAV8Data,
  602. ValveAV9Data,
  603. ValveAV10Data,
  604. ValveAV11Data,
  605. ValveAV12Data,
  606. ValveAV13Data,
  607. ValveAV14Data,
  608. ValveAV15Data,
  609. ValveAV16Data,
  610. ValveAV17Data,
  611. ValveAV18Data,
  612. ValveAV19Data,
  613. ValveAV20Data,
  614. ValveAV21Data,
  615. ValveAV22Data,
  616. ValveAV23Data,
  617. ValveAV24Data,
  618. ValveAV25Data,
  619. ValveAV26Data,
  620. ValveAV27Data,
  621. ValveAV28Data,
  622. ValveAV29Data,
  623. ValveAV30Data,
  624. ValveAV31Data,
  625. ValveAV32Data,
  626. ValveAV33Data,
  627. ValveAV34Data,
  628. ValveAV35Data,
  629. ValveAV36Data,
  630. ValveAV37Data,
  631. ValveAV38Data,
  632. ValveAV39Data,
  633. ValveAV40Data,
  634. ValveAV41Data,
  635. ValveAV42Data,
  636. ValveAV43Data,
  637. ValveAV44Data,
  638. ValveAV45Data,
  639. ValveAV46Data,
  640. ValveAV47Data,
  641. ValveAV48Data,
  642. ValveAV49Data,
  643. ValveAV50Data,
  644. ValveAV51Data,
  645. ValveAV52Data,
  646. ValveAV53Data,
  647. ValveAV54Data,
  648. ValveAV55Data,
  649. ValveAV56Data,
  650. ValveAV57Data,
  651. ValveAV58Data,
  652. ValveAV59Data,
  653. ValveAV60Data,
  654. ValveAV61Data,
  655. ValveAV62Data,
  656. ValveAV63Data,
  657. ValveAV64Data,
  658. ValveAV65Data,
  659. ValveAV66Data,
  660. ValveAV67Data,
  661. ValveAV68Data,
  662. ValveAV69Data,
  663. ValveAV70Data,
  664. ValveAV71Data,
  665. ValveAV72Data,
  666. ValveAV73Data,
  667. ValveAV74Data,
  668. ValveAV75Data,
  669. ValveAV76Data,
  670. ValveAV77Data,
  671. ValveAV78Data,
  672. ValveAV79Data,
  673. ValveAV80Data,
  674. ValveAV81Data,
  675. ValveAV82Data,
  676. ValveAV83Data,
  677. ValveAV84Data,
  678. ValveAV85Data,
  679. ValveAV86Data,
  680. ValveAV87Data,
  681. ValveAV88Data,
  682. ValveAV89Data,
  683. ValveAV90Data,
  684. ValveAV91Data,
  685. ValveAV92Data,
  686. ValveAV93Data,
  687. ValveAV94Data,
  688. ValveAV95Data,
  689. ValveAV96Data,
  690. ValveAV97Data,
  691. ValveAV98Data,
  692. ValveAV99Data,
  693. ValveAV100Data,
  694. ValveAV101Data,
  695. ValveAV102Data,
  696. ValveAV103Data,
  697. ValveAV104Data,
  698. ValveAV105Data,
  699. ValveAV106Data,
  700. ValveAV107Data,
  701. ValveAV108Data,
  702. ValveAV109Data,
  703. ValveAV110Data,
  704. ValveAV111Data,
  705. ValveAV112Data,
  706. ValveAV113Data,
  707. ValveAV114Data,
  708. ValveAV115Data,
  709. ValveAV116Data,
  710. ValveAV117Data,
  711. ValveAV118Data,
  712. ValveAV119Data,
  713. ValveAV120Data,
  714. ValveAV121Data,
  715. ValveAV122Data,
  716. ValveAV123Data,
  717. ValveAV124Data,
  718. ValveAV125Data,
  719. ValveAV126Data,
  720. ValveAV127Data,
  721. ValveAV128Data,
  722. ValveAV129Data,
  723. ValveAV130Data,
  724. ValveAV131Data,
  725. ValveAV132Data,
  726. ValveAV133Data,
  727. ValveAV134Data,
  728. ValveAV135Data,
  729. ValveAV136Data
  730. };
  731. List<AITValveData> valveData = new List<AITValveData>()
  732. {
  733. };
  734. foreach (var item in allValveData)
  735. {
  736. if (item != null)
  737. {
  738. valveData.Add(item);
  739. }
  740. }
  741. if (MFCDetailDatas.Count == 0)
  742. {
  743. for (int i = 0; i < tempMFC.Count; i++)
  744. {
  745. if (tempMFC[i] == null) continue;
  746. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{tempMFC[i].DeviceName}.FlowUnit");
  747. var setpoint = mfcData[i].SetPoint.ToString("F1");
  748. MFCDetailDatas.Add(new MFCDetailValue()
  749. {
  750. Name = tempMFC[i].DeviceName,
  751. DisplayName = tempMFC[i].DisplayName,
  752. Unit = Unit,
  753. Setpoint = setpoint,
  754. Feedback = tempMFC[i].FeedBack.ToString("F3"),
  755. Ramping = tempMFC[i].Ramping.ToString("F1"),
  756. AlarmTable = string.IsNullOrEmpty(tempMFC[i].AlarmWatchTable) ? "None" : tempMFC[i].AlarmWatchTable,
  757. MaxValue = (double)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{tempMFC[i].DeviceName}.N2Scale")
  758. });
  759. }
  760. }
  761. else
  762. {
  763. for (int i = 0; i < tempMFC.Count; i++)
  764. {
  765. if (tempMFC[i] == null) continue;
  766. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{mfcData[i].DeviceName}.FlowUnit");
  767. var setpoint = tempMFC[i].SetPoint.ToString("F1");
  768. MFCDetailDatas[i].Name = tempMFC[i].DeviceName;
  769. MFCDetailDatas[i].DisplayName = tempMFC[i].DisplayName;
  770. MFCDetailDatas[i].Unit = Unit;
  771. MFCDetailDatas[i].Setpoint = setpoint;
  772. MFCDetailDatas[i].Feedback = tempMFC[i].FeedBack.ToString("F3");
  773. MFCDetailDatas[i].Ramping = tempMFC[i].Ramping.ToString("F1");
  774. MFCDetailDatas[i].AlarmTable = string.IsNullOrEmpty(tempMFC[i].AlarmWatchTable) ? "None" : tempMFC[i].AlarmWatchTable;
  775. }
  776. }
  777. if (MFMDetailDatas.Count == 0)
  778. {
  779. for (int i = 0; i < tempMFM.Count; i++)
  780. {
  781. if (tempMFM[i] == null) continue;
  782. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{tempMFM[i].DeviceName}.FlowUnit");
  783. MFMDetailDatas.Add(new MFMDetailValue()
  784. {
  785. Name = tempMFM[i].DeviceName,
  786. DisplayName = tempMFM[i].DisplayName,
  787. Unit = Unit,
  788. Setpoint = tempMFM[i].SetPoint.ToString("F1"),
  789. Feedback = tempMFM[i].FeedBack.ToString("F1"),
  790. AlarmTable = string.IsNullOrEmpty(tempMFM[i].AlarmWatchTable) ? "None" : tempMFM[i].AlarmWatchTable,
  791. });
  792. }
  793. }
  794. else
  795. {
  796. for (int i = 0; i < tempMFM.Count; i++)
  797. {
  798. if (tempMFM[i] == null) continue;
  799. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{tempMFM[i].DeviceName}.FlowUnit");
  800. MFMDetailDatas[i].Name = tempMFM[i].DeviceName;
  801. MFMDetailDatas[i].DisplayName = tempMFM[i].DeviceName;
  802. MFMDetailDatas[i].Unit = Unit;
  803. MFMDetailDatas[i].Setpoint = tempMFM[i].SetPoint.ToString("F1");
  804. MFMDetailDatas[i].Feedback = tempMFM[i].FeedBack.ToString("F1");
  805. MFMDetailDatas[i].AlarmTable = string.IsNullOrEmpty(tempMFM[i].AlarmWatchTable) ? "None" : tempMFM[i].AlarmWatchTable;
  806. }
  807. }
  808. if (ValveDetailDatas.Count == 0)
  809. {
  810. for (int i = 0; i < valveData.Count; i++)
  811. {
  812. if (valveData[i] == null) continue;
  813. ValveDetailDatas.Add(new ValveDetailValue()
  814. {
  815. Name = valveData[i].DeviceName,
  816. DisplayName = valveData[i].DisplayName,
  817. Feedback = valveData[i].Feedback,
  818. Value = valveData[i].IsOpen ? "Open" : "Close",
  819. IsEnable = IsEnableMannual,
  820. });
  821. }
  822. }
  823. else
  824. {
  825. for (int i = 0; i < valveData.Count; i++)
  826. {
  827. if (valveData[i] == null) continue;
  828. ValveDetailDatas[i].Name = valveData[i].DeviceName;
  829. ValveDetailDatas[i].DisplayName = valveData[i].DisplayName;
  830. ValveDetailDatas[i].Feedback = valveData[i].Feedback;
  831. ValveDetailDatas[i].Value = valveData[i].IsOpen ? "Open" : "Close";
  832. ValveDetailDatas[i].IsEnable = IsEnableMannual;
  833. }
  834. }
  835. var pressures = QueryDataClient.Instance.Service.PollData(_ioNameKeyDict[DeviceName.IoPressureMeterNameKey]).Values;
  836. foreach (var p in pressures)
  837. {
  838. if (p is AITWaterFlowMeterData pressure)
  839. {
  840. var data = AnalogDetailDatas.FirstOrDefault(r => r.Name == pressure.DeviceName);
  841. if (data == null)
  842. {
  843. AnalogDetailDatas.Add(new AnalogDetailValue()
  844. {
  845. Name = pressure.DeviceName,
  846. DisplayName = pressure.DisplayName,
  847. Unit = pressure.Unit,
  848. Feedback = pressure.FeedBack.ToString("F1")
  849. });
  850. }
  851. else
  852. {
  853. data.DisplayName = pressure.DeviceName;
  854. data.Unit = pressure.Unit;
  855. data.Feedback = pressure.FeedBack.ToString("F1");
  856. }
  857. }
  858. }
  859. }
  860. public void MFCSetCmd(object senderName, object sender, object typeName, double maxValue)
  861. {
  862. string name = senderName.ToString();
  863. var control = (Button)sender;
  864. switch (typeName.ToString())
  865. {
  866. case "Setpoint":
  867. var windowManager = IoC.Get<IWindowManager>();
  868. RecipeFlowSettingViewModel recipeFlowSettingViewModel = new RecipeFlowSettingViewModel();
  869. recipeFlowSettingViewModel.SelectMfcFlow = name.ToUpper();
  870. recipeFlowSettingViewModel.SelectFlowValue = control.Content.ToString();
  871. recipeFlowSettingViewModel.MaxValue = maxValue;
  872. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeFlowSettingViewModel, null, "GasDetail Flow Setting"))
  873. {
  874. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = recipeFlowSettingViewModel.SelectFlow;
  875. }
  876. break;
  877. case "Ramping":
  878. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  879. if (strRetValue != "Cancel")
  880. {
  881. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Ramping = strRetValue;
  882. }
  883. break;
  884. case "AlarmTable":
  885. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  886. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  887. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  888. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  889. break;
  890. }
  891. }
  892. public void MFMSetCmd(object senderName, object sender, object typeName)
  893. {
  894. string name = senderName.ToString();
  895. switch (typeName.ToString())
  896. {
  897. case "Setpoint":
  898. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  899. if (strRetValue != "Cancel")
  900. {
  901. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  902. }
  903. break;
  904. case "AlarmTable":
  905. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  906. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  907. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  908. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  909. break;
  910. }
  911. }
  912. public void ValveSetCmd(object senderName)
  913. {
  914. string name = senderName.ToString();
  915. SwitchDialog dlg = new SwitchDialog();
  916. dlg.IsOpen = ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value == "Open";
  917. dlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  918. dlg.ShowDialog();
  919. if (dlg.IsSave)
  920. {
  921. ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value = dlg.IsOpen ? "Open" : "Close";
  922. }
  923. }
  924. public void APCSetCmd(object senderName, object sender, object typeName)
  925. {
  926. string name = senderName.ToString();
  927. switch (typeName.ToString())
  928. {
  929. case "Setpoint":
  930. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  931. if (strRetValue != "Cancel")
  932. {
  933. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  934. }
  935. break;
  936. case "AlarmTable":
  937. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  938. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  939. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  940. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  941. break;
  942. }
  943. }
  944. private string ShowNumberKeyboard(Control control, string defaultValue)
  945. {
  946. NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
  947. var point = control.PointFromScreen(new Point(0, 0));
  948. double wx = SystemParameters.WorkArea.Width;
  949. double hy = SystemParameters.WorkArea.Height;
  950. if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
  951. {
  952. numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
  953. }
  954. else
  955. {
  956. numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
  957. }
  958. if (-point.X + numberKeyboard.Width < wx)
  959. {
  960. numberKeyboard.Left = -point.X;
  961. }
  962. else
  963. {
  964. numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
  965. }
  966. if ((bool)numberKeyboard.ShowDialog())
  967. return numberKeyboard.ValueString;
  968. else
  969. return "Cancel";
  970. }
  971. public void GASSettingSelectCmd(string cmd, object sender)
  972. {
  973. if (sender != null)
  974. {
  975. ((RadioButton)sender).IsChecked = true;
  976. }
  977. else
  978. {
  979. }
  980. GridMFCVisibility = Visibility.Hidden;
  981. GridMFMVisibility = Visibility.Hidden;
  982. GridValveVisibility = Visibility.Hidden;
  983. GridAPCVisibility = Visibility.Hidden;
  984. GridAnalogVisibility = Visibility.Hidden;
  985. GridAUXVisibility = Visibility.Hidden;
  986. switch (cmd)
  987. {
  988. case "MFC":
  989. GridMFCVisibility = Visibility.Visible;
  990. break;
  991. case "MFM":
  992. GridMFMVisibility = Visibility.Visible;
  993. break;
  994. case "Valve":
  995. GridValveVisibility = Visibility.Visible;
  996. break;
  997. case "APC":
  998. GridAPCVisibility = Visibility.Visible;
  999. break;
  1000. case "Analog":
  1001. GridAnalogVisibility = Visibility.Visible;
  1002. break;
  1003. case "AUX":
  1004. GridAUXVisibility = Visibility.Visible;
  1005. break;
  1006. default:
  1007. break;
  1008. }
  1009. }
  1010. public void MannualSelectCmd()
  1011. {
  1012. _mannualSelectCount++;
  1013. if (_mannualSelectCount % 2 == 0)
  1014. {
  1015. IsEnableMannual = false;
  1016. }
  1017. else
  1018. {
  1019. IsEnableMannual = true;
  1020. }
  1021. UpdateFlowValue();
  1022. }
  1023. public void ExecCmd()
  1024. {
  1025. if (!DialogBox.Confirm("Ara you sure to execute?"))
  1026. return;
  1027. for (int i = 0; i < MFCDetailDatas.Count; i++)
  1028. {
  1029. InvokeClient.Instance.Service.DoOperation($"PM1.{MFCDetailDatas[i].Name}.SetMfcValue", $"{MFCDetailDatas[i].Setpoint};{MFCDetailDatas[i].Ramping};{MFCDetailDatas[i].AlarmTable}");
  1030. }
  1031. for (int i = 0; i < MFMDetailDatas.Count; i++)
  1032. {
  1033. InvokeClient.Instance.Service.DoOperation($"PM1.{MFMDetailDatas[i].Name}.SetMfmValue", $"{MFMDetailDatas[i].Setpoint};{MFMDetailDatas[i].AlarmTable}");
  1034. }
  1035. for (int i = 0; i < ValveDetailDatas.Count; i++)
  1036. {
  1037. InvokeClient.Instance.Service.DoOperation($"PM1.{ValveDetailDatas[i].Name}.{AITValveOperation.GVTurnValve}", ValveDetailDatas[i].Value == "Open");
  1038. }
  1039. _mannualSelectCount = 0;
  1040. IsEnableMannual = false;
  1041. }
  1042. public void CloseCmd()
  1043. {
  1044. ((Window)GetView()).DialogResult = false;
  1045. }
  1046. }
  1047. public class AnalogDetailValue : PropertyChangedBase
  1048. {
  1049. private string _name;
  1050. public string Name
  1051. {
  1052. get => _name;
  1053. set
  1054. {
  1055. _name = value;
  1056. NotifyOfPropertyChange("Name");
  1057. }
  1058. }
  1059. private string _displayName;
  1060. public string DisplayName
  1061. {
  1062. get => _displayName;
  1063. set
  1064. {
  1065. _displayName = value;
  1066. NotifyOfPropertyChange("DisplayName");
  1067. }
  1068. }
  1069. public string _unit;
  1070. public string Unit
  1071. {
  1072. get => _unit;
  1073. set
  1074. {
  1075. _unit = value;
  1076. NotifyOfPropertyChange("Unit");
  1077. }
  1078. }
  1079. private string _feedback;
  1080. public string Feedback
  1081. {
  1082. get => _feedback;
  1083. set
  1084. {
  1085. _feedback = value;
  1086. NotifyOfPropertyChange("Feedback");
  1087. }
  1088. }
  1089. }
  1090. public class ValveDetailValue : PropertyChangedBase
  1091. {
  1092. private string _name;
  1093. public string Name
  1094. {
  1095. get => _name;
  1096. set
  1097. {
  1098. _name = value;
  1099. NotifyOfPropertyChange("Name");
  1100. }
  1101. }
  1102. private string _displayName;
  1103. public string DisplayName
  1104. {
  1105. get => _displayName;
  1106. set
  1107. {
  1108. _displayName = value;
  1109. NotifyOfPropertyChange("DisplayName");
  1110. }
  1111. }
  1112. private string _value;
  1113. public string Value
  1114. {
  1115. get => _value;
  1116. set
  1117. {
  1118. _value = value;
  1119. NotifyOfPropertyChange("Value");
  1120. }
  1121. }
  1122. private bool _feedback;
  1123. public bool Feedback
  1124. {
  1125. get => _feedback;
  1126. set
  1127. {
  1128. _feedback = value;
  1129. NotifyOfPropertyChange("Feedback");
  1130. }
  1131. }
  1132. private bool _isEnable = true;
  1133. public bool IsEnable
  1134. {
  1135. get => _isEnable;
  1136. set
  1137. {
  1138. _isEnable = value;
  1139. NotifyOfPropertyChange("IsEnable");
  1140. }
  1141. }
  1142. }
  1143. public class MFMDetailValue : PropertyChangedBase
  1144. {
  1145. private string _name;
  1146. public string Name
  1147. {
  1148. get => _name;
  1149. set
  1150. {
  1151. _name = value;
  1152. NotifyOfPropertyChange("Name");
  1153. }
  1154. }
  1155. private string _displayName;
  1156. public string DisplayName
  1157. {
  1158. get => _displayName;
  1159. set
  1160. {
  1161. _displayName = value;
  1162. NotifyOfPropertyChange("DisplayName");
  1163. }
  1164. }
  1165. public string _unit;
  1166. public string Unit
  1167. {
  1168. get => _unit;
  1169. set
  1170. {
  1171. _unit = value;
  1172. NotifyOfPropertyChange("Unit");
  1173. }
  1174. }
  1175. private string _setpoint;
  1176. public string Setpoint
  1177. {
  1178. get => _setpoint;
  1179. set
  1180. {
  1181. _setpoint = value;
  1182. NotifyOfPropertyChange("Setpoint");
  1183. }
  1184. }
  1185. private string _feedback;
  1186. public string Feedback
  1187. {
  1188. get => _feedback;
  1189. set
  1190. {
  1191. _feedback = value;
  1192. NotifyOfPropertyChange("Feedback");
  1193. }
  1194. }
  1195. private string _alarmTable;
  1196. public string AlarmTable
  1197. {
  1198. get => _alarmTable; set
  1199. {
  1200. _alarmTable = value;
  1201. NotifyOfPropertyChange("AlarmTable");
  1202. }
  1203. }
  1204. }
  1205. public class MFCDetailValue : PropertyChangedBase
  1206. {
  1207. private string _name;
  1208. public string Name
  1209. {
  1210. get => _name;
  1211. set
  1212. {
  1213. _name = value;
  1214. NotifyOfPropertyChange("Name");
  1215. }
  1216. }
  1217. private string _displayName;
  1218. public string DisplayName
  1219. {
  1220. get => _displayName;
  1221. set
  1222. {
  1223. _displayName = value;
  1224. NotifyOfPropertyChange("DisplayName");
  1225. }
  1226. }
  1227. public string _unit;
  1228. public string Unit
  1229. {
  1230. get => _unit;
  1231. set
  1232. {
  1233. _unit = value;
  1234. NotifyOfPropertyChange("Unit");
  1235. }
  1236. }
  1237. private string _setpoint;
  1238. public string Setpoint
  1239. {
  1240. get => _setpoint;
  1241. set
  1242. {
  1243. _setpoint = value;
  1244. NotifyOfPropertyChange("Setpoint");
  1245. }
  1246. }
  1247. private string _feedback;
  1248. public string Feedback
  1249. {
  1250. get => _feedback;
  1251. set
  1252. {
  1253. _feedback = value;
  1254. NotifyOfPropertyChange("Feedback");
  1255. }
  1256. }
  1257. private string _ramping;
  1258. public string Ramping
  1259. {
  1260. get => _ramping;
  1261. set
  1262. {
  1263. _ramping = value;
  1264. NotifyOfPropertyChange("Ramping");
  1265. }
  1266. }
  1267. private string _alarmTable;
  1268. public string AlarmTable
  1269. {
  1270. get => _alarmTable; set
  1271. {
  1272. _alarmTable = value;
  1273. NotifyOfPropertyChange("AlarmTable");
  1274. }
  1275. }
  1276. private double _maxValue;
  1277. public double MaxValue
  1278. {
  1279. get { return _maxValue; }
  1280. set
  1281. {
  1282. _maxValue = value;
  1283. NotifyOfPropertyChange("MaxValue");
  1284. }
  1285. }
  1286. }
  1287. }