tangxu
2022-10-31 8ea88fedd51e4961d0fd0aec6c2873a579fb6db8
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IStation.Calculation
{
    internal class shys陈行一输 : PlanAnaBaseCalculator
    {
        public shys陈行一输()
        {
            this._corpID = 4;
            this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输();
        }
 
        /// <summary>
        /// 测点字典(这个每个泵站都不一样)
        /// </summary>
        private Tuple<string, long> monitor出水总管1压力 = new Tuple<string, long>("_0402010201090105001",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_一号管压力);
        private Tuple<string, long> monitor出水总管1瞬时流量 = new Tuple<string, long>("_0402060601010103000",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_一号管流量);
        private Tuple<string, long> monitor出水总管2压力 = new Tuple<string, long>("_0402010201090105002",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_二号管压力);
        private Tuple<string, long> monitor出水总管2瞬时流量 = new Tuple<string, long>("_0402060601010203000", 
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_二号管流量);
        private Tuple<string, long> monitor出水总管3压力 = new Tuple<string, long>("_0402060601010305000",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_三号管压力);
        private Tuple<string, long> monitor出水总管3瞬时流量 = new Tuple<string, long>("_0402010503030202003",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_三号管流量);
        private Tuple<string, long> monitor进水前池液位1 = new Tuple<string, long>("_0402010201090104011",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_液位1);
        private Tuple<string, long> monitor进水前池液位2 = new Tuple<string, long>("_0402010201091104123",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_液位2);
        private Tuple<string, long> monitor进水前池液位3 = new Tuple<string, long>("_0402010201091104122",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_陈行一输._monitor_id_液位3);
 
 
        public override bool Is液位Monitor(string tagname)
        {
            if (monitor进水前池液位1.Item1 == tagname)
                return true;
            if (monitor进水前池液位2.Item1 == tagname)
                return true;
            if (monitor进水前池液位3.Item1 == tagname)
                return true;
            return false;
        }
 
        public override string GetMonitorNameByTag(string tagname)
        {
            if (monitor出水总管1压力.Item1 == tagname)
                return "出水总管1压力";
            if (monitor出水总管1瞬时流量.Item1 == tagname)
                return "出水总管1瞬时流量";
            if (monitor出水总管2压力.Item1 == tagname)
                return "出水总管2压力";
            if (monitor出水总管2瞬时流量.Item1 == tagname)
                return "出水总管2瞬时流量";
            if (monitor出水总管3压力.Item1 == tagname)
                return "出水总管3压力";
            if (monitor出水总管3瞬时流量.Item1 == tagname)
                return "出水总管3瞬时流量";
            if (monitor进水前池液位1.Item1 == tagname)
                return "进水前池液位1";
            if (monitor进水前池液位2.Item1 == tagname)
                return "进水前池液位2";
            if (monitor进水前池液位3.Item1 == tagname)
                return "进水前池液位3";
            return "未知测点";
        }
 
        /// <summary>
        /// 根据三高提供的参数,构建调度分析所需的参数, (这个每个泵站都不一样)
        /// </summary>
        /// <param name="allRecords_hour"></param>
        /// <param name="error_info"></param>
        /// <returns></returns>
        protected override DispatchAna.Model.RequestParasComplex BuildDispatchAnaRequest(
            List<IStation.Dto.MonitorRecord4SG> allRecords_hour,
            out string error_info)
        {
            if (allRecords_hour == null || allRecords_hour.Count == 0)
            {
                error_info = "陈行一输测点数据为空";
                return null;
            }
            var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex();
            var water_level1 = allRecords_hour.Find(x => x.MonitorTag == monitor进水前池液位1.Item1);
            if (water_level1 == null)
            {
                error_info = "陈行一输水库液位1测点未找到";
                return null;
            }
            var water_level2 = allRecords_hour.Find(x => x.MonitorTag == monitor进水前池液位2.Item1);
            if (water_level2 == null)
            {
                error_info = "陈行一输水库液位2测点未找到";
                return null;
            }
            var water_level3 = allRecords_hour.Find(x => x.MonitorTag == monitor进水前池液位3.Item1);
            if (water_level3 == null)
            {
                error_info = "陈行一输水库液位3测点未找到";
                return null;
            }
 
 
            var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管1瞬时流量.Item1);
            if (pipe1_flow == null)
            {
                error_info = "陈行一输水管道1流量测点未找到";
                return null;
            }
 
            var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管1压力.Item1);
            if (pipe1_press == null)
            {
                error_info = "陈行一输水管道1压力测点未找到";
                return null;
            }
 
            var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管2瞬时流量.Item1);
            if (pipe2_flow == null)
            {
                error_info = "陈行一输水管道2流量测点未找到";
                return null;
            }
 
            var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管2压力.Item1);
            if (pipe2_press == null)
            {
                error_info = "陈行一输水管道2压力测点未找到";
                return null;
            }
 
 
            var pipe3_flow = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管3瞬时流量.Item1);
            if (pipe3_flow == null)
            {
                error_info = "陈行一输水管道3流量测点未找到";
                return null;
            }
 
            var pipe3_press = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管3压力.Item1);
            if (pipe3_press == null)
            {
                error_info = "陈行一输水管道3压力测点未找到";
                return null;
            }
 
 
            complex_dispatch_request.CorpID = this._corpID;
            complex_dispatch_request.StationID = this._stationID;
            complex_dispatch_request.SchemeNumber = 1;
            complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.压力;
            complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>()
                        {
                          new DispatchAna.Model.InletPipePara(){ Name="液位1", Value = water_level1.RecordValue},
                          new DispatchAna.Model.InletPipePara(){ Name="液位2", Value = water_level2.RecordValue},
                          new DispatchAna.Model.InletPipePara(){ Name="液位3", Value = water_level3.RecordValue}
                        };
            complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>();
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "管路1",
                TargetFlow = pipe1_flow.RecordValue,
                TargetPress = pipe1_press.RecordValue,
            });
 
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "管路2",
                TargetFlow = pipe2_flow.RecordValue,
                TargetPress = pipe2_press.RecordValue,
            });
 
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "管路3",
                TargetFlow = pipe3_flow.RecordValue,
                TargetPress = pipe3_press.RecordValue,
            });
 
 
 
 
 
            error_info = null;
            return complex_dispatch_request;
        }
 
 
    }
}