From 1d22616b251b366b9c238aa5f00fd630a95b8d81 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期一, 11 十一月 2024 15:45:47 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 Hydro/Yw.Hydro.Core/ParseHelper.cs |  277 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 168 insertions(+), 109 deletions(-)

diff --git a/Hydro/Yw.Hydro.Core/ParseHelper.cs b/Hydro/Yw.Hydro.Core/ParseHelper.cs
index 67926f3..c761cd8 100644
--- a/Hydro/Yw.Hydro.Core/ParseHelper.cs
+++ b/Hydro/Yw.Hydro.Core/ParseHelper.cs
@@ -18,6 +18,67 @@
 
             #region 鑺傜偣
 
+            //姘村簱
+            if (model.Reservoirs != null && model.Reservoirs.Count > 0)
+            {
+                foreach (var reservoir in model.Reservoirs)
+                {
+                    var reservoirModel = new Reservoir();
+                    reservoirModel.Id = reservoir.Code;
+                    reservoirModel.Name = reservoir.Name;
+                    reservoirModel.Quality = 0;
+                    reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y);
+                    reservoirModel.PoolElev = reservoir.PoolElev ?? 0;
+                    reservoirModel.Head = reservoir.Head;
+                    reservoirModel.HeadPattern = reservoir.HeadPattern;
+                    netWork.Reservoirs.Add(reservoirModel);
+                }
+            }
+
+            //姘存睜
+            if (model.Tanks != null && model.Tanks.Count > 0)
+            {
+                foreach (var tank in model.Tanks)
+                {
+                    var tankModel = new Tank();
+                    tankModel.Id = tank.Code;
+                    tankModel.Name = tank.Name;
+                    tankModel.Quality = 0;
+                    tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y);
+                    tankModel.PoolElev = tank.PoolElev;
+                    tankModel.InitLevel = tank.InitLevel;
+                    tankModel.MaxLevel = tank.MaxLevel;
+                    tankModel.MinLevel = tank.MinLevel;
+                    tankModel.Diameter = tank.DN;
+                    tankModel.MinVol = tank.MinVol;
+                    tankModel.VolCurve = tank.VolCurve;
+                    //tankModel.Overflow = tank.OverFlow;
+                    netWork.Tanks.Add(tankModel);
+                }
+            }
+
+            //姘寸
+            if (model.Waterboxs != null && model.Waterboxs.Count > 0)
+            {
+                foreach (var waterbox in model.Waterboxs)
+                {
+                    var waterboxModel = new Tank();
+                    waterboxModel.Id = waterbox.Code;
+                    waterboxModel.Name = waterbox.Name;
+                    waterboxModel.Quality = 0;
+                    waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y);
+                    waterboxModel.PoolElev = waterbox.PoolElev;
+                    waterboxModel.InitLevel = waterbox.InitLevel;
+                    waterboxModel.MaxLevel = waterbox.MaxLevel;
+                    waterboxModel.MinLevel = waterbox.MinLevel;
+                    waterboxModel.Diameter = waterbox.DN;
+                    waterboxModel.MinVol = waterbox.MinVol;
+                    waterboxModel.VolCurve = waterbox.VolCurve;
+                    //waterboxModel.Overflow = waterbox.OverFlow;
+                    netWork.Tanks.Add(waterboxModel);
+                }
+            }
+
             //杩炴帴鑺傜偣
             if (model.Junctions != null && model.Junctions.Count > 0)
             {
@@ -26,7 +87,7 @@
                     var junctionModel = new Junction();
                     junctionModel.Id = junction.Code;
                     junctionModel.Name = junction.Name;
-                    junctionModel.Quality = junction.Quality;
+                    junctionModel.Quality = 0;
                     junctionModel.Position = new Position2d(junction.Position2d.X, junction.Position2d.Y);
                     junctionModel.Elev = junction.Elev;
                     junctionModel.Demand = junction.Demand;
@@ -44,7 +105,7 @@
                     var nozzleModel = new Nozzle();
                     nozzleModel.Id = nozzle.Code;
                     nozzleModel.Name = nozzle.Name;
-                    nozzleModel.Quality = nozzle.Quality;
+                    nozzleModel.Quality = 0;
                     nozzleModel.Position = new Position2d(nozzle.Position2d.X, nozzle.Position2d.Y);
                     nozzleModel.Elev = nozzle.Elev;
                     nozzleModel.Demand = nozzle.Demand;
@@ -62,13 +123,30 @@
                     var hydrantModel = new Hydrant();
                     hydrantModel.Id = hydrant.Code;
                     hydrantModel.Name = hydrant.Name;
-                    hydrantModel.Quality = hydrant.Quality;
+                    hydrantModel.Quality = 0;
                     hydrantModel.Position = new Position2d(hydrant.Position2d.X, hydrant.Position2d.Y);
                     hydrantModel.Elev = hydrant.Elev;
                     hydrantModel.Demand = hydrant.Demand;
                     hydrantModel.DemandPattern = hydrant.DemandPattern;
                     hydrantModel.Coefficient = hydrant.Coefficient;
                     netWork.Hydrants.Add(hydrantModel);
+                }
+            }
+
+            //闂峰ご
+            if (model.Bluntheads != null && model.Bluntheads.Count > 0)
+            {
+                foreach (var blunthead in model.Bluntheads)
+                {
+                    var bluntheadModel = new Junction();
+                    bluntheadModel.Id = blunthead.Code;
+                    bluntheadModel.Name = blunthead.Name;
+                    bluntheadModel.Quality = 0;
+                    bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y);
+                    bluntheadModel.Elev = blunthead.Elev;
+                    bluntheadModel.Demand = blunthead.Demand;
+                    bluntheadModel.DemandPattern = blunthead.DemandPattern;
+                    netWork.Junctions.Add(bluntheadModel);
                 }
             }
 
