From 5fcc843704ca90c742b578aa5898acf0097f753b Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期四, 24 十月 2024 10:15:47 +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/06-simulation/XhsProjectSimulationCorePage.cs |  360 +++++++++++++++++++++++++++++------------------------------
 1 files changed, 176 insertions(+), 184 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 bd7a2c5..dd92fc4 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
@@ -1,5 +1,6 @@
 锘縢lobal using Yw.EPAnet;
 using DevExpress.Mvvm.Native;
+using DevExpress.XtraRichEdit.Layout;
 using HStation.WinFrmUI.PhartRelation;
 using Yw.WinFrmUI.Bimface;
 using Yw.WinFrmUI.Hydro;
@@ -14,7 +15,6 @@
             this.PageTitle.Caption = "姘村姏妯℃嫙";
             this.PageTitle.HeaderSvgImage = this.svgImg32[0];
             this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
             RegistBulkSetEvents();
         }
 
@@ -58,7 +58,7 @@
         /// <summary>
         /// 鍒濆鍖栨暟鎹�
         /// </summary>
-        public override async void InitialDataSource()
+        public override void InitialDataSource()
         {
             base.InitialDataSource();
             if (_project == null)
@@ -66,14 +66,8 @@
                 return;
             }
             this.PageTitle.Caption = $"{_project.Name}\r\n姘村姏妯℃嫙";
-            var bimfaceCtrl = GetBimfaceCtrl();
-            this.tabPageBimface.Controls.Clear();
-            this.tabPageBimface.Controls.Add(bimfaceCtrl);
-            await bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
-            var q3dCtrl = GetQ3dCtrl();
-            this.tabPageQ3d.Controls.Clear();
-            this.tabPageQ3d.Controls.Add(q3dCtrl);
-            q3dCtrl.InitialData(() => _hydroInfo);
+            ShowBimfaceCtrl();
+            ShowQ3dCtrl();
             ShowPropertyCtrl();
 
         }
@@ -84,24 +78,19 @@
         private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null;
 
         //鑾峰彇 bimface 鎺т欢
-        private XhsProjectSimulationBimfaceCtrl GetBimfaceCtrl()
+        private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl()
         {
             if (_bimfaceCtrl == null)
             {
                 _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                 _bimfaceCtrl.Dock = DockStyle.Fill;
-                _bimfaceCtrl.LoadCompletedEvent += async () =>
+                await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
+                _bimfaceCtrl.LoadCompletedEvent += () =>
                 {//view鍔犺浇瀹屾垚浜嬩欢
                     if (_hydroInfo == null)
                     {
                         return;
                     }
-                    var elementIds = new List<string>();
-                    var pumps = _hydroInfo.Pumps?.Where(x => x.LinkStatus == Yw.Hydro.PumpStatus.Open).ToList();
-                    pumps?.ForEach(x => elementIds.Add(x.Code));
-                    var valves = _hydroInfo.Valves?.Where(x => x.LinkStatus == Yw.Hydro.ValveStatus.Open).ToList();
-                    valves?.ForEach(x => elementIds.Add(x.Code));
-                    await _bimfaceCtrl?.SetOpenComponentsColor(elementIds);
                 };
                 _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) =>
                 {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢
@@ -111,86 +100,34 @@
                     }
                     _parter = obj;
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
             }
             return _bimfaceCtrl;
         }
 
-
-
-        //璁剧疆Bimface杩炴帴棰滆壊
-        private async void SetBimfaceLinkColor()
+        //鏄剧ず bimface 鎺т欢
+        private async void ShowBimfaceCtrl()
         {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_parter != null)
