From d2dabd9187f2dc5a9f6ac3a90cf0577db1d883b8 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期六, 23 十一月 2024 10:13:23 +0800
Subject: [PATCH] 工况协调

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/06-mark/SimulationMarkHelper.cs                       |   42 +-
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/01-flow-effect/SimulationFlowEffectHelper.cs          |   34 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs     |   50 +-
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/02-label/SimulationCalcuResultLabelHelper.cs |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs                                      |   23 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/07-grading/SimulationGradingHelper.cs                 |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs                 |  690 ++++++++++++++++++++--------------------
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs               |   45 -
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs       |   95 +---
 9 files changed, 488 insertions(+), 497 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/01-flow-effect/SimulationFlowEffectHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/01-flow-effect/SimulationFlowEffectHelper.cs
index adc013c..5f933e4 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/01-flow-effect/SimulationFlowEffectHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/01-flow-effect/SimulationFlowEffectHelper.cs
@@ -139,24 +139,40 @@
         }
 
         /// <summary>
-        /// 鏇存柊
+        /// 璁剧疆
         /// </summary>
-        public void Update(HydroVisualInfo visual)
+        public void Set(HydroVisualInfo visual)
         {
             if (visual == null)
             {
                 return;
             }
-            var item = this.Items?.Find(x => x.Id == visual.Code);
-            if (item == null)
+            var oldItem = this.Items?.Find(x => x.Id == visual.Code);
+            if (oldItem != null)
             {
-                return;
+                if (this.Items != null)
+                {
+                    this.Items.Remove(oldItem);
+                }
+                this.Items?.Remove(oldItem);
             }
-            this.Items.Remove(item);
             var allCalcuResultVisualDict = _calcuResult?.GetVisualDict();
-            item = CreateItem(visual, allCalcuResultVisualDict);
-            this.Items.Add(item);
-            _views?.ForEach(async x => await x.UpdateFlowEffect(item));
+            var newItem = CreateItem(visual, allCalcuResultVisualDict);
+            if (newItem != null)
+            {
+                if (this.Items != null)
+                {
+                    this.Items.Add(newItem);
+                }
+            }
+            if (this.Visible)
+            {
+                if (newItem != null)
+                {
+                    _views?.ForEach(async x => await x.UpdateFlowEffect(newItem));
+                }
+            }
+
         }
 
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs
index 15ccf2e..9843933 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs
@@ -1,4 +1,5 @@
 锘縰sing DevExpress.Mvvm.Native;
+using Yw.EPAnet;
 using Yw.Model;
 
 namespace HStation.WinFrmUI
@@ -11,51 +12,39 @@
         /// <summary>
         /// 
         /// </summary>
-        public SimulationVisualVmListHelper(SimulationVisualListHelper helper)
+        public SimulationVisualVmListHelper(SimulationVisualListHelper visualListHelper, SimulationCalcuResultHelper calcuResultHelper)
         {
-            _helper = helper;
+            _visualListHelper = visualListHelper;
+            _calcuResultHelper = calcuResultHelper;
         }
 
-        private SimulationVisualListHelper _helper = null;//杈呭姪绫�
-        private HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅
+        private SimulationVisualListHelper _visualListHelper = null;//鍙鍒楄〃杈呭姪绫�
+        private SimulationCalcuResultHelper _calcuResultHelper = null;//璁$畻缁撴灉杈呭姪绫�
         private Dictionary<string, HydroVisualViewModel> _dict;//瀛楀吀
-
-        /// <summary>
-        /// 鍒濆鍖栨暟鎹�
-        /// </summary>
-        public void InitialData(HydroModelInfo hydroInfo, HydroCalcuResult calcuResult = null)
-        {
-            _hydroInfo = hydroInfo;
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            var allVisualDict = _helper.GetVisualDict();
-            if (allVisualDict != null && allVisualDict.Count > 0)
-            {
-                var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
-                _dict = new Dictionary<string, HydroVisualViewModel>();
-                foreach (var visualKeyValue in allVisualDict)
-                {
-                    var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _hydroInfo);
-                    var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
-                    if (calcuVisualResult != null)
-                    {
-                        vm.UpdateCalcuProperty(calcuVisualResult);
-                    }
-                    _dict.Add(visualKeyValue.Key, vm);
-                }
-            }
-        }
 
         /// <summary>
         /// 鑾峰彇鍙瑙嗗浘瀛楀吀
         /// </summary>
         public Dictionary<string, HydroVisualViewModel> GetVisualDict()
         {
-            if (_hydroInfo == null)
+            if (_dict == null)
             {
-                return default;
+                _dict = new Dictionary<string, HydroVisualViewModel>();
+                var allVisualDict = _visualListHelper.GetVisualDict();
+                if (allVisualDict != null && allVisualDict.Count > 0)
+                {
+                    var allCalcuResultVisualDict = _calcuResultHelper.GetVisualDict();
+                    foreach (var visualKeyValue in allVisualDict)
+                    {
+                        var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _visualListHelper.HydroInfo);
+                        var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
+                        if (calcuVisualResult != null)
+                        {
+                            vm.UpdateCalcuProperty(calcuVisualResult);
+                        }
+                        _dict.Add(visualKeyValue.Key, vm);
+                    }
+                }
             }
             return _dict;
         }
@@ -65,11 +54,8 @@
         /// </summary>
         public List<HydroVisualViewModel> GetVisualList()
         {
-            if (_hydroInfo == null)
-            {
-                return default;
-            }
-            return _dict?.Values.ToList();
+            var dict = GetVisualDict();
+            return dict.Values.ToList();
         }
 
         /// <summary>
