From f7253b1a5b2a945d88e6ab230910a78c2cbbc7ad Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期二, 24 十二月 2024 20:31:31 +0800
Subject: [PATCH] 批量问题修改

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs |  730 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 531 insertions(+), 199 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 5bc1bf3..b6a8882 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,4 +1,6 @@
-锘縰sing DevExpress.Diagram.Core.Native;
+锘縰sing Castle.Core.Logging;
+using DevExpress.CodeParser;
+using DevExpress.Diagram.Core.Native;
 using DevExpress.Mvvm.Native;
 using DevExpress.Utils.MVVM;
 using DevExpress.XtraMap;
@@ -96,6 +98,129 @@
             ShowBimfaceCtrl();
             ShowQ3dCtrl();
             ShowPropertyCtrl();
+            InitialSvgImages();
+        }
+
+        //鍒濆鍖朣vg鍥剧墖
+        private void InitialSvgImages()
+        {
+            //鐩戞祴
+            this.barBtnDockingMonitor.ImageOptions.SvgImage = HydroMonitorSvgImageHelper.Docking;
+            this.barBtnAnalyseMonitor.ImageOptions.SvgImage = HydroMonitorSvgImageHelper.Analyse;
+
+            //姘村簱
+            this.barBtnSetReservoirList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Tank;
+            this.barBtnSetReservoirList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetReservoirList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetReservoirList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //姘存睜
+            this.barBtnSetTankList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Tank;
+            this.barBtnSetTankList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetTankList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetTankList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //姘寸
+            this.barBtnSetWaterboxList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Tank;
+            this.barBtnSetWaterboxList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetWaterboxList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetWaterboxList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //闂峰ご
+            this.barBtnSetBluntheadList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Blunthead;
+            this.barBtnSetBluntheadList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetBluntheadList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetBluntheadList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //寮ご
+            this.barBtnSetElbowsList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Elbow;
+            this.barBtnSetElbowsList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetElbowsList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetElbowsList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //涓夐��
+            this.barBtnSetThreelinkList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Threelink;
+            this.barBtnSetThreelinkList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetThreelinkList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetThreelinkList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鍥涢��
+            this.barBtnSetFourlinkList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Fourlink;
+            this.barBtnSetFourlinkList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetFourlinkList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetFourlinkList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //娑堢伀鏍�
+            this.barBtnSetHydrantList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Hydrant;
+            this.barBtnSetHydrantList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetHydrantList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetHydrantList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鍠峰ご
+            this.barBtnSetNozzleList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Nozzle;
+            this.barBtnSetNozzleList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetNozzleList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetNozzleList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鍐峰嵈濉�
+            this.barBtnSetCoolingList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Cooling;
+            this.barBtnSetCoolingList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetCoolingList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetCoolingList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //姘磋〃
+            this.barBtnSetMeterList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Meter;
+            this.barBtnSetMeterList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetMeterList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetMeterList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //娴侀噺璁�
+            this.barBtnSetFlowmeterList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Flowmeter;
+            this.barBtnSetFlowmeterList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetFlowmeterList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetFlowmeterList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鍘嬪姏琛�
+            this.barBtnSetPressmeterList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Pressmeter;
+            this.barBtnSetPressmeterList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetMeterList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetMeterList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //绠¢亾
+            this.barBtnSetPipeList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Pipe;
+            this.barBtnSetPipeList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetPipeList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetPipeList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //杩囨浮浠�
+            this.barBtnSetTranslationList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Translation;
+            this.barBtnSetTranslationList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetTranslationList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetTranslationList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //姘存车
+            this.barBtnSetPumpList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Pump;
+            this.barBtnSetPumpList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetPumpList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetPumpList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //闃�闂�
+            this.barBtnSetValveList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Valve;
+            this.barBtnSetValveList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetValveList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetValveList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鎹㈢儹鍣�
+            this.barBtnSetExchangerList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Exchanger;
+            this.barBtnSetExchangerList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetExchangerList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetExchangerList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+
+            //鍘嬬缉鏈�
+            this.barBtnSetCompressorList.ImageOptions.SvgImage = AssetsMainSvgImageHelper.Compressor;
+            this.barBtnSetCompressorList.ImageOptions.SvgImageSize = new Size(32, 32);
+            this.barBtnSetCompressorList.ItemAppearance.Normal.ForeColor = Color.FromArgb(0, 122, 204);
+            this.barBtnSetCompressorList.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
         }
 
         #region BIM鎺т欢
