From 8b0e025296ada3552e50dad2ca02f6b1e40bb97b Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期二, 10 十二月 2024 20:29:54 +0800
Subject: [PATCH] 增加方案删除和更新

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs |  377 +++++++++++++++++++++++------------------------------
 1 files changed, 167 insertions(+), 210 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
index a8b09e0..01db1af 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -45,25 +45,6 @@
             (
                 XhsProjectVmo project,
                 XhsProjectSiteVmo projectSite,
-                Yw.Model.HydroModelInfo hydroInfo,
-                HydroWorkingVmo working
-            )
-        {
-            _project = project;
-            _projectSite = projectSite;
-            _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
-            _working = working;
-            _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
-            this.PageTitle.Caption = $"姘村姏妯℃嫙\r\n{_working.Name}";
-        }
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData
-            (
-                XhsProjectVmo project,
-                XhsProjectSiteVmo projectSite,
                 XhsSchemeVmo scheme,
                 Yw.Model.HydroModelInfo hydroInfo,
                 HydroWorkingVmo working
@@ -75,7 +56,14 @@
             _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
             _working = working;
             _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
-            this.PageTitle.Caption = $"{scheme.Name}\r\n{_working.Name}";
+            if (_scheme == null)
+            {
+                this.PageTitle.Caption = $"姘村姏妯℃嫙\r\n{_working.Name}";
+            }
+            else
+            {
+                this.PageTitle.Caption = $"{scheme.Name}\r\n{_working.Name}";
+            }
         }
 
         /// <summary>
@@ -123,7 +111,7 @@
                 {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢
                     var visualListHelper = GetVisualListHelper();
                     var visual = visualListHelper.GetVisual(code);
-                    SelectVisual(visual, eVisualSource.Bimface);
+                    SelectVisual(visual, eSimulationVisualSource.Bimface);
                 };
             }
             return _bimfaceCtrl;
@@ -160,7 +148,7 @@
                 {
                     var visualListHelper = GetVisualListHelper();
                     var visuals = visualListHelper.GetVisualList(codes);
-                    SelectVisual(visuals?.LastOrDefault(), eVisualSource.Q3d);
+                    SelectVisual(visuals?.LastOrDefault(), eSimulationVisualSource.Q3d);
                 };
             }
             return _q3dCtrl;
@@ -179,10 +167,10 @@
         #region 灞炴�ф帶浠�
 
         //灞炴�ф帶浠�
-        private HydroVisualPropertyViewCtrl _propertyCtrl = null;
+        private SimulationPropertyCtrl _propertyCtrl = null;
 
         //鑾峰彇灞炴�ф帶浠�
-        private HydroVisualPropertyViewCtrl GetPropertyCtrl()
+        private SimulationPropertyCtrl GetPropertyCtrl()
         {
             if (_hydroInfo == null)
             {
@@ -190,11 +178,12 @@
             }
             if (_propertyCtrl == null)
             {
-                _propertyCtrl = new HydroVisualPropertyViewCtrl();
+                _propertyCtrl = new SimulationPropertyCtrl();
                 _propertyCtrl.Dock = DockStyle.Fill;
-                _propertyCtrl.HydroViewEvent += (visualViewModel) =>
+                _propertyCtrl.AllowEdit = false;
+                _propertyCtrl.HydroViewEvent += (visual) =>
                 {
-                    SelectVisual(GetVisual(visualViewModel), eVisualSource.Property);
+                    SelectVisual(visual, eSimulationVisualSource.Property);
                 };
                 _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) =>
                 { //寮鸿皟杩炴帴鑺傜偣
@@ -286,96 +275,79 @@
             _propertyCtrl?.UpdateRows();
         }
 
-        //娓呯悊灞炴�ф帶浠�
-        private void ClearPropertyCtrl()
-        {
-            if (_propertyCtrl != null)
-            {
-                _propertyCtrl.SelectedObject = null;
-            }
-        }
 
         #endregion
 
         #region 閫夋嫨鏋勪欢
 
-        //鍙鏉ユ簮
-        protected enum eVisualSource
-        {
-            None,
-            Bimface,
-            Q3d,
-            Property,
-            List,
-            Search,
-            Monitor,
-            Check,
-            Calcu,
-            Warning,
-        }
-
         //閫夋嫨鏋勪欢
         private Yw.Model.HydroVisualInfo _visual = null;
 
         //閫夋嫨鏋勪欢
-        private void SelectVisual(HydroVisualInfo visual, eVisualSource source)
+        private void SelectVisual(HydroVisualInfo visual, eSimulationVisualSource source)
         {
             _visual = visual;
             switch (source)
             {
-                case eVisualSource.None:
+                case eSimulationVisualSource.None:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Bimface:
+                case eSimulationVisualSource.Bimface:
                     {
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Q3d:
+                case eSimulationVisualSource.Q3d:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Property:
+                case eSimulationVisualSource.Property:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                     }
                     break;
-                case eVisualSource.List:
+                case eSimulationVisualSource.List:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Search:
+                case eSimulationVisualSource.Set:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Monitor:
+                case eSimulationVisualSource.Search:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Check:
+                case eSimulationVisualSource.Monitor:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Calcu:
+                case eSimulationVisualSource.Check:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
                     }
                     break;
-                case eVisualSource.Warning:
+                case eSimulationVisualSource.Calcu:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eSimulationVisualSource.Warning:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
                         SetPropertyCtrl(visual);
@@ -383,6 +355,13 @@
                     break;
                 default: break;
             }
+        }
+
+        //閫夋嫨鏋勪欢
+        private void SelectVisual(string code, eSimulationVisualSource source)
+        {
+            var visual = GetVisual(code);
+            SelectVisual(visual, source);
         }
 
         #endregion
