lixiaojun
2024-11-16 81fa3e53992712371665c6de58a4487beb7ffc17
WinFrmUI/Yw.WinFrmUI.Hydro.Core/07-mark/00-core/HydroMarkHelper.cs
@@ -1,6 +1,4 @@
using Yw.WinFrmUI.Hydro;
namespace Yw.WinFrmUI
namespace Yw.WinFrmUI
{
    /// <summary>
    /// 标注辅助类
@@ -17,6 +15,8 @@
                return default;
            }
            var list = new List<HydroMarkSetViewModel>();
            //水库
            if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -26,6 +26,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //水池
            if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -35,6 +37,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //水箱
            if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -44,6 +48,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //管道
            if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -53,6 +59,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //过渡件
            if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -62,6 +70,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //水泵
            if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -71,6 +81,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //阀门
            if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -80,6 +92,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //换热器
            if (hydroInfo.Exchangers != null && hydroInfo.Exchangers.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -89,6 +103,19 @@
                    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()
@@ -98,6 +125,8 @@
                    PropName = HydroMarkProp.None
                });
            }
            //消火栓
            if (hydroInfo.Hydrants != null && hydroInfo.Hydrants.Count > 0)
            {
                list.Add(new HydroMarkSetViewModel()
@@ -107,6 +136,7 @@
                    PropName = HydroMarkProp.None
                });
            }
            return list;
        }
@@ -123,541 +153,551 @@
            {
                return default;
            }
            var list = new List<HydroMarkResultViewModel>();
            foreach (var set in allSetList)
            var allVisualList = hydroInfo.GetAllVisuals();
            if (allVisualList == null || allVisualList.Count < 1)
            {
                switch (set.Catalog)
                {
                    case Yw.Hydro.ParterCatalog.Reservoir:
                        {
                            if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.PoolElev:
                                        {
                                            hydroInfo.Reservoirs.ForEach(t =>
                                            {
                                                if (t.PoolElev.HasValue)
                                                {
                                                    list.Add(new HydroMarkResultViewModel()
                                                    {
                                                        Code = t.Code,
                                                        Text = $"池底标高:{Math.Round(t.PoolElev.Value, 4)}m"
                                                    });
                                                }
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Head:
                                        {
                                            hydroInfo.Reservoirs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"总水头:{Math.Round(t.Head, 2)}m"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Tank:
                        {
                            if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.PoolElev:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"池底标高:{Math.Round(t.PoolElev, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.InitLevel:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"初始水位:{Math.Round(t.InitLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinLevel:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最小水位:{Math.Round(t.MinLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MaxLevel:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最高水位:{Math.Round(t.MaxLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.DN:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"公称直径:{Math.Round(t.DN, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinVol:
                                        {
                                            hydroInfo.Tanks.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最小容积:{Math.Round(t.MinVol, 1)}m"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Waterbox:
                        {
                            if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.PoolElev:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"池底标高:{Math.Round(t.PoolElev, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.InitLevel:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"初始水位:{Math.Round(t.InitLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinLevel:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最小水位:{Math.Round(t.MinLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MaxLevel:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最高水位:{Math.Round(t.MaxLevel, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.DN:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"公称直径:{Math.Round(t.DN, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinVol:
                                        {
                                            hydroInfo.Waterboxs.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"最小容积:{Math.Round(t.MinVol, 1)}m"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Pipe:
                        {
                            if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.Diameter:
                                        {
                                            hydroInfo.Pipes.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"直径:{Math.Round(t.Diameter, 1)}mm"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Length:
                                        {
                                            hydroInfo.Pipes.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"长度:{Math.Round(t.Length, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Roughness:
                                        {
                                            hydroInfo.Pipes.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"粗糙系数:{Math.Round(t.Roughness, 1)}"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinorLoss:
                                        {
                                            hydroInfo.Pipes.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"局阻系数:{Math.Round(t.MinorLoss, 1)}"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Translation:
                        {
                            if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.Diameter:
                                        {
                                            hydroInfo.Translations.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"直径:{Math.Round(t.Diameter, 1)}mm"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Length:
                                        {
                                            hydroInfo.Translations.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"长度:{Math.Round(t.Length, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Roughness:
                                        {
                                            hydroInfo.Translations.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"粗糙系数:{Math.Round(t.Roughness, 1)}"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinorLoss:
                                        {
                                            hydroInfo.Translations.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"局阻系数:{Math.Round(t.MinorLoss, 1)}"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Pump:
                        {
                            if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.LinkStatus:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"开机状态:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.RatedQ:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"额定流量:{t.RatedQ}m³/h"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.RatedH:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"额定扬程:{t.RatedH}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.RatedP:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"额定功率:{t.RatedP}kW"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.RatedN:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"额定转速:{t.RatedN}r/min"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.CurrentHz:
                                        {
                                            hydroInfo.Pumps.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"设定频率:{Math.Round(t.RatedHz * t.SpeedRatio, 1)}hz"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Valve:
                        {
                            if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.LinkStatus:
                                        {
                                            hydroInfo.Valves.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"阀门状态:{HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.ValveType:
                                        {
                                            hydroInfo.Valves.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"阀门类型:{HydroValveTypeHelper.GetTypeName(t.ValveType)}"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.OpeningDegree:
                                        {
                                            hydroInfo.Valves.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"阀门开度:{t.OpeningDegree}%"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Diameter:
                                        {
                                            hydroInfo.Valves.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"直径:{t.Diameter}mm"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.MinorLoss:
                                        {
                                            hydroInfo.Valves.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"局阻系数:{t.MinorLoss}"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    case Yw.Hydro.ParterCatalog.Nozzle:
                        {
                            if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
                            {
                                switch (set.PropName)
                                {
                                    case Yw.Hydro.ParterProp.Elev:
                                        {
                                            hydroInfo.Nozzles.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"标高:{Math.Round(t.Elev, 4)}m"
                                                });
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Demand:
                                        {
                                            hydroInfo.Nozzles.ForEach(t =>
                                            {
                                                if (t.Demand.HasValue)
                                                {
                                                    list.Add(new HydroMarkResultViewModel()
                                                    {
                                                        Code = t.Code,
                                                        Text = $"需水量:{t.Demand}m³/h"
                                                    });
                                                }
                                            });
                                        }
                                        break;
                                    case Yw.Hydro.ParterProp.Coefficient:
                                        {
                                            hydroInfo.Nozzles.ForEach(t =>
                                            {
                                                list.Add(new HydroMarkResultViewModel()
                                                {
                                                    Code = t.Code,
                                                    Text = $"喷射系数:{t.Coefficient}"
                                                });
                                            });
                                        }
                                        break;
                                    default: break;
                                }
                            }
                        }
                        break;
                    default: break;
                }
                return default;
            }
            var list = new List<HydroMarkResultViewModel>();
            allVisualList.ForEach(x =>
            {
                var result = GetResult(x, allSetList);
                if (result != null)
                {
                    list.Add(result);
                }
            });
            return list;
        }
        /// <summary>
        /// 获取结果
        /// </summary>
        public static HydroMarkResultViewModel GetResult(Yw.Model.HydroVisualInfo visual, List<HydroMarkSetViewModel> allSetList)
        {
            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.Value, 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;
        }
    }
}