@@ -112,13 +237,13 @@
             }
             if (_bimfaceCtrl == null)
             {
-                var overlay = this.ShowOverlay();
                 _bimfaceCtrl = new SimulationBimfaceCtrl();
                 _bimfaceCtrl.Dock = DockStyle.Fill;
+                WaitFormHelper.ShowWaitForm(this.FindForm(), "姝e湪鍔犺浇妯″瀷锛岃绋嶅悗...");
                 await _bimfaceCtrl.InitialData(_project, _projectSite);
                 _bimfaceCtrl.LoadCompletedEvent += () =>
                 {//view鍔犺浇瀹屾垚浜嬩欢
-                    overlay.Close();
+                    WaitFormHelper.HideWaitForm();
                     this.barCkDecorator.Checked = false;
                     this.barCkGrading.Checked = true;
                 };
@@ -196,6 +321,7 @@
                 _propertyCtrl = new SimulationPropertyCtrl();
                 _propertyCtrl.Dock = DockStyle.Fill;
                 _propertyCtrl.AllowEdit = true;
+                _propertyCtrl.CalcuResult = () => GetCalcuResult();
                 _propertyCtrl.HydroViewEvent += (visual) =>
                 {
                     SelectVisual(visual, eSimulationVisualSource.Property);
@@ -220,7 +346,7 @@
                         {
                             return;
                         }
-                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList();
+                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != link.Code).ToList();
                         if (linkList == null || linkList.Count < 1)
                         {
                             return;
@@ -338,14 +464,16 @@
                 case eSimulationVisualSource.None:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
 
                 case eSimulationVisualSource.Bimface:
                     {
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -353,7 +481,8 @@
                 case eSimulationVisualSource.Q3d:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -361,14 +490,16 @@
                 case eSimulationVisualSource.Property:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                     }
                     break;
 
                 case eSimulationVisualSource.List:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -376,7 +507,8 @@
                 case eSimulationVisualSource.Set:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -384,7 +516,8 @@
                 case eSimulationVisualSource.Search:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -392,7 +525,8 @@
                 case eSimulationVisualSource.Monitor:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -400,7 +534,8 @@
                 case eSimulationVisualSource.Check:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -408,7 +543,8 @@
                 case eSimulationVisualSource.Calcu:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -416,7 +552,8 @@
                 case eSimulationVisualSource.Warning:
                     {
                         _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
-                        this.barBtnSetMonitor.Enabled = visual != null;
+                        this.barBtnDockingMonitor.Enabled = visual != null;
+                        this.barBtnAnalyseMonitor.Enabled = visual != null;
                         SetPropertyCtrl(visual);
                     }
                     break;
@@ -673,10 +810,30 @@
 
         #region 涓�閿樉闅�
 
+        private List<string> _allDecoratorCodes = null;
+
+        //鑾峰彇瑁呴グ浠禼ode鍒楄〃
+        private async Task<List<string>> GetDecoratorCodes()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_allDecoratorCodes == null)
+            {
+                _allDecoratorCodes = await BLLFactory<Yw.BLL.HydroDecoratorInfo>.Instance.GetCodeListByModelID(_hydroInfo.ID, null);
+            }
+            if (_allDecoratorCodes == null)
+            {
+                _allDecoratorCodes = new List<string>();
+            }
+            return _allDecoratorCodes;
+        }
+
         //璁剧疆瑁呴グ浠跺彲瑙佹��
         private async void SetDecoratorVisible(bool isDecoratorVisible)
         {
-            var codes = _hydroInfo.Decorators?.Select(x => x.Code).Distinct().ToList();
+            var codes = await GetDecoratorCodes();
             if (isDecoratorVisible)
             {
                 await _bimfaceCtrl?.ShowComponents(codes);
@@ -694,8 +851,6 @@
         }
 
         #endregion 涓�閿樉闅�
-
-
 
         #region 淇濆瓨淇℃伅
 
@@ -939,6 +1094,23 @@
                 };
                 dlg.ShowDialog();
             };