@@ -77,13 +63,10 @@
         /// </summary>
         public HydroVisualViewModel GetVisual(string code)
         {
-            if (_dict == null || _dict.Count < 1)
+            var dict = GetVisualDict();
+            if (dict.ContainsKey(code))
             {
-                return default;
-            }
-            if (_dict.ContainsKey(code))
-            {
-                return _dict[code];
+                return dict[code];
             }
             return default;
         }
@@ -118,15 +101,8 @@
         /// </summary>
         public void UpdateProperty()
         {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_dict == null || _dict.Count < 1)
-            {
-                return;
-            }
-            _dict.ForEach(x => x.Value.UpdateProperty());
+            var dict = GetVisualDict();
+            dict.ForEach(x => x.Value.UpdateProperty());
         }
 
         /// <summary>
@@ -169,16 +145,9 @@
         /// </summary>
         public void UpdateCalcuProperty(HydroCalcuResult calcuResult)
         {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_dict == null || _dict.Count < 1)
-            {
-                return;
-            }
+            var dict = GetVisualDict();
             var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
-            foreach (var visualKeyValue in _dict)
+            foreach (var visualKeyValue in dict)
             {
                 var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
                 visualKeyValue.Value.UpdateCalcuProperty(calcuVisualResult);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
index 52d3293..727b387 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
@@ -10,70 +10,70 @@
         /// </summary>
         public SimulationCalcuResultHelper() { }
 
+        private HydroCalcuResult _calcuResult = null;//璁$畻缁撴灉
+        private Dictionary<string, HydroCalcuVisualResult> _dict;//璁$畻缁撴灉鍙瀛楀吀
+
         /// <summary>
         /// 璁$畻缁撴灉
         /// </summary>
         public HydroCalcuResult CalcuResult
         {
             get { return _calcuResult; }
-            set
-            {
-                _dict = value?.GetVisualDict();
-                _calcuResult = value;
-            }
         }
-        private HydroCalcuResult _calcuResult = null;
-
-        private Dictionary<string, HydroCalcuVisualResult> _dict;//鍙瀛楀吀
 
         /// <summary>
-        /// 鑾峰彇鍙缁撴灉瀛楀吀
+        /// 鍒濆鍖栨暟鎹�
         /// </summary>
-        public Dictionary<string, HydroCalcuVisualResult> GetVisualResultDict()
+        public void InitialData(HydroCalcuResult calcuResult)
+        {
+            _calcuResult = calcuResult;
+            _dict = _calcuResult.GetVisualDict();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍙瀛楀吀
+        /// </summary>
+        public Dictionary<string, HydroCalcuVisualResult> GetVisualDict()
         {
             return _dict;
         }
 
         /// <summary>
-        /// 鑾峰彇鍙缁撴灉鍒楄〃
+        /// 鑾峰彇鍙鍒楄〃
         /// </summary>
-        public List<HydroCalcuVisualResult> GetVisualResultList()
+        public List<HydroCalcuVisualResult> GetVisualList()
         {
-            if (CalcuResult == null)
-            {
-                return default;
-            }
             return _dict?.Values.ToList();
         }
 
         /// <summary>
-        /// 鑾峰彇鍙缁撴灉
+        /// 鑾峰彇鍙
         /// </summary>
-        public HydroCalcuVisualResult GetVisualResult(string code)
+        public HydroCalcuVisualResult GetVisual(string code)
         {
             return _dict?.GetValue(code);
         }
 
         /// <summary>
-        /// 鑾峰彇鍙缁撴灉鍒楄〃
+        /// 鑾峰彇鍙鍒楄〃
         /// </summary>
-        public List<HydroCalcuVisualResult> GetVisualResultList(List<string> codes)
+        public List<HydroCalcuVisualResult> GetVisualList(List<string> codes)
         {
-            return codes?.Select(x => GetVisualResult(x)).Where(x => x != null).ToList();
+            return codes?.Select(x => GetVisual(x)).Where(x => x != null).ToList();
         }
 
         /// <summary>
-        /// 鑾峰彇鑺傜偣缁撴灉鍒楄〃
+        /// 鑾峰彇鑺傜偣鍒楄〃
         /// </summary>
-        public List<HydroCalcuNodeResult> GetNodeResultList()
+        public List<HydroCalcuNodeResult> GetNodeList()
         {
             return CalcuResult?.NodeList?.ToList();
         }
 
         /// <summary>
-        /// 鑾峰彇绠℃缁撴灉鍒楄〃
+        /// 鑾峰彇绠℃鍒楄〃
         /// </summary>
-        public List<HydroCalcuLinkResult> GetLinkResultList()
+        public List<HydroCalcuLinkResult> GetLinkList()
         {
             return CalcuResult?.LinkList?.ToList();
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/02-label/SimulationCalcuResultLabelHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/02-label/SimulationCalcuResultLabelHelper.cs
index f8d17fa..3124855 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/02-label/SimulationCalcuResultLabelHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/02-label/SimulationCalcuResultLabelHelper.cs
@@ -61,7 +61,7 @@
             {
                 return default;
             }
-            var allCalcuResultVisualDict = _calcuResultHelper.GetVisualResultDict();
+            var allCalcuResultVisualDict = _calcuResultHelper.GetVisualDict();
             var allCalcuLabels = new List<LogicCalcuCustomLabel>();
             hydroInfo.Pumps?.ForEach(x =>
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/06-mark/SimulationMarkHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/06-mark/SimulationMarkHelper.cs
index 5d60ccd..8a1270d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/06-mark/SimulationMarkHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/06-mark/SimulationMarkHelper.cs
@@ -98,9 +98,25 @@
         }
 
         /// <summary>
-        /// 鏇存柊
+        /// 璁剧疆
         /// </summary>
-        public void Update(HydroVisualInfo visual)
+        public void Set()
+        {
+            if (this.Visible)
+            {
+                var leadLabels = this.Results?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, null)).ToList();
+                _views?.ForEach(x => x.SetLogicMarkLeadLabels(leadLabels));
+            }
+            else
+            {
+                _views?.ForEach(x => x.ClearLogicMarkLeadLabels());
+            }
+        }
+
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        public void Set(HydroVisualInfo visual)
         {
             if (visual == null)
             {
@@ -121,31 +137,15 @@
         }
 
         /// <summary>
-        /// 鏇存柊
+        /// 璁剧疆
         /// </summary>
-        public void Update(List<HydroVisualInfo> visuals)
+        public void Set(List<HydroVisualInfo> visuals)
         {
             if (visuals == null || visuals.Count < 1)
             {
                 return;
             }
-            visuals.ForEach(x => Update(x));
-        }
-
-        /// <summary>
-        /// 璁剧疆
-        /// </summary>
-        public void Set()
-        {
-            if (this.Visible)
-            {
-                var leadLabels = this.Results?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, null)).ToList();
-                _views?.ForEach(x => x.SetLogicMarkLeadLabels(leadLabels));
-            }
-            else
-            {
-                _views?.ForEach(x => x.ClearLogicMarkLeadLabels());
-            }
+            visuals.ForEach(x => Set(x));
         }
 
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/07-grading/SimulationGradingHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/07-grading/SimulationGradingHelper.cs
index 6a507f0..b81494e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/07-grading/SimulationGradingHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/07-grading/SimulationGradingHelper.cs
@@ -117,7 +117,7 @@
         private async Task<List<HydroGradingResultViewModel>> GetResultList()
         {
             var allGradingList = await GetGradingList();
-            _allResultList = HydroGradingHelper.GetResultList(_visualListHelper.HydroInfo, allGradingList, this.Applies, _calcuResultHelper.GetVisualResultDict());
+            _allResultList = HydroGradingHelper.GetResultList(_visualListHelper.HydroInfo, allGradingList, this.Applies, _calcuResultHelper.GetVisualDict());
             if (_allResultList == null)
             {
                 _allResultList = new List<HydroGradingResultViewModel>();
@@ -162,7 +162,7 @@
                 _allResultList.Remove(oldResult);
             }
             var allGradingList = await GetGradingList();
-            var newResult = HydroGradingHelper.GetResult(visual, allGradingList, this.Applies, _calcuResultHelper.GetVisualResultDict());
+            var newResult = HydroGradingHelper.GetResult(visual, allGradingList, this.Applies, _calcuResultHelper.GetVisualDict());
             if (newResult != null)
             {
                 if (_allResultList != null)
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
index 38a4fb0..6705ce7 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -1,5 +1,6 @@
 锘縰sing HStation.WinFrmUI.PhartRelation;
 using HStation.WinFrmUI.Xhs;
+using Yw.Model;
 
 namespace HStation.WinFrmUI
 {
@@ -28,34 +29,34 @@
         /// <summary>
         /// 鏋勪欢鏌ョ湅浜嬩欢
         /// </summary>
-        public event Action<HydroVisualViewModel> HydroViewEvent;
+        public event Action<HydroVisualInfo> HydroViewEvent;
 
         /// <summary>
         /// 寮鸿皟杩炴帴缁勪欢浜嬩欢
         /// 绗竴涓弬鏁颁负缁勪欢
         /// 绗簩涓弬鏁颁负杩炴帴鑺傜偣Code
         /// </summary>
-        public event Action<HydroLinkViewModel, string> BlinkLinkNodeEvent;
+        public event Action<HydroLinkInfo, string> BlinkLinkNodeEvent;
 
         /// <summary>
         /// 灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
-        public event Action<HydroVisualViewModel> PropertyValueChangedEvent;
+        public event Action<HydroVisualInfo> PropertyValueChangedEvent;
 
         /// <summary>
         /// 鏍囨敞灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
-        public event Action<HydroVisualViewModel> MarkPropertyValueChangedEvent;
+        public event Action<HydroVisualInfo> MarkPropertyValueChangedEvent;
 
         /// <summary>
         /// 鍒嗙骇灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
-        public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent;
+        public event Action<HydroVisualInfo> GradingPropertyValueChangedEvent;
 
         /// <summary>
         /// 姘存祦鍔ㄧ敾灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
-        public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent;
+        public event Action<HydroVisualInfo> FlowEffectPropertyValueChangedEvent;
 
         #endregion
 
@@ -284,11 +285,7 @@
         //鏋勪欢鏌ョ湅浜嬩欢
         private void HydroVisualPropertyCtrl1_HydroViewEvent(HydroVisualViewModel vm)
         {
-            if (vm == null)
-            {
-                return;
-            }
-            this.HydroViewEvent?.Invoke(vm);
+            this.HydroViewEvent?.Invoke(vm?.Vmo);
         }
 
         //寮鸿皟杩炴帴鑺傜偣
@@ -302,47 +299,31 @@
             {
                 return;
             }
-            this.BlinkLinkNodeEvent?.Invoke(vm, linkNodeCode);
+            this.BlinkLinkNodeEvent?.Invoke(vm?.Vmo, linkNodeCode);
         }
 
         //灞炴�у彂鐢熸敼鍙�
         private void HydroVisualPropertyCtrl1_PropertyValueChangedEvent(HydroVisualViewModel vm)
         {
-            if (vm == null)
-            {
-                return;
-            }
-            this.PropertyValueChangedEvent?.Invoke(vm);
+            this.PropertyValueChangedEvent?.Invoke(vm?.Vmo);
         }
 
         //鏍囨敞灞炴�у彂鐢熸敼鍙�
         private void HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent(HydroVisualViewModel vm)
         {
-            if (vm == null)
-            {
-                return;
-            }
-            this.MarkPropertyValueChangedEvent?.Invoke(vm);
+            this.MarkPropertyValueChangedEvent?.Invoke(vm?.Vmo);
         }
 
         //鍒嗙骇灞炴�у彂鐢熸敼鍙�
         private void HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent(HydroVisualViewModel vm)
         {
-            if (vm == null)
-            {
-                return;
-            }
-            this.GradingPropertyValueChangedEvent?.Invoke(vm);
+            this.GradingPropertyValueChangedEvent?.Invoke(vm?.Vmo);
         }
 
         //姘存祦鍔ㄧ敾灞炴�у彂鐢熸敼鍙�
         private void HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent(HydroVisualViewModel vm)
         {
-            if (vm == null)
-            {
-                return;
-            }
-            this.FlowEffectPropertyValueChangedEvent?.Invoke(vm);
+            this.FlowEffectPropertyValueChangedEvent?.Invoke(vm?.Vmo);
         }
 
         #endregion
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 bea98c7..51ca1cc 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,31 +1,10 @@
-锘縢lobal using Yw.EPAnet;
-using DevExpress.CodeParser;
-using DevExpress.Diagram.Core.Native;
+锘縰sing DevExpress.Diagram.Core.Native;
 using DevExpress.Mvvm.Native;
-using DevExpress.Office.Utils;
-using DevExpress.PivotGrid.QueryMode.TuplesTree;
-using DevExpress.Utils.Extensions;
-using DevExpress.Xpo.Helpers;
-using DevExpress.XtraBars.Ribbon;
-using DevExpress.XtraPrinting.Native;
-using DevExpress.XtraRichEdit.Layout;
-using DevExpress.XtraSpreadsheet.Commands;
 using HStation.WinFrmUI.PhartRelation;
-using Microsoft.Web.WebView2.Core;
-using NetTaste;
 using NPOI.SS.Formula.Functions;
-using System.Collections.Generic;
 using System.Diagnostics;
-using System.Windows.Media;
-using System.Windows.Media.Media3D;
-using Yw.DAL.Basic;
-using Yw.Hydro;
 using Yw.Model;
-using Yw.Pump;
 using Yw.Vmo;
-using Yw.WinFrmUI.Bimface;
-using Yw.WinFrmUI.Hydro;
-using static DevExpress.Map.OpenGL.OpenGLCheckingHelper;
 
 namespace HStation.WinFrmUI
 {
@@ -91,9 +70,14 @@
             ShowPropertyCtrl();
         }
 
-        private void InitialUI()
+        //鍒濆鍖朥I
+        private async void InitialUI()
         {
-            InitialWorkingList();
+            var workingTupleHelper = GetWorkingTupleHelper();
+            var allWorkingList = await workingTupleHelper.GetWorkingList();
+            InitialUIWorkingList(allWorkingList);
+            var working = allWorkingList?.LastOrDefault();
+            SetUIWorking(working);
         }
 
 
@@ -105,6 +89,10 @@
         //鑾峰彇 bimface 鎺т欢
         private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl()
         {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
             if (_bimfaceCtrl == null)
             {
                 _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
@@ -118,14 +106,11 @@
                     }
                     InitialUI();
                 };
-                _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) =>
+                _bimfaceCtrl.HydroMouseLeftClickEvent += (code) =>
                 {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢
-                    if (_hydroInfo == null)
-                    {
-                        return;
-                    }
-                    //_selectedVisual = obj;
-                    //ShowSelectedProperty();
+                    var visualListHelper = GetVisualListHelper();
+                    var visual = visualListHelper.GetVisual(code);
+                    SelectVisual(visual, eVisualSource.Bimface);
                 };
             }
             return _bimfaceCtrl;