-            {
-                if (_parter is Yw.Model.HydroLinkInfo link)
-                {
-                    await _bimfaceCtrl?.RestoreLinkComponentsColor();
-
-                    var allVisualList = _hydroInfo.GetAllVisuals();
-                    var allLinkList = _hydroInfo.GetAllLinks();
-                    var startParter = allVisualList?.Find(x => x.Code == link.StartCode);
-                    if (startParter != null)
-                    {
-                        var startElementIds = new List<string>();
-                        if (startParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
-                        {
-                            var startLinkList = allLinkList?.Where(x => x.StartCode == startParter.Code || x.EndCode == startParter.Code && x.Code != _parter.Code).ToList();
-                            if (startLinkList != null && startLinkList.Count > 0)
-                            {
-                                startElementIds.AddRange(startLinkList.Select(x => x.Code));
-                            }
-                        }
-                        else
-                        {
-                            startElementIds.Add(startParter.Code);
-                        }
-                        if (startElementIds.Count > 0)
-                        {
-                            await _bimfaceCtrl?.SetLinkStartComponentsColor(startElementIds);
-                        }
-                    }
-                    var endParter = allVisualList?.Find(x => x.Code == link.EndCode);
-                    if (endParter != null)
-                    {
-                        var endElementIds = new List<string>();
-                        if (endParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
-                        {
-                            var endLinkList = allLinkList?.Where(x => x.StartCode == endParter.Code || x.EndCode == endParter.Code && x.Code != _parter.Code).ToList();
-                            if (endLinkList != null && endLinkList.Count > 0)
-                            {
-                                endElementIds.AddRange(endLinkList.Select(x => x.Code));
-                            }
-                        }
-                        else
-                        {
-                            endElementIds.Add(endParter.Code);
-                        }
-                        if (endElementIds.Count > 0)
-                        {
-                            await _bimfaceCtrl?.SetLinkEndComponentsColor(endElementIds);
-                        }
-                    }
-                }
-            }
+            var bimfaceCtrl = await GetBimfaceCtrl();
+            this.tabPageBimface.Controls.Clear();
+            this.tabPageBimface.Controls.Add(bimfaceCtrl);
         }
 
         #endregion
 
         #region Q3d
 
-        //鑾峰彇Q3d鎺т欢
+        //Q3d 鎺т欢
+        private XhsProjectSimulationQ3dCtrl _q3dCtrl = null;
+
+        //鑾峰彇 Q3d 鎺т欢
         private XhsProjectSimulationQ3dCtrl GetQ3dCtrl()
         {
             if (_q3dCtrl == null)
             {
                 _q3dCtrl = new XhsProjectSimulationQ3dCtrl();
                 _q3dCtrl.Dock = DockStyle.Fill;
+                _q3dCtrl.InitialData(() => _hydroInfo);
                 _q3dCtrl.SelectedPartersChangedEvent += (obj) =>
                 {
                     if (_hydroInfo == null)
@@ -205,12 +142,17 @@
             return _q3dCtrl;
         }
 
-        //Q3d鎺т欢
-        private XhsProjectSimulationQ3dCtrl _q3dCtrl = null;
+        //鏄剧ず Q3d 鎺т欢
+        private void ShowQ3dCtrl()
+        {
+            var q3dCtrl = GetQ3dCtrl();
+            this.tabPageQ3d.Controls.Clear();
+            this.tabPageQ3d.Controls.Add(q3dCtrl);
+        }
 
-        #endregion Q3d
+        #endregion
 
-        #region 灞炴�ч潰鏉�
+        #region 鏋勪欢灞炴��
 
         //灞炴�ф帶浠�
         private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
@@ -375,7 +317,6 @@
                     }
                     await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
                 _matchingListCtrl.ApplyMatchingEvent += (output) =>
                 {
@@ -409,7 +350,7 @@
             this.docPnlBottom.Height = 350;
         }
 
-        #endregion 鑷姩鍖归厤
+        #endregion
 
         #region 鏈尮閰嶅垪琛�
 
@@ -435,7 +376,6 @@
                     var elementIds = new List<string>() { parter.Code };
                     await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
                 _unMatchingListCtrl.ViewModelEvent += async (parters) =>//鏌ョ湅妯″瀷
                 {
@@ -466,7 +406,7 @@
             this.docPnlBottom.Height = 350;
         }
 
-        #endregion 鏈尮閰嶅垪琛�
+        #endregion
 
         #region 涓�閿樉闅�
 
@@ -538,7 +478,6 @@
                     }
                     await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
             }
             return _checkCtrl;
@@ -572,7 +511,7 @@
             ShowCheckCtrl();
         }
 
-        #endregion 姘村姏鏍¢獙
+        #endregion
 
         #region 淇濆瓨淇℃伅
 
@@ -593,7 +532,7 @@
             TipFormHelper.ShowSucceed("淇濆瓨鎴愬姛锛�");
         }
 
-        #endregion 淇濆瓨姘村姏淇℃伅
+        #endregion
 
         #region 鏋勪欢鏄庣粏
 
@@ -617,7 +556,6 @@
                     _parter = allParterList?.Find(x => x.Code == parter.Code);
                     await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code });
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
             }
             return _parterListCtrl;
@@ -645,7 +583,7 @@
             ShowParterListCtrl();
         }
 
-        #endregion 鏋勪欢鏄庣粏
+        #endregion
 
         #region INP瀵煎嚭
 
@@ -935,11 +873,11 @@
 
         }
 
