GasDetailViewModel.cs 57 KB

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