Shuxia Ning
2025-02-13 2f1cbec203dcff25df7a5c2b51b13ec558f2c3db
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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
using IStation.BLL;
using System.Collections.Generic;
using System.Linq;
 
namespace IStation.DataProvider
{
    /// <summary>
    /// 泵站 数据生成器
    /// </summary>
    public class StationGenerator
    {
 
        public Dictionary<long, string> MapperDict = new Dictionary<long, string>();
 
 
        /// <summary>
        /// 生成
        /// </summary>
        public static bool Creater()
        {
 
            var monitorPointGroups = new List<Model.MonitorPointGroup>();
            var monitorPointExSignals = new List<Model.MonitorPointExSignal>();
 
            var stations = new Station().GetAll();
            var station陈行二取 = stations?.Find(x => x.Name == "陈行二取");
            var station陈行一输 = stations?.Find(x => x.Name == "陈行一输");
            var station陈行二输 = stations?.Find(x => x.Name == "陈行二输");
 
            if (station陈行二取 != null)
            {
                var belongId = station陈行二取.ID;
                var g泵站 = BuildGroup("泵站", belongId, 1);
                var m长江水位 = BuildMonitorPoint(g泵站, "长江水位", belongId, IStation.SignalType.水位, 1, IStation.Flags.进口);
                var m二取水前池液位 = BuildMonitorPoint(g泵站, "二取水前池液位", belongId, IStation.SignalType.水位, 2, IStation.Flags.进口);
                var m陈行水库水位 = BuildMonitorPoint(g泵站, "陈行水库水位", belongId, IStation.SignalType.水位, 3, IStation.Flags.出口);
 
 
                monitorPointGroups.Add(g泵站);
                monitorPointExSignals.Add(m长江水位);
                monitorPointExSignals.Add(m二取水前池液位);
                monitorPointExSignals.Add(m陈行水库水位);
                for (int i = 1; i <= 5; i++)
                {
                    var group = BuildGroup($"{i}#机组", belongId, i);
                    var m运行状态 = BuildMonitorPoint(group, "运行状态", belongId, IStation.SignalType.运行状态, 1);
                    var m出水压力 = BuildMonitorPoint(group, "出水压力", belongId, IStation.SignalType.压力, 2, IStation.Flags.出口);
                    var m出水流量 = BuildMonitorPoint(group, "瞬时流量", belongId, IStation.SignalType.瞬时流量, 3, IStation.Flags.出口);
                    var m累积流量 = BuildMonitorPoint(group, "累积流量", belongId, IStation.SignalType.累积流量, 4);
                    var m有功功率 = BuildMonitorPoint(group, "有功功率", belongId, IStation.SignalType.有功功率, 5);
                    var m有功电度 = BuildMonitorPoint(group, "有功电度", belongId, IStation.SignalType.有功电度, 6);
 
                    monitorPointGroups.Add(group);
                    monitorPointExSignals.Add(m运行状态);
                    monitorPointExSignals.Add(m出水压力);
                    monitorPointExSignals.Add(m出水流量);
                    monitorPointExSignals.Add(m累积流量);
                    monitorPointExSignals.Add(m有功功率);
                    monitorPointExSignals.Add(m有功电度);
                }
            }
 
            if (station陈行一输 != null)
            {
                var belongId = station陈行一输.ID;
                var g泵站 = BuildGroup("泵站", belongId, 1);
 
                var m老前池南侧液位 = BuildMonitorPoint(g泵站, "老前池南侧液位", belongId, IStation.SignalType.水位, 1, IStation.Flags.进口);
                var m老前池北侧液位 = BuildMonitorPoint(g泵站, "老前池北侧液位", belongId, IStation.SignalType.水位, 2, IStation.Flags.进口);
                var m新前池液位 = BuildMonitorPoint(g泵站, "新前池液位", belongId, IStation.SignalType.水位, 3, IStation.Flags.进口);
 
                var m输水嘉定1线出口压力 = BuildMonitorPoint(g泵站, "嘉定1线出口压力", belongId, IStation.SignalType.压力, 4, IStation.Flags.出口);
                var m输水嘉定2线出口压力 = BuildMonitorPoint(g泵站, "嘉定2线出口压力", belongId, IStation.SignalType.压力, 5, IStation.Flags.出口);
                var m输水嘉定3线出口压力 = BuildMonitorPoint(g泵站, "嘉定3线出口压力", belongId, IStation.SignalType.压力, 6, IStation.Flags.出口);
 
                var m输水嘉定1线瞬时流量 = BuildMonitorPoint(g泵站, "嘉定1线瞬时流量", belongId, IStation.SignalType.瞬时流量, 7, IStation.Flags.出口);
                var m输水嘉定2线瞬时流量 = BuildMonitorPoint(g泵站, "嘉定2线瞬时流量", belongId, IStation.SignalType.瞬时流量, 8, IStation.Flags.出口);
                var m输水嘉定3线瞬时流量 = BuildMonitorPoint(g泵站, "嘉定3线瞬时流量", belongId, IStation.SignalType.瞬时流量, 9, IStation.Flags.出口);
 
                var m输水嘉定1线累计流量 = BuildMonitorPoint(g泵站, "嘉定1线累计流量", belongId, IStation.SignalType.累积流量, 10);
                var m输水嘉定2线累计流量 = BuildMonitorPoint(g泵站, "嘉定2线累计流量", belongId, IStation.SignalType.累积流量, 11);
                var m输水嘉定3线累计流量 = BuildMonitorPoint(g泵站, "嘉定3线累计流量", belongId, IStation.SignalType.累积流量, 12);
 
                monitorPointGroups.Add(g泵站);
                monitorPointExSignals.Add(m老前池南侧液位);
                monitorPointExSignals.Add(m老前池北侧液位);
                monitorPointExSignals.Add(m新前池液位);
                monitorPointExSignals.Add(m输水嘉定1线出口压力);
                monitorPointExSignals.Add(m输水嘉定2线出口压力);
                monitorPointExSignals.Add(m输水嘉定3线出口压力);
                monitorPointExSignals.Add(m输水嘉定1线瞬时流量);
                monitorPointExSignals.Add(m输水嘉定2线瞬时流量);
                monitorPointExSignals.Add(m输水嘉定3线瞬时流量);
                monitorPointExSignals.Add(m输水嘉定1线累计流量);
                monitorPointExSignals.Add(m输水嘉定2线累计流量);
                monitorPointExSignals.Add(m输水嘉定3线累计流量);
 
                var index = 2;
                for (int i = 11; i <= 18; i++)
                {
                    var index2 = 1;
                    var group = BuildGroup($"{i}#机组", belongId, index++);
                    var m运行状态 = BuildMonitorPoint(group, "运行状态", belongId, IStation.SignalType.运行状态, index2++);
                    var m出水压力 = BuildMonitorPoint(group, "出水压力", belongId, IStation.SignalType.压力, index2++, IStation.Flags.出口);
                    if (i != 15 && i != 16)
                    {
                        var m转速 = BuildMonitorPoint(group, "转速", belongId, IStation.SignalType.转速, index2++);
                        monitorPointExSignals.Add(m转速);
                    }
                    var m有功功率 = BuildMonitorPoint(group, "有功功率", belongId, IStation.SignalType.有功功率, index2++);
                    var m有功电度 = BuildMonitorPoint(group, "有功电度", belongId, IStation.SignalType.有功电度, index2++);
 
 
                    monitorPointGroups.Add(group);
                    monitorPointExSignals.Add(m运行状态);
                    monitorPointExSignals.Add(m出水压力);
                    monitorPointExSignals.Add(m有功功率);
                    monitorPointExSignals.Add(m有功电度);
 
                }
            }
 
            if (station陈行二输 != null)
            {
                var belongId = station陈行二输.ID;
                var g泵站 = BuildGroup("泵站", belongId, 1);
 
                var m2400总管出口压力 = BuildMonitorPoint(g泵站, "2400总管出口压力", belongId, IStation.SignalType.压力, 1, IStation.Flags.出口);
                var m2700总管出口压力 = BuildMonitorPoint(g泵站, "2700总管出口压力", belongId, IStation.SignalType.压力, 2, IStation.Flags.出口);
 
                var m2400总管瞬时流量 = BuildMonitorPoint(g泵站, "2400总管瞬时流量", belongId, IStation.SignalType.瞬时流量, 3, IStation.Flags.出口);
                var m2700总管瞬时流量 = BuildMonitorPoint(g泵站, "2700总管瞬时流量", belongId, IStation.SignalType.瞬时流量, 4, IStation.Flags.出口);
 
                var m2400总管累计流量 = BuildMonitorPoint(g泵站, "2400总管累计流量", belongId, IStation.SignalType.累积流量, 5);
                var m2700总管累计流量 = BuildMonitorPoint(g泵站, "2700总管累计流量", belongId, IStation.SignalType.累积流量, 6);
 
                monitorPointExSignals.Add(m2400总管出口压力);
                monitorPointExSignals.Add(m2700总管出口压力);
                monitorPointExSignals.Add(m2400总管瞬时流量);
                monitorPointExSignals.Add(m2700总管瞬时流量);
                monitorPointExSignals.Add(m2400总管累计流量);
                monitorPointExSignals.Add(m2700总管累计流量);
 
                monitorPointGroups.Add(g泵站);
                var index = 2;
                for (int i = 21; i <= 27; i++)
                {
                    var index2 = 1;
                    var group = BuildGroup($"{i}#机组", belongId, index++);
                    var m泵井液位 = BuildMonitorPoint(group, "泵井液位", belongId, IStation.SignalType.水位, index2++, IStation.Flags.进口);
                    var m运行状态 = BuildMonitorPoint(group, "运行状态", belongId, IStation.SignalType.运行状态, index2++);
                    var m出水压力 = BuildMonitorPoint(group, "出水压力", belongId, IStation.SignalType.压力, index2++, IStation.Flags.出口);
                    var m出水流量 = BuildMonitorPoint(group, "瞬时流量", belongId, IStation.SignalType.瞬时流量, index2++, IStation.Flags.出口);
                    var m累积流量 = BuildMonitorPoint(group, "累积流量", belongId, IStation.SignalType.累积流量, index2++);
                    var m转速 = BuildMonitorPoint(group, "转速", belongId, IStation.SignalType.转速, index2++);
                    var m有功功率 = BuildMonitorPoint(group, "有功功率", belongId, IStation.SignalType.有功功率, index2++);
                    var m有功电度 = BuildMonitorPoint(group, "有功电度", belongId, IStation.SignalType.有功电度, index2++);
 
                    monitorPointGroups.Add(group);
                    monitorPointExSignals.Add(m泵井液位);
                    monitorPointExSignals.Add(m运行状态);
                    monitorPointExSignals.Add(m出水压力);
                    monitorPointExSignals.Add(m出水流量);
                    monitorPointExSignals.Add(m累积流量);
                    monitorPointExSignals.Add(m转速);
                    monitorPointExSignals.Add(m有功功率);
                    monitorPointExSignals.Add(m有功电度);
                }
            }
 
            if (monitorPointGroups.Any())
            {
                if (!new BLL.MonitorPointGroup().Covers(monitorPointGroups))
                {
                    return false;
                };
            }
 
            if (monitorPointExSignals.Any())
            {
                if (!new BLL.MonitorPoint().CoverExs(monitorPointExSignals))
                {
                    return false;
                };
            }
 
            return true;
        }
 
 
        private static Model.MonitorPointGroup BuildGroup(string name, long belongId, int sortCode)
        {
            var model = new Model.MonitorPointGroup();
            model.ID = SnowflakeIdHelper.NextId();
            model.BelongType = IStation.ObjectType.Station;
            model.BelongID = belongId;
            model.Name = name;
            model.SortCode = sortCode;
            return model;
        }
 
        private static Model.MonitorPointExSignal BuildMonitorPoint(Model.MonitorPointGroup group, string name, long belongId, string signalType, int sortCode, string flag = null)
        {
            var model = new Model.MonitorPointExSignal();
            model.MonitorPointID = SnowflakeIdHelper.NextId();
            model.SignalID = SnowflakeIdHelper.NextId();
            model.Name = name;
 
            model.BelongType = IStation.ObjectType.Station;
            model.BelongID = belongId;
            model.GroupID = group.ID;
            model.SourceType = Model.eSourceType.Docking;
            model.SerialNO = 1;
            model.SortCode = sortCode;
            model.Importance = 1;
            if (flag != null)
            {
                model.Flags = new List<string>() { flag };
            }
            model.UseStatus = Model.eUseStatus.Enable;
            model.SignalType = signalType;
            return model;
        }
 
 
 
    }
}