From 38d5a93ca9e47c8449e67433b9a0dd25d1defe25 Mon Sep 17 00:00:00 2001
From: cloudflight <cloudflight@126.com>
Date: 星期日, 24 十一月 2024 18:19:19 +0800
Subject: [PATCH] 修改能量分析方法的返回类型为List

---
 Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkEnergyAnalyseExtensions.cs |   44 ++++++++++++++++++++++++++++++--------------
 1 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkEnergyAnalyseExtensions.cs b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkEnergyAnalyseExtensions.cs
index 81262d9..a5a7f1f 100644
--- a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkEnergyAnalyseExtensions.cs
+++ b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkEnergyAnalyseExtensions.cs
@@ -11,10 +11,11 @@
         /// <summary>
         /// 鍒嗘瀽鏁翠釜绠$綉鐨勮兘閲�
         /// </summary>
-        public static EnergyResult AnalyzeEnergy(this Network network,CalcuResult calcuResult)
+        public static List<EnergyPoint> AnalyzeEnergy(this Network network,CalcuResult calcuResult)
         {
             var dictLinks = calcuResult.LinkList.ToDictionary(p => p.Id);
             var dictNodes = calcuResult.NodeList.ToDictionary(p => p.Id);
+            var points=new List<EnergyPoint>();
             var result = new EnergyResult();
             //鎵惧埌绠$綉涓渶姘撮噺涓鸿礋鐨勮妭鐐�
             var negativeDemandNodes = network.GetAllNodes().Where(n => 
@@ -40,6 +41,7 @@
                         EnergyPower = energyInW,
                        
                     };
+                    points.Add(energyPoint);
                     result.InputEnergy.Add(n.Id,new List<EnergyPoint> { energyPoint });
                     result.InputTotalEnerge += energyInW;
                 }
@@ -69,6 +71,7 @@
                         EnergyPower = energyInW,
                      
                     };
+                    points.Add(energyPoint);
                     result.OutputEnergy.Add(n.Id, new List<EnergyPoint> { energyPoint });
                     result.OutputTotalEnerge += energyInW;
                 }
@@ -100,6 +103,7 @@
                             EnergyPower = energypower,
                            
                         };
+
                         result.MinorLossTotalEnerge += energypower; 
                         //濡傛灉瀛樺湪澶氫釜灞�閮ㄦ按澶存崯澶憋紝闇�瑕佺疮鍔犲悎骞�
                         if (result.LossEnergy[Id].Any(e => e.EnergyType == eEnergyType.MinorLoss))
@@ -111,6 +115,8 @@
                         {
                             result.LossEnergy[Id].Add(energypoint);
                         }
+                        var point = result.LossEnergy[Id].First(e => e.EnergyType == eEnergyType.MinorLoss);
+                        points.Add(point);
                     }
 
                     if (p.EndMinorloss != 0)
@@ -138,6 +144,8 @@
                         {
                             result.LossEnergy[Id].Add(energypoint);
                         }
+                        var point = result.LossEnergy[Id].First(e => e.EnergyType == eEnergyType.MinorLoss);
+                        points.Add(point);
                     }
 
                     double pipeheadminorloss = 0;
@@ -148,14 +156,16 @@
                         double energypower = GetEnergyPowerByQH(flow, pipeheadminorloss);
                         var Id = p.Id;
                         if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>());
-                        result.LossEnergy[Id].Add(new EnergyPoint
+                        var energypoint = new EnergyPoint
                         {
                             Id = Id,
                             EnergyType = eEnergyType.MinorLoss,
                             EnergyPower = energypower,
-                           
-                        });
+
+                        };
+                        result.LossEnergy[Id].Add(energypoint);
                         result.MinorLossTotalEnerge += energypower;
+                        points.Add(energypoint);
                     }
 
                     
@@ -164,14 +174,16 @@
                         double energypower = GetEnergyPowerByQH(flow, headlossFriction);
                         var Id = p.Id;
                         if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>());
-                        result.LossEnergy[Id].Add(new EnergyPoint
+                        var energypoint = new EnergyPoint
                         {
                             Id = Id,
                             EnergyType = eEnergyType.FrictionalLoss,
                             EnergyPower = energypower,
-                           
-                        });
+
+                        };
+                        result.LossEnergy[Id].Add(energypoint);
                         result.FrictionalLossTotalEnerge += energypower;
+                        points.Add(energypoint);
                     }
 
 
@@ -190,33 +202,37 @@
                     {
                         var Type = eEnergyType.Promote;
                         if (!result.InputEnergy.ContainsKey(Id)) result.InputEnergy.Add(Id, new List<EnergyPoint>());
-                        result.InputEnergy[Id].Add(new EnergyPoint
+                        var energypoint = new EnergyPoint
                         {
                             Id = Id,
                             EnergyType = Type,
                             EnergyPower = energypower,
-                          
-                        });
+
+                        };
+                        result.InputEnergy[Id].Add(energypoint);
                         result.InputTotalEnerge += energypower;
+                        points.Add(energypoint);
                     }
                     else
                     {
                         var Type = eEnergyType.MinorLoss;
                         if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>());
-                        result.LossEnergy[Id].Add(new EnergyPoint
+                        EnergyPoint energypoint = new EnergyPoint
                         {
                             Id = Id,
                             EnergyType = Type,
                             EnergyPower = energypower,
-                          
-                        });
+
+                        };
+                        result.LossEnergy[Id].Add(energypoint);
                         result.MinorLossTotalEnerge += energypower;
+                        points.Add(energypoint);
                     }
                     
                 }
             }
 
-            return result;
+            return points;
         }
 
         private static double GetEnergyPowerByQH(double flowQ,double head)

--
Gitblit v1.9.3