+            //鍐峰嵈濉�
+            this.barBtnSetCoolingList.ItemClick += delegate
+            {
+                var allVisualViewModelList = GetVisualViewModelList();
+                var dlg = new SetHydroCoolingListDlg();
+                dlg.SetBindingData(allVisualViewModelList);
+                dlg.HydroClickInfoEvent += (visual) =>
+                {
+                    SelectVisual(visual, eSimulationVisualSource.Set);
+                };
+                dlg.HydroChangedInfoEvent += visuals =>
+                {
+                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
+                    UpdateVisualListCtrl();
+                };
+                dlg.ShowDialog();
+            };
             //绠¢亾
             this.barBtnSetPipeList.ItemClick += delegate
             {
@@ -1024,7 +1196,7 @@
                 };
                 dlg.ShowDialog();
             };
-            //鎹㈢儹鍣�
+            //鍘嬬缉鏈�
             this.barBtnSetCompressorList.ItemClick += delegate
             {
                 var allVisualViewModelList = GetVisualViewModelList();
@@ -1115,6 +1287,16 @@
             else
             {
                 this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //鍐峰嵈濉�
+            if (_hydroInfo.Coolings == null || _hydroInfo.Coolings.Count < 1)
+            {
+                this.barBtnSetCoolingList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetCoolingList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
             }
 
             //闂峰ご
@@ -1529,13 +1711,11 @@
         private async void barCkFlowEffect_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var flowEffectHelper = await GetFlowEffectHelper();
-            flowEffectHelper.Visible = this.barCkFlowEffect.Checked;
-            flowEffectHelper.Set();
+            //flowEffectHelper.Visible = this.barCkFlowEffect.Checked;
+            //flowEffectHelper.Set();
         }
 
-        #endregion 姘存祦鍔ㄧ敾
-
-        #region 鐩戞祴鍒楄〃
+        #endregion
 
         #region 鐩戞祴鐐�
 
@@ -1545,10 +1725,6 @@
         //鑾峰彇鐩戞祴鐐硅緟鍔╃被
         private SimulationMonitorHelper GetMonitorHelper()
         {
-            if (_hydroInfo == null)
-            {
-                return default;
-            }
             if (_monitorHelper == null)
             {
                 var visualListHelper = GetVisualListHelper();
@@ -1561,43 +1737,21 @@
         private async Task<List<HydroMonitorVmo>> GetMonitorList()
         {
             var helper = GetMonitorHelper();
-            return await helper.Get();
+            return await helper.GetAll();
         }
 
-        //璁剧疆鐩戞祴鐐瑰垪琛�
-        private async void SetMonitorList(HydroVisualInfo visual)
+        //鑾峰彇鐩戞祴瀵规帴鍒楄〃
+        private async Task<List<HydroMonitorVmo>> GetMonitorDockingList()
         {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.Get();
-            var dlg = new SetHydroMonitorListDlg();
-            dlg.SetBindingData(_hydroInfo, visual, allMonitorList);
-            dlg.ReloadDataEvent += async (list) =>
-            {
-                var bol = await BLLFactory<Yw.BLL.HydroMonitor>.Instance.Save(_hydroInfo.ID, visual.Code, list);
-                if (!bol)
-                {
-                    TipFormHelper.ShowError("璁剧疆澶辫触锛�");
-                    return;
-                }
-                TipFormHelper.ShowSucceed("璁剧疆鎴愬姛锛�");
-                var monitorList = await monitorHelper.Update(visual.Code);
-                var monitorValueHelper = GetMonitorValueHelper();
-                monitorValueHelper.Update(visual.Code, monitorList);
-                var monitorMarkerHelper = await GetMonitorMarkerHelper();
-                monitorMarkerHelper.Update(visual.Code, monitorList);
-                monitorMarkerHelper.Set();
-            };
-            dlg.ShowDialog();
+            var helper = GetMonitorHelper();
+            return await helper.GetDockingList();
         }
 
-        //璁剧疆鐩戞祴鐐�
-        private void barBtnSetMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //鑾峰彇鐩戞祴鍒嗘瀽鍒楄〃
+        private async Task<List<HydroMonitorVmo>> GetMonitorAnalyseList()
         {
-            SetMonitorList(_visual);
+            var helper = GetMonitorHelper();
+            return await helper.GetAnalyseList();
         }
 
         #endregion 鐩戞祴鐐�
@@ -1614,9 +1768,31 @@
             {
                 var visualListHelper = GetVisualListHelper();
                 var monitorHelper = GetMonitorHelper();
-                _monitorValueHelper = new SimulationMonitorValueHelper(visualListHelper, monitorHelper);
+                var calcuResultHelper = GetCalcuResultHelper();
+                _monitorValueHelper = new SimulationMonitorValueHelper(visualListHelper, monitorHelper, calcuResultHelper);
             }
             return _monitorValueHelper;
+        }
+
+        //鑾峰彇鐩戞祴鍊煎垪琛�
+        private async Task<List<HydroMonitorValueViewModel>> GetMonitorValueList()
+        {
+            var helper = GetMonitorValueHelper();
+            return await helper.GetAll();
+        }
+
+        //鑾峰彇鐩戞祴瀵规帴鍊煎垪琛�
+        private async Task<List<HydroMonitorValueViewModel>> GetMonitorDockingValueList()
+        {
+            var helper = GetMonitorValueHelper();
+            return await helper.GetDockingList();
+        }
+
+        //鑾峰彇鐩戞祴鍒嗘瀽鍊煎垪琛�
+        private async Task<List<HydroMonitorValueViewModel>> GetMonitorAnalyseValueList()
+        {
+            var helper = GetMonitorValueHelper();
+            return await helper.GetAnalyseList();
         }
 
         //閲嶇疆
@@ -1633,7 +1809,50 @@
 
         #endregion 鐩戞祴鍊�
 
-        #region 鐩戞祴鍊兼帶浠�
+        #region 浼犳劅鍣ㄦ祴鐐�
+
+        //璁剧疆鍙鏋勪欢瀵规帴娴嬬偣鍒楄〃
+        private async void SetMonitorDockingList(HydroVisualInfo visual)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (visual == null)
+            {
+                return;
+            }
+            var monitorHelper = GetMonitorHelper();
+            var allMonitorList = await monitorHelper.GetAll();
+            var monitorValueHelper = GetMonitorValueHelper();
+            var allMonitorValueList = await monitorValueHelper.GetAll();
+            var calcuResult = GetCalcuResult();
+            var dlg = new SetHydroMonitorDockingListDlg();
+            dlg.ReloadDataEvent += async (list) =>
+            {
+                var monitorList = list?.Select(x => x.Vmo).ToList();
+                await monitorHelper.Update(visual.Code, eSourceType.Docking, monitorList);
+                await monitorValueHelper.Update(visual.Code, eSourceType.Docking, list);
+                var monitorMarkerHelper = await GetMonitorMarkerHelper();
+                monitorMarkerHelper.Set();
+            };
+            dlg.SetBindingData(_hydroInfo, visual, allMonitorList, allMonitorValueList, calcuResult);
+            dlg.ShowDialog();
+        }
+
+        //璁剧疆浼犳劅鍣ㄦ祴鐐�
+        private void barBtnDockingMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_visual == null)
+            {
+                return;
+            }
+            SetMonitorDockingList(_visual);
+        }
+
+        #endregion 浼犳劅鍣ㄦ祴鐐�
+
+        #region 浼犳劅鍣ㄦ祴鍊�
 
         //鐩戞祴鍊煎垪琛ㄦ帶浠�
         private HydroMonitorValueListCtrl _monitorValueListCtrl = null;
