GasDetailViewModel.cs 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414
  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.Name = pressure.DeviceName;
  854. data.DisplayName = pressure.DisplayName;
  855. data.Unit = pressure.Unit;
  856. data.Feedback = pressure.FeedBack.ToString("F1");
  857. }
  858. }
  859. }
  860. }
  861. public void MFCSetCmd(object senderName, object sender, object typeName, double maxValue)
  862. {
  863. string name = senderName.ToString();
  864. var control = (Button)sender;
  865. switch (typeName.ToString())
  866. {
  867. case "Setpoint":
  868. var windowManager = IoC.Get<IWindowManager>();
  869. RecipeFlowSettingViewModel recipeFlowSettingViewModel = new RecipeFlowSettingViewModel();
  870. recipeFlowSettingViewModel.SelectMfcFlow = name.ToUpper();
  871. recipeFlowSettingViewModel.SelectFlowValue = control.Content.ToString();
  872. recipeFlowSettingViewModel.MaxValue = maxValue;
  873. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeFlowSettingViewModel, null, "GasDetail Flow Setting"))
  874. {
  875. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = recipeFlowSettingViewModel.SelectFlow;
  876. }
  877. break;
  878. case "Ramping":
  879. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  880. if (strRetValue != "Cancel")
  881. {
  882. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Ramping = strRetValue;
  883. }
  884. break;
  885. case "AlarmTable":
  886. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  887. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  888. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  889. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  890. break;
  891. }
  892. }
  893. public void MFMSetCmd(object senderName, object sender, object typeName)
  894. {
  895. string name = senderName.ToString();
  896. switch (typeName.ToString())
  897. {
  898. case "Setpoint":
  899. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  900. if (strRetValue != "Cancel")
  901. {
  902. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  903. }
  904. break;
  905. case "AlarmTable":
  906. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  907. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  908. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  909. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  910. break;
  911. }
  912. }
  913. public void ValveSetCmd(object senderName)
  914. {
  915. string name = senderName.ToString();
  916. SwitchDialog dlg = new SwitchDialog();
  917. dlg.IsOpen = ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value == "Open";
  918. dlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  919. dlg.ShowDialog();
  920. if (dlg.IsSave)
  921. {
  922. ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value = dlg.IsOpen ? "Open" : "Close";
  923. }
  924. }
  925. public void APCSetCmd(object senderName, object sender, object typeName)
  926. {
  927. string name = senderName.ToString();
  928. switch (typeName.ToString())
  929. {
  930. case "Setpoint":
  931. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  932. if (strRetValue != "Cancel")
  933. {
  934. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  935. }
  936. break;
  937. case "AlarmTable":
  938. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  939. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  940. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  941. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  942. break;
  943. }
  944. }
  945. private string ShowNumberKeyboard(Control control, string defaultValue)
  946. {
  947. NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
  948. var point = control.PointFromScreen(new Point(0, 0));
  949. double wx = SystemParameters.WorkArea.Width;
  950. double hy = SystemParameters.WorkArea.Height;
  951. if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
  952. {
  953. numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
  954. }
  955. else
  956. {
  957. numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
  958. }
  959. if (-point.X + numberKeyboard.Width < wx)
  960. {
  961. numberKeyboard.Left = -point.X;
  962. }
  963. else
  964. {
  965. numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
  966. }
  967. if ((bool)numberKeyboard.ShowDialog())
  968. return numberKeyboard.ValueString;
  969. else
  970. return "Cancel";
  971. }
  972. public void GASSettingSelectCmd(string cmd, object sender)
  973. {
  974. if (sender != null)
  975. {
  976. ((RadioButton)sender).IsChecked = true;
  977. }
  978. else
  979. {
  980. }
  981. GridMFCVisibility = Visibility.Hidden;
  982. GridMFMVisibility = Visibility.Hidden;
  983. GridValveVisibility = Visibility.Hidden;
  984. GridAPCVisibility = Visibility.Hidden;
  985. GridAnalogVisibility = Visibility.Hidden;
  986. GridAUXVisibility = Visibility.Hidden;
  987. switch (cmd)
  988. {
  989. case "MFC":
  990. GridMFCVisibility = Visibility.Visible;
  991. break;
  992. case "MFM":
  993. GridMFMVisibility = Visibility.Visible;
  994. break;
  995. case "Valve":
  996. GridValveVisibility = Visibility.Visible;
  997. break;
  998. case "APC":
  999. GridAPCVisibility = Visibility.Visible;
  1000. break;
  1001. case "Analog":
  1002. GridAnalogVisibility = Visibility.Visible;
  1003. break;
  1004. case "AUX":
  1005. GridAUXVisibility = Visibility.Visible;
  1006. break;
  1007. default:
  1008. break;
  1009. }
  1010. }
  1011. public void MannualSelectCmd()
  1012. {
  1013. _mannualSelectCount++;
  1014. if (_mannualSelectCount % 2 == 0)
  1015. {
  1016. IsEnableMannual = false;
  1017. }
  1018. else
  1019. {
  1020. IsEnableMannual = true;
  1021. }
  1022. UpdateFlowValue();
  1023. }
  1024. public void ExecCmd()
  1025. {
  1026. if (!DialogBox.Confirm("Ara you sure to execute?"))
  1027. return;
  1028. for (int i = 0; i < MFCDetailDatas.Count; i++)
  1029. {
  1030. InvokeClient.Instance.Service.DoOperation($"PM1.{MFCDetailDatas[i].Name}.SetMfcValue", $"{MFCDetailDatas[i].Setpoint};{MFCDetailDatas[i].Ramping};{MFCDetailDatas[i].AlarmTable}");
  1031. }
  1032. for (int i = 0; i < MFMDetailDatas.Count; i++)
  1033. {
  1034. InvokeClient.Instance.Service.DoOperation($"PM1.{MFMDetailDatas[i].Name}.SetMfmValue", $"{MFMDetailDatas[i].Setpoint};{MFMDetailDatas[i].AlarmTable}");
  1035. }
  1036. for (int i = 0; i < ValveDetailDatas.Count; i++)
  1037. {
  1038. InvokeClient.Instance.Service.DoOperation($"PM1.{ValveDetailDatas[i].Name}.{AITValveOperation.GVTurnValve}", ValveDetailDatas[i].Value == "Open");
  1039. }
  1040. _mannualSelectCount = 0;
  1041. IsEnableMannual = false;
  1042. }
  1043. public void CloseCmd()
  1044. {
  1045. ((Window)GetView()).DialogResult = false;
  1046. }
  1047. }
  1048. public class AnalogDetailValue : PropertyChangedBase
  1049. {
  1050. private string _name;
  1051. public string Name
  1052. {
  1053. get => _name;
  1054. set
  1055. {
  1056. _name = value;
  1057. NotifyOfPropertyChange("Name");
  1058. }
  1059. }
  1060. private string _displayName;
  1061. public string DisplayName
  1062. {
  1063. get => _displayName;
  1064. set
  1065. {
  1066. _displayName = value;
  1067. NotifyOfPropertyChange("DisplayName");
  1068. }
  1069. }
  1070. public string _unit;
  1071. public string Unit
  1072. {
  1073. get => _unit;
  1074. set
  1075. {
  1076. _unit = value;
  1077. NotifyOfPropertyChange("Unit");
  1078. }
  1079. }
  1080. private string _feedback;
  1081. public string Feedback
  1082. {
  1083. get => _feedback;
  1084. set
  1085. {
  1086. _feedback = value;
  1087. NotifyOfPropertyChange("Feedback");
  1088. }
  1089. }
  1090. }
  1091. public class ValveDetailValue : PropertyChangedBase
  1092. {
  1093. private string _name;
  1094. public string Name
  1095. {
  1096. get => _name;
  1097. set
  1098. {
  1099. _name = value;
  1100. NotifyOfPropertyChange("Name");
  1101. }
  1102. }
  1103. private string _displayName;
  1104. public string DisplayName
  1105. {
  1106. get => _displayName;
  1107. set
  1108. {
  1109. _displayName = value;
  1110. NotifyOfPropertyChange("DisplayName");
  1111. }
  1112. }
  1113. private string _value;
  1114. public string Value
  1115. {
  1116. get => _value;
  1117. set
  1118. {
  1119. _value = value;
  1120. NotifyOfPropertyChange("Value");
  1121. }
  1122. }
  1123. private bool _feedback;
  1124. public bool Feedback
  1125. {
  1126. get => _feedback;
  1127. set
  1128. {
  1129. _feedback = value;
  1130. NotifyOfPropertyChange("Feedback");
  1131. }
  1132. }
  1133. private bool _isEnable = true;
  1134. public bool IsEnable
  1135. {
  1136. get => _isEnable;
  1137. set
  1138. {
  1139. _isEnable = value;
  1140. NotifyOfPropertyChange("IsEnable");
  1141. }
  1142. }
  1143. }
  1144. public class MFMDetailValue : PropertyChangedBase
  1145. {
  1146. private string _name;
  1147. public string Name
  1148. {
  1149. get => _name;
  1150. set
  1151. {
  1152. _name = value;
  1153. NotifyOfPropertyChange("Name");
  1154. }
  1155. }
  1156. private string _displayName;
  1157. public string DisplayName
  1158. {
  1159. get => _displayName;
  1160. set
  1161. {
  1162. _displayName = value;
  1163. NotifyOfPropertyChange("DisplayName");
  1164. }
  1165. }
  1166. public string _unit;
  1167. public string Unit
  1168. {
  1169. get => _unit;
  1170. set
  1171. {
  1172. _unit = value;
  1173. NotifyOfPropertyChange("Unit");
  1174. }
  1175. }
  1176. private string _setpoint;
  1177. public string Setpoint
  1178. {
  1179. get => _setpoint;
  1180. set
  1181. {
  1182. _setpoint = value;
  1183. NotifyOfPropertyChange("Setpoint");
  1184. }
  1185. }
  1186. private string _feedback;
  1187. public string Feedback
  1188. {
  1189. get => _feedback;
  1190. set
  1191. {
  1192. _feedback = value;
  1193. NotifyOfPropertyChange("Feedback");
  1194. }
  1195. }
  1196. private string _alarmTable;
  1197. public string AlarmTable
  1198. {
  1199. get => _alarmTable; set
  1200. {
  1201. _alarmTable = value;
  1202. NotifyOfPropertyChange("AlarmTable");
  1203. }
  1204. }
  1205. }
  1206. public class MFCDetailValue : PropertyChangedBase
  1207. {
  1208. private string _name;
  1209. public string Name
  1210. {
  1211. get => _name;
  1212. set
  1213. {
  1214. _name = value;
  1215. NotifyOfPropertyChange("Name");
  1216. }
  1217. }
  1218. private string _displayName;
  1219. public string DisplayName
  1220. {
  1221. get => _displayName;
  1222. set
  1223. {
  1224. _displayName = value;
  1225. NotifyOfPropertyChange("DisplayName");
  1226. }
  1227. }
  1228. public string _unit;
  1229. public string Unit
  1230. {
  1231. get => _unit;
  1232. set
  1233. {
  1234. _unit = value;
  1235. NotifyOfPropertyChange("Unit");
  1236. }
  1237. }
  1238. private string _setpoint;
  1239. public string Setpoint
  1240. {
  1241. get => _setpoint;
  1242. set
  1243. {
  1244. _setpoint = value;
  1245. NotifyOfPropertyChange("Setpoint");
  1246. }
  1247. }
  1248. private string _feedback;
  1249. public string Feedback
  1250. {
  1251. get => _feedback;
  1252. set
  1253. {
  1254. _feedback = value;
  1255. NotifyOfPropertyChange("Feedback");
  1256. }
  1257. }
  1258. private string _ramping;
  1259. public string Ramping
  1260. {
  1261. get => _ramping;
  1262. set
  1263. {
  1264. _ramping = value;
  1265. NotifyOfPropertyChange("Ramping");
  1266. }
  1267. }
  1268. private string _alarmTable;
  1269. public string AlarmTable
  1270. {
  1271. get => _alarmTable; set
  1272. {
  1273. _alarmTable = value;
  1274. NotifyOfPropertyChange("AlarmTable");
  1275. }
  1276. }
  1277. private double _maxValue;
  1278. public double MaxValue
  1279. {
  1280. get { return _maxValue; }
  1281. set
  1282. {
  1283. _maxValue = value;
  1284. NotifyOfPropertyChange("MaxValue");
  1285. }
  1286. }
  1287. }
  1288. }