From bfd1b73be85fd66ee37031eadcd4d09e7dafb52f Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期四, 13 二月 2025 18:51:40 +0800
Subject: [PATCH] 开始增加构件分组功能

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs |  172 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 158 insertions(+), 14 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs
index b7b9ffa..c2ab351 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs
@@ -1,14 +1,6 @@
-锘縰sing DevExpress.PivotGrid.PivotTable;
-using DevExpress.XtraEditors;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
+锘縰sing System.Data;
+using Yw.Pump;
+using Yw.WinFrmUI.Phart;
 
 namespace HStation.WinFrmUI
 {
@@ -19,12 +11,21 @@
             InitializeComponent();
             this.layoutControl1.SetupLayoutControl();
             this.hydroPumpListExtendGridCtrl1.StateChangedEvent += HydroPumpListExtendGridCtrl1_StateChangedEvent;
+            this.pumpParallelChart1.DesignPointChangedEvent += PumpParallelChart1_DesignPointChangedEvent;
+            this.pumpParallelChart1.QueryPointChangedEvent += PumpParallelChart1_QueryPointChangedEvent;
+            this.pumpParallelChart1.ParallelStatusChangedEvent += PumpParallelChart1_ParallelStatusChangedEvent;
         }
+
 
         /// <summary>
         /// 淇濆瓨浜嬩欢
         /// </summary>
         public event Action<List<SimulationPumpParallelSaveItemViewModel>> SaveEvent;
+        /// <summary>
+        /// 骞惰仈鐘舵�佹敼鍙樹簨浠�
+        /// </summary>
+        public event Action<bool, string> ParallelStatusChangedEvent;
+
 
         /// <summary>
         /// 缁戝畾鍒楄〃
@@ -32,18 +33,22 @@
         public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
         {
             this.hydroPumpListExtendGridCtrl1.SetBindingData(hydroInfo);
+            var allStateList = this.hydroPumpListExtendGridCtrl1.GetStateList();
+            var allVmList = CreateParallelViewModels(allStateList);
+            this.pumpParallelChart1.SetBindingData(allVmList);
         }
 
         //鐘舵�佹敼鍙樹簨浠�
-        private void HydroPumpListExtendGridCtrl1_StateChangedEvent(List<HydroPumpListItemExtendViewModel> allPumpStateList)
+        private void HydroPumpListExtendGridCtrl1_StateChangedEvent(List<HydroPumpListItemExtendViewModel> allStateList)
         {
-
+            var allVmList = CreateParallelViewModels(allStateList);
+            this.pumpParallelChart1.SetBindingData(allVmList);
         }
 
         //淇濆瓨
         private void btnSave_Click(object sender, EventArgs e)
         {
-            var result = XtraMessageBox.Show("鏄惁灏嗙幇鏈夋按娉电姸鎬佹洿鏂版ā鍨嬶紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes;
+            var result = XtraMessageBox.Show("鏄惁浣跨敤鐜版湁姘存车鐘舵�佹洿鏂版ā鍨嬶紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes;
             if (!result)
             {
                 return;
@@ -62,6 +67,145 @@
             this.SaveEvent?.Invoke(allSaveList);
         }
 
+        //鍒涘缓
+        private List<PumpParallelViewModel> CreateParallelViewModels(List<HydroPumpListItemExtendViewModel> allStateList)
+        {
+            var allRunList = allStateList?.Where(x => x.RunStatus).ToList();
+            if (allRunList == null || allRunList.Count < 1)
+            {
+                return default;
+            }
+            var vmList = new List<PumpParallelViewModel>();
+            foreach (var item in allRunList)
+            {
+                var vm = new PumpParallelViewModel();
+                vm.Id = item.Code;
+                vm.Name = item.Name;
+                vm.RatedQ = item.Vmo.RatedQ;
+                vm.RatedH = item.Vmo.RatedH;
+                vm.RatedP = item.Vmo.RatedP;
+                vm.RatedN = item.Vmo.RatedN;
+                vm.RatedHz = item.Vmo.RatedHz;
+                vm.CurrentHz = item.Hz;
+                vm.CurrentN = Math.Round(item.Hz / item.Vmo.RatedHz * vm.RatedN, 1);
+                vm.CurrentColor = item.Color;
+
+                double extend = 1;
+
+                var curveqh = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.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 = qh_pts;
+                        var qh_current_pts = qh_pts.GetQHPointListByN(item.Vmo.RatedHz, item.Hz);
+                        vm.CurrentCurveQH = qh_current_pts;
+                        if (item.Extend > 100)
+                        {
+                            vm.CurrentExtendFlow = vm.CurrentCurveQH.Max(x => x.X);
+                            extend = item.Extend / 100;
+                            var qh_current_extend_pts = vm.CurrentCurveQH.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20);
+                            vm.CurrentCurveQH = qh_current_extend_pts;
+                        }
+                    }
+                }
+
+                var curveqp = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.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 = qp_pts;
+                        var qp_current_pts = qp_pts.GetQPPointListByN(item.Vmo.RatedHz, item.Hz);
+                        vm.CurrentCurveQP = qp_current_pts;
+                        if (extend > 1)
+                        {
+                            var qp_current_extend_pts = vm.CurrentCurveQP.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20);
+                            vm.CurrentCurveQP = qp_current_extend_pts;
+                        }
+                    }
+                }
+
+                var curveqe = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQE);
+                if (curveqe != null)
+                {
+                    var qe_pts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                    if (qe_pts != null && qe_pts.Count > 3)
+                    {
+                        vm.CurveQE = qe_pts;
+                        var qe_current_pts = qe_pts.GetQEPointListByN(item.Vmo.RatedHz, item.Hz);
+                        vm.CurrentCurveQE = qe_current_pts;
+                        if (extend > 1)
+                        {
+                            var qe_current_extend_pts = vm.CurrentCurveQE.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20);
+                            vm.CurrentCurveQE = qe_current_extend_pts;
+                        }
+                    }
+                }
+
+                vmList.Add(vm);
+            }
+
+            return vmList;
+        }
+
+        //璁捐鐐规敼鍙�
+        private void PumpParallelChart1_DesignPointChangedEvent(List<PumpDesignPointViewModel> obj)
+        {
+            var vmList = obj?.Select(x => new HydroPumpDesignPointViewModel()
+            {
+                Code = x.Id,
+                Name = x.Name,
+                DesignQ = Math.Round(x.Q, 1),
+                DesignH = Math.Round(x.H, 2),
+                DesignP = x.P.HasValue ? Math.Round(x.P.Value, 1) : null,
+                DesignE = x.E.HasValue ? Math.Round(x.E.Value, 1) : null,
+            }).ToList();
+            this.hydroPumpDesignPointListGridCtrl1.SetBindingData(vmList);
+        }
+
+        //鏌ヨ鐐规敼鍙�
+        private void PumpParallelChart1_QueryPointChangedEvent(List<PumpQueryPointViewModel> obj)
+        {
+            var vmList = obj?.Select(x => new HydroPumpQueryPointViewModel()
+            {
+                Code = x.Id,
+                Name = x.Name,
+                QueryQ = Math.Round(x.Q, 1),
+                QueryH = Math.Round(x.H, 2),
+                QueryP = x.P.HasValue ? Math.Round(x.P.Value, 1) : null,
+                QueryE = x.E.HasValue ? Math.Round(x.E.Value, 1) : null,
+            }).ToList();
+            this.hydroPumpQueryPointListGridCtrl1.SetBindingData(vmList);
+        }
+
+        //骞惰仈鐘舵�佹敼鍙樹簨浠�
+        private void PumpParallelChart1_ParallelStatusChangedEvent(bool status, string msg)
+        {
+            this.ParallelStatusChangedEvent?.Invoke(status, msg);
+        }
+
+        //璁捐鐐�
+        private void btnDesign_Click(object sender, EventArgs e)
+        {
+            var qtext = this.txtDesignQ.Text.Trim();
+            if (string.IsNullOrEmpty(qtext))
+            {
+                TipFormHelper.ShowWarn("璇疯緭鍏ヨ璁$偣娴侀噺锛�");
+                return;
+            }
+            var htext = this.txtDesignH.Text.Trim();
+            if (string.IsNullOrEmpty(htext))
+            {
+                TipFormHelper.ShowWarn("璇疯緭鍏ヨ璁$偣鎵▼锛�");
+                return;
+            }
+            var q = double.Parse(qtext);
+            var h = double.Parse(htext);
+            this.pumpParallelChart1.SetDesignPoint(q, h);
+        }
 
     }
 }

--
Gitblit v1.9.3