@@ -1647,8 +1866,7 @@
                 _monitorValueListCtrl.Dock = DockStyle.Fill;
                 _monitorValueListCtrl.HydroViewEvent += (code) =>
                 {
-                    var visualListHelper = GetVisualListHelper();
-                    var visual = visualListHelper.GetVisual(code);
+                    var visual = GetVisual(code);
                     SelectVisual(visual, eSimulationVisualSource.Monitor);
                 };
             }
@@ -1674,8 +1892,8 @@
             }
         }
 
-        //鏄剧ず鐩戞祴鍊煎垪琛ㄦ帶浠�
-        private async void ShowMonitorValueListCtrl()
+        //鏄剧ず鐩戞祴瀵规帴鍊煎垪琛ㄦ帶浠�
+        private async void ShowMonitorDockingValueListCtrl()
         {
             var monitorValueListCtrl = GetMonitorValueListCtrl();
             if (!IsMonitorValueListCtrlVisible)
@@ -1683,23 +1901,62 @@
                 this.controlContainerBottom.Controls.Clear();
                 this.controlContainerBottom.Controls.Add(monitorValueListCtrl);
                 this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-                this.docPnlBottom.Text = "鐩戞祴鍊�";
+                this.docPnlBottom.Text = "浼犳劅鍣ㄦ祴鍊�";
                 this.docPnlBottom.Height = 350;
             }
