lixiaojun
2024-11-03 7507591ef45cfa8f1080f6dbf68b411edcc7f086
Hydro/Yw.Hydro.Core/ParseHelper.cs
@@ -26,7 +26,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 +44,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,7 +62,7 @@
                    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;
@@ -80,7 +80,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 +97,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 +114,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 +131,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 +148,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,7 +165,7 @@
                    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;
@@ -182,29 +182,12 @@
                    var bluntheadModel = new Junction();
                    bluntheadModel.Id = blunthead.Code;
                    bluntheadModel.Name = blunthead.Name;
                    bluntheadModel.Quality = blunthead.Quality;
                    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);
                }
            }
            //换热器
            if (model.Exchangers != null && model.Exchangers.Count > 0)
            {
                foreach (var exchanger in model.Exchangers)
                {
                    var exchangerModel = new Junction();
                    exchangerModel.Id = exchanger.Code;
                    exchangerModel.Name = exchanger.Name;
                    exchangerModel.Quality = exchanger.Quality;
                    exchangerModel.Position = new Position2d(exchanger.Position2d.X, exchanger.Position2d.Y);
                    exchangerModel.Elev = exchanger.Elev;
                    exchangerModel.Demand = exchanger.Demand;
                    exchangerModel.DemandPattern = exchanger.DemandPattern;
                    netWork.Junctions.Add(exchangerModel);
                }
            }
@@ -216,7 +199,7 @@
                    var reservoirModel = new Reservoir();
                    reservoirModel.Id = reservoir.Code;
                    reservoirModel.Name = reservoir.Name;
                    reservoirModel.Quality = reservoir.Quality;
                    reservoirModel.Quality = 0;
                    reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y);
                    reservoirModel.PoolElev = reservoir.PoolElev.HasValue ? reservoir.PoolElev.Value : 0;
                    reservoirModel.Head = reservoir.Head;
@@ -233,7 +216,7 @@
                    var tankModel = new Tank();
                    tankModel.Id = tank.Code;
                    tankModel.Name = tank.Name;
                    tankModel.Quality = tank.Quality;
                    tankModel.Quality = 0;
                    tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y);
                    tankModel.PoolElev = tank.PoolElev;
                    tankModel.InitLevel = tank.InitLevel;
@@ -241,7 +224,7 @@
                    tankModel.MinLevel = tank.MinLevel;
                    tankModel.MinVol = tank.MinVol;
                    tankModel.VolCurve = tank.VolCurve;
                    tankModel.Diameter = tank.Diameter;
                    tankModel.Diameter = tank.DN;
                    netWork.Tanks.Add(tankModel);
                }
            }
@@ -254,7 +237,7 @@
                    var waterboxModel = new Tank();
                    waterboxModel.Id = waterbox.Code;
                    waterboxModel.Name = waterbox.Name;
                    waterboxModel.Quality = waterbox.Quality;
                    waterboxModel.Quality = 0;
                    waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y);
                    waterboxModel.PoolElev = waterbox.PoolElev;
                    waterboxModel.InitLevel = waterbox.InitLevel;
@@ -262,7 +245,8 @@
                    waterboxModel.MinLevel = waterbox.MinLevel;
                    waterboxModel.MinVol = waterbox.MinVol;
                    waterboxModel.VolCurve = waterbox.VolCurve;
                    waterboxModel.Diameter = waterbox.Diameter;
                    waterboxModel.Diameter = waterbox.DN;
                    waterboxModel.Overflow = waterbox.OverFlow;
                    netWork.Tanks.Add(waterboxModel);
                }
            }
@@ -283,7 +267,7 @@
                    pipeModel.Name = pipe.Name;
                    pipeModel.StartNode = allNodes.Find(x => x.Id == pipe.StartCode);
                    pipeModel.EndNode = allNodes.Find(x => x.Id == pipe.EndCode);
                    //还有一个状态
                    pipeModel.LinkStatus = pipe.LinkStatus;
                    pipeModel.Length = pipe.Length;
                    pipeModel.Diameter = pipe.Diameter;
                    pipeModel.Roughness = pipe.Roughness;
@@ -302,12 +286,50 @@
                    translationModel.Name = translation.Name;
                    translationModel.StartNode = allNodes.Find(x => x.Id == translation.StartCode);
                    translationModel.EndNode = allNodes.Find(x => x.Id == translation.EndCode);
                    //还有一个状态
                    translationModel.LinkStatus = translation.LinkStatus;
                    translationModel.Length = translation.Length;
                    translationModel.Diameter = translation.Diameter;
                    translationModel.Roughness = translation.Roughness;
                    translationModel.MinorLoss = translation.MinorLoss;
                    netWork.Pipes.Add(translationModel);
                }
            }
            //换热器
            if (model.Exchangers != null && model.Exchangers.Count > 0)
            {
                foreach (var exchanger in model.Exchangers)
                {
                    var exchangerModel = new Valve();
                    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.Diameter = exchanger.Diameter;
                    exchangerModel.MinorLoss = exchanger.MinorLoss;
                    exchangerModel.ValveType = Yw.Hydro.ValveType.GPV;
                    exchangerModel.ValveSetting = "GPVDefault";
                    netWork.Valves.Add(exchangerModel);
                }
            }
            //压缩机
            if (model.Compressors != null && model.Compressors.Count > 0)
            {
                foreach (var compressor in model.Compressors)
                {
                    var compressModel = new Valve();
                    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.Diameter = compressor.Diameter;
                    compressModel.MinorLoss = compressor.MinorLoss;
                    compressModel.ValveType = Yw.Hydro.ValveType.GPV;
                    compressModel.ValveSetting = "GPVDefault";
                    netWork.Valves.Add(compressModel);
                }
            }
@@ -321,12 +343,16 @@
                    pumpModel.Name = pump.Name;
                    pumpModel.StartNode = allNodes.Find(x => x.Id == pump.StartCode);
                    pumpModel.EndNode = allNodes.Find(x => x.Id == pump.EndCode);
                    pumpModel.RatedPower = pump.RatedPower;
                    pumpModel.LinkStatus = pump.LinkStatus;
                    pumpModel.RatedPower = pump.RatedP;
                    pumpModel.CurveQH = pump.CurveQH;
                    if (string.IsNullOrEmpty(pumpModel.CurveQH))
                    {
                        pumpModel.CurveQH = "PumpDefault";//使用network默认泵曲线
                    }
                    pumpModel.SpeedRatio = pump.SpeedRatio;
                    pumpModel.SpeedRatioPattern = pump.SpeedRatioPattern;
                    pumpModel.Price = pump.Price;
                    pumpModel.PricePattern = pump.PricePattern;
                    pumpModel.CurveQE = pump.CurveQE;
                    netWork.Pumps.Add(pumpModel);
                }
@@ -342,6 +368,7 @@
                    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;
@@ -351,6 +378,21 @@
                }
            }
            //曲线
            if (model.Curves != null && model.Curves.Count > 0)
            {
                foreach (var curve in model.Curves)
                {
                    var curveModel = new Yw.EPAnet.Curve();
                    curveModel.Id = curve.Code;
                    curveModel.Name = curve.Name;
                    curveModel.CurveType = curve.CurveType;
                    curveModel.CurveData = curve.CurveData?.Select(x => new CurvePoint(x.X, x.Y)).ToList();
                    netWork.Curves.Add(curveModel);
                }
            }
            #endregion