@@ -139,11 +124,6 @@
             this.tabPageBimface.Controls.Add(bimfaceCtrl);
         }
 
-        private void SelectBimfaceParter()
-        {
-
-        }
-
         #endregion
 
         #region Q3d鎺т欢
@@ -154,20 +134,20 @@
         //鑾峰彇 Q3d 鎺т欢
         private XhsProjectSimulationQ3dCtrl GetQ3dCtrl()
         {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
             if (_q3dCtrl == null)
             {
                 _q3dCtrl = new XhsProjectSimulationQ3dCtrl();
                 _q3dCtrl.Dock = DockStyle.Fill;
                 _q3dCtrl.InitialData(() => _hydroInfo);
-                _q3dCtrl.SelectedPartersChangedEvent += (obj) =>
+                _q3dCtrl.SelectedPartersChangedEvent += (codes) =>
                 {
-                    if (_hydroInfo == null)
-                    {
-                        return;
-                    }
-                    var allParterList = _hydroInfo.GetAllVisuals();
-                    _visual = allParterList?.Find(x => x.Code == obj?.FirstOrDefault());
-                    //ShowSelectedProperty();
+                    var visualListHelper = GetVisualListHelper();
+                    var visuals = visualListHelper.GetVisualList(codes);
+                    SelectVisual(visuals?.LastOrDefault(), eVisualSource.Q3d);
                 };
             }
             return _q3dCtrl;
@@ -179,6 +159,259 @@
             var q3dCtrl = GetQ3dCtrl();
             this.tabPageQ3d.Controls.Clear();
             this.tabPageQ3d.Controls.Add(q3dCtrl);
+        }
+
+        #endregion
+
+        #region 灞炴�ф帶浠�
+
+        //灞炴�ф帶浠�
+        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
+
+        //鑾峰彇灞炴�ф帶浠�
+        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_propertyCtrl == null)
+            {
+                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
+                _propertyCtrl.Dock = DockStyle.Fill;
+                _propertyCtrl.HydroViewEvent += (visual) =>
+                {
+                    SelectVisual(visual, eVisualSource.Property);
+                };
+                _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) =>
+                { //寮鸿皟杩炴帴鑺傜偣
+                    if (link == null)
+                    {
+                        return;
+                    }
+                    var visualListHelper = GetVisualListHelper();
+                    var linkNode = visualListHelper.GetVisual(linkNodeCode);
+                    if (linkNode == null)
+                    {
+                        return;
+                    }
+                    var blinkCodes = new List<string>();
+                    if (linkNode.GetType() == typeof(HydroJunctionInfo))
+                    {
+                        var allLinkList = visualListHelper.GetLinkList();
+                        if (allLinkList == null || allLinkList.Count < 1)
+                        {
+                            return;
+                        }
+                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList();
+                        if (linkList == null || linkList.Count < 1)
+                        {
+                            return;
+                        }
+                        blinkCodes.AddRange(linkList.Select(x => x.Code));
+                    }
+                    else
+                    {
+                        blinkCodes.Add(linkNodeCode);
+                    }
+
+                    await _bimfaceCtrl?.ClearBlinkComponents();
+                    await _bimfaceCtrl?.SetBlinkComponents(blinkCodes);
+                    await Task.Delay(5000);
+                    await _bimfaceCtrl?.ClearBlinkComponents();
+                };
+                _propertyCtrl.PropertyValueChangedEvent += async (visual) =>
+                {
+                    if (visual == null)
+                    {
+                        return;
+                    }
+                    UpdateVisualListCtrl();
+                    var gradingHelper = await GetGradingHelper();
+                    gradingHelper.Set();
+                };
+                _propertyCtrl.MarkPropertyValueChangedEvent += async (visual) =>
+                {
+                    //鏍囨敞灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞
+                    var markHelper = await GetMarkHelper();
+                    markHelper.Set(visual);
+                };
+                _propertyCtrl.GradingPropertyValueChangedEvent += async (visual) =>
+                {
+                    //鍒嗙骇灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇褰撳墠鏄惁鏈夊垎绾у睍绀猴紝鑻ユ湁鍒欐洿鏂板垎绾э紝鏈�濂芥槸鏇存柊鍗曚釜鍒嗙骇
+                    var gradingHelper = await GetGradingHelper();
+                    gradingHelper.Set(visual);
+                };
+                _propertyCtrl.FlowEffectPropertyValueChangedEvent += async (visual) =>
+                {
+                    //娴佸悜灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜
+                    var flowEffectHelper = await GetFlowEffectHelper();
+                    flowEffectHelper.Set(visual);
+                };
+
+            }
+            return _propertyCtrl;
+        }
+
+        //灞炴�ф帶浠舵槸鍚﹀彲瑙�
+        private bool IsPropertyCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerRight.Controls.Count > 0)
+                    {
+                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず灞炴�ф帶浠�
+        private void ShowPropertyCtrl()
+        {
+            if (IsPropertyCtrlVisible)
+            {
+                return;
+            }
+            var propertyCtrl = GetPropertyCtrl();
+            this.controlContainerRight.Controls.Clear();
+            this.controlContainerRight.Controls.Add(propertyCtrl);
+            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlRight.Text = "灞炴��";
+            this.docPnlRight.Width = 300;
+        }
+
+        //璁剧疆灞炴�ф帶浠�
+        private async void SetPropertyCtrl(HydroVisualInfo visual)
+        {
+            ShowPropertyCtrl();
+            var visualVmListHelper = await GetVisualVmListHelper();
+            var vm = visualVmListHelper.GetVisual(visual);
+            _propertyCtrl.SelectedObject = vm;
+        }
+
+        //鏇存柊灞炴�ф帶浠�
+        private void UpdatePropertyCtrl()
+        {
+            _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)
+        {
+            _visual = visual;
+            switch (source)
+            {
+                case eVisualSource.None:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Bimface:
+                    {
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Q3d:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Property:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                    }
+                    break;
+                case eVisualSource.List:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Search:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Monitor:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Check:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Calcu:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                case eVisualSource.Warning:
+                    {
+                        _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                        this.barBtnSetMonitor.Enabled = visual != null;
+                        SetPropertyCtrl(visual);
+                    }
+                    break;
+                default: break;
+            }
         }
 
         #endregion
@@ -218,10 +451,8 @@
             if (_visualVmListHelper == null)
             {
                 var visualListHelper = GetVisualListHelper();
-                _visualVmListHelper = new SimulationVisualVmListHelper(visualListHelper);
-                var workingTupleHelper = GetWorkingTupleHelper();
-                var calcuResult = await workingTupleHelper.GetCalcuResult(_working);
-                _visualVmListHelper.InitialData(_hydroInfo, calcuResult);
+                var calcuResultHelper = await GetCalcuResultHelper();
+                _visualVmListHelper = new SimulationVisualVmListHelper(visualListHelper, calcuResultHelper);
             }
             return _visualVmListHelper;
         }