-            var monitorValueHelper = GetMonitorValueHelper();
-            var allMonitorValueList = await monitorValueHelper.Get();
-            monitorValueListCtrl.SetBindingData(allMonitorValueList);
+            var allValueList = await GetMonitorDockingValueList();
+            var calcuResult = GetCalcuResult();
+            monitorValueListCtrl.SetBindingData(allValueList);
         }
 
-        //璁剧疆鐩戞祴鍊�
-        private void barBtnSetMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //璁剧疆浼犳劅鍣ㄦ祴鍊�
+        private void barBtnDockingMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            ShowMonitorValueListCtrl();
+            ShowMonitorDockingValueListCtrl();
         }
 
-        #endregion 鐩戞祴鍊兼帶浠�
+        #endregion 浼犳劅鍣ㄦ祴鍊�
 
-        #region 鐩戞祴鐐规爣璁�
+        #region 鍒嗘瀽娴嬬偣
+
+        //璁剧疆鍙鏋勪欢鍒嗘瀽娴嬬偣鍒楄〃
+        private async void SetMonitorAnalyseList(HydroVisualInfo visual)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (visual == null)
+            {
+                return;
+            }
+            var monitorHelper = GetMonitorHelper();
+            var allMonitorList = await monitorHelper.GetAnalyseList();
+            var dlg = new SetHydroMonitorAnalyseListDlg();
+            dlg.ReloadDataEvent += async (list) =>
+            {
+                await monitorHelper.Update(visual.Code, eSourceType.Analyse, list);
+                //var monitorMarkerHelper = await GetMonitorMarkerHelper();
+                //monitorMarkerHelper.Update(visual.Code, monitorList);
+                //monitorMarkerHelper.Set();
+            };
+            dlg.SetBindingData(_hydroInfo, visual, allMonitorList);
+            dlg.ShowDialog();
+        }
+
+        //璁剧疆鍒嗘瀽娴嬬偣
+        private void barBtnAnalyseMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_visual == null)
+            {
+                return;
+            }
+            SetMonitorAnalyseList(_visual);
+        }
+
+        #endregion 鍒嗘瀽娴嬬偣
+
+        #region 娴嬬偣鏍囪
 
         //鐩戞祴鏍囪杈呭姪绫�
         private SimulationMonitorMarkerHelper _monitorMarkerHelper = null;
@@ -1716,17 +1973,15 @@
             return _monitorMarkerHelper;
         }
 
-        //鏄剧ず鐘舵�佹敼鍙�
-        private async void barCkMonitor_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //娴嬬偣鏄剧ず鐘舵�佹敼鍙�
+        private async void barCkMonitorVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var monitorMarkerHelper = await GetMonitorMarkerHelper();
-            monitorMarkerHelper.Visible = this.barCkMonitor.Checked;
+            monitorMarkerHelper.Visible = this.barCkMonitorVisible.Checked;
             monitorMarkerHelper.Set();
         }
 
-        #endregion 鐩戞祴鐐规爣璁�
-
-        #endregion 鐩戞祴鍒楄〃
+        #endregion 娴嬬偣鏍囪
 
         #region 妯″瀷妫�鏌�
 
