GasDetailViewModel.cs 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439
  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. [Subscription("PM1.EnableMinics")]
  330. public bool EnableMinics { get; set; }
  331. private bool _mFCIsChecked = false;
  332. public bool MFCIsChecked
  333. {
  334. get => _mFCIsChecked;
  335. set
  336. {
  337. _mFCIsChecked = value;
  338. NotifyOfPropertyChange("MFCIsChecked");
  339. }
  340. }
  341. private bool _mFMIsChecked = false;
  342. public bool MFMIsChecked
  343. {
  344. get => _mFMIsChecked;
  345. set
  346. {
  347. _mFMIsChecked = value;
  348. NotifyOfPropertyChange("MFMIsChecked");
  349. }
  350. }
  351. private bool _auxIsChecked = false;
  352. public bool AuxIsChecked
  353. {
  354. get => _auxIsChecked;
  355. set
  356. {
  357. _auxIsChecked = value;
  358. NotifyOfPropertyChange("AuxIsChecked");
  359. }
  360. }
  361. private bool _valveIsChecked = false;
  362. public bool ValveIsChecked
  363. {
  364. get => _valveIsChecked;
  365. set
  366. {
  367. _valveIsChecked = value;
  368. NotifyOfPropertyChange("ValveIsChecked");
  369. }
  370. }
  371. private Visibility _gridMFCVisibility = Visibility.Hidden;
  372. public Visibility GridMFCVisibility
  373. {
  374. get => _gridMFCVisibility;
  375. set
  376. {
  377. _gridMFCVisibility = value;
  378. NotifyOfPropertyChange("GridMFCVisibility");
  379. }
  380. }
  381. private Visibility _gridMFMVisibility = Visibility.Hidden;
  382. public Visibility GridMFMVisibility
  383. {
  384. get => _gridMFMVisibility;
  385. set
  386. {
  387. _gridMFMVisibility = value;
  388. NotifyOfPropertyChange("GridMFMVisibility");
  389. }
  390. }
  391. private Visibility _gridValveVisibility = Visibility.Hidden;
  392. public Visibility GridValveVisibility
  393. {
  394. get => _gridValveVisibility;
  395. set
  396. {
  397. _gridValveVisibility = value;
  398. NotifyOfPropertyChange("GridValveVisibility");
  399. }
  400. }
  401. private Visibility _gridAPCVisibility = Visibility.Hidden;
  402. public Visibility GridAPCVisibility
  403. {
  404. get => _gridAPCVisibility;
  405. set
  406. {
  407. _gridAPCVisibility = value;
  408. NotifyOfPropertyChange("GridAPCVisibility");
  409. }
  410. }
  411. private Visibility _gridAnalogVisibility = Visibility.Hidden;
  412. public Visibility GridAnalogVisibility
  413. {
  414. get => _gridAnalogVisibility;
  415. set
  416. {
  417. _gridAnalogVisibility = value;
  418. NotifyOfPropertyChange("GridAnalogVisibility");
  419. }
  420. }
  421. private Visibility _gridAUXVisibility = Visibility.Hidden;
  422. public Visibility GridAUXVisibility
  423. {
  424. get => _gridAUXVisibility;
  425. set
  426. {
  427. _gridAUXVisibility = value;
  428. NotifyOfPropertyChange("GridAUXVisibility");
  429. }
  430. }
  431. private ObservableCollection<MFCDetailValue> _mfcDetailDatas = new ObservableCollection<MFCDetailValue>();
  432. public ObservableCollection<MFCDetailValue> MFCDetailDatas
  433. {
  434. get => _mfcDetailDatas;
  435. set
  436. {
  437. _mfcDetailDatas = value;
  438. NotifyOfPropertyChange("MFCDetailDatas");
  439. }
  440. }
  441. private ObservableCollection<MFMDetailValue> _mfmDetailDatas = new ObservableCollection<MFMDetailValue>();
  442. public ObservableCollection<MFMDetailValue> MFMDetailDatas
  443. {
  444. get => _mfmDetailDatas;
  445. set
  446. {
  447. _mfmDetailDatas = value;
  448. NotifyOfPropertyChange("MFMDetailDataLists");
  449. }
  450. }
  451. private ObservableCollection<ValveDetailValue> _valveDetailDatas = new ObservableCollection<ValveDetailValue>();
  452. public ObservableCollection<ValveDetailValue> ValveDetailDatas
  453. {
  454. get => _valveDetailDatas;
  455. set
  456. {
  457. _valveDetailDatas = value;
  458. NotifyOfPropertyChange("ValveDetailDatas");
  459. }
  460. }
  461. private ObservableCollection<MFMDetailValue> _apcDetailDatas = new ObservableCollection<MFMDetailValue>();
  462. public ObservableCollection<MFMDetailValue> APCDetailDatas
  463. {
  464. get => _apcDetailDatas;
  465. set
  466. {
  467. _apcDetailDatas = value;
  468. NotifyOfPropertyChange("APCDetailDatas");
  469. }
  470. }
  471. private ObservableCollection<AnalogDetailValue> _analogDetailDatas = new ObservableCollection<AnalogDetailValue>();
  472. public ObservableCollection<AnalogDetailValue> AnalogDetailDatas
  473. {
  474. get => _analogDetailDatas;
  475. set
  476. {
  477. _analogDetailDatas = value;
  478. NotifyOfPropertyChange("AnalogDetailDatas");
  479. }
  480. }
  481. private bool _isEnableMannual;
  482. public bool IsEnableMannual
  483. {
  484. get => _isEnableMannual;
  485. set
  486. {
  487. _isEnableMannual = value;
  488. NotifyOfPropertyChange(nameof(IsEnableMannual));
  489. }
  490. }
  491. private int _mannualSelectCount;
  492. protected override void OnActivate()
  493. {
  494. base.OnActivate();
  495. MFCIsChecked = true;
  496. MFMIsChecked = false;
  497. ValveIsChecked = false;
  498. AuxIsChecked = false;
  499. GASSettingSelectCmd("MFC", null);
  500. }
  501. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  502. {
  503. base.InvokeAfterUpdateProperty(data);
  504. if (!IsEnableMannual)
  505. UpdateFlowValue();
  506. }
  507. private void UpdateFlowValue()
  508. {
  509. List<AITMfcData> allmfcData = new List<AITMfcData>()
  510. {
  511. MFC1Data,
  512. MFC2Data,
  513. MFC3Data,
  514. MFC4Data,
  515. MFC5Data,
  516. MFC6Data,
  517. MFC7Data,
  518. MFC8Data,
  519. MFC9Data,
  520. MFC10Data,
  521. MFC11Data,
  522. MFC12Data,
  523. MFC13Data,
  524. MFC14Data,
  525. MFC15Data,
  526. MFC16Data,
  527. MFC17Data,
  528. MFC31Data,
  529. MFC32Data,
  530. MFC51Data,
  531. };
  532. List<AITMfcData> mfcData = new List<AITMfcData>()
  533. {
  534. };
  535. foreach (var item in allmfcData)
  536. {
  537. if (item != null)
  538. {
  539. mfcData.Add(item);
  540. }
  541. }
  542. List<AITMfcData> tempMFC = new List<AITMfcData>();
  543. for (int i = 0; i < mfcData.Count; i++)
  544. {
  545. if (mfcData[i] == null) continue;
  546. var IsMFCInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{mfcData[i].DeviceName}.IsMFCInstalled");
  547. if (IsMFCInstalled)
  548. {
  549. tempMFC.Add(mfcData[i]);
  550. }
  551. }
  552. List<AITWaterFlowMeterData> allmfmData = new List<AITWaterFlowMeterData>()
  553. {
  554. MFM1FlowData,
  555. MFM6FlowData,
  556. MFM7FlowData,
  557. MFM8FlowData,
  558. MFM9FlowData,
  559. MFM11FlowData,
  560. MFM12FlowData,
  561. MFM13FlowData,
  562. MFM16FlowData,
  563. MFM57FlowData,
  564. };
  565. List<AITWaterFlowMeterData> mfmData = new List<AITWaterFlowMeterData>()
  566. {
  567. };
  568. foreach (var item in allmfmData)
  569. {
  570. if (item != null)
  571. {
  572. mfmData.Add(item);
  573. }
  574. }
  575. List<AITWaterFlowMeterData> tempMFM = new List<AITWaterFlowMeterData>();
  576. for (int i = 0; i < mfmData.Count; i++)
  577. {
  578. if (mfmData[i] == null) continue;
  579. var IsMFMInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{mfmData[i].DeviceName}.IsMFMInstalled");
  580. if (IsMFMInstalled)
  581. {
  582. tempMFM.Add(mfmData[i]);
  583. }
  584. }
  585. List<AITAPCData> apcData = new List<AITAPCData>()
  586. {
  587. APCData,
  588. };
  589. List<AITValveData> allValveData = new List<AITValveData>()
  590. {
  591. ValveAV1Data,
  592. ValveAV2Data,
  593. ValveAV3Data,
  594. ValveAV4Data,
  595. ValveAV5Data,
  596. ValveAV6Data,
  597. ValveAV7Data,
  598. ValveAV8Data,
  599. ValveAV9Data,
  600. ValveAV10Data,
  601. ValveAV11Data,
  602. ValveAV12Data,
  603. ValveAV13Data,
  604. ValveAV14Data,
  605. ValveAV15Data,
  606. ValveAV16Data,
  607. ValveAV17Data,
  608. ValveAV18Data,
  609. ValveAV19Data,
  610. ValveAV20Data,
  611. ValveAV21Data,
  612. ValveAV22Data,
  613. ValveAV23Data,
  614. ValveAV24Data,
  615. ValveAV25Data,
  616. ValveAV26Data,
  617. ValveAV27Data,
  618. ValveAV28Data,
  619. ValveAV29Data,
  620. ValveAV30Data,
  621. ValveAV31Data,
  622. ValveAV32Data,
  623. ValveAV33Data,
  624. ValveAV34Data,
  625. ValveAV35Data,
  626. ValveAV36Data,
  627. ValveAV37Data,
  628. ValveAV38Data,
  629. ValveAV39Data,
  630. ValveAV40Data,
  631. ValveAV41Data,
  632. ValveAV42Data,
  633. ValveAV43Data,
  634. ValveAV44Data,
  635. ValveAV45Data,
  636. ValveAV46Data,
  637. ValveAV47Data,
  638. ValveAV48Data,
  639. ValveAV49Data,
  640. ValveAV50Data,
  641. ValveAV51Data,
  642. ValveAV52Data,
  643. ValveAV53Data,
  644. ValveAV54Data,
  645. ValveAV55Data,
  646. ValveAV56Data,
  647. ValveAV57Data,
  648. ValveAV58Data,
  649. ValveAV59Data,
  650. ValveAV60Data,
  651. ValveAV61Data,
  652. ValveAV62Data,
  653. ValveAV63Data,
  654. ValveAV64Data,
  655. ValveAV65Data,
  656. ValveAV66Data,
  657. ValveAV67Data,
  658. ValveAV68Data,
  659. ValveAV69Data,
  660. ValveAV70Data,
  661. ValveAV71Data,
  662. ValveAV72Data,
  663. ValveAV73Data,
  664. ValveAV74Data,
  665. ValveAV75Data,
  666. ValveAV76Data,
  667. ValveAV77Data,
  668. ValveAV78Data,
  669. ValveAV79Data,
  670. ValveAV80Data,
  671. ValveAV81Data,
  672. ValveAV82Data,
  673. ValveAV83Data,
  674. ValveAV84Data,
  675. ValveAV85Data,
  676. ValveAV86Data,
  677. ValveAV87Data,
  678. ValveAV88Data,
  679. ValveAV89Data,
  680. ValveAV90Data,
  681. ValveAV91Data,
  682. ValveAV92Data,
  683. ValveAV93Data,
  684. ValveAV94Data,
  685. ValveAV95Data,
  686. ValveAV96Data,
  687. ValveAV97Data,
  688. ValveAV98Data,
  689. ValveAV99Data,
  690. ValveAV100Data,
  691. ValveAV101Data,
  692. ValveAV102Data,
  693. ValveAV103Data,
  694. ValveAV104Data,
  695. ValveAV105Data,
  696. ValveAV106Data,
  697. ValveAV107Data,
  698. ValveAV108Data,
  699. ValveAV109Data,
  700. ValveAV110Data,
  701. ValveAV111Data,
  702. ValveAV112Data,
  703. ValveAV113Data,
  704. ValveAV114Data,
  705. ValveAV115Data,
  706. ValveAV116Data,
  707. ValveAV117Data,
  708. ValveAV118Data,
  709. ValveAV119Data,
  710. ValveAV120Data,
  711. ValveAV121Data,
  712. ValveAV122Data,
  713. ValveAV123Data,
  714. ValveAV124Data,
  715. ValveAV125Data,
  716. ValveAV126Data,
  717. ValveAV127Data,
  718. ValveAV128Data,
  719. ValveAV129Data,
  720. ValveAV130Data,
  721. ValveAV131Data,
  722. ValveAV132Data,
  723. ValveAV133Data,
  724. ValveAV134Data,
  725. ValveAV135Data,
  726. ValveAV136Data
  727. };
  728. List<AITValveData> valveData = new List<AITValveData>()
  729. {
  730. };
  731. foreach (var item in allValveData)
  732. {
  733. if (item != null)
  734. {
  735. valveData.Add(item);
  736. }
  737. }
  738. List<AITWaterFlowMeterData> tempPresure = new List<AITWaterFlowMeterData>();
  739. if (Tank1Pressure != null)
  740. {
  741. tempPresure.Add(Tank1Pressure);
  742. }
  743. if (Tank2Pressure != null)
  744. {
  745. tempPresure.Add(Tank2Pressure);
  746. }
  747. if (VG21Data != null)
  748. {
  749. tempPresure.Add(VG21Data);
  750. }
  751. if (VG22Data != null)
  752. {
  753. tempPresure.Add(VG22Data);
  754. }
  755. if (VG32Pressure != null)
  756. {
  757. tempPresure.Add(VG32Pressure);
  758. }
  759. if (VG33Pressure != null)
  760. {
  761. tempPresure.Add(VG33Pressure);
  762. }
  763. if (MFCDetailDatas.Count == 0)
  764. {
  765. for (int i = 0; i < tempMFC.Count; i++)
  766. {
  767. if (tempMFC[i] == null) continue;
  768. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{tempMFC[i].DeviceName}.FlowUnit");
  769. var setpoint = mfcData[i].SetPoint.ToString("F1");
  770. MFCDetailDatas.Add(new MFCDetailValue()
  771. {
  772. Name = tempMFC[i].DeviceName,
  773. DisplayName = tempMFC[i].DisplayName,
  774. Unit = Unit,
  775. Setpoint = setpoint,
  776. Feedback = tempMFC[i].FeedBack.ToString("F3"),
  777. Ramping = tempMFC[i].Ramping.ToString("F1"),
  778. AlarmTable = string.IsNullOrEmpty(tempMFC[i].AlarmWatchTable) ? "None" : tempMFC[i].AlarmWatchTable,
  779. MaxValue = (double)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{tempMFC[i].DeviceName}.N2Scale")
  780. });
  781. }
  782. }
  783. else
  784. {
  785. for (int i = 0; i < tempMFC.Count; i++)
  786. {
  787. if (tempMFC[i] == null) continue;
  788. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{mfcData[i].DeviceName}.FlowUnit");
  789. var setpoint = tempMFC[i].SetPoint.ToString("F1");
  790. MFCDetailDatas[i].Name = tempMFC[i].DeviceName;
  791. MFCDetailDatas[i].DisplayName = tempMFC[i].DisplayName;
  792. MFCDetailDatas[i].Unit = Unit;
  793. MFCDetailDatas[i].Setpoint = setpoint;
  794. MFCDetailDatas[i].Feedback = tempMFC[i].FeedBack.ToString("F3");
  795. MFCDetailDatas[i].Ramping = tempMFC[i].Ramping.ToString("F1");
  796. MFCDetailDatas[i].AlarmTable = string.IsNullOrEmpty(tempMFC[i].AlarmWatchTable) ? "None" : tempMFC[i].AlarmWatchTable;
  797. }
  798. }
  799. if (MFMDetailDatas.Count == 0)
  800. {
  801. for (int i = 0; i < tempMFM.Count; i++)
  802. {
  803. if (tempMFM[i] == null) continue;
  804. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{tempMFM[i].DeviceName}.FlowUnit");
  805. MFMDetailDatas.Add(new MFMDetailValue()
  806. {
  807. Name = tempMFM[i].DeviceName,
  808. DisplayName = tempMFM[i].DisplayName,
  809. Unit = Unit,
  810. Setpoint = tempMFM[i].SetPoint.ToString("F1"),
  811. Feedback = tempMFM[i].FeedBack.ToString("F1"),
  812. AlarmTable = string.IsNullOrEmpty(tempMFM[i].AlarmWatchTable) ? "None" : tempMFM[i].AlarmWatchTable,
  813. });
  814. }
  815. }
  816. else
  817. {
  818. for (int i = 0; i < tempMFM.Count; i++)
  819. {
  820. if (tempMFM[i] == null) continue;
  821. var Unit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.MFM.{tempMFM[i].DeviceName}.FlowUnit");
  822. MFMDetailDatas[i].Name = tempMFM[i].DeviceName;
  823. MFMDetailDatas[i].DisplayName = tempMFM[i].DeviceName;
  824. MFMDetailDatas[i].Unit = Unit;
  825. MFMDetailDatas[i].Setpoint = tempMFM[i].SetPoint.ToString("F1");
  826. MFMDetailDatas[i].Feedback = tempMFM[i].FeedBack.ToString("F1");
  827. MFMDetailDatas[i].AlarmTable = string.IsNullOrEmpty(tempMFM[i].AlarmWatchTable) ? "None" : tempMFM[i].AlarmWatchTable;
  828. }
  829. }
  830. if (ValveDetailDatas.Count == 0)
  831. {
  832. for (int i = 0; i < valveData.Count; i++)
  833. {
  834. if (valveData[i] == null) continue;
  835. ValveDetailDatas.Add(new ValveDetailValue()
  836. {
  837. Name = valveData[i].DeviceName,
  838. DisplayName = valveData[i].DisplayName,
  839. Feedback = valveData[i].Feedback,
  840. Value = valveData[i].IsOpen ? "Open" : "Close",
  841. IsEnable = IsEnableMannual,
  842. });
  843. }
  844. }
  845. else
  846. {
  847. for (int i = 0; i < valveData.Count; i++)
  848. {
  849. if (valveData[i] == null) continue;
  850. ValveDetailDatas[i].Name = valveData[i].DeviceName;
  851. ValveDetailDatas[i].DisplayName = valveData[i].DisplayName;
  852. ValveDetailDatas[i].Feedback = valveData[i].Feedback;
  853. ValveDetailDatas[i].Value = valveData[i].IsOpen ? "Open" : "Close";
  854. ValveDetailDatas[i].IsEnable = IsEnableMannual;
  855. }
  856. }
  857. if (AnalogDetailDatas.Count == 0)
  858. {
  859. for (int i = 0; i < tempPresure.Count; i++)
  860. {
  861. if (tempPresure[i] == null) continue;
  862. AnalogDetailDatas.Add(new AnalogDetailValue()
  863. {
  864. Name = tempPresure[i].DeviceName,
  865. DisplayName = tempPresure[i].DisplayName,
  866. Unit = tempPresure[i].Unit,
  867. Feedback = tempPresure[i].FeedBack.ToString("F1")
  868. });
  869. }
  870. }
  871. else
  872. {
  873. for (int i = 0; i < tempPresure.Count; i++)
  874. {
  875. if (tempPresure[i] == null) continue;
  876. AnalogDetailDatas[i].Name = tempPresure[i].DeviceName;
  877. AnalogDetailDatas[i].DisplayName = tempPresure[i].DeviceName;
  878. AnalogDetailDatas[i].Unit = tempPresure[i].Unit;
  879. AnalogDetailDatas[i].Feedback = tempPresure[i].FeedBack.ToString("F1");
  880. }
  881. }
  882. }
  883. public void MFCSetCmd(object senderName, object sender, object typeName, double maxValue)
  884. {
  885. string name = senderName.ToString();
  886. var control = (Button)sender;
  887. switch (typeName.ToString())
  888. {
  889. case "Setpoint":
  890. var windowManager = IoC.Get<IWindowManager>();
  891. RecipeFlowSettingViewModel recipeFlowSettingViewModel = new RecipeFlowSettingViewModel();
  892. recipeFlowSettingViewModel.SelectMfcFlow = name.ToUpper();
  893. recipeFlowSettingViewModel.SelectFlowValue = control.Content.ToString();
  894. recipeFlowSettingViewModel.MaxValue = maxValue;
  895. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeFlowSettingViewModel, null, "GasDetail Flow Setting"))
  896. {
  897. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = recipeFlowSettingViewModel.SelectFlow;
  898. }
  899. break;
  900. case "Ramping":
  901. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  902. if (strRetValue != "Cancel")
  903. {
  904. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Ramping = strRetValue;
  905. }
  906. break;
  907. case "AlarmTable":
  908. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  909. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  910. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  911. MFCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  912. break;
  913. }
  914. }
  915. public void MFMSetCmd(object senderName, object sender, object typeName)
  916. {
  917. string name = senderName.ToString();
  918. switch (typeName.ToString())
  919. {
  920. case "Setpoint":
  921. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  922. if (strRetValue != "Cancel")
  923. {
  924. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  925. }
  926. break;
  927. case "AlarmTable":
  928. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  929. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  930. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  931. MFMDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  932. break;
  933. }
  934. }
  935. public void ValveSetCmd(object senderName)
  936. {
  937. string name = senderName.ToString();
  938. SwitchDialog dlg = new SwitchDialog();
  939. dlg.IsOpen = ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value == "Open";
  940. dlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  941. dlg.ShowDialog();
  942. if (dlg.IsSave)
  943. {
  944. ValveDetailDatas.Where(x => x.Name == name).FirstOrDefault().Value = dlg.IsOpen ? "Open" : "Close";
  945. }
  946. }
  947. public void APCSetCmd(object senderName, object sender, object typeName)
  948. {
  949. string name = senderName.ToString();
  950. switch (typeName.ToString())
  951. {
  952. case "Setpoint":
  953. string strRetValue = ShowNumberKeyboard(sender as Button, "");
  954. if (strRetValue != "Cancel")
  955. {
  956. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().Setpoint = strRetValue;
  957. }
  958. break;
  959. case "AlarmTable":
  960. RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable);
  961. WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
  962. if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
  963. APCDetailDatas.Where(x => x.Name == name).FirstOrDefault().AlarmTable = view.CurrentValue;
  964. break;
  965. }
  966. }
  967. private string ShowNumberKeyboard(Control control, string defaultValue)
  968. {
  969. NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
  970. var point = control.PointFromScreen(new Point(0, 0));
  971. double wx = SystemParameters.WorkArea.Width;
  972. double hy = SystemParameters.WorkArea.Height;
  973. if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
  974. {
  975. numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
  976. }
  977. else
  978. {
  979. numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
  980. }
  981. if (-point.X + numberKeyboard.Width < wx)
  982. {
  983. numberKeyboard.Left = -point.X;
  984. }
  985. else
  986. {
  987. numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
  988. }
  989. if ((bool)numberKeyboard.ShowDialog())
  990. return numberKeyboard.ValueString;
  991. else
  992. return "Cancel";
  993. }
  994. public void GASSettingSelectCmd(string cmd, object sender)
  995. {
  996. if (sender != null)
  997. {
  998. ((RadioButton)sender).IsChecked = true;
  999. }
  1000. else
  1001. {
  1002. }
  1003. GridMFCVisibility = Visibility.Hidden;
  1004. GridMFMVisibility = Visibility.Hidden;
  1005. GridValveVisibility = Visibility.Hidden;
  1006. GridAPCVisibility = Visibility.Hidden;
  1007. GridAnalogVisibility = Visibility.Hidden;
  1008. GridAUXVisibility = Visibility.Hidden;
  1009. switch (cmd)
  1010. {
  1011. case "MFC":
  1012. GridMFCVisibility = Visibility.Visible;
  1013. break;
  1014. case "MFM":
  1015. GridMFMVisibility = Visibility.Visible;
  1016. break;
  1017. case "Valve":
  1018. GridValveVisibility = Visibility.Visible;
  1019. break;
  1020. case "APC":
  1021. GridAPCVisibility = Visibility.Visible;
  1022. break;
  1023. case "Analog":
  1024. GridAnalogVisibility = Visibility.Visible;
  1025. break;
  1026. case "AUX":
  1027. GridAUXVisibility = Visibility.Visible;
  1028. break;
  1029. default:
  1030. break;
  1031. }
  1032. }
  1033. public void MannualSelectCmd()
  1034. {
  1035. _mannualSelectCount++;
  1036. if (_mannualSelectCount % 2 == 0)
  1037. {
  1038. IsEnableMannual = false;
  1039. }
  1040. else
  1041. {
  1042. IsEnableMannual = true;
  1043. }
  1044. UpdateFlowValue();
  1045. }
  1046. public void ExecCmd()
  1047. {
  1048. if (!DialogBox.Confirm("Ara you sure to execute?"))
  1049. return;
  1050. for (int i = 0; i < MFCDetailDatas.Count; i++)
  1051. {
  1052. InvokeClient.Instance.Service.DoOperation($"PM1.{MFCDetailDatas[i].Name}.SetMfcValue", $"{MFCDetailDatas[i].Setpoint};{MFCDetailDatas[i].Ramping};{MFCDetailDatas[i].AlarmTable}");
  1053. }
  1054. for (int i = 0; i < MFMDetailDatas.Count; i++)
  1055. {
  1056. InvokeClient.Instance.Service.DoOperation($"PM1.{MFMDetailDatas[i].Name}.SetMfmValue", $"{MFMDetailDatas[i].Setpoint};{MFMDetailDatas[i].AlarmTable}");
  1057. }
  1058. for (int i = 0; i < ValveDetailDatas.Count; i++)
  1059. {
  1060. InvokeClient.Instance.Service.DoOperation($"PM1.{ValveDetailDatas[i].Name}.{AITValveOperation.GVTurnValve}", ValveDetailDatas[i].Value == "Open");
  1061. }
  1062. _mannualSelectCount = 0;
  1063. IsEnableMannual = false;
  1064. }
  1065. public void CloseCmd()
  1066. {
  1067. ((Window)GetView()).DialogResult = false;
  1068. }
  1069. }
  1070. public class AnalogDetailValue : PropertyChangedBase
  1071. {
  1072. private string _name;
  1073. public string Name
  1074. {
  1075. get => _name;
  1076. set
  1077. {
  1078. _name = value;
  1079. NotifyOfPropertyChange("Name");
  1080. }
  1081. }
  1082. private string _displayName;
  1083. public string DisplayName
  1084. {
  1085. get => _displayName;
  1086. set
  1087. {
  1088. _displayName = value;
  1089. NotifyOfPropertyChange("DisplayName");
  1090. }
  1091. }
  1092. public string _unit;
  1093. public string Unit
  1094. {
  1095. get => _unit;
  1096. set
  1097. {
  1098. _unit = value;
  1099. NotifyOfPropertyChange("Unit");
  1100. }
  1101. }
  1102. private string _feedback;
  1103. public string Feedback
  1104. {
  1105. get => _feedback;
  1106. set
  1107. {
  1108. _feedback = value;
  1109. NotifyOfPropertyChange("Feedback");
  1110. }
  1111. }
  1112. }
  1113. public class ValveDetailValue : PropertyChangedBase
  1114. {
  1115. private string _name;
  1116. public string Name
  1117. {
  1118. get => _name;
  1119. set
  1120. {
  1121. _name = value;
  1122. NotifyOfPropertyChange("Name");
  1123. }
  1124. }
  1125. private string _displayName;
  1126. public string DisplayName
  1127. {
  1128. get => _displayName;
  1129. set
  1130. {
  1131. _displayName = value;
  1132. NotifyOfPropertyChange("DisplayName");
  1133. }
  1134. }
  1135. private string _value;
  1136. public string Value
  1137. {
  1138. get => _value;
  1139. set
  1140. {
  1141. _value = value;
  1142. NotifyOfPropertyChange("Value");
  1143. }
  1144. }
  1145. private bool _feedback;
  1146. public bool Feedback
  1147. {
  1148. get => _feedback;
  1149. set
  1150. {
  1151. _feedback = value;
  1152. NotifyOfPropertyChange("Feedback");
  1153. }
  1154. }
  1155. private bool _isEnable = true;
  1156. public bool IsEnable
  1157. {
  1158. get => _isEnable;
  1159. set
  1160. {
  1161. _isEnable = value;
  1162. NotifyOfPropertyChange("IsEnable");
  1163. }
  1164. }
  1165. }
  1166. public class MFMDetailValue : PropertyChangedBase
  1167. {
  1168. private string _name;
  1169. public string Name
  1170. {
  1171. get => _name;
  1172. set
  1173. {
  1174. _name = value;
  1175. NotifyOfPropertyChange("Name");
  1176. }
  1177. }
  1178. private string _displayName;
  1179. public string DisplayName
  1180. {
  1181. get => _displayName;
  1182. set
  1183. {
  1184. _displayName = value;
  1185. NotifyOfPropertyChange("DisplayName");
  1186. }
  1187. }
  1188. public string _unit;
  1189. public string Unit
  1190. {
  1191. get => _unit;
  1192. set
  1193. {
  1194. _unit = value;
  1195. NotifyOfPropertyChange("Unit");
  1196. }
  1197. }
  1198. private string _setpoint;
  1199. public string Setpoint
  1200. {
  1201. get => _setpoint;
  1202. set
  1203. {
  1204. _setpoint = value;
  1205. NotifyOfPropertyChange("Setpoint");
  1206. }
  1207. }
  1208. private string _feedback;
  1209. public string Feedback
  1210. {
  1211. get => _feedback;
  1212. set
  1213. {
  1214. _feedback = value;
  1215. NotifyOfPropertyChange("Feedback");
  1216. }
  1217. }
  1218. private string _alarmTable;
  1219. public string AlarmTable
  1220. {
  1221. get => _alarmTable; set
  1222. {
  1223. _alarmTable = value;
  1224. NotifyOfPropertyChange("AlarmTable");
  1225. }
  1226. }
  1227. }
  1228. public class MFCDetailValue : PropertyChangedBase
  1229. {
  1230. private string _name;
  1231. public string Name
  1232. {
  1233. get => _name;
  1234. set
  1235. {
  1236. _name = value;
  1237. NotifyOfPropertyChange("Name");
  1238. }
  1239. }
  1240. private string _displayName;
  1241. public string DisplayName
  1242. {
  1243. get => _displayName;
  1244. set
  1245. {
  1246. _displayName = value;
  1247. NotifyOfPropertyChange("DisplayName");
  1248. }
  1249. }
  1250. public string _unit;
  1251. public string Unit
  1252. {
  1253. get => _unit;
  1254. set
  1255. {
  1256. _unit = value;
  1257. NotifyOfPropertyChange("Unit");
  1258. }
  1259. }
  1260. private string _setpoint;
  1261. public string Setpoint
  1262. {
  1263. get => _setpoint;
  1264. set
  1265. {
  1266. _setpoint = value;
  1267. NotifyOfPropertyChange("Setpoint");
  1268. }
  1269. }
  1270. private string _feedback;
  1271. public string Feedback
  1272. {
  1273. get => _feedback;
  1274. set
  1275. {
  1276. _feedback = value;
  1277. NotifyOfPropertyChange("Feedback");
  1278. }
  1279. }
  1280. private string _ramping;
  1281. public string Ramping
  1282. {
  1283. get => _ramping;
  1284. set
  1285. {
  1286. _ramping = value;
  1287. NotifyOfPropertyChange("Ramping");
  1288. }
  1289. }
  1290. private string _alarmTable;
  1291. public string AlarmTable
  1292. {
  1293. get => _alarmTable; set
  1294. {
  1295. _alarmTable = value;
  1296. NotifyOfPropertyChange("AlarmTable");
  1297. }
  1298. }
  1299. private double _maxValue;
  1300. public double MaxValue
  1301. {
  1302. get { return _maxValue; }
  1303. set
  1304. {
  1305. _maxValue = value;
  1306. NotifyOfPropertyChange("MaxValue");
  1307. }
  1308. }
  1309. }
  1310. }