@@ -80,7 +158,7 @@
                     var elbowModel = new Junction();
                     elbowModel.Id = elbow.Code;
                     elbowModel.Name = elbow.Name;
-                    elbowModel.Quality = elbow.Quality;
+                    elbowModel.Quality = 0;
                     elbowModel.Position = new Position2d(elbow.Position2d.X, elbow.Position2d.Y);
                     elbowModel.Elev = elbow.Elev;
                     elbowModel.Demand = elbow.Demand;
@@ -97,7 +175,7 @@
                     var threelinkModel = new Junction();
                     threelinkModel.Id = threelink.Code;
                     threelinkModel.Name = threelink.Name;
-                    threelinkModel.Quality = threelink.Quality;
+                    threelinkModel.Quality = 0;
                     threelinkModel.Position = new Position2d(threelink.Position2d.X, threelink.Position2d.Y);
                     threelinkModel.Elev = threelink.Elev;
                     threelinkModel.Demand = threelink.Demand;
@@ -114,7 +192,7 @@
                     var fourlinkModel = new Junction();
                     fourlinkModel.Id = fourlink.Code;
                     fourlinkModel.Name = fourlink.Name;
-                    fourlinkModel.Quality = fourlink.Quality;
+                    fourlinkModel.Quality = 0;
                     fourlinkModel.Position = new Position2d(fourlink.Position2d.X, fourlink.Position2d.Y);
                     fourlinkModel.Elev = fourlink.Elev;
                     fourlinkModel.Demand = fourlink.Demand;
@@ -131,7 +209,7 @@
                     var meterModel = new Meter();
                     meterModel.Id = meter.Code;
                     meterModel.Name = meter.Name;
-                    meterModel.Quality = meter.Quality;
+                    meterModel.Quality = 0;
                     meterModel.Position = new Position2d(meter.Position2d.X, meter.Position2d.Y);
                     meterModel.Elev = meter.Elev;
                     meterModel.Demand = meter.Demand;
@@ -148,7 +226,7 @@
                     var flowmeterModel = new Junction();
                     flowmeterModel.Id = flowmeter.Code;
                     flowmeterModel.Name = flowmeter.Name;
-                    flowmeterModel.Quality = flowmeter.Quality;
+                    flowmeterModel.Quality = 0;
                     flowmeterModel.Position = new Position2d(flowmeter.Position2d.X, flowmeter.Position2d.Y);
                     flowmeterModel.Elev = flowmeter.Elev;
                     flowmeterModel.Demand = flowmeter.Demand;
@@ -165,89 +243,12 @@
                     var pressmeterModel = new Junction();
                     pressmeterModel.Id = pressmeter.Code;
                     pressmeterModel.Name = pressmeter.Name;
-                    pressmeterModel.Quality = pressmeter.Quality;
+                    pressmeterModel.Quality = 0;
                     pressmeterModel.Position = new Position2d(pressmeter.Position2d.X, pressmeter.Position2d.Y);
                     pressmeterModel.Elev = pressmeter.Elev;
                     pressmeterModel.Demand = pressmeter.Demand;
                     pressmeterModel.DemandPattern = pressmeter.DemandPattern;
                     netWork.Junctions.Add(pressmeterModel);