@@ -405,21 +384,33 @@
             return _visualListHelper;
         }
 
-        //鑾峰彇鍙鏋勪欢
-        private Yw.Model.HydroVisualInfo GetVisual(string code)
+        //閲嶇疆鍙鍒楄〃
+        private void ResetVisualList()
         {
-            if (string.IsNullOrEmpty(code))
-            {
-                return default;
-            }
-            var visualListHelper = GetVisualListHelper();
-            return visualListHelper.GetVisual(code);
+            var helper = GetVisualListHelper();
+            helper.InitialData(_hydroInfo);
         }
 
         //鑾峰彇鍙鏋勪欢
-        private Yw.Model.HydroVisualInfo GetVisual(HydroVisualViewModel visualViewModel)
+        private Yw.Model.HydroVisualInfo GetVisual(string code)
         {
-            return GetVisual(visualViewModel?.Code);
+            var helper = GetVisualListHelper();
+            var visual = helper.GetVisual(code);
+            return visual;
+        }
+
+        //鑾峰彇鍙鍒楄〃
+        private List<Yw.Model.HydroVisualInfo> GetVisualList()
+        {
+            var helper = GetVisualListHelper();
+            return helper.GetVisualList();
+        }
+
+        //鑾峰彇姘存簮鍒楄〃
+        private List<Yw.Model.HydroSourceInfo> GetSourceList()
+        {
+            var helper = GetVisualListHelper();
+            return helper.GetSourceList();
         }
 
         #endregion
@@ -478,7 +469,7 @@
                 _visualListCtrl.Dock = DockStyle.Fill;
                 _visualListCtrl.HydroClickInfoEvent += (visual) =>
                 {
-                    SelectVisual(visual, eVisualSource.List);
+                    SelectVisual(visual, eSimulationVisualSource.List);
                 };
             }
             return _visualListCtrl;
@@ -635,12 +626,12 @@
                 _searchCtrl.InitialData(allVisualVmList);
                 _searchCtrl.HydroClickInfoEvent += (visual) =>
                 {
-                    SelectVisual(visual, eVisualSource.Check);
+                    SelectVisual(visual, eSimulationVisualSource.Check);
                 };
                 _searchCtrl.HydroSearchInfoEvent += (list) =>
                 {
                     var visual = list?.FirstOrDefault();
-                    SelectVisual(visual, eVisualSource.Search);
+                    SelectVisual(visual, eSimulationVisualSource.Search);
                 };
             }
             return _searchCtrl;
@@ -903,6 +894,13 @@
             return _monitorHelper;
         }
 
+        //鑾峰彇鐩戞祴鐐瑰垪琛�
+        private async Task<List<HydroMonitorVmo>> GetMonitorList()
+        {
+            var helper = GetMonitorHelper();
+            return await helper.Get();
+        }
+
         #endregion
 
         #region 鐩戞祴鍊�
@@ -941,7 +939,7 @@
                 {
                     var visualListHelper = GetVisualListHelper();
                     var visual = visualListHelper.GetVisual(code);
-                    SelectVisual(visual, eVisualSource.Monitor);
+                    SelectVisual(visual, eSimulationVisualSource.Monitor);
                 };
             }
             return _monitorValueListCtrl;
@@ -1040,7 +1038,7 @@
                 {
                     var visualListHelper = GetVisualListHelper();
                     var visual = visualListHelper.GetVisual(code);
-                    SelectVisual(visual, eVisualSource.Check);
+                    SelectVisual(visual, eSimulationVisualSource.Check);
                 };
             }
             return _checkCtrl;
@@ -1193,7 +1191,7 @@
                 {
                     var visualListHelper = GetVisualListHelper();
                     var visual = visualListHelper.GetVisual(code);
-                    SelectVisual(visual, eVisualSource.Warning);
+                    SelectVisual(visual, eSimulationVisualSource.Warning);
                 };
             }
             return _calcuWarningCtrl;
@@ -1531,130 +1529,29 @@
 
         #region 宸ュ喌鍒嗘瀽
 
-        //绮惧害璇勪及
-        private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //閫夋嫨杩涘彛姘存簮
+        private void SelectInputSource()
         {
-            var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.Get();
-
-            var workingHelper = GetWorkingHelper();
-            if (!workingHelper.Initialized)
+            var sources = GetSourceList();
+            if (sources != null)
             {
-                TipFormHelper.ShowWarn("宸ュ喌璁$畻澶辫触锛�");
-                return;
+                if (sources.Count == 1)
+                {
+                    SelectVisual(sources[0], eSimulationVisualSource.None);
+                }
+                else
+                {
+                    var source = sources.FirstOrDefault(x => x.Flags.Contains(HStation.Xhs.Flags.杩涘彛));
+                    if (source != null)
+                    {
+                        SelectVisual(source, eSimulationVisualSource.None);
+                    }
+                }
             }
-            var dlg = new HydroSingleWorkingEvaluationDlg();
-            dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult);
-            dlg.ShowDialog();
         }
 
         //姘存车鍒嗘瀽
         private void barBtnPumpAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1)
-            {
-                return;
-            }
-
-            var calcuResultHelper = GetCalcuResultHelper();
-            var vmList = new List<XhsSinglePumpViewModel>();
-            foreach (var pump in _hydroInfo.Pumps)
-            {
-                if (!pump.RatedN.HasValue)
-                {
-                    continue;
-                }
-                var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData;
-                var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData;
-                var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData;
-                if (qh == null)
-                {
-                    continue;
-                }
-
-                var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
-                var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
-                var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
-
-                var vm = new XhsSinglePumpViewModel();
-                vmList.Add(vm);
-                vm.ID = pump.ID;
-                vm.Name = pump.Name;
-                vm.Code = pump.Code;
-                vm.IsBp = true;
-                vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open;
-                vm.RatedHz = pump.RatedHz;
-                vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1);
-                vm.RatedSpeed = pump.RatedN.Value;
-                vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio);
-                vm.CurveQH = qhPtList;
-                vm.CurveQE = qePtList;
-                vm.CurveQP = qpPtList;
-
-                var calcuResultVisualDict = calcuResultHelper.GetVisualDict();
-                if (calcuResultVisualDict != null && calcuResultVisualDict.Count > 0)
-                {
-                    //var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult;
-                    //if (calcuResult != null)
-                    //{
-                    //    if (calcuResult.CalcuFlow.HasValue)
-                    //    {
-                    //        vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value);
-                    //    }
-
-                    //    var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult;
-                    //    var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult;
-                    //    if (calcuResultStart != null && calcuResultEnd != null)
-                    //    {
-                    //        if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue)
-                    //        {
-                    //            vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4);
-                    //        }
-                    //    }
-                    //}
-                }
-
-            }
-
-            //var dlg = new PumpParallelAnalyDlg();
-            //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);
-            //        }
-            //    });
-            //    //ShowSelectedProperty();
-            //    return true;
-            //};
-            //dlg.ShowDialog();
-        }
-
-        //鑳芥晥鍒嗘瀽
-        private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            var workingHelper = GetWorkingHelper();
-            if (!workingHelper.Initialized)
-            {
-                TipFormHelper.ShowWarn("宸ュ喌璁$畻澶辫触锛�");
-                return;
-            }
-            var dlg = new SimulationSingleWorkingEnergyDlg();
-            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
-            dlg.ShowDialog();
-        }
-
-        //鎹熷け鏇茬嚎
-        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var workingHelper = GetWorkingHelper();
             if (!workingHelper.Initialized)