@@ -367,238 +598,6 @@
         }
 
         #endregion
-
-        #endregion
-
-        #region 閫夋嫨鏋勪欢
-
-        //鍙鏉ユ簮
-        protected enum eVisualSource
-        {
-            None,
-            Bimface,
-            Q3d,
-            Check,
-            Property,
-            Calcu,
-            Monitor,
-            Warning,
-            Search,
-        }
-
-        //閫夋嫨鏋勪欢
-        private Yw.Model.HydroVisualInfo _visual = null;
-
-        //閫夋嫨鏋勪欢
-        private void SelectVisual(HydroVisualInfo visual, eVisualSource source)
-        {
-            if (visual == null)
-            {
-                switch (source)
-                {
-                    case eVisualSource.None:
-                        {
-                            _bimfaceCtrl?.ZoomAndSelectComponent(null);
-                            this.barBtnSetMonitor.Enabled = false;
-                            ClearPropertyCtrl();
-                        }
-                        break;
-                    case eVisualSource.Bimface:
-                        {
-                            this.barBtnSetMonitor.Enabled = false;
-                            ClearPropertyCtrl();
-                        }
-                        break;
-                    case eVisualSource.Check:
-                        {
-                            _bimfaceCtrl?.ZoomAndSelectComponent(null);
-                            this.barBtnSetMonitor.Enabled = false;
-                            ClearPropertyCtrl();
-                        }
-                        break;
-                    case eVisualSource.Property:
-                        {
-                            _bimfaceCtrl?.ZoomAndSelectComponent(null);
-                            this.barBtnSetMonitor.Enabled = false;
-                        }
-                        break;
-                    case eVisualSource.Calcu:
-                        {
-                            _bimfaceCtrl?.ZoomAndSelectComponent(null);
-                            this.barBtnSetMonitor.Enabled = false;
-                            ClearPropertyCtrl();
-                        }
-                        break;
-                    default: break;
-                }
-                _visual = null;
-                return;
-            }
-            if (_visual == null)
-            {
-
-                _visual = visual;
-                return;
-            }
-            if (_visual.Code == visual.Code)
-            {
-                UpdatePropertyCtrl();
-                return;
-            }
-            _visual = visual;
-            _bimfaceCtrl?.ZoomAndSelectComponent(visual.Code);
-            this.barBtnSetMonitor.Enabled = true;
-            SetPropertyCtrl(visual);
-        }
-
-        #endregion
-
-        #region 灞炴�ф帶浠�
-
-        //灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
-
-        //鑾峰彇灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
-        {
-            if (_hydroInfo == null)
-            {
-                return default;
-            }
-            if (_propertyCtrl == null)
-            {
-                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
-                _propertyCtrl.Dock = DockStyle.Fill;
-                _propertyCtrl.HydroViewEvent += (visual) =>
-                {
-                    if (visual == null)
-                    {
-                        return;
-                    }
-                    _bimfaceCtrl?.ZoomToComponent(visual.Code);
-                };
-                _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) =>
-                { //寮鸿皟杩炴帴鑺傜偣
-                    if (link == null)
-                    {
-                        return;
-                    }
-                    var visualListHelper = GetVisualListHelper();
-                    var linkNode = visualListHelper.GetVisual(linkNodeCode);
-                    if (linkNode == null)
-                    {
-                        return;
-                    }
-                    var blinkCodes = new List<string>();
-                    if (linkNode.GetType() == typeof(HydroJunctionInfo))
-                    {
-                        var allLinkList = visualListHelper.GetLinkList();
-                        if (allLinkList == null || allLinkList.Count < 1)
-                        {
-                            return;
-                        }
-                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList();
-                        if (linkList == null || linkList.Count < 1)
-                        {
-                            return;
-                        }
-                        blinkCodes.AddRange(linkList.Select(x => x.Code));
-                    }
-                    else
-                    {
-                        blinkCodes.Add(linkNodeCode);
-                    }
-
-                    await _bimfaceCtrl?.ClearBlinkComponents();
-                    await _bimfaceCtrl?.SetBlinkComponents(blinkCodes);
-                    await Task.Delay(5000);
-                    await _bimfaceCtrl?.ClearBlinkComponents();
-                };
-                _propertyCtrl.PropertyValueChangedEvent += (visual) =>
-                {
-                    if (visual == null)
-                    {
-                        return;
-                    }
-                    UpdateVisualListCtrl();
-                    //ApplyGradingResultList(visual);
-                };
-                _propertyCtrl.MarkPropertyValueChangedEvent += (visual) =>
-                {
-                    //鏍囨敞灞炴�у彂鐢熸敼鍙�
-                    //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞
-                };
-                _propertyCtrl.GradingPropertyValueChangedEvent += (parter) =>
-                {
-                    //鍒嗙骇灞炴�у彂鐢熸敼鍙�
-                    //鍒ゆ柇褰撳墠鏄惁鏈夊垎绾у睍绀猴紝鑻ユ湁鍒欐洿鏂板垎绾э紝鏈�濂芥槸鏇存柊鍗曚釜鍒嗙骇
-                };
-                _propertyCtrl.FlowEffectPropertyValueChangedEvent += (visual) =>
-                {
-                    //娴佸悜灞炴�у彂鐢熸敼鍙�
-                    //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜
-                };
-
-            }
-            return _propertyCtrl;
-        }
-
-        //灞炴�ф帶浠舵槸鍚﹀彲瑙�
-        private bool IsPropertyCtrlVisible
-        {
-            get
-            {
-                if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
-                {
-                    if (this.controlContainerRight.Controls.Count > 0)
-                    {
-                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
-                        {
-                            return true;
-                        }
-                    }
-                }
-                return false;
-            }
-        }
-
-        //鏄剧ず灞炴�ф帶浠�
-        private void ShowPropertyCtrl()
-        {
-            if (IsPropertyCtrlVisible)
-            {
-                return;
-            }
-            var propertyCtrl = GetPropertyCtrl();
-            this.controlContainerRight.Controls.Clear();
-            this.controlContainerRight.Controls.Add(propertyCtrl);
-            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-            this.docPnlRight.Text = "灞炴��";
-            this.docPnlRight.Width = 300;
-        }
-
-        //璁剧疆灞炴�ф帶浠�
-        private void SetPropertyCtrl(HydroVisualInfo visual)
-        {
-            ShowPropertyCtrl();
-            //  var vm = GetVisualViewModel(visual);
-            //  _propertyCtrl.SelectedObject = vm;
-        }
-
-        //鏇存柊灞炴�ф帶浠�
-        private void UpdatePropertyCtrl()
-        {
-            _propertyCtrl?.UpdateRows();
-        }
-
-        //娓呯悊灞炴�ф帶浠�
-        private void ClearPropertyCtrl()
-        {
-            if (_propertyCtrl != null)
-            {
-                _propertyCtrl.SelectedObject = null;
-            }
-        }
 
         #endregion
 