-                }
-            }
-
-            //闂峰ご
-            if (model.Bluntheads != null && model.Bluntheads.Count > 0)
-            {
-                foreach (var blunthead in model.Bluntheads)
-                {
-                    var bluntheadModel = new Junction();
-                    bluntheadModel.Id = blunthead.Code;
-                    bluntheadModel.Name = blunthead.Name;
-                    bluntheadModel.Quality = blunthead.Quality;
-                    bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y);
-                    bluntheadModel.Elev = blunthead.Elev;
-                    bluntheadModel.Demand = blunthead.Demand;
-                    bluntheadModel.DemandPattern = blunthead.DemandPattern;
-                    netWork.Junctions.Add(bluntheadModel);
-                }
-            }
-
-            //姘村簱
-            if (model.Reservoirs != null && model.Reservoirs.Count > 0)
-            {
-                foreach (var reservoir in model.Reservoirs)
-                {
-                    var reservoirModel = new Reservoir();
-                    reservoirModel.Id = reservoir.Code;
-                    reservoirModel.Name = reservoir.Name;
-                    reservoirModel.Quality = reservoir.Quality;
-                    reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y);
-                    reservoirModel.PoolElev = reservoir.PoolElev.HasValue ? reservoir.PoolElev.Value : 0;
-                    reservoirModel.Head = reservoir.Head;
-                    reservoirModel.HeadPattern = reservoir.HeadPattern;
-                    netWork.Reservoirs.Add(reservoirModel);
-                }
-            }
-
-            //姘存睜
-            if (model.Tanks != null && model.Tanks.Count > 0)
-            {
-                foreach (var tank in model.Tanks)
-                {
-                    var tankModel = new Tank();
-                    tankModel.Id = tank.Code;
-                    tankModel.Name = tank.Name;
-                    tankModel.Quality = tank.Quality;
-                    tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y);
-                    tankModel.PoolElev = tank.PoolElev;
-                    tankModel.InitLevel = tank.InitLevel;
-                    tankModel.MaxLevel = tank.MaxLevel;
-                    tankModel.MinLevel = tank.MinLevel;
-                    tankModel.MinVol = tank.MinVol;
-                    tankModel.VolCurve = tank.VolCurve;
-                    tankModel.Diameter = tank.DN;
-                    netWork.Tanks.Add(tankModel);
-                }
-            }
-
-            //姘寸
-            if (model.Waterboxs != null && model.Waterboxs.Count > 0)
-            {
-                foreach (var waterbox in model.Waterboxs)
-                {
-                    var waterboxModel = new Tank();
-                    waterboxModel.Id = waterbox.Code;
-                    waterboxModel.Name = waterbox.Name;
-                    waterboxModel.Quality = waterbox.Quality;
-                    waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y);
-                    waterboxModel.PoolElev = waterbox.PoolElev;
-                    waterboxModel.InitLevel = waterbox.InitLevel;
-                    waterboxModel.MaxLevel = waterbox.MaxLevel;
-                    waterboxModel.MinLevel = waterbox.MinLevel;
-                    waterboxModel.MinVol = waterbox.MinVol;
-                    waterboxModel.VolCurve = waterbox.VolCurve;
-                    waterboxModel.Diameter = waterbox.DN;
-                    waterboxModel.Overflow = waterbox.OverFlow;
-                    netWork.Tanks.Add(waterboxModel);
                 }
             }
 
@@ -300,17 +301,16 @@
             {
                 foreach (var exchanger in model.Exchangers)
                 {
-                    var exchangerModel = new Pipe();
+                    var exchangerModel = new Exchanger();
                     exchangerModel.Id = exchanger.Code;
                     exchangerModel.Name = exchanger.Name;
                     exchangerModel.StartNode = allNodes.Find(x => x.Id == exchanger.StartCode);
                     exchangerModel.EndNode = allNodes.Find(x => x.Id == exchanger.EndCode);
                     exchangerModel.LinkStatus = exchanger.LinkStatus;
-                    exchangerModel.Length = exchanger.Length;
                     exchangerModel.Diameter = exchanger.Diameter;
-                    exchangerModel.Roughness = exchanger.Roughness;
                     exchangerModel.MinorLoss = exchanger.MinorLoss;
-                    netWork.Pipes.Add(exchangerModel);
+                    exchangerModel.CurveQL = "GPVDefault";
+                    netWork.Exchangers.Add(exchangerModel);
                 }
             }
 
@@ -319,17 +319,16 @@
             {
                 foreach (var compressor in model.Compressors)
                 {
-                    var compressModel = new Pipe();
+                    var compressModel = new Compressor();
                     compressModel.Id = compressor.Code;
                     compressModel.Name = compressor.Name;
                     compressModel.StartNode = allNodes.Find(x => x.Id == compressor.StartCode);
                     compressModel.EndNode = allNodes.Find(x => x.Id == compressor.EndCode);
                     compressModel.LinkStatus = compressor.LinkStatus;
-                    compressModel.Length = compressor.Length;
                     compressModel.Diameter = compressor.Diameter;
-                    compressModel.Roughness = compressor.Roughness;
                     compressModel.MinorLoss = compressor.MinorLoss;
-                    netWork.Pipes.Add(compressModel);
+                    compressModel.CurveQL = "GPVDefault";
+                    netWork.Compressors.Add(compressModel);
                 }
             }
 