@@ -1997,71 +2252,6 @@
 
         #endregion 妯″瀷璁$畻
 
-        #region 绠$綉淇
-
-        //淇绠$綉
-        private void Repair()
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            var checkResult = _hydroInfo.Check();
-            if (!checkResult.Succeed)
-            {
-                ShowCheckCtrl(checkResult);
-                TipFormHelper.ShowWarn("妫�鏌ュけ璐ュ鑷存棤娉曡繘琛岃瘯绠楋紝鍋滄绠$綉淇锛�");
-                return;
-            }
-            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.Simple);
-            if (!calcuResult.Succeed)
-            {
-                ShowCalcuFailedCtrl(calcuResult);
-                TipFormHelper.ShowWarn("璇曠畻澶辫触锛屽仠姝㈢缃戜慨澶嶏紒");
-                return;
-            }
-            var visualListHelper = GetVisualListHelper();
-            var allLinkList = visualListHelper.GetLinkList();
-            if (allLinkList != null && allLinkList.Count < 1)
-            {
-                TipFormHelper.ShowError("妯″瀷涓湭鍖呭惈绠℃淇℃伅锛屽仠姝㈢缃戜慨澶嶏紒");
-                return;
-            }
-            int count = 0;
-            foreach (var link in allLinkList)
-            {
-                var calcuLink = calcuResult.LinkList?.Find(x => x.Code == link.Code);
-                if (calcuLink == null)
-                {
-                    continue;
-                }
-                if (!calcuLink.CalcuFlow.HasValue)
-                {
-                    continue;
-                }
-                if (calcuLink.CalcuFlow.Value < 0)
-                {
-                    var tempCode = link.StartCode;
-                    link.StartCode = link.EndCode;
-                    link.EndCode = tempCode;
-                    count++;
-                }
-            }
-            var visualVmListHelper = GetVisualVmListHelper();
-            visualVmListHelper.UpdateProperty();
-            UpdateVisualListCtrl();
-            UpdatePropertyCtrl();
-            TipFormHelper.ShowSucceed($"淇瀹屾垚锛屽叡淇绠℃({count})涓紒");
-        }
-
-        //绠$綉淇
-        private void barBtnRepair_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            Repair();
-        }
-
-        #endregion 绠$綉淇
-
         #region 瀵煎嚭INP
 
         //瀵煎嚭INP鏂囦欢
@@ -2174,7 +2364,7 @@
             var workingCheckedListHelper = GetWorkingCheckedListHelper();
             var allWorkingList = workingCheckedListHelper.GetWorkingList();
             var monitorValueHelper = GetMonitorValueHelper();
-            var allMonitorValueList = await monitorValueHelper.Get();
+            var allMonitorValueList = await monitorValueHelper.GetAll();
             var dlg = new SetHydroWorkingDlg();
             dlg.SetBindingData(_hydroInfo, allWorkingList, allMonitorValueList);
             dlg.HydroViewEvent += (visual) =>
@@ -2308,7 +2498,7 @@
                 {
                     return;
                 }
-                var reportHelper = new SimulationWorkingReportHelper();
+                var reportHelper = new HStation.ReportFile.SimulationWorkingReportHelper();
                 reportHelper.Create(fileName, vm);
                 TipFormHelper.ShowInfo("瀵煎嚭鎴愬姛锛�");
             };
@@ -2407,6 +2597,13 @@
             return helper.GetWorkingList();
         }
 
+        //鑾峰彇閫夋嫨宸ュ喌鍒楄〃
+        private List<HydroWorkingVmo> GetCheckedWorkingList()
+        {
+            var helper = GetWorkingCheckedListHelper();
+            return helper.GetCheckedWorkingList();
+        }
+
         //鏇存柊宸ュ喌閫夋嫨鍒楄〃
         public void UpdateWorkingCheckedList(HydroWorkingVmo working)
         {
@@ -2429,6 +2626,91 @@
         }
 
         #endregion 閫夋嫨宸ュ喌
