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;
}
}
}