@@ -1731,7 +1730,8 @@
             if (_calcuResultHelper == null)
             {
                 _calcuResultHelper = new SimulationCalcuResultHelper();
-                _calcuResultHelper.CalcuResult = await GetCalcuResult();
+                var calcuResult = await GetCalcuResult();
+                _calcuResultHelper.InitialData(calcuResult);
             }
             return _calcuResultHelper;
         }
@@ -2120,55 +2120,41 @@
                     TipFormHelper.ShowError("鍒涘缓宸ュ喌澶辫触锛岃绠楀彇娑堬紒");
                     return;
                 }
-                allWorkingList.Add(vmo);
 
                 _hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
+
                 //鏍¢獙
                 var checkResult = _hydroInfo.Check();
                 if (!checkResult.Succeed)
                 {
-                    workingTupleHelper.AppendTuple(vmo, checkResult, null);
-                    AppendWorking(vmo);
                     ShowCheckCtrl(checkResult);
-                    TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
-                    return;
-                }
-
-                WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�...");
-
-
-                //await Task.Delay(5000);
-                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
-
-
-                WaitFormHelper.HideWaitForm();
-                if (calcuResult.Succeed)
-                {
-                    workingTupleHelper.AppendTuple(vmo, checkResult, calcuResult);
-                    AppendWorking(vmo);
-                    var visualVmListHelper = await GetVisualVmListHelper();
-                    visualVmListHelper.UpdateProperty();
-                    visualVmListHelper.UpdateCalcuProperty(calcuResult);
-                    UpdateVisualListCtrl();
-                    UpdatePropertyCtrl();
-                    var calcuResultHelper = await GetCalcuResultHelper();
-                    calcuResultHelper.CalcuResult = calcuResult;
-                    var calcuResultLabelHelper = await GetCalcuResultLabelHelper();
-                    calcuResultLabelHelper.Set();
-                    TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
-                    var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList();
-                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
+                    workingTupleHelper.AppendTuple(vmo, checkResult, null);
+                    SetUIWorking(vmo);
+                    TipFormHelper.ShowError("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
                 }
                 else
                 {
-                    ShowCalcuFailedCtrl(calcuResult);
-                    TipFormHelper.ShowError("璁$畻澶辫触锛�");
+                    WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�...");
+                    //await Task.Delay(3000);
+                    var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
+                    WaitFormHelper.HideWaitForm();
+                    workingTupleHelper.AppendTuple(vmo, checkResult, calcuResult);
+                    if (calcuResult.Succeed)
+                    {
+                        if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
+                        {
+                            ShowCalcuWarningCtrl(calcuResult);
+                        }
+                        TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
+                    }
+                    else
+                    {
+                        ShowCalcuFailedCtrl(calcuResult);
+                        TipFormHelper.ShowError("璁$畻澶辫触锛�");
+                    }
                 }
-                var gradingHelper = await GetGradingHelper();
-                gradingHelper.InitialData();
-                gradingHelper.Set();
-                UpdateVisualListCtrl();
-                UpdatePropertyCtrl();
+                AppendUIWorking(vmo);
+                SetUIWorking(vmo);
             };
 
             dlg.ShowDialog();
