MFC4ProcessDataConvert.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows.Data;
  6. using Aitex.Core.UI.ControlDataContext;
  7. using System.Windows.Media;
  8. namespace Aitex.Core.UI.Converters
  9. {
  10. public class MFC4ContentConvert : IMultiValueConverter
  11. {
  12. public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  13. {
  14. string content = "";
  15. AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem;
  16. AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem;
  17. AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem;
  18. if (mfcSourceData != null)
  19. {
  20. bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]);
  21. if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData!=null)
  22. {
  23. if (mfcSourceData == null) return content;
  24. var source = mfcSourceData.FeedBack;
  25. var inject = mfcInjectData.FeedBack;
  26. var dilute = mfcDiluteData.FeedBack;
  27. var flow = source + dilute;
  28. if (flow == 0)
  29. {
  30. content = "0.00";
  31. }
  32. else
  33. {
  34. double val = ((source * inject) / flow);
  35. content = val >= 10 ? val.ToString("0.0") : val.ToString("0.00");
  36. }
  37. }
  38. else
  39. {
  40. if (mfcSourceData == null) content = "-";
  41. else if (mfcSourceData.FeedBack >= 10000)
  42. content = mfcSourceData.FeedBack.ToString("F0");
  43. else if (mfcSourceData.FeedBack >= 10)
  44. content = mfcSourceData.FeedBack.ToString("0.0");
  45. else
  46. content = mfcSourceData.FeedBack.ToString("0.00");
  47. }
  48. }
  49. return content;
  50. }
  51. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
  52. {
  53. return null;
  54. }
  55. }
  56. public class MFC4ColorConvert : IMultiValueConverter
  57. {
  58. public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  59. {
  60. SolidColorBrush borderBrush = Brushes.Transparent;
  61. AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem;
  62. AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem;
  63. AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem;
  64. if (mfcSourceData != null)
  65. {
  66. bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]);
  67. if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData != null)
  68. {
  69. if (mfcSourceData.IsWarning) { borderBrush = Brushes.Red; }
  70. if (mfcInjectData.IsWarning) { borderBrush = Brushes.Red; }
  71. if (mfcDiluteData.IsWarning) { borderBrush = Brushes.Red; }
  72. }
  73. else
  74. {
  75. if (mfcSourceData != null && mfcSourceData.IsWarning) { borderBrush = Brushes.Red; }
  76. }
  77. }
  78. return borderBrush;
  79. }
  80. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
  81. {
  82. return null;
  83. }
  84. }
  85. public class MFC4ToolTipConvert : IMultiValueConverter
  86. {
  87. public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  88. {
  89. StringBuilder tooltip = new StringBuilder();
  90. AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem;
  91. AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem;
  92. AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem;
  93. if (mfcSourceData != null)
  94. {
  95. bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]);
  96. if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData != null)
  97. {
  98. if (mfcSourceData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcSourceData.DeviceId, mfcSourceData.DeviceName, mfcSourceData.FeedBack.ToString("F1"))); }
  99. if (mfcInjectData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcInjectData.DeviceId, mfcInjectData.DeviceName, mfcInjectData.FeedBack.ToString("F1"))); }
  100. if (mfcDiluteData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcDiluteData.DeviceId, mfcDiluteData.DeviceName, mfcDiluteData.FeedBack.ToString("F1"))); }
  101. }
  102. else
  103. {
  104. if (mfcSourceData != null && mfcSourceData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcSourceData.DeviceId, mfcSourceData.DeviceName, mfcSourceData.FeedBack.ToString("F1"))); }
  105. }
  106. }
  107. return tooltip;
  108. }
  109. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
  110. {
  111. return null;
  112. }
  113. }
  114. }