using IStation.BLL; using System.Collections.Generic; using System.Linq; namespace IStation.DataProvider { /// /// 泵站 数据生成器 /// public class StationGenerator { public Dictionary MapperDict = new Dictionary(); /// /// 生成 /// public static bool Creater() { var monitorPointGroups = new List(); var monitorPointExSignals = new List(); 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() { flag }; } model.UseStatus = Model.eUseStatus.Enable; model.SignalType = signalType; return model; } } }