@@ -344,7 +343,7 @@
                     pumpModel.StartNode = allNodes.Find(x => x.Id == pump.StartCode);
                     pumpModel.EndNode = allNodes.Find(x => x.Id == pump.EndCode);
                     pumpModel.LinkStatus = pump.LinkStatus;
-                    pumpModel.RatedPower = pump.RatedP;
+                    pumpModel.RatedP = pump.RatedP;
                     pumpModel.CurveQH = pump.CurveQH;
                     if (string.IsNullOrEmpty(pumpModel.CurveQH))
                     {
@@ -353,9 +352,6 @@
 
                     pumpModel.SpeedRatio = pump.SpeedRatio;
                     pumpModel.SpeedRatioPattern = pump.SpeedRatioPattern;
-                    pumpModel.Price = pump.Price;
-                    pumpModel.PricePattern = pump.PricePattern;
-                    pumpModel.CurveQE = pump.CurveQE;
                     netWork.Pumps.Add(pumpModel);
                 }
             }
@@ -365,18 +361,81 @@
             {
                 foreach (var valve in model.Valves)
                 {
-                    var valveModel = new Yw.EPAnet.Valve();
-                    valveModel.Id = valve.Code;
-                    valveModel.Name = valve.Name;
-                    valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode);
-                    valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode);
-                    valveModel.LinkStatus = valve.LinkStatus;
-                    valveModel.Diameter = valve.Diameter;
-                    valveModel.MinorLoss = valve.MinorLoss;
-                    valveModel.ValveType = valve.ValveType;
-                    valveModel.ValveSetting = valve.ValveSetting;
+                    //姝㈠洖闃�琚綋鎴愮閬撳鐞�
+                    if (valve.ValveType == Yw.Hydro.ValveType.CV)
+                    {
+                        var pipeModel = new Pipe();
+                        pipeModel.Id = valve.Code;
+                        pipeModel.Name = valve.Name;
+                        pipeModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode);
+                        pipeModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode);
+                        pipeModel.LinkStatus = valve.LinkStatus;
+                        pipeModel.Length = 0.01;
+                        pipeModel.Diameter = valve.Diameter;
+                        pipeModel.Roughness = 110;
+                        pipeModel.MinorLoss = valve.MinorLoss;
+                        netWork.Pipes.Add(pipeModel);
+                    }
+                    else
+                    {
+                        var valveModel = new Yw.EPAnet.Valve();
+                        valveModel.Id = valve.Code;
+                        valveModel.Name = valve.Name;
+                        valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode);
+                        valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode);
+                        valveModel.LinkStatus = valve.LinkStatus;
+                        valveModel.Diameter = valve.Diameter;
+                        valveModel.MinorLoss = valve.MinorLoss;
+                        valveModel.ValveType = valve.ValveType;
+                        valveModel.ValveSetting = valve.ValveSetting;
+                        switch (valve.ValveType)
+                        {
+                            case Yw.Hydro.ValveType.PRV://鍑忓帇闃�
+                                {
 
-                    netWork.Valves.Add(valveModel);
+                                }
+                                break;
+                            case Yw.Hydro.ValveType.PSV://绋冲帇闃�
+                                {
+
+                                }
+                                break;
+                            case Yw.Hydro.ValveType.PBV://鍘嬪姏鍒跺姩闃�
+                                {
+
+                                }
+                                break;
+                            case Yw.Hydro.ValveType.FCV://娴侀噺鎺у埗闃�
+                                {
+
+                                }
+                                break;
+                            case Yw.Hydro.ValveType.TCV://鑺傛祦鎺у埗闃�
+                                {
+                                    valveModel.ValveSetting = "0";
+                                    var curveol = model.Curves?.Find(x => x.Code == valve.ValveSetting);
+                                    if (curveol != null)
+                                    {
+                                        var point2dList = curveol.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                                        var ptCurveOL = new Yw.Geometry.CubicSpline2d(point2dList);
+                                        valveModel.ValveSetting = ptCurveOL.GetPointY(valve.OpeningDegree).ToString();
+                                        if (valve.OpeningDegree > 0)
+                                        {
+                                            valveModel.LinkStatus = Yw.EPAnet.ValveStatus.None;
+                                        }
+                                    }
+
+                                }
+                                break;
+                            case Yw.Hydro.ValveType.GPV://甯歌闃�闂�
+                                {
+
+                                }
+                                break;
+                            default: break;
+                        }
+                        netWork.Valves.Add(valveModel);
+                    }
                 }
             }
 

--
Gitblit v1.9.3