duheng
2025-03-12 cec8d92bdca1da0b2eafe6eb3130f4bf6f03028b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
namespace Yw.WinFrmUI
{
    /// <summary>
    /// 监测点拓展
    /// </summary>
    public static class HydroMonitorExtensions
    {
        /// <summary>
        /// 匹配
        /// </summary>
        public static HydroMonitorVmo Matching(this List<HydroMonitorVmo> allMonitorList, string propName, List<string> flags)
        {
            if (allMonitorList == null || allMonitorList.Count < 1)
            {
                return default;
            }
            var monitorList = allMonitorList.Where(x => x.PropName == propName).ToList();
            monitorList = monitorList.OrderBy(x => x.Flags.Distinct().Count()).ToList();
            return monitorList.Find(x => x.Flags.ContainsC(flags));
        }
 
        /// <summary>
        /// 获取属性值
        /// </summary>
        public static double GetPropValue(this HydroMonitorVmo monitor, double propValue)
        {
            if (monitor == null)
            {
                return default;
            }
            double pv = 0;
            switch (monitor.PropName)
            {
                case Yw.Hydro.MonitorProp.CalcuQ:
                    {
                        pv = Math.Round(propValue, 1);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuP:
                    {
                        pv = Math.Round(propValue, 1);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuE:
                    {
                        pv = Math.Round(propValue, 1);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuPr:
                    {
                        pv = Math.Round(propValue, 2);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuO:
                    {
                        pv = Math.Round(propValue, 0);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuO1:
                    {
                        pv = Math.Round(propValue, 0);
                    }
                    break;
                case Yw.Hydro.MonitorProp.CalcuO2:
                    {
                        pv = Math.Round(propValue, 0);
                    }
                    break;
                default: pv = Math.Round(propValue, 2); break;
            }
            return pv;
        }
 
        /// <summary>
        /// 获取属性值
        /// </summary>
        public static double? GetPropValue(this HydroMonitorVmo monitor, double? propValue)
        {
            if (monitor == null)
            {
                return default;
            }
            if (propValue == null)
            {
                return default;
            }
            return monitor.GetPropValue(propValue.Value);
        }
 
 
    }
}