+
+        #region 鐩戞祴鍒嗘瀽
+
+        //鐩戞祴鍒嗘瀽鍒楄〃鎺т欢
+        private HydroWorkingMonitorAnalyListCtrl _monitorAnalyListCtrl = null;
+
+        //鑾峰彇鐩戞祴鍒嗘瀽鍒楄〃鎺т欢
+        private HydroWorkingMonitorAnalyListCtrl GetMonitorAnalyListCtrl()
+        {
+            if (_monitorAnalyListCtrl == null)
+            {
+                _monitorAnalyListCtrl = new HydroWorkingMonitorAnalyListCtrl();
+                _monitorAnalyListCtrl.Dock = DockStyle.Fill;
+                _monitorAnalyListCtrl.HydroViewEvent += (code) =>
+                {
+                    var visual = GetVisual(code);
+                    SelectVisual(visual, eSimulationVisualSource.Monitor);
+                };
+            }
+            return _monitorAnalyListCtrl;
+        }
+
+        //鐩戞祴鍒嗘瀽鍒楄〃鎺т欢鏄惁鍙
+        private bool IsMonitorAnalyListCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerBottom.Controls.Count > 0)
+                    {
+                        if (this.controlContainerBottom.Controls[0] is HydroWorkingMonitorAnalyListCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず鐩戞祴鍊煎垪琛ㄦ帶浠�
+        private async void ShowMonitorAnalyListCtrl()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var allWorkingList = GetCheckedWorkingList();
+            if (allWorkingList == null || allWorkingList.Count < 1)
+            {
+                var workingHelper = GetWorkingHelper();
+                if (!workingHelper.Initialized)
+                {
+                    TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�");
+                    return;
+                }
+            }
+            var monitorAnalyListCtrl = GetMonitorAnalyListCtrl();
+            if (!IsMonitorAnalyListCtrlVisible)
+            {
+                this.controlContainerBottom.Controls.Clear();
+                this.controlContainerBottom.Controls.Add(monitorAnalyListCtrl);
+                this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+                this.docPnlBottom.Text = "鐩戞祴鍒嗘瀽";
+                this.docPnlBottom.Height = 350;
+            }
+            var allMontorList = await GetMonitorAnalyseList();
+            if (allWorkingList == null || allWorkingList.Count < 1)
+            {
+                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, GetCalcuResult());
+            }
+            else
+            {
+                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, allWorkingList);
+            }
+        }
+
+        //鐩戞祴鍒嗘瀽
+        private void barBtnWorkingMonitorAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowMonitorAnalyListCtrl();
+        }
+
+        #endregion 鐩戞祴鍒嗘瀽
 
         #region 宸ュ喌鍒嗘瀽
 
@@ -2456,8 +2738,7 @@
         //绮惧害璇勪及
         private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.Get();
+            var allMonitorList = await GetMonitorDockingList();
 
             var workingCheckedListHelper = GetWorkingCheckedListHelper();
             var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList();
@@ -2532,55 +2813,6 @@
             }
         }
 
-        //鎹熷け鏇茬嚎
-        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            if (_visual == null)
-            {
-                SelectInputSource();
-                if (_visual == null)
-                {
-                    TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒");
-                    return;
-                }
-            }
-            HydroVisualInfo visual = _visual;
-            if (_visual is HydroLinkInfo linkInfo)
-            {
-                var visualListHelper = GetVisualListHelper();
-                visual = visualListHelper.GetVisual(linkInfo.StartCode);
-            }
-
-            var workingCheckedListHelper = GetWorkingCheckedListHelper();
-            var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList();
-            if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1)
-            {
-                var workingHelper = GetWorkingHelper();
-                if (!workingHelper.Initialized)
-                {
-                    TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�");
-                    return;
-                }
-                var dlg = new HydroSingleWorkingLossCurveDlg();
-                dlg.HydroClickEvent += (code) =>
-                {
-                    SelectVisual(code, eSimulationVisualSource.None);
-                };
-                dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
-                dlg.ShowDialog();
-            }
-            else
-            {
-                var dlg = new HydroMultiWorkingLossCurveDlg();
-                dlg.HydroClickEvent += (code) =>
-                {
-                    SelectVisual(code, eSimulationVisualSource.None);
-                };
-                dlg.SetBindingData(_hydroInfo, allCheckedWorkingList, visual);
-                dlg.ShowDialog();
-            }
-        }
-
         //鎹熷け缁熻
         private void barBtnWorkingLossStatistics_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