-        #endregion 閰嶇疆
+        #endregion
 
-        #region 缁煎悎鍒嗘瀽
+        #region 骞惰仈鍒嗘瀽
 
-        //姘存车鍒嗘瀽
+        //骞惰仈鍒嗘瀽
         private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             if (_hydroInfo == null)
@@ -1011,6 +949,20 @@
 
             var dlg = new PumpParallelChartDlg();
             dlg.SetBindingData(vmList);
+            dlg.ReloadDataEvent += (list) =>
+            {
+                list?.ForEach(x =>
+                {
+                    var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code);
+                    if (pump != null)
+                    {
+                        pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
+                        pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1);
+                    }
+                });
+                ShowProperty();
+                return true;
+            };
             dlg.ShowDialog();
         }
 
@@ -1018,59 +970,42 @@
 
         #region 姘村姏璁$畻
 
-        //璁$畻鎺т欢
-        private SetHydroCalcuPrefixCtrl _calcuCtrl = null;
+        //璁$畻澶辫触鎺т欢
+        private HydroCalcuFailedCtrl _calcuFailedCtrl = null;
 
-        //鑾峰彇璁$畻鎺т欢
-        private SetHydroCalcuPrefixCtrl GetCalcuCtrl()
+        //鑾峰彇璁$畻澶辫触鎺т欢
+        private HydroCalcuFailedCtrl GetCalcuFailedCtrl()
         {
-            if (_calcuCtrl == null)
+            if (_calcuFailedCtrl == null)
             {
-                _calcuCtrl = new SetHydroCalcuPrefixCtrl();
-                _calcuCtrl.Dock = DockStyle.Fill;
-                _calcuCtrl.InitialData(() => _hydroInfo);
-                _calcuCtrl.HydroViewEvent += async (parter) =>
-                {//姘村姏鏌ョ湅浜嬩欢
-                    if (parter == null)
-                    {
-                        return;
-                    }
-                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { parter.Code });
-                };
-                _calcuCtrl.HydroCalcuEvent += async () =>
-                {//姘村姏璁$畻浜嬩欢
-                    if (_hydroInfo == null)
-                    {
-                        return;
-                    }
-
-                    //鏍¢獙
-                    _checkResult = _hydroInfo.Check();
-                    if (!_checkResult.Succeed)
-                    {
-                        ShowCheckCtrl();
-                        TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
-                        return;
-                    }
-
-                    var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
-                    _calcuResult = netWork.Calcu();
-                    if (_calcuResult.Succeed)
-                    {
-                        this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-                        await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
-                        TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
-                    }
-                    else
-                    {
-                        _calcuCtrl.SetFailedList(_calcuResult.FailedList);
-                        this.docPnlRight.Text = "澶辫触鍘熷洜";
-                        this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-                        TipFormHelper.ShowError("璁$畻澶辫触");
-                    }
-                };
+                _calcuFailedCtrl = new HydroCalcuFailedCtrl();
+                _calcuFailedCtrl.Dock = DockStyle.Fill;
             }
-            return _calcuCtrl;
+            return _calcuFailedCtrl;
+        }
+
+        //鏄剧ず璁$畻澶辫触鎺т欢
+        private void ShowCalcuFailedCtrl()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (_calcuResult == null)
+            {
+                return;
+            }
+            if (_calcuResult.Succeed)
+            {
+                return;
+            }
+            var calcuFailedCtrl = GetCalcuFailedCtrl();
+            calcuFailedCtrl.SetBindingData(_calcuResult.FailedList);
+            this.controlContainerBottom.Controls.Clear();
+            this.controlContainerBottom.Controls.Add(calcuFailedCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜";
+            this.docPnlBottom.Height = 350;
         }
 
         //鑾峰彇璁$畻缁撴灉
@@ -1089,7 +1024,6 @@
                 return default;
             }
             var list = new List<IHydroCalcuResult>();
-
             var allNodeList = _hydroInfo.GetAllNodes();
             if (allNodeList != null && allNodeList.Count > 0)
             {
@@ -1141,20 +1075,63 @@
             return list;
         }
 
