From 5043208b24f45b3e3c630a596b9e83373096a78a Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期五, 18 十月 2024 12:47:49 +0800
Subject: [PATCH] 优化计算前提,计算逻辑还需要继续优化

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs |  100 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 90 insertions(+), 10 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index b8672da..b1130a6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -624,7 +624,7 @@
                 }
 
                 var rated_speed = x.RatedN.Value;
-                var speed_ratio = x.SpeedRatio ?? 1;
+                var speed_ratio = x.SpeedRatio;
 
                 var qh_pt_list = qh.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
                 var qe_pt_list = qe?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
@@ -730,6 +730,87 @@
         }
 
         private XhsProjectSimulationCalcuCtrl _calcuCtrl = null;//璁$畻鎺т欢
+        private SetHydroCalcuPrefixCtrl _calcuPrefixCtrl = null;
+
+        private SetHydroCalcuPrefixCtrl GetCalcuPrefixCtrl()
+        {
+            if (_calcuPrefixCtrl == null)
+            {
+                _calcuPrefixCtrl = new SetHydroCalcuPrefixCtrl();
+                _calcuPrefixCtrl.Dock = DockStyle.Fill;
+                _calcuPrefixCtrl.InitialData(() => _hydroInfo);
+                _calcuPrefixCtrl.HydroViewEvent += async (parter) =>
+                {
+                    if (parter == null)
+                    {
+                        return;
+                    }
+                    await _bimfaceCtrl.ZoomAndSelectComponents(new List<string>() { parter.Code });
+                };
+                _calcuPrefixCtrl.HydroCalcuEvent += async (hydroInfo) =>
+                {
+                    if (hydroInfo == null)
+                    {
+                        return;
+                    }
+                    _checkResult = hydroInfo.Check();
+                    if (!_checkResult.Succeed)
+                    {
+                        this.controlContainerBottom.Controls.Clear();
+                        var checkResultCtrl = GetCheckResultCtrl();
+                        checkResultCtrl.SetBindingData(_checkResult);
+                        this.controlContainerBottom.Controls.Add(checkResultCtrl);
+                        TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
+                        return;
+                    }
+
+                    var netWork = Yw.Hydro.ParseHelper.ToNetwork(hydroInfo);
+                    _calcuResult = netWork.Calcu();
+                    if (_calcuResult.Succeed)
+                    {
+                        this.controlContainerBottom.Controls.Clear();
+                        var parterListCtrl = GetParterListCtrl();
+                        var calcuResultList = new List<IHydroCalcuResult>();
+                        _calcuResult.NodeList?.ForEach(x =>
+                        {
+                            calcuResultList.Add(new HydroCalcuNodeResult()
+                            {
+                                Code = x.Id,
+                                CalcuPress = x.Press,
+                                CalcuHead = x.Head,
+                                CalcuDemand = x.Demand,
+                            });
+                        });
+                        _calcuResult.LinkList?.ForEach(x =>
+                        {
+                            calcuResultList.Add(new HydroCalcuLinkResult()
+                            {
+                                Code = x.Id,
+                                CalcuFlow = x.Flow,
+                                CalcuVelocity = x.Velocity,
+                                CalcuHeadLoss = x.Headloss
+                            });
+                        });
+                        parterListCtrl.SetBindingData(_hydroInfo, calcuResultList);
+                        parterListCtrl.SetCalcuView();
+                        this.controlContainerBottom.Controls.Add(parterListCtrl);
+                        this.docPnlBottom.Text = "璁$畻缁撴灉";
+                        ShowProperty();
+                        await _bimfaceCtrl?.ShowCalcuCustomLabels(_calcuResult);
+                        TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
+                    }
+                    else
+                    {
+                        _calcuCtrl.SetBindingData(_calcuResult.FailedList);
+                        this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+                        this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜";
+                        this.docPnlBottom.Height = 350;
+                        TipFormHelper.ShowError("璁$畻澶辫触");
+                    }
+                };
+            }
+            return _calcuPrefixCtrl;
+        }
 
         //姘村姏璁$畻
         private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
@@ -738,17 +819,16 @@
             {
                 return;
             }
-
-            this.controlContainerBottom.Controls.Clear();
-            var calcuCtrl = GetCalcuCtrl();
-            calcuCtrl.SetBindingData(_hydroInfo);
-            this.controlContainerBottom.Controls.Add(calcuCtrl);
-            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-            this.docPnlBottom.Text = "璁$畻鍓嶆彁鏉′欢";
-            this.docPnlBottom.Height = 350;
+            var calcuPrefixCtrl = GetCalcuPrefixCtrl();
+            calcuPrefixCtrl.SetBindingData();
+            this.controlContainerRight.Controls.Clear();
+            this.controlContainerRight.Controls.Add(calcuPrefixCtrl);
+            this.docPnlRight.Text = "鍓嶆彁鏉′欢";
+            this.docPnlRight.Width = SetHydroCalcuPrefixCtrl.ControlMinWidth;
+            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
         }
 
-        #endregion 姘村姏璁$畻
+        #endregion
 
         #region 鏋勪欢鏌ヨ
 

--
Gitblit v1.9.3