From 3886a51f03ec14650e5b7127539104ad40e496da Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期三, 04 十二月 2024 20:36:12 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/SimulationSingleWorkingEnergyCtrl.cs |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 100 insertions(+), 2 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/SimulationSingleWorkingEnergyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/SimulationSingleWorkingEnergyCtrl.cs
index c724738..f2d1533 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/SimulationSingleWorkingEnergyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/SimulationSingleWorkingEnergyCtrl.cs
@@ -10,6 +10,9 @@
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using Yw.EPAnet;
+using Yw.Geometry;
+using Yw.Pump;
+using Yw.WinFrmUI.Phart;
 
 namespace HStation.WinFrmUI
 {
@@ -97,13 +100,108 @@
                         this.txtP.EditValue = calcuResult.CalcuP.HasValue ? $"{Math.Round(calcuResult.CalcuP.Value, 1)}kW" : null;
                         this.txtE.EditValue = calcuResult.CalcuE.HasValue ? $"{Math.Round(calcuResult.CalcuE.Value, 1)}%" : null;
                     }
-                    var matching = AssetsMatchingParasHelper.Create(_hydroInfo, pump, _allCalcuResultVisualDict.Values.ToList());
-                    //this.singlePumpCalcCtrl1.SetBindindData(matching);
+                    var vm = CreateViewModel(pump);
+                    this.pumpRunViewChart1.SetBindingData(vm);
                 }
             }
 
 
         }
 
+        //鍒涘缓
+        private PumpRunViewViewModel CreateViewModel(Yw.Model.HydroPumpInfo pump)
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            var vm = new PumpRunViewViewModel();
+            vm.Id = pump.Code;
+            vm.Name = pump.Name;
+            vm.CurveName = $"棰濆畾鏇茬嚎({pump.RatedHz}hz)";
+            vm.RatedQ = pump.RatedQ.HasValue ? pump.RatedQ.Value : 0;
+            vm.RatedH = pump.RatedH.HasValue ? pump.RatedH.Value : 0;
+            vm.RatedP = pump.RatedP;
+            vm.RatedN = pump.RatedN.HasValue ? pump.RatedN.Value : 0;
+            vm.RatedHz = pump.RatedHz;
+
+            var curveqh = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQH);
+            if (curveqh != null)
+            {
+                var qh_pts = curveqh.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                if (qh_pts != null && qh_pts.Count > 3)
+                {
+                    vm.CurveQH = new CubicSpline2d(qh_pts);
+                }
+            }
+
+            var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP);
+            if (curveqp != null)
+            {
+                var qp_pts = curveqp.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                if (qp_pts != null && qp_pts.Count > 3)
+                {
+                    vm.CurveQP = new CubicSpline2d(qp_pts);
+                }
+            }
+
+            var curveqe = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQE);
+            if (curveqe != null)
+            {
+                var qepts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                if (qepts != null && qepts.Count > 3)
+                {
+                    vm.CurveQE = new CubicSpline2d(qepts);
+                }
+            }
+
+            if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open)
+            {
+                vm.Items = new List<PumpRunViewItemViewModel>();
+                var vmItem = new PumpRunViewItemViewModel();
+                vm.Items.Add(vmItem);
+                vmItem.Id = string.Empty;
+                vmItem.Name = "杩愯";
+                vmItem.Hz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1);
+                if (pump.RatedN.HasValue)
+                {
+                    vmItem.N = Math.Round(pump.RatedN.Value * pump.SpeedRatio, 1);
+                }
+                var calcuResult = _allCalcuResultVisualDict?.GetValue(pump.Code) as HydroCalcuPumpResult;
+                if (calcuResult != null)
+                {
+                    vmItem.Q = calcuResult.CalcuQ ?? 0;
+                    vmItem.H = calcuResult.CalcuH ?? 0;
+                    vmItem.P = calcuResult.CalcuP;
+                    vmItem.E = calcuResult.CalcuE;
+                }
+                vmItem.CurveName = $"杩愯鏇茬嚎({vmItem.Hz}hz)";
+
+                if (vm.CurveQH != null)
+                {
+                    var qh_pts = vm.CurveQH.GetPointList(20);
+                    var qh_run_pts = qh_pts.GetQHPointListByN(vm.RatedHz, vmItem.Hz);
+                    vmItem.CurveQH = new CubicSpline2d(qh_run_pts);
+                }
+
+                if (vm.CurveQP != null)
+                {
+                    var qp_pts = vm.CurveQP.GetPointList(20);
+                    var qp_run_pts = qp_pts.GetQPPointListByN(vm.RatedHz, vmItem.Hz);
+                    vmItem.CurveQP = new CubicSpline2d(qp_run_pts);
+                }
+
+                if (vm.CurveQE != null)
+                {
+                    var qe_pts = vm.CurveQE.GetPointList(20);
+                    var qe_run_pts = qe_pts.GetQEPointListByN(vm.RatedHz, vmItem.Hz);
+                    vmItem.CurveQE = new CubicSpline2d(qe_run_pts);
+                }
+
+            }
+
+            return vm;
+        }
+
     }
 }

--
Gitblit v1.9.3