@@ -1662,19 +1559,72 @@
                 TipFormHelper.ShowError("宸ュ喌璁$畻澶辫触锛�");
                 return;
             }
-            if (_visual == null)
+            var dlg = new SimulationSingleWorkingPumpAnalyDlg();
+            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
+            dlg.ShowDialog();
+        }
+
+        //绮惧害璇勪及
+        private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            var workingHelper = GetWorkingHelper();
+            if (!workingHelper.Initialized)
             {
-                TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢锛�");
+                TipFormHelper.ShowWarn("宸ュ喌璁$畻澶辫触锛�");
                 return;
             }
-            HydroVisualInfo visual = _visual;
-            if (_visual is HydroLinkInfo linkInfo)
+            var allMonitorList = await GetMonitorList();
+            var dlg = new HydroSingleWorkingEvaluationDlg();
+            dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult);
+            dlg.ShowDialog();
+        }
+
+        //鑳芥晥鍒嗘瀽
+        private async void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            var workingHelper = GetWorkingHelper();
+            if (!workingHelper.Initialized)
             {
-                var visualListHelper = GetVisualListHelper();
-                visual = visualListHelper.GetVisual(linkInfo.StartCode);
+                TipFormHelper.ShowWarn("宸ュ喌璁$畻澶辫触锛�");
+                return;
+            }
+            var allMonitorList = await GetMonitorList();
+            var dlg = new SimulationSingleWorkingEnergyDlg();
+            dlg.SetBindingData(workingHelper.Working, workingHelper.HydroInfo, allMonitorList, workingHelper.CalcuResult);
+            dlg.ShowDialog();
+        }
+
+        //鎹熷け鏇茬嚎
+        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_visual == null)
+            {
+                SelectInputSource();
+                if (_visual == null)
+                {
+                    TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒");
+                    return;
+                }
+            }
+
+            var workingHelper = GetWorkingHelper();
+            if (!workingHelper.Initialized)
+            {
+                TipFormHelper.ShowError("宸ュ喌璁$畻澶辫触锛�");
+                return;
+            }
+
+            HydroVisualInfo visual = _visual;
+            if (_visual is HydroLinkInfo link)
+            {
+                visual = GetVisual(link.StartCode);
             }
 
             var dlg = new HydroSingleWorkingLossCurveDlg();
+            dlg.HydroClickEvent += (code) =>
+            {
+                SelectVisual(code, eSimulationVisualSource.None);
+            };
             dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
             dlg.ShowDialog();
         }
@@ -1696,11 +1646,25 @@
         //缁煎悎鍒嗘瀽
         private async void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            if (_visual == null)
+            var workingHelper = GetWorkingHelper();
+            if (!workingHelper.Initialized)
             {
-                TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒");
+                TipFormHelper.ShowError("宸ュ喌璁$畻澶辫触锛�");
                 return;
             }
+            if (_visual == null)
+            {
+                if (_visual == null)
+                {
+                    SelectInputSource();
+                    if (_visual == null)
+                    {
+                        TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒");
+                        return;
+                    }
+                }
+            }
+
             HydroVisualInfo visual = _visual;
             if (_visual is HydroLinkInfo linkInfo)
             {
@@ -1708,15 +1672,8 @@
                 visual = visualListHelper.GetVisual(linkInfo.StartCode);
             }
 
-            var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.Get();
+            var allMonitorList = await GetMonitorList();
 
-            var workingHelper = GetWorkingHelper();
-            if (!workingHelper.Initialized)
-            {
-                TipFormHelper.ShowWarn("宸ュ喌璁$畻澶辫触锛�");
-                return;
-            }
             var dlg = new SimulationSingleWorkingAnalyDlg();
             dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult, visual);
             dlg.ShowDialog();

--
Gitblit v1.9.3