-        //姘村姏璁$畻
-        private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //鏄剧ず璁$畻鍓嶆彁绐椾綋
+        private async void ShowCalcuPrefixDlg()
         {
             if (_hydroInfo == null)
             {
                 return;
             }
-            var calcuPrefixCtrl = GetCalcuCtrl();
-            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;
+            var dlg = new SetHydroCalcuPrefixDlg();
+            dlg.SetBindingData(_hydroInfo);
+            dlg.HydroViewEvent += async (parter) =>
+            {
+                _parter = parter;
+                if (_parter != null)
+                {
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code });
+                }
+                ShowProperty();
+            };
+            dlg.HydroCalcuEvent += async () =>
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+
+                //鏍¢獙
+                _checkResult = _hydroInfo.Check();
+                if (!_checkResult.Succeed)
+                {
+                    ShowCheckCtrl();
+                    TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
+                    return;
+                }
+
+                var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
+                _calcuResult = netWork.Calcu();
+                if (_calcuResult.Succeed)
+                {
+                    await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
+                    TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
+                }
+                else
+                {
+                    ShowCalcuFailedCtrl();
+                    TipFormHelper.ShowError("璁$畻澶辫触锛�");
+                }
+            };
+            if (dlg.ShowDialog() == DialogResult.Cancel)
+            {
+                await _bimfaceCtrl?.ClearLogicCalcuCustomLabels();
+            }
+        }
+
+        //姘村姏璁$畻
+        private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowCalcuPrefixDlg();
         }
 
         #endregion
@@ -1192,7 +1169,6 @@
                     }
                     await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                     ShowProperty();
-                    SetBimfaceLinkColor();
                 };
             }
             return _searchCtrl;
@@ -1306,11 +1282,13 @@
 
         #region 棰滆壊鍒嗙骇
 
+        //棰滆壊鍒嗙骇搴旂敤鍒楄〃
         private List<HydroGradingApplyViewModel> _allGradingApplyList = null;
+        //棰滆壊鍒嗙骇缂栫爜鍒楄〃
         private List<string> _allGradingCodeList = null;
 
-        //璁剧疆
-        private void barBtnGradingSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //璁剧疆棰滆壊鍒嗙骇
+        private void SetGrading()
         {
             if (_hydroInfo == null)
             {
@@ -1321,8 +1299,8 @@
             dlg.ShowDialog();
         }
 
-        //搴旂敤
-        private void barBtnGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //搴旂敤棰滆壊鍒嗙骇
+        private async void ApplyGrading()
         {
             if (_hydroInfo == null)
             {
@@ -1331,15 +1309,7 @@
             if (_allGradingApplyList == null)
             {
                 _allGradingApplyList = new List<HydroGradingApplyViewModel>();
-                if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0)
-                {
-                    _allGradingApplyList.Add(new HydroGradingApplyViewModel()
-                    {
-                        Code = Yw.Hydro.ParterCatalog.Waterbox,
-                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Waterbox),
-                        PropName = string.Empty
-                    });
-                }
+
                 if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
                 {
                     _allGradingApplyList.Add(new HydroGradingApplyViewModel()
@@ -1367,15 +1337,6 @@
                         PropName = string.Empty
                     });
                 }
-                if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0)
-                {
-                    _allGradingApplyList.Add(new HydroGradingApplyViewModel()
-                    {
-                        Code = Yw.Hydro.ParterCatalog.Nozzle,
-                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Nozzle),
-                        PropName = string.Empty
-                    });
-                }
             }
             var dlg = new ApplyHydroGradingDlg();
             dlg.SetBindingData(() => _hydroInfo, _allGradingApplyList, GetAllCalcuResultList());
@@ -1388,20 +1349,51 @@
                     await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1);
                 });
             };
-            dlg.ShowDialog();
+            if (dlg.ShowDialog() != DialogResult.OK)
+            {
+                await _bimfaceCtrl?.RestoreComponentsColor(_allGradingCodeList);
+            }
         }
 
-        //鍙栨秷
-        private async void barBtnGradingCancel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //璁剧疆
+        private void barBtnGradingSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            await _bimfaceCtrl?.RestoreComponentsColor(_allGradingCodeList);
+            SetGrading();
+        }
+
+        //搴旂敤
+        private void barBtnGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ApplyGrading();
         }
 
         #endregion
 
+        #region 浜哄伐鍒锋柊
 
+        //鍒锋柊
+        private async void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (XtraMessageBox.Show("鍒锋柊鍚庡皢涓㈠け褰撳墠姘村姏淇℃伅鏇存敼锛屾槸鍚︾户缁埛鏂帮紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes)
+            {
+                if (_project == null)
+                {
+                    return;
+                }
+                if (_projectSite == null)
+                {
+                    return;
+                }
+                var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
+                _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
+                _parter = null;
+                await _bimfaceCtrl?.ZoomAndSelectComponents(null);
+                ShowProperty();
+                TipFormHelper.ShowSucceed("鏁版嵁宸插埛鏂�");
+            }
+        }
 
-
-
+        #endregion
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3