namespace Yw.WinFrmUI { /// /// 标注辅助类 /// public class HydroMarkHelper { /// /// 获取设置列表 /// public static List GetSetList(Yw.Model.HydroModelInfo hydroInfo) { if (hydroInfo == null) { return default; } var list = new List(); //水库 if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Reservoir, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir), PropName = HydroMarkProp.None }); } //水池 if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Tank, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank), PropName = HydroMarkProp.None }); } //水箱 if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Waterbox, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox), PropName = HydroMarkProp.None }); } //管道 if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Pipe, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe), PropName = HydroMarkProp.None }); } //过渡件 if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Translation, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Translation), PropName = HydroMarkProp.None }); } //水泵 if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Pump, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump), PropName = HydroMarkProp.None }); } //阀门 if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Valve, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve), PropName = HydroMarkProp.None }); } //换热器 if (hydroInfo.Exchangers != null && hydroInfo.Exchangers.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Exchanger, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Exchanger), PropName = HydroMarkProp.None }); } //压缩机 if (hydroInfo.Compressors != null && hydroInfo.Compressors.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Compressor, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Compressor), PropName = HydroMarkProp.None }); } //喷嘴 if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Nozzle, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Nozzle), PropName = HydroMarkProp.None }); } //消火栓 if (hydroInfo.Hydrants != null && hydroInfo.Hydrants.Count > 0) { list.Add(new HydroMarkSetViewModel() { Catalog = Yw.Hydro.ParterCatalog.Hydrant, CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Hydrant), PropName = HydroMarkProp.None }); } return list; } /// /// 获取结果列表 /// public static List GetResultList ( Yw.Model.HydroModelInfo hydroInfo, List allSetList, Dictionary allCalcuResultDict ) { if (hydroInfo == null) { return default; } if (allSetList == null || allSetList.Count < 1) { return default; } var allVisualList = hydroInfo.GetAllVisuals(); if (allVisualList == null || allVisualList.Count < 1) { return default; } var list = new List(); allVisualList.ForEach(x => { var result = GetResult(x, allSetList, allCalcuResultDict); if (result != null) { list.Add(result); } }); return list; } /// /// 获取结果 /// public static HydroMarkResultViewModel GetResult ( Yw.Model.HydroVisualInfo visual, List allSetList, Dictionary allCalcuResultDict ) { if (visual == null) { return default; } var set = allSetList?.Find(x => x.Catalog == visual.Catalog); if (set == null) { return default; } HydroMarkResultViewModel result = null; switch (set.Catalog) { case Yw.Hydro.ParterCatalog.Reservoir: { var reservoir = visual as Yw.Model.HydroReservoirInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.PoolElev: { result = new HydroMarkResultViewModel() { Code = visual.Code, //Text = $"池底标高:{Math.Round(reservoir.PoolElev, 4)}m" }; } break; case Yw.Hydro.ParterProp.Head: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"总水头:{Math.Round(reservoir.Head, 2)}m" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Tank: { var tank = visual as Yw.Model.HydroTankInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.PoolElev: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"池底标高:{Math.Round(tank.PoolElev, 4)}m" }; } break; case Yw.Hydro.ParterProp.InitLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"初始水位:{Math.Round(tank.InitLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.MinLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最小水位:{Math.Round(tank.MinLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.MaxLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最高水位:{Math.Round(tank.MaxLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.DN: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"公称直径:{Math.Round(tank.DN, 4)}m" }; } break; case Yw.Hydro.ParterProp.MinVol: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最小容积:{Math.Round(tank.MinVol, 1)}m³" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Waterbox: { var waterbox = visual as Yw.Model.HydroWaterboxInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.PoolElev: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"池底标高:{Math.Round(waterbox.PoolElev, 4)}m" }; } break; case Yw.Hydro.ParterProp.InitLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"初始水位:{Math.Round(waterbox.InitLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.MinLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最小水位:{Math.Round(waterbox.MinLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.MaxLevel: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最高水位:{Math.Round(waterbox.MaxLevel, 4)}m" }; } break; case Yw.Hydro.ParterProp.DN: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"公称直径:{Math.Round(waterbox.DN, 4)}m" }; } break; case Yw.Hydro.ParterProp.MinVol: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"最小容积:{Math.Round(waterbox.MinVol, 1)}m³" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Pipe: { var pipe = visual as Yw.Model.HydroPipeInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.Diameter: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"直径:{Math.Round(pipe.Diameter, 1)}mm" }; } break; case Yw.Hydro.ParterProp.Length: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"长度:{Math.Round(pipe.Length, 4)}m" }; } break; case Yw.Hydro.ParterProp.Roughness: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"粗糙系数:{Math.Round(pipe.Roughness, 1)}" }; } break; case Yw.Hydro.ParterProp.MinorLoss: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"局阻系数:{Math.Round(pipe.MinorLoss, 1)}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Translation: { var translation = visual as Yw.Model.HydroTranslationInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.Diameter: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"直径:{Math.Round(translation.Diameter, 1)}mm" }; } break; case Yw.Hydro.ParterProp.Length: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"长度:{Math.Round(translation.Length, 4)}m" }; } break; case Yw.Hydro.ParterProp.Roughness: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"粗糙系数:{Math.Round(translation.Roughness, 1)}" }; } break; case Yw.Hydro.ParterProp.MinorLoss: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"局阻系数:{Math.Round(translation.MinorLoss, 1)}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Pump: { var pump = visual as Yw.Model.HydroPumpInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.LinkStatus: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"开机状态:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(pump.LinkStatus)}" }; } break; case Yw.Hydro.ParterProp.RatedQ: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"额定流量:{pump.RatedQ}m³/h" }; } break; case Yw.Hydro.ParterProp.RatedH: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"额定扬程:{pump.RatedH}m" }; } break; case Yw.Hydro.ParterProp.RatedP: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"额定功率:{pump.RatedP}kW" }; } break; case Yw.Hydro.ParterProp.RatedN: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"额定转速:{pump.RatedN}r/min" }; } break; case Yw.Hydro.ParterProp.CurrentHz: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"设定频率:{Math.Round(pump.RatedHz * pump.SpeedRatio, 1)}hz" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Valve: { var valve = visual as Yw.Model.HydroValveInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.LinkStatus: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"阀门状态:{HydroLinkStatusHelper.GetStatusName(valve.LinkStatus)}" }; } break; case Yw.Hydro.ParterProp.ValveType: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"阀门类型:{HydroValveTypeHelper.GetTypeName(valve.ValveType)}" }; } break; case Yw.Hydro.ParterProp.OpeningDegree: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"阀门开度:{valve.OpeningDegree}%" }; } break; case Yw.Hydro.ParterProp.Diameter: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"直径:{valve.Diameter}mm" }; } break; case Yw.Hydro.ParterProp.MinorLoss: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"局阻系数:{valve.MinorLoss}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Exchanger: { var exchanger = visual as Yw.Model.HydroExchangerInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.LinkStatus: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"运行状态:{HydroLinkStatusHelper.GetStatusName(exchanger.LinkStatus)}" }; } break; case Yw.Hydro.ParterProp.Diameter: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"直径:{exchanger.Diameter}mm" }; } break; case Yw.Hydro.ParterProp.MinorLoss: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"局阻系数:{exchanger.MinorLoss}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Compressor: { var compressor = visual as Yw.Model.HydroCompressorInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.LinkStatus: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"运行状态:{HydroLinkStatusHelper.GetStatusName(compressor.LinkStatus)}" }; } break; case Yw.Hydro.ParterProp.Diameter: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"直径:{compressor.Diameter}mm" }; } break; case Yw.Hydro.ParterProp.MinorLoss: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"局阻系数:{compressor.MinorLoss}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Nozzle: { var nozzle = visual as Yw.Model.HydroNozzleInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.Elev: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"标高:{Math.Round(nozzle.Elev, 4)}m" }; } break; case Yw.Hydro.ParterProp.Demand: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"需水量:{nozzle.Demand}m³/h" }; } break; case Yw.Hydro.ParterProp.Coefficient: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"喷射系数:{nozzle.Coefficient}" }; } break; default: break; } } break; case Yw.Hydro.ParterCatalog.Hydrant: { var hydrant = visual as Yw.Model.HydroHydrantInfo; switch (set.PropName) { case Yw.Hydro.ParterProp.Elev: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"标高:{Math.Round(hydrant.Elev, 4)}m" }; } break; case Yw.Hydro.ParterProp.Demand: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"需水量:{hydrant.Demand}m³/h" }; } break; case Yw.Hydro.ParterProp.Coefficient: { result = new HydroMarkResultViewModel() { Code = visual.Code, Text = $"喷射系数:{hydrant.Coefficient}" }; } break; default: break; } } break; default: break; } return result; } } }