@@ -2203,44 +2189,54 @@
             return await workingTupleHelper.GetCalcuResult(_working);
         }
 
-        //鍒濆鍖栧伐鍐靛垪琛�
-        private async void InitialWorkingList()
+        //鍒濆鍖朥I宸ュ喌鍒楄〃
+        private void InitialUIWorkingList(List<HydroWorkingVmo> allWorkingList)
         {
-            var workingTupleList = GetWorkingTupleHelper();
-            var allWorkingList = await workingTupleList.GetWorkingList();
             this.repositoryItemImageComboBox1.Items.BeginUpdate();
             this.repositoryItemImageComboBox1.Items.Clear();
             if (allWorkingList != null && allWorkingList.Count > 0)
             {
                 allWorkingList.ForEach(x => this.repositoryItemImageComboBox1.Items.Add(x.Name, x, -1));
-                this.barEditCurrentWorking.EditValue = allWorkingList.Last();
             }
             this.repositoryItemImageComboBox1.Items.EndUpdate();
         }
 
-        //澧炲姞褰撳墠宸ュ喌
-        private void AppendWorking(HydroWorkingVmo working)
+        //澧炲姞UI宸ュ喌
+        private void AppendUIWorking(HydroWorkingVmo working)
         {
             this.repositoryItemImageComboBox1.Items.BeginUpdate();
             this.repositoryItemImageComboBox1.Items.Add(working.Name, working, -1);
             this.repositoryItemImageComboBox1.Items.EndUpdate();
-            this.barEditCurrentWorking.EditValue = working;
         }
 
-        //璁剧疆褰撳墠宸ュ喌
-        private async void SetCurrentWorking(HydroWorkingVmo working)
+        //璁剧疆UI宸ュ喌
+        private void SetUIWorking(HydroWorkingVmo working)
         {
-            _working = working;
             this.barEditCurrentWorking.EditValue = working;
-            var workingTupleHelper = GetWorkingTupleHelper();
-
         }
 
         //褰撳墠宸ュ喌鍙戠敓鏀瑰彉
-        private void barEditCurrentWorking_EditValueChanged(object sender, EventArgs e)
+        private async void barEditCurrentWorking_EditValueChanged(object sender, EventArgs e)
         {
-            var working = this.barEditCurrentWorking.EditValue as HydroWorkingVmo;
-            SetCurrentWorking(working);
+            _working = this.barEditCurrentWorking.EditValue as HydroWorkingVmo;
+            var calcuResult = await GetCalcuResult();
+
+            //璁$畻缁撴灉杈呭姪绫�
+            var calcuResultHelper = await GetCalcuResultHelper();
+            calcuResultHelper.InitialData(calcuResult);
+
+            //宸ュ喌鎺т欢
+            UpdateWorkingCtrl();
+            SelectWorkingCtrl(_working);
+
+            //鍙瑙嗗浘鍒楄〃
+            var visualVmListHelper = await GetVisualVmListHelper();
+            visualVmListHelper.UpdateCalcuProperty(calcuResult);
+
+            //璁$畻鏍囩
+            var calcuResultLabelHelper = await GetCalcuResultLabelHelper();
+            calcuResultLabelHelper.Set();
+
         }
 
         #endregion
@@ -2251,19 +2247,15 @@
         private HydroWorkingTreeCtrl _workingCtrl = null;
 
         //鑾峰彇宸ュ喌鎺т欢
-        private async Task<HydroWorkingTreeCtrl> GetWorkingCtrl()
+        private HydroWorkingTreeCtrl GetWorkingCtrl()
         {
             if (_workingCtrl == null)
             {
                 _workingCtrl = new HydroWorkingTreeCtrl();
                 _workingCtrl.Dock = DockStyle.Fill;
-                _workingCtrl.FocusedChangedEvent += (vmo) =>
-                {
-
-                };
                 _workingCtrl.HydroClickEvent += (working) =>
                 {
-                    SetCurrentWorking(working);
+                    SetUIWorking(working);
                 };
             }
             return _workingCtrl;
@@ -2291,7 +2283,7 @@
         //鏄剧ず宸ュ喌鎺т欢
         private async void ShowWorkingCtrl()
         {
-            var workingCtrl = await GetWorkingCtrl();
+            var workingCtrl = GetWorkingCtrl();
             if (!IsWorkingCtrlVisible)
             {
                 this.controlContainerRight.Controls.Clear();
@@ -2314,8 +2306,18 @@
             }
             var workingTupleHelper = GetWorkingTupleHelper();
             var allWorkingList = await workingTupleHelper.GetWorkingList();
-            var workingCtrl = await GetWorkingCtrl();
+            var workingCtrl = GetWorkingCtrl();
             workingCtrl.SetBindingData(allWorkingList);
+        }
+
+        //閫夋嫨宸ュ喌鎺т欢
+        private void SelectWorkingCtrl(HydroWorkingVmo working)
+        {
+            if (IsWorkingCtrlVisible)
+            {
+                var workingCtrl = GetWorkingCtrl();
+                workingCtrl.Select(working);
+            }
         }
 
         //宸ュ喌鍒楄〃鐐瑰嚮
@@ -2436,7 +2438,7 @@
                 vm.CurveQE = qePtList;
                 vm.CurveQP = qpPtList;
 
-                var calcuResultVisualDict = calcuResultHelper.GetVisualResultDict();
+                var calcuResultVisualDict = calcuResultHelper.GetVisualDict();
                 if (calcuResultVisualDict != null && calcuResultVisualDict.Count > 0)
                 {
                     //var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs
index 8e26196..3a3f01b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs
@@ -46,6 +46,29 @@
         }
 
         /// <summary>
+        /// 閫夋嫨
+        /// </summary>
+        public void Select(HydroWorkingVmo working)
+        {
+            var allNodeList = this.treeList1.GetNodeList();
+            foreach (var node in allNodeList)
+            {
+                var vm = this.treeList1.GetDataRecordByNode(node) as HydroWorkingTreeViewModel;
+                if (vm != null)
+                {
+                    if (vm.Vmo.ID == working.ID)
+                    {
+                        if (this.treeList1.FocusedNode != node)
+                        {
+                            this.treeList1.FocusedNode = node;
+                        }
+                        return;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
         /// 鍏ㄩ儴灞曞紑
         /// </summary>
         public void ExpandAll()

--
Gitblit v1.9.3