@@ -2629,7 +2861,7 @@
             }
 
             var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.Get();
+            var allMonitorList = await monitorHelper.GetAll();
 
             var workingCheckedListHelper = GetWorkingCheckedListHelper();
             var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList();
@@ -2655,6 +2887,106 @@
 
         #endregion 宸ュ喌鍒嗘瀽
 
+        #region 鎹熷け鏇茬嚎
+
+        //鍗曞伐鍐垫崯澶辨洸绾挎帶浠�
+        private HydroSingleWorkingLossCurveCtrl _singleWorkingLossCurveCtrl = null;
+
+        //鑾峰彇鍗曞伐鍐垫崯澶辨洸绾挎帶浠�
+        private HydroSingleWorkingLossCurveCtrl GetSingleWorkingLossCurveCtrl()
+        {
+            if (_singleWorkingLossCurveCtrl == null)
+            {
+                _singleWorkingLossCurveCtrl = new HydroSingleWorkingLossCurveCtrl();
+                _singleWorkingLossCurveCtrl.Dock = DockStyle.Fill;
+                _singleWorkingLossCurveCtrl.HydroClickEvent += (code) =>
+                {
+                    var visual = GetVisual(code);
+                    SelectVisual(visual, eSimulationVisualSource.None);
+                };
+            }
+            return _singleWorkingLossCurveCtrl;
+        }
+
+        //鍗曞伐鍐垫崯澶辨洸绾挎帶浠舵槸鍚﹀彲瑙�
+        private bool IsSingleWorkingLossCurveCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerBottom.Controls.Count > 0)
+                    {
+                        if (this.controlContainerBottom.Controls[0] is HydroSingleWorkingLossCurveCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず鍗曞伐鍐垫崯澶辨洸绾挎帶浠�
+        private void ShowSingleWorkingLossCurveCtrl(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult, HydroVisualInfo visual)
+        {
+            var singleWorkingLossCurveCtrl = GetSingleWorkingLossCurveCtrl();
+            if (!IsSingleWorkingLossCurveCtrlVisible)
+            {
+                this.controlContainerBottom.Controls.Clear();
+                this.controlContainerBottom.Controls.Add(singleWorkingLossCurveCtrl);
+                this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+                this.docPnlBottom.Text = "鎹熷け鏇茬嚎";
+                this.docPnlBottom.Height = 350;
+            }
+            singleWorkingLossCurveCtrl.SetBindingData(hydroInfo, calcuResult, visual);
+        }
+
+        //鎹熷け鏇茬嚎
+        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_visual == null)
+            {
+                SelectInputSource();
+                if (_visual == null)
+                {
+                    TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒");
+                    return;
+                }
+            }
+            HydroVisualInfo visual = _visual;
+            if (_visual is HydroLinkInfo linkInfo)
+            {
+                var visualListHelper = GetVisualListHelper();
+                visual = visualListHelper.GetVisual(linkInfo.StartCode);
+            }
+
+            var workingCheckedListHelper = GetWorkingCheckedListHelper();
+            var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList();
+            if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1)
+            {
+                var workingHelper = GetWorkingHelper();
+                if (!workingHelper.Initialized)
+                {
+                    TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�");
+                    return;
+                }
+                ShowSingleWorkingLossCurveCtrl(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
+            }
+            else
+            {
+                var dlg = new HydroMultiWorkingLossCurveDlg();
+                dlg.HydroClickEvent += (code) =>
+                {
+                    SelectVisual(code, eSimulationVisualSource.None);
+                };
+                dlg.SetBindingData(_hydroInfo, allCheckedWorkingList, visual);
+                dlg.ShowDialog();
+            }
+        }
+
+        #endregion 鎹熷け鏇茬嚎
+
         #region 鏂规绠$悊
 
         //鏇存柊鏂规

--
Gitblit v1.9.3