using DevExpress.Utils.Extensions; using System.Collections.Generic; using System.Linq; namespace IStation.DataProvider { /// /// 信号类型 数据生成器 /// public class SignalTypeGenerator { /// /// 生成 /// public static bool Creater() { var group流量 = BuildGroup("流量"); var type瞬时流量 = BuildType(group流量, "瞬时流量", Unit.eUnitType.流量, ((int)Unit.eUnitQ.M3H).ToString()); var type累积流量 = BuildType(group流量, "累积流量", Unit.eUnitType.体积, ((int)Unit.eUnitVol.M3).ToString(), false); var group压力 = BuildGroup("压力"); var type压力 = BuildType(group压力, "压力", Unit.eUnitType.压力, ((int)Unit.eUnitPR.MPa).ToString()); var type水位 = BuildType(group压力, "水位", Unit.eUnitType.长度, ((int)Unit.eUnitL.m).ToString()); var type扬程 = BuildType(group压力, "扬程", Unit.eUnitType.扬程, ((int)Unit.eUnitH.M).ToString()); var group功率 = BuildGroup("功率"); var type视在功率 = BuildType(group功率, "视在功率", Unit.eUnitType.视在功率, ((int)Unit.eUnitPs.kVA).ToString()); var type有功功率 = BuildType(group功率, "有功功率", Unit.eUnitType.有功功率, ((int)Unit.eUnitP.KW).ToString()); var type无功功率 = BuildType(group功率, "无功功率", Unit.eUnitType.无功功率, ((int)Unit.eUnitPQ.kVar).ToString()); var group频率 = BuildGroup("频率"); var type频率 = BuildType(group频率, "频率", Unit.eUnitType.频率, ((int)Unit.eUnitHZ.hz).ToString()); var type转速 = BuildType(group频率, "转速", Unit.eUnitType.转速, ((int)Unit.eUnitN.r_min).ToString()); var group电度 = BuildGroup("电度"); var type有功电度 = BuildType(group电度, "有功电度", Unit.eUnitType.有功电度, ((int)Unit.eUnitEleDegree.kwh).ToString(), false); var type无功电度 = BuildType(group电度, "无功电度", Unit.eUnitType.无功电度, ((int)Unit.eUnitEleDegreeQ.kVarh).ToString()); var group设备 = BuildGroup("设备"); var type运行状态 = BuildType(group设备, "运行状态", new Dictionary { { -2, "未知" }, { -1, "故障" }, { 0, "停机" }, { 1, "开机" }, { 2, "工频" }, { 3, "变频" } }); var type运行时间 = BuildType(group设备, "运行时间", Unit.eUnitType.累积时间, ((int)Unit.eUnitSumTime.Second).ToString(), false); var type开机次数 = BuildType(group设备, "开机次数", Unit.eUnitType.自定义, "次", false); var type效率 = BuildType(group设备, "效率", Unit.eUnitType.效率, ((int)Unit.eUnitE.Percent).ToString()); var type千吨能耗 = BuildType(group设备, "千吨能耗", Unit.eUnitType.千吨能耗, ((int)Unit.eUnitWP.kWh_km_3).ToString()); var type单位能耗 = BuildType(group设备, "单位能耗", Unit.eUnitType.单位能耗, ((int)Unit.eUnitUWP.kWh_km_3_m).ToString()); var group电 = BuildGroup("电"); var type电流 = BuildType(group电, "电流", Unit.eUnitType.电流, ((int)Unit.eUnitCurrent.A).ToString()); var type电压 = BuildType(group电, "电压", Unit.eUnitType.电压, ((int)Unit.eUnitVoltage.V).ToString()); var type电导率 = BuildType(group电, "电导率", Unit.eUnitType.电导率, ((int)Unit.eUnitCond.Sm).ToString()); var group环境 = BuildGroup("环境"); var type温度 = BuildType(group环境, "温度", Unit.eUnitType.温度, ((int)Unit.eUnitTP.C).ToString()); var type浊度 = BuildType(group环境, "浊度", Unit.eUnitType.浊度, ((int)Unit.eUnitTU.NTU).ToString()); var type余氯 = BuildType(group环境, "余氯", Unit.eUnitType.浓度, ((int)Unit.eUnitCO.mgL).ToString()); var type湿度 = BuildType(group环境, "湿度", Unit.eUnitType.湿度, ((int)Unit.eUnitHM.Rh).ToString()); var typePH = BuildType(group环境, "PH", Unit.eUnitType.自定义, ""); var type溶解氧 = BuildType(group环境, "溶解氧", Unit.eUnitType.浓度, ((int)Unit.eUnitCO.mgL).ToString()); var type音量 = BuildType(group环境, "音量", Unit.eUnitType.音量, ((int)Unit.eUnitSou.db).ToString()); var type噪音 = BuildType(group环境, "噪音", Unit.eUnitType.音量, ((int)Unit.eUnitSou.db).ToString()); var group阀门 = BuildGroup("阀门"); var type阀门状态 = BuildType(group阀门, "阀门状态", new Dictionary { { 0, "关" }, { 1, "开" }, { 2, "中间" } }); var type阀门开度 = BuildType(group阀门, "阀门开度", Unit.eUnitType.自定义, ""); var signalTypeGroups = new List() { group流量, group压力, group功率, group频率, group电度, group设备, group电 , group环境, group阀门, }; var index = 1; signalTypeGroups.ForEach(x => { x.SortCode = index++; }); var signalTypes = new List() { type瞬时流量, type累积流量, type压力, type水位, type扬程, type视在功率, type有功功率, type无功功率, type频率, type转速, type有功电度, type无功电度, type运行状态, type运行时间, type开机次数, type效率, type千吨能耗, type单位能耗, type电流, type电压, type电导率, type温度, type浊度, type余氯, type湿度, typePH, type溶解氧, type音量, type噪音, type阀门状态, type阀门开度, }; var groups = signalTypes.GroupBy(x => x.GroupID); groups.ForEach(x => { var i = 1; x.ForEach(t => { t.SortCode = i++; }); }); if (!new BLL.SignalTypeGroup().Covers(signalTypeGroups)) { return false; }; if (!new BLL.SignalType().Covers(signalTypes)) { return false; } return true; } private static Model.SignalTypeGroup BuildGroup(string name) { var model = new Model.SignalTypeGroup(); model.ID = SnowflakeIdHelper.NextId(); model.Name = name; return model; } private static Model.SignalType BuildType(Model.SignalTypeGroup group, string identifier, Unit.eUnitType unitType, string unitValue, bool instant = true) { var model = new Model.SignalType(); model.GroupID = group.ID; model.ID = SnowflakeIdHelper.NextId(); model.Name = identifier; model.Identifier = identifier; model.FormatType = Model.eFormatType.Numeric; var paras = new Model.SignalType.NumericFormatParas() { UnitType = unitType, UnitValue = unitValue, DecimalPlaces = 1, }; model.FormatParas = JsonHelper.Object2Json(paras); model.MeasureType = instant ? Model.eMeasureType.Instant : Model.eMeasureType.Accumulate; return model; } private static Model.SignalType BuildType(Model.SignalTypeGroup group, string identifier, Dictionary dict, bool instant = true) { var model = new Model.SignalType(); model.GroupID = group.ID; model.ID = SnowflakeIdHelper.NextId(); model.Name = identifier; model.Identifier = identifier; model.FormatType = Model.eFormatType.Enum; if (dict != null && dict.Any()) { var formatParas = new Model.SignalType.EnumFormatParas(); formatParas.Items = new List(); foreach (var dictItem in dict) { var item = new Model.SignalType.EnumFormatItem(); item.Name = dictItem.Value; item.Value = dictItem.Key; formatParas.Items.Add(item); } model.FormatParas = formatParas.ToJson(); } JsonHelper.Object2Json(dict); model.MeasureType = instant ? Model.eMeasureType.Instant : Model.eMeasureType.Accumulate; return model; } } }