From 66da3b4ab0d982d5ca9a93603790d07d746d1e4b Mon Sep 17 00:00:00 2001
From: qinjie <qinjie@163.com>
Date: 星期二, 14 十一月 2023 09:38:16 +0800
Subject: [PATCH] 优化底层代码

---
 Hydro.Inp/NetWork.cs |  145 ++++++++++++++++++++++++++++++++++-------------
 1 files changed, 104 insertions(+), 41 deletions(-)

diff --git a/Hydro.Inp/NetWork.cs b/Hydro.Inp/NetWork.cs
index b4156f0..17dddf9 100644
--- a/Hydro.Inp/NetWork.cs
+++ b/Hydro.Inp/NetWork.cs
@@ -20,72 +20,138 @@
         public NetWork()
         {
         }
-        public string Title { get; set; }
 
-        private List<JunctionModel> Junctions { get; set; } = new List<JunctionModel>();
+        public List<JunctionModel> Junctions
+        {
+            get
+            {
+                var js = Nodes.Where(d => d is JunctionModel);
+                return js?.Select(d => d as JunctionModel).ToList();
+            }
 
-        private List<TankModel> Tanks { get; set; } = new List<TankModel>();
+        }
+        public List<TankModel> Tanks
+        {
+            get
+            {
+                var js = Nodes.Where(d => d is TankModel);
+                return js?.Select(d => d as TankModel).ToList();
+            }
+        }
 
-        private List<PipeModel> Pipes { get; set; } = new List<PipeModel>();
+        public List<PipeModel> Pipes
+        {
+            get
+            {
+                var js = Links.Where(d => d is PipeModel);
+                return js?.Select(d => d as PipeModel).ToList();
+            }
+        }
 
-        private List<PumpModel> Pumps { get; set; } = new List<PumpModel>();
+        public List<PumpModel> Pumps
+        {
+            get
+            {
+                var js = Links.Where(d => d is PumpModel);
+                return js?.Select(d => d as PumpModel).ToList();
+            }
+        }
 
-        private List<ValveModel> Valves { get; set; } = new List<ValveModel>();
+        public List<ValveModel> Valves
+        {
+            get
+            {
+                var js = Links.Where(d => d is ValveModel);
+                return js?.Select(d => d as ValveModel).ToList();
+            }
+        }
 
-        private List<ReservoisModel> Reservos { get; set; } = new List<ReservoisModel>();
+        public List<ReservoisModel> Reservos
+        {
+            get
+            {
+                var js = Nodes.Where(d => d is ReservoisModel);
+                return js?.Select(d => d as ReservoisModel).ToList();
+            }
+        }
 
-        private List<MeterModel> Meters { get; set; } = new List<MeterModel>();
+        public List<MeterModel> Meters
+        {
+            get
+            {
+                var js = Nodes.Where(d => d is MeterModel);
+                return js?.Select(d => d as MeterModel).ToList();
+            }
+        }
 
-        private List<NozzleModel> Nozzles { get; set; } = new List<NozzleModel>();
+        public List<NozzleModel> Nozzles
+        {
+            get
+            {
+                var js = Nodes.Where(d => d is NozzleModel);
+                return js?.Select(d => d as NozzleModel).ToList();
+            }
+        }
 
         public void AddJunction(JunctionModel junction)
         {
-            Junctions.Add(junction);
+            CheckNodesExist(junction);
             Nodes.Add(junction);
         }
 
         public void AddTank(TankModel tank)
         {
-            Tanks.Add(tank);
+            CheckNodesExist(tank);
             Nodes.Add(tank);
         }
 
         public void AddPipe(PipeModel pipe)
         {
-            Pipes.Add(pipe);
+            CheckLinksExist(pipe);
             Links.Add(pipe);
         }
 
         public void AddPump(PumpModel pump)
         {
-            Pumps.Add(pump);
+            CheckLinksExist(pump);
             Links.Add(pump);
         }
 
         public void AddValve(ValveModel valve)
         {
-            Valves.Add(valve);
+            CheckLinksExist(valve);
             Links.Add(valve);
         }
 
         public void AddReservos(ReservoisModel reservois)
         {
-            Reservos.Add(reservois);
+            CheckNodesExist(reservois);
             Nodes.Add(reservois);
         }
 
         public void AddMeter(MeterModel meter)
         {
-            Meters.Add(meter);
+            CheckNodesExist(meter);
             Nodes.Add(meter);
-            Junctions.Add(meter.ToJunction());
         }
 
         public void AddNozzle(NozzleModel nozzle)
         {
-            Nozzles.Add(nozzle);
+            CheckNodesExist(nozzle);
             Nodes.Add(nozzle);
-            Junctions.Add(nozzle.ToJunction());
+        }
+
+
+        private void CheckNodesExist(NodeModel node)
+        {
+            if (Nodes.Any(d => d.ID == node.ID))
+                throw new Exception("宸插瓨鍦ㄩ噸澶嶇殑瀵硅薄");
+        }
+
+        private void CheckLinksExist(LinkModel link)
+        {
+            if (Links.Any(d => d.ID == link.ID))
+                throw new Exception("宸插瓨鍦ㄩ噸澶嶇殑瀵硅薄");
         }
 
         public List<NodeModel> Nodes { get; set; } = new List<NodeModel>();
@@ -141,7 +207,6 @@
                                             Elev = Elev,
                                             Demand = Demand,
                                             PatternID = PatternID,
-                                            Level = Level
                                         });
                                     }
                                     else if (parts[5] == "Nozzle")
@@ -152,7 +217,6 @@
                                             Elev = Elev,
                                             Demand = Demand,
                                             PatternID = PatternID,
-                                            Level = Level
                                         });
                                     }
                                     else
@@ -163,7 +227,6 @@
                                             Elev = Elev,
                                             Demand = Demand,
                                             PatternID = PatternID,
-                                            Level = Level
                                         });
                                     }
 
@@ -178,8 +241,8 @@
                                         r.Head = head;
                                     r.PatternID = parts.Length > 2 ? parts[2] : "";
                                     int level;
-                                    if (int.TryParse(parts[3], out level))
-                                        r.Level = level;
+                                    //if (int.TryParse(parts[3], out level))
+                                    //    r.Level = level;
                                     AddReservos(r);
                                 }
                                 break;
@@ -212,9 +275,9 @@
                                         VolCurve = "",
                                         IsOverFlow = true
                                     };
-                                    int level;
-                                    if (int.TryParse(parts[9], out level))
-                                        tank.Level = level;
+                                    //int level;
+                                    //if (int.TryParse(parts[9], out level))
+                                    //    tank.Level = level;
                                     AddTank(tank);
                                 }
                                 break;
@@ -237,9 +300,9 @@
                                     if (float.TryParse(parts[6], out minorLoss))
                                         p.MinorLoss = minorLoss;
                                     p.Status = parts.Length > 7 ? StatusType.CLOSED : StatusType.DEFAULT;
-                                    int level;
-                                    if (int.TryParse(parts[8], out level))
-                                        p.Level = level;
+                                    //int level;
+                                    //if (int.TryParse(parts[8], out level))
+                                    //    p.Level = level;
                                     AddPipe(p);
                                 }
                                 break;
@@ -260,9 +323,9 @@
                                     float minorLoss;
                                     if (float.TryParse(parts[6], out minorLoss))
                                         valve.MinorLoss = minorLoss;
-                                    int level;
-                                    if (int.TryParse(parts[7], out level))
-                                        valve.Level = level;
+                                    //int level;
+                                    //if (int.TryParse(parts[7], out level))
+                                    //    valve.Level = level;
                                     AddValve(valve);
                                 }
                                 break;
@@ -495,18 +558,18 @@
 
             Junctions.ForEach(j =>
             {
-                junctionStringBuilder.AppendLine(j.ToString() + $"{j.Level}\tJunction");
+                junctionStringBuilder.AppendLine(j.ToString() + $"0\tJunction");
                 coorStringBuilder.AppendLine(j.ToCoorString());
 
             });
             Meters.ForEach(m =>
             {
-                junctionStringBuilder.AppendLine(m.ToString() + $"{m.Level}\tMeter");
+                junctionStringBuilder.AppendLine(m.ToString() + $"0\tJunction");
                 coorStringBuilder.AppendLine(m.ToCoorString());
             });
             Nozzles.ForEach(no =>
             {
-                junctionStringBuilder.AppendLine(no.ToString() + $"{no.Level}\tNozzle\t{no.FlowCoefficient}");
+                junctionStringBuilder.AppendLine(no.ToString() + $"0\tNozzle\t{no.FlowCoefficient}");
                 emitterStringBuilder.Append(no.ToEmitterString());
                 coorStringBuilder.AppendLine(no.ToCoorString());
             });
@@ -519,7 +582,7 @@
 
             Reservos.ForEach(o =>
             {
-                reservoirStringBuilder.AppendLine(o.ToString() + $"{o.Level}\t{o.Elev}");
+                reservoirStringBuilder.AppendLine(o.ToString() + $"0\t{o.Elev}");
                 coorStringBuilder.AppendLine(o.ToCoorString());
             });
             string reserverString = reservoirStringBuilder.ToString();
@@ -530,7 +593,7 @@
 
             Tanks.ForEach(o =>
             {
-                tankStringBuilder.AppendLine(o.ToString() + $"{o.Level}");
+                tankStringBuilder.AppendLine(o.ToString());// + $"{o.Level}");
                 coorStringBuilder.AppendLine(o.ToCoorString());
             });
             string tankString = tankStringBuilder.ToString();
@@ -541,7 +604,7 @@
 
             Pipes.ForEach(p =>
             {
-                pipeStringBuilder.AppendLine(p.ToString() + $"{p.Level}");
+            pipeStringBuilder.AppendLine(p.ToString());// + $"{p.Level}");
                 statusStringBuilder.Append(p.ToStatusString());
             });
 
@@ -553,7 +616,7 @@
 
             Valves.ForEach(o =>
             {
-                valveStringBuilder.AppendLine(o.ToString() + $"{o.Level}");
+            valveStringBuilder.AppendLine(o.ToString());// + $"{o.Level}");
                 statusStringBuilder.Append(o.ToStatusString());
             });
             string valveString = valveStringBuilder.ToString();
@@ -564,7 +627,7 @@
 
             Pumps.ForEach(o =>
             {
-                pumpStringBuilder.AppendLine(o.ToString() + $"{o.Level}");
+            pumpStringBuilder.AppendLine(o.ToString());// + $"{o.Level}");
                 statusStringBuilder.Append(o.ToStatusString());
             });
             string pumpString = pumpStringBuilder.ToString();

--
Gitblit v1.9.3