tangxu
2022-11-09 16236a00f212a96e79e17298713faff756cee9c0
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
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出水总管东调压池 = new Tuple<string, long>("_0402010301080103002",
        //    IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._monitor_id_东调压池液位1);
        private Tuple<string, long> monitor出水总管西调压池 = new Tuple<string, long>("_0402010301080103001",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._monitor_id_西调压池液位2);
        private Tuple<string, long> monitor出水总管瞬时流量 = new Tuple<string, long>("_0402010301090103004",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._monitor_id_出水总管瞬时流量);
        private Tuple<string, long> monitor进水前液位1 = new Tuple<string, long>("_0402010301034103001",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._montiro_id_进水前液位1);
        private Tuple<string, long> monitor进水前液位2 = new Tuple<string, long>("_0402010301034203001",
                IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._montiro_id_进水前液位2);
        private Tuple<string, long> monitor进水前液位3 = new Tuple<string, long>("_0402010301034303001",
                IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._montiro_id_进水前液位3);
        private Tuple<string, long> monitor进水前液位4 = new Tuple<string, long>("_0402010301034403001",
                IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_松浦大桥._montiro_id_进水前液位4);
 
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="tagname"></param>
        /// <returns></returns>
        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;
            if (monitor进水前液位4.Item1 == tagname)
                return true;
 
            return false;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="tagname"></param>
        /// <returns></returns>
        public override string GetMonitorNameByTag(string tagname)
        {
            if (monitor出水总管瞬时流量.Item1 == tagname)
                return "出水总管瞬时流量";
            if (monitor进水前液位1.Item1 == tagname)
                return "进水前液位1";
            if (monitor进水前液位2.Item1 == tagname)
                return "进水前液位2";
            if (monitor进水前液位3.Item1 == tagname)
                return "进水前液位3";
            if (monitor进水前液位4.Item1 == tagname)
                return "进水前液位4";
            //if (monitor出水总管东调压池.Item1 == tagname)
            //    return "出水总管东调压池";
            if (monitor出水总管西调压池.Item1 == tagname)
                return "出水总管西调压池";
            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 water_level4 = allRecords_hour.Find(x => x.MonitorTag == monitor进水前液位4.Item1);
            if (water_level4 == null)
            {
                error_info = "大桥泵站 进水前液位4测点未找到";
                return null;
            }
 
            var pipe_flow = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管瞬时流量.Item1);
            if (pipe_flow == null)
            {
                error_info = "大桥泵站水管道 流量测点未找到";
                return null;
            }
 
            //var oulet_wl1 = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管东调压池.Item1);
            //if (oulet_wl1 == null)
            //{
            //    error_info = "大桥泵站 出水总管东调压池测点未找到";
            //    return null;
            //}
            var oulet_wl2 = allRecords_hour.Find(x => x.MonitorTag == monitor出水总管西调压池.Item1);
            if (oulet_wl2 == null)
            {
                error_info = "大桥泵站 出水总管西调压池测点未找到";
                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",  IsWaterLevel= true,Value = water_level1.RecordValue},
                             new DispatchAna.Model.InletPipePara(){ Name="水池2",  IsWaterLevel= true,Value = water_level2.RecordValue},
                             new DispatchAna.Model.InletPipePara(){ Name="水池3",  IsWaterLevel= true,Value = water_level3.RecordValue},
                             new DispatchAna.Model.InletPipePara(){ Name="水池4",  IsWaterLevel= true,Value = water_level4.RecordValue}
                        };
            complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>();
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "东调压池",
                TargetFlow = pipe_flow.RecordValue / 2,
                IsWaterLevel = true,
                TargetPress = oulet_wl2.RecordValue,
            });
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "西调压池",
                TargetFlow = pipe_flow.RecordValue / 2,
                IsWaterLevel = true,
                TargetPress = oulet_wl2.RecordValue,
            });
 
 
 
 
            error_info = null;
            return complex_dispatch_request;
        }
 
 
    }
}