From a7c780692ab2d8072ad4cae0fecbf851c27231d9 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期五, 20 十二月 2024 11:57:29 +0800
Subject: [PATCH] 曲线匹配修改

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs | 1173 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 678 insertions(+), 495 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
index d8ead32..9fc8e31 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
@@ -1,5 +1,6 @@
 锘縰sing DevExpress.Utils.Extensions;
 using DevExpress.Utils.Svg;
+using DevExpress.XtraCharts;
 using Yw.DAL.Basic;
 using Yw.Vmo;
 
@@ -20,56 +21,43 @@
         /// <summary>
         /// 鏄剧ず椤圭洰绔欐ā鎷熶簨浠�
         /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, Dictionary<HydroWorkingVmo, bool>, SvgImage> ShowProjectSiteSimulationEvent;
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, Dictionary<HydroWorkingVmo, bool>, SvgImage> ShowProjectSiteSimulationEvent;
         /// <summary>
         /// 鏄剧ず椤圭洰绔欏伐鍐典簨浠�
         /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo, SvgImage> ShowProjectSiteWorkingEvent;
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo, SvgImage> ShowProjectSiteWorkingEvent;
         /// <summary>
         /// 椤圭洰绔欏伐鍐甸�夋嫨鏀瑰彉浜嬩欢
         /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo, bool> ProjectSiteWorkingCheckedEvent;
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo, bool> ProjectSiteWorkingCheckedEvent;
+        /// <summary>
+        /// 椤圭洰绔欏伐鍐靛鍔犱簨浠�
+        /// </summary>
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo> ProjectSiteWorkingAppendEvent;
         /// <summary>
         /// 椤圭洰绔欏伐鍐垫洿鏂颁簨浠�
         /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo> ProjectSiteWorkingUpdateEvent;
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo> ProjectSiteWorkingUpdateEvent;
         /// <summary>
         /// 椤圭洰绔欏伐鍐电Щ闄や簨浠�
         /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo> ProjectSiteWorkingRemoveEvent;
-        /// <summary>
-        /// 鏄剧ず椤圭洰绔欐柟妗堜簨浠�
-        /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, Dictionary<HydroWorkingVmo, bool>, SvgImage> ShowProjectSiteSchemeEvent;
-        /// <summary>
-        /// 鏄剧ず椤圭洰绔欐柟妗堝伐鍐典簨浠�
-        /// </summary>
-        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo, SvgImage> ShowProjectSiteSchemeWorkingEvent;
-        /// <summary>
-        /// 椤圭洰绔欐柟妗堝伐鍐甸�夋嫨宸ュ喌浜嬩欢
-        /// </summary>
-        public event Action<XhsSchemeVmo, HydroWorkingVmo, bool> ProjectSiteSchemeWorkingCheckedEvent;
-        /// <summary>
-        /// 椤圭洰绔欐柟妗堝伐鍐垫洿鏂颁簨浠�
-        /// </summary>
-        public event Action<XhsSchemeVmo, HydroWorkingVmo> ProjectSiteSchemeWorkingUpdateEvent;
-        /// <summary>
-        /// 椤圭洰绔欐柟妗堝伐鍐电Щ闄や簨浠�
-        /// </summary>
-        public event Action<XhsSchemeVmo, HydroWorkingVmo> ProjectSiteSchemeWorkingRemoveEvent;
-
-
-
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo> ProjectSiteWorkingRemoveEvent;
         /// <summary>
         /// 鍒涘缓椤圭洰绔欐柟妗堜簨浠�
         /// </summary>
         public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, SvgImage> CreateProjectSiteSchemeEvent;
-
         /// <summary>
-        /// 姣斿椤圭洰宸ュ喌浜嬩欢
+        /// 椤圭洰绔欐柟妗堝鍔犱簨浠�
         /// </summary>
-        public event Action<SvgImage> CompareProjectWorkingEvent;
-
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo> ProjectSiteSchemeAppendEvent;
+        /// <summary>
+        /// 椤圭洰绔欐柟妗堟洿鏂颁簨浠�
+        /// </summary>
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo> ProjectSiteSchemeUpdateEvent;
+        /// <summary>
+        /// 椤圭洰绔欐柟妗堢Щ闄や簨浠�
+        /// </summary>
+        public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo> ProjectSiteSchemeRemoveEvent;
 
         private XhsProjectVmo _project = null;//椤圭洰
         private XhsProjectSiteVmo _projectSite = null;//椤圭洰绔�
@@ -97,474 +85,33 @@
                 return;
             }
             var allWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(relation.ModelID);
-            if (allWorkingList != null && allWorkingList.Count > 0)
+            allWorkingList?.ForEach(x =>
             {
-                _allWorkingCheckedListDict = new Dictionary<HydroWorkingVmo, bool>();
-                foreach (var working in allWorkingList)
-                {
-                    _allWorkingCheckedListDict.Add(working, false);
-                    AppendWorking(working);
-                }
-            }
+                AppendWorking(null, x);
+            });
             var allSchemeList = await BLLFactory<HStation.BLL.XhsScheme>.Instance.GetBySiteID(_projectSite.ID);
-            if (allSchemeList != null && allSchemeList.Count > 0)
+            allSchemeList?.ForEach(async x =>
             {
-                _allSchemeWorkingCheckedListDict = new Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>>();
-                foreach (var scheme in allSchemeList)
+                AppendScheme(x);
+                var schemeRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                        .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, x.ID, HStation.Xhs.Purpose.Simulation);
+                if (schemeRelation != null)
                 {
-                    AppendScheme(scheme);
-                    var schemeRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
-                        .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation);
-                    if (schemeRelation != null)
+                    var allSchemeWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(schemeRelation.ModelID);
+                    allSchemeWorkingList?.ForEach(y =>
                     {
-                        var allSchemeWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(schemeRelation.ModelID);
-                        if (allSchemeWorkingList != null && allSchemeWorkingList.Count > 0)
-                        {
-                            _allSchemeWorkingCheckedListDict.Add(scheme, new Dictionary<HydroWorkingVmo, bool>());
-                            foreach (var schemeWorking in allSchemeWorkingList)
-                            {
-                                _allSchemeWorkingCheckedListDict[scheme].Add(schemeWorking, false);
-                                AppendSchemeWorking(scheme, schemeWorking);
-                            }
-                        }
-                    }
+                        AppendWorking(x, y);
+                    });
                 }
-            }
+            });
+            await ShowInfo();
             overlay.Close();
-        }
-
-        #region 鑾峰彇姘村姏淇℃伅
-
-        /// <summary>
-        /// 鑾峰彇姘村姏淇℃伅
-        /// UseCache 鏄惁浣跨敤缂撳瓨
-        /// </summary>
-        public async Task<Yw.Model.HydroModelInfo> GetHydroInfo(bool useCache)
-        {
-            if (!useCache)
-            {
-                _hydroInfo = await GetHydroInfo();
-                if (_hydroInfo == null)
-                {
-                    return null;
-                }
-            }
-            if (_hydroInfo == null)
-            {
-                _hydroInfo = await GetHydroInfo();
-            }
-            return _hydroInfo;
-        }
-
-        //鑾峰彇姘村姏淇℃伅
-        private async Task<Yw.Model.HydroModelInfo> GetHydroInfo()
-        {
-            if (_project == null)
-            {
-                return default;
-            }
-            if (_projectSite == null)
-            {
-                return default;
-            }
-            var relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
-                .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
-            if (relation == null)
-            {
-                return null;
-            }
-            var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
-            return hydroInfo;
-        }
-
-        #endregion
-
-        #region 鑾峰彇鏂规姘村姏淇℃伅
-
-        /// <summary>
-        /// 鑾峰彇鏂规姘村姏淇℃伅
-        /// UseCache 鏄惁浣跨敤缂撳瓨
-        /// </summary>
-        public async Task<Yw.Model.HydroModelInfo> GetSchemeHydroInfo(XhsSchemeVmo scheme, bool useCache)
-        {
-            if (_project == null)
-            {
-                return default;
-            }
-            if (_projectSite == null)
-            {
-                return default;
-            }
-            if (scheme == null)
-            {
-                return default;
-            }
-            if (!useCache)
-            {
-                var hydroInfo = await GetSchemeHydroInfo(scheme);
-                if (hydroInfo == null)
-                {
-                    return null;
-                }
-                if (_allSchemeHydroInfoDict == null)
-                {
-                    _allSchemeHydroInfoDict = new Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo>();
-                }
-                if (_allSchemeHydroInfoDict.ContainsKey(scheme))
-                {
-                    _allSchemeHydroInfoDict[scheme] = hydroInfo;
-                }
-                else
-                {
-                    _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
-                }
-                return hydroInfo;
-            }
-            if (_allSchemeHydroInfoDict == null)
-            {
-                _allSchemeHydroInfoDict = new Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo>();
-            }
-            if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
-            {
-                var hydroInfo = await GetSchemeHydroInfo(scheme);
-                _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
-                return hydroInfo;
-            }
-            return _allSchemeHydroInfoDict[scheme];
-        }
-
-        //鑾峰彇鏂规姘村姏淇℃伅
-        private async Task<Yw.Model.HydroModelInfo> GetSchemeHydroInfo(XhsSchemeVmo scheme)
-        {
-            if (_project == null)
-            {
-                return default;
-            }
-            if (_projectSite == null)
-            {
-                return default;
-            }
-            if (scheme == null)
-            {
-                return default;
-            }
-            var relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
-                   .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation);
-            if (relation == null)
-            {
-                return default;
-            }
-            var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
-            return hydroInfo;
-        }
-
-        #endregion
-
-        #region 椤圭洰绔欏伐鍐垫柟娉�
-
-        /// <summary>
-        /// 娣诲姞宸ュ喌
-        /// 绾坊鍔狅紝涓嶄細瑙﹀彂浜嬩欢
-        /// </summary>
-        public void AppendWorking(Yw.Vmo.HydroWorkingVmo working)
-        {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            if (working == null)
-            {
-                return;
-            }
-            this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
-            var ckEdit = new CheckEdit();
-            ckEdit.Properties.AutoWidth = true;
-            ckEdit.Properties.Caption = string.Empty;
-            ckEdit.CheckedChanged += async (sender, e) =>
-            {
-                if (_allWorkingCheckedListDict == null)
-                {
-                    _allWorkingCheckedListDict = new Dictionary<HydroWorkingVmo, bool>();
-                }
-                if (_allWorkingCheckedListDict.ContainsKey(working))
-                {
-                    _allWorkingCheckedListDict[working] = ckEdit.Checked;
-                }
-                else
-                {
-                    _allWorkingCheckedListDict.Add(working, ckEdit.Checked);
-                }
-                var hydroInfo = await GetHydroInfo(true);
-                this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, hydroInfo, working, ckEdit.Checked);
-            };
-            this.accordionControl1.Controls.Add(ckEdit);
-            var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement();
-            elementWorking.HeaderControl = ckEdit;
-            elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
-            elementWorking.Text = working.Name;
-            elementWorking.Hint = working.Description;
-            elementWorking.Tag = working;
-            elementWorking.Click += async (sender, e) =>
-            {
-                var hydroInfo = await GetHydroInfo(true);
-                this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, hydroInfo, working, this.svgImg32[4]);
-            };
-            this.elementProjectSiteSimulation.Elements.Add(elementWorking);
-        }
-
-        /// <summary>
-        /// 鏇存柊宸ュ喌
-        /// 鏇存柊锛屼細瑙﹀彂鏇存柊浜嬩欢
-        /// </summary>
-        public async void UpdateWorking(Yw.Vmo.HydroWorkingVmo working)
-        {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            var hydroInfo = await GetHydroInfo(true);
-            if (working == null)
-            {
-                return;
-            }
-            var element = this.elementProjectSiteSimulation.Elements.
-                Where(x => x.Tag != null && (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
-            if (element == null)
-            {
-                return;
-            }
-            element.Tag = working;
-            element.Text = working.Name;
-            element.Hint = working.Description;
-            this.ProjectSiteWorkingUpdateEvent?.Invoke(_project, _projectSite, hydroInfo, working);
-        }
-
-        /// <summary>
-        /// 绉婚櫎宸ュ喌
-        /// 绉婚櫎锛屼細瑙﹀彂绉婚櫎浜嬩欢
-        /// </summary>
-        public async void RemoveWorking(Yw.Vmo.HydroWorkingVmo working)
-        {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            var hydroInfo = await GetHydroInfo(true);
-            if (working == null)
-            {
-                return;
-            }
-            var element = this.elementProjectSiteSimulation.Elements.
-                Where(x => x.Tag != null && (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
-            if (element == null)
-            {
-                return;
-            }
-            if (element.HeaderControl != null)
-            {
-                this.accordionControl1.Controls.Remove(element.HeaderControl);
-            }
-            this.elementProjectSiteSimulation.Elements.Remove(element);
-            if (this.elementProjectSiteSimulation.Elements.Count < 1)
-            {
-                this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
-            }
-            this.ProjectSiteWorkingRemoveEvent?.Invoke(_project, _projectSite, hydroInfo, working);
-        }
-
-        #endregion
-
-        #region 椤圭洰绔欐柟妗�
-
-        /// <summary>
-        /// 娣诲姞鏂规
-        /// </summary>
-        public void AppendScheme(XhsSchemeVmo scheme)
-        {
-            if (scheme == null)
-            {
-                return;
-            }
-            this.elementSchemeList.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
-            var elementScheme = new DevExpress.XtraBars.Navigation.AccordionControlElement();
-            elementScheme.Text = scheme.Name;
-            elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
-            elementScheme.ImageOptions.ImageIndex = 3;
-            elementScheme.Tag = scheme;
-            elementScheme.Click += async (sender, e) =>
-            {
-                if (_project == null)
-                {
-                    return;
-                }
-                if (_projectSite == null)
-                {
-                    return;
-                }
-                var hydroInfo = await GetSchemeHydroInfo(scheme);
-                if (hydroInfo == null)
-                {
-                    return;
-                }
-                Dictionary<HydroWorkingVmo, bool> dict = null;
-                if (_allSchemeWorkingCheckedListDict != null)
-                {
-                    if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme))
-                    {
-                        dict = _allSchemeWorkingCheckedListDict[scheme];
-                    }
-                }
-                this.ShowProjectSiteSchemeEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, dict, this.svgImg32[3]);
-            };
-            this.elementSchemeList.Elements.Add(elementScheme);
-        }
-
-        #endregion
-
-        #region 椤圭洰绔欐柟妗堝伐鍐�
-
-        /// <summary>
-        /// 娣诲姞鏂规宸ュ喌
-        /// </summary>
-        public void AppendSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
-        {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            if (scheme == null)
-            {
-                return;
-            }
-            if (working == null)
-            {
-                return;
-            }
-            var elementScheme = this.elementSchemeList.Elements.FirstOrDefault(x => x.Tag is XhsSchemeVmo && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
-            if (elementScheme == null)
-            {
-                return;
-            }
-            elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
-            var ckEdit = new CheckEdit();
-            ckEdit.Properties.AutoWidth = true;
-            ckEdit.Properties.Caption = string.Empty;
-            ckEdit.CheckedChanged += (sender, e) =>
-            {
-                this.ProjectSiteSchemeWorkingCheckedEvent?.Invoke(scheme, working, ckEdit.Checked);
-            };
-            this.accordionControl1.Controls.Add(ckEdit);
-            var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement();
-            elementWorking.HeaderControl = ckEdit;
-            elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
-            elementWorking.Text = working.Name;
-            elementWorking.Tag = working;
-            elementWorking.Click += async (sender, e) =>
-            {
-                var hydroInfo = await GetSchemeHydroInfo(scheme, true);
-                this.ShowProjectSiteSchemeWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]);
-            };
-            elementScheme.Elements.Add(elementWorking);
-        }
-
-        /// <summary>
-        /// 鏇存柊鏂规宸ュ喌
-        /// </summary>
-        public void UpdateSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
-        {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            if (scheme == null)
-            {
-                return;
-            }
-            if (working == null)
-            {
-                return;
-            }
-            var elementScheme = this.elementSchemeList.Elements.FirstOrDefault(x => x.Tag is XhsSchemeVmo && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
-            if (elementScheme == null)
-            {
-                return;
-            }
-            elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
-            var ckEdit = new CheckEdit();
-            ckEdit.Properties.AutoWidth = true;
-            ckEdit.Properties.Caption = string.Empty;
-            ckEdit.CheckedChanged += (sender, e) =>
-            {
-                this.ProjectSiteSchemeWorkingCheckedEvent?.Invoke(scheme, working, ckEdit.Checked);
-            };
-            this.accordionControl1.Controls.Add(ckEdit);
-            var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement();
-            elementWorking.HeaderControl = ckEdit;
-            elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
-            elementWorking.Text = working.Name;
-            elementWorking.Tag = working;
-            elementWorking.Click += async (sender, e) =>
-            {
-                var hydroInfo = await GetSchemeHydroInfo(scheme, true);
-                this.ShowProjectSiteSchemeWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]);
-            };
-            elementScheme.Elements.Add(elementWorking);
-        }
-
-        /// <summary>
-        /// 绉婚櫎鏂规宸ュ喌
-        /// </summary>
-        public void RemoveSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
-        {
-
-        }
-
-        #endregion
-
-
-        //鍏冪礌鐐瑰嚮浜嬩欢
-        private void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e)
-        {
-
         }
 
         //椤圭洰绔欐鍐�
         private async void elementProjectSiteInfo_Click(object sender, EventArgs e)
         {
-            if (_project == null)
-            {
-                return;
-            }
-            if (_projectSite == null)
-            {
-                return;
-            }
-            var hydroInfo = await GetHydroInfo(true);
-            if (hydroInfo == null)
-            {
-                return;
-            }
-            this.ShowProjectSiteInfoEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[0]);
+            await ShowInfo();
         }
 
         //椤圭洰绔欐按鍔涙ā鎷�
@@ -578,16 +125,16 @@
             {
                 return;
             }
-            var hydroInfo = await GetHydroInfo(true);
+            var hydroInfo = await GetHydroInfo(null, true);
             if (hydroInfo == null)
             {
                 return;
             }
-            this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, hydroInfo, _allWorkingCheckedListDict, this.svgImg32[1]);
+            this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, null, hydroInfo, _allWorkingCheckedListDict, this.svgImg32[1]);
         }
 
         //鍒涘缓椤圭洰绔欐柟妗�
-        private async void btnCreateProjectSiteScheme_Click(object sender, EventArgs e)
+        private async void accordionControl1_ContextButtonClick(object sender, DevExpress.Utils.ContextItemClickEventArgs e)
         {
             if (_project == null)
             {
@@ -597,7 +144,12 @@
             {
                 return;
             }
-            var hydroInfo = await GetHydroInfo(true);
+            var element = e.DataItem as DevExpress.XtraBars.Navigation.AccordionControlElement;
+            if (element != this.elementProjectSiteSchemeList)
+            {
+                return;
+            }
+            var hydroInfo = await GetHydroInfo(null, true);
             if (hydroInfo == null)
             {
                 return;
@@ -605,12 +157,643 @@
             this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[3]);
         }
 
-        //宸ュ喌瀵规瘮
-        private void btnCompareWorking_Click(object sender, EventArgs e)
+        private void accordionControl1_MouseClick(object sender, MouseEventArgs e)
         {
-            this.CompareProjectWorkingEvent?.Invoke(this.svgImg32[5]);
+            if (e.Button == MouseButtons.Right)
+            {
+                this.popupMenu1.ShowPopup(MousePosition);
+            }
         }
 
+        private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            this.accordionControl1.CollapseAll();
+        }
 
+        private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            this.accordionControl1.ExpandAll();
+        }
+
+        #region 閫氱敤鏂规硶
+
+        /// <summary>
+        /// 鑾峰彇姘村姏淇℃伅
+        /// UseCache 鏄惁浣跨敤缂撳瓨
+        /// </summary>
+        public async Task<Yw.Model.HydroModelInfo> GetHydroInfo(XhsSchemeVmo scheme, bool useCache)
+        {
+            Yw.Model.HydroModelInfo hydroInfo = null;
+            if (!useCache)
+            {
+                hydroInfo = await GetHydroInfo(scheme);
+                if (hydroInfo == null)
+                {
+                    return default;
+                }
+            }
+
+            if (scheme == null)
+            {
+                if (hydroInfo == null)
+                {
+                    if (_hydroInfo == null)
+                    {
+                        hydroInfo = await GetHydroInfo(null);
+                        if (_hydroInfo == null)
+                        {
+                            _hydroInfo = hydroInfo;
+                        }
+                    }
+                    return _hydroInfo;
+                }
+                _hydroInfo = hydroInfo;
+                return _hydroInfo;
+            }
+
+            if (_allSchemeHydroInfoDict == null)
+            {
+                _allSchemeHydroInfoDict = new Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo>();
+            }
+
+            if (hydroInfo == null)
+            {
+                if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
+                {
+                    hydroInfo = await GetHydroInfo(scheme);
+                    if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
+                    {
+                        _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
+                    }
+                }
+                return _allSchemeHydroInfoDict[scheme];
+            }
+
+            if (_allSchemeHydroInfoDict.ContainsKey(scheme))
+            {
+                _allSchemeHydroInfoDict[scheme] = hydroInfo;
+            }
+            else
+            {
+                _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
+            }
+
+            return _allSchemeHydroInfoDict[scheme];
+        }
+
+        //鑾峰彇姘村姏淇℃伅
+        private async Task<Yw.Model.HydroModelInfo> GetHydroInfo(XhsSchemeVmo scheme)
+        {
+            if (_project == null)
+            {
+                return default;
+            }
+            if (_projectSite == null)
+            {
+                return default;
+            }
+
+            HydroModelRelationVmo relation = null;
+            if (scheme == null)
+            {
+                relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
+            }
+            else
+            {
+                relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                      .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation);
+            }
+            if (relation == null)
+            {
+                return default;
+            }
+            var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
+            return hydroInfo;
+        }
+
+        /// <summary>
+        /// 娣诲姞鏂规
+        /// 瑙﹀彂椤圭洰绔欐柟妗堝鍔犱簨浠�
+        /// </summary>
+        public void AppendScheme(XhsSchemeVmo scheme)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (scheme == null)
+            {
+                return;
+            }
+
+            var elementScheme = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            elementScheme.Text = scheme.Name;
+            elementScheme.Hint = scheme.Description;
+            elementScheme.Tag = scheme;
+            elementScheme.ImageOptions.ImageIndex = 3;
+            elementScheme.Click += async (sender, e) =>
+            {
+                var hydroInfo = await GetHydroInfo(scheme, true);
+                if (hydroInfo == null)
+                {
+                    return;
+                }
+                Dictionary<HydroWorkingVmo, bool> dict = null;
+                if (_allSchemeWorkingCheckedListDict != null)
+                {
+                    if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme))
+                    {
+                        dict = _allSchemeWorkingCheckedListDict[scheme];
+                    }
+                }
+                this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, dict, this.svgImg32[3]);
+            };
+            this.elementProjectSiteSchemeList.Elements.Add(elementScheme);
+            this.elementProjectSiteSchemeList.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
+            if (_allSchemeHydroInfoDict == null)
+            {
+                _allSchemeHydroInfoDict = new Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo>();
+            }
+            if (_allSchemeWorkingCheckedListDict == null)
+            {
+                _allSchemeWorkingCheckedListDict = new Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>>();
+            }
+            if (!_allSchemeWorkingCheckedListDict.ContainsKey(scheme))
+            {
+                _allSchemeWorkingCheckedListDict.Add(scheme, new Dictionary<HydroWorkingVmo, bool>());
+            }
+            this.ProjectSiteSchemeAppendEvent?.Invoke(_project, _projectSite, scheme);
+        }
+
+        /// <summary>
+        /// 鏇存柊鏂规
+        /// 瑙﹀彂椤圭洰绔欐柟妗堟洿鏂颁簨浠�
+        /// </summary>
+        public void UpdateScheme(XhsSchemeVmo scheme)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (scheme == null)
+            {
+                return;
+            }
+
+            var elementScheme = this.elementProjectSiteSchemeList.Elements
+                   .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
+            if (elementScheme == null)
+            {
+                return;
+            }
+            elementScheme.Text = scheme.Name;
+            elementScheme.Hint = scheme.Description;
+            elementScheme.Tag = scheme;
+            if (_allSchemeHydroInfoDict != null && _allSchemeHydroInfoDict.Count > 0)
+            {
+                var schemeKey = _allSchemeHydroInfoDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                if (schemeKey != null)
+                {
+                    var hydroInfoValue = _allSchemeHydroInfoDict[schemeKey];
+                    _allSchemeHydroInfoDict.Remove(schemeKey);
+                    _allSchemeHydroInfoDict.Add(scheme, hydroInfoValue);
+                }
+            }
+            if (_allSchemeWorkingCheckedListDict != null && _allSchemeWorkingCheckedListDict.Count > 0)
+            {
+                var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                if (schemeKey != null)
+                {
+                    var workingCheckedValue = _allSchemeWorkingCheckedListDict[schemeKey];
+                    _allSchemeWorkingCheckedListDict.Remove(schemeKey);
+                    _allSchemeWorkingCheckedListDict.Add(scheme, workingCheckedValue);
+                }
+            }
+
+            this.ProjectSiteSchemeUpdateEvent?.Invoke(_project, _projectSite, scheme);
+        }
+
+        /// <summary>
+        /// 绉婚櫎鏂规
+        /// </summary>
+        public void RemoveScheme(XhsSchemeVmo scheme)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (scheme == null)
+            {
+                return;
+            }
+
+            var elementScheme = this.elementProjectSiteSchemeList.Elements
+                   .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
+            if (elementScheme == null)
+            {
+                return;
+            }
+            if (elementScheme.Elements != null && elementScheme.Elements.Count > 0)
+            {
+                var workingElementList = elementScheme.Elements.ToList();
+                foreach (var workingElement in workingElementList)
+                {
+                    if (workingElement.HeaderControl != null)
+                    {
+                        this.accordionControl1.Controls.Remove(workingElement.HeaderControl);
+                    }
+                    elementScheme.Elements.Remove(workingElement);
+                }
+            }
+            this.elementProjectSiteSchemeList.Elements.Remove(elementScheme);
+
+            if (this.elementProjectSiteSchemeList.Elements.Count < 1)
+            {
+                this.elementProjectSiteSchemeList.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            }
+
+            if (_allSchemeHydroInfoDict != null && _allSchemeHydroInfoDict.Count > 0)
+            {
+                var schemeKey = _allSchemeHydroInfoDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                if (schemeKey != null)
+                {
+                    _allSchemeHydroInfoDict.Remove(schemeKey);
+                }
+            }
+            if (_allSchemeWorkingCheckedListDict != null && _allSchemeWorkingCheckedListDict.Count > 0)
+            {
+                var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                if (schemeKey != null)
+                {
+                    _allSchemeWorkingCheckedListDict.Remove(schemeKey);
+                }
+            }
+
+            this.ProjectSiteSchemeRemoveEvent?.Invoke(_project, _projectSite, scheme);
+        }
+
+        /// <summary>
+        /// 娣诲姞宸ュ喌
+        /// 瑙﹀彂椤圭洰绔欏伐鍐靛鍔犱簨浠�
+        /// </summary>
+        public void AppendWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (working == null)
+            {
+                return;
+            }
+            if (scheme == null)
+            {
+                var ckEdit = new CheckEdit();
+                ckEdit.Properties.AutoWidth = true;
+                ckEdit.Properties.Caption = string.Empty;
+                ckEdit.Checked = false;
+                ckEdit.CheckedChanged += (sender, e) =>
+                {
+                    if (_allWorkingCheckedListDict != null)
+                    {
+                        if (_allWorkingCheckedListDict.ContainsKey(working))
+                        {
+                            _allWorkingCheckedListDict[working] = ckEdit.Checked;
+                        }
+                    }
+                    this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, null, working, ckEdit.Checked);
+                };
+                this.accordionControl1.Controls.Add(ckEdit);
+                var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+                elementWorking.HeaderControl = ckEdit;
+                elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+                elementWorking.Text = working.Name;
+                elementWorking.Hint = working.Description;
+                elementWorking.Tag = working;
+                elementWorking.Click += async (sender, e) =>
+                {
+                    var hydroInfo = await GetHydroInfo(null, true);
+                    this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, null, hydroInfo, working, this.svgImg32[4]);
+                };
+                this.elementProjectSiteSimulation.Elements.Add(elementWorking);
+                this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
+                if (_allWorkingCheckedListDict == null)
+                {
+                    _allWorkingCheckedListDict = new Dictionary<HydroWorkingVmo, bool>();
+                }
+                if (!_allWorkingCheckedListDict.ContainsKey(working))
+                {
+                    _allWorkingCheckedListDict.Add(working, false);
+                }
+            }
+            else
+            {
+                var elementScheme = this.elementProjectSiteSchemeList.Elements
+                    .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
+                if (elementScheme == null)
+                {
+                    return;
+                }
+                var ckEdit = new CheckEdit();
+                ckEdit.Properties.AutoWidth = true;
+                ckEdit.Properties.Caption = string.Empty;
+                ckEdit.Checked = false;
+                ckEdit.CheckedChanged += (sender, e) =>
+                {
+                    if (_allSchemeWorkingCheckedListDict != null)
+                    {
+                        if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme))
+                        {
+                            var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme];
+                            if (workingCheckedDict.ContainsKey(working))
+                            {
+                                workingCheckedDict[working] = ckEdit.Checked;
+                            }
+                        }
+                    }
+                    this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, scheme, working, ckEdit.Checked);
+                };
+                this.accordionControl1.Controls.Add(ckEdit);
+                var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+                elementWorking.HeaderControl = ckEdit;
+                elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+                elementWorking.Text = working.Name;
+                elementWorking.Hint = working.Description;
+                elementWorking.Tag = working;
+                elementWorking.Click += async (sender, e) =>
+                {
+                    var hydroInfo = await GetHydroInfo(scheme, true);
+                    this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]);
+                };
+                elementScheme.Elements.Add(elementWorking);
+                elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
+                if (_allSchemeWorkingCheckedListDict == null)
+                {
+                    _allSchemeWorkingCheckedListDict = new Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>>();
+                }
+                if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme))
+                {
+                    var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme];
+                    if (workingCheckedDict != null)
+                    {
+                        if (!workingCheckedDict.ContainsKey(working))
+                        {
+                            workingCheckedDict.Add(working, false);
+                        }
+                    }
+                }
+            }
+
+            this.ProjectSiteWorkingAppendEvent?.Invoke(_project, _projectSite, scheme, working);
+        }
+
+        /// <summary>
+        /// 鏇存柊宸ュ喌
+        /// 鏇存柊锛屼細瑙﹀彂鏇存柊浜嬩欢
+        /// </summary>
+        public void UpdateWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (working == null)
+            {
+                return;
+            }
+
+            if (scheme == null)
+            {
+                var element = this.elementProjectSiteSimulation.Elements.
+                         Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
+                if (element == null)
+                {
+                    return;
+                }
+                element.Tag = working;
+                element.Text = working.Name;
+                element.Hint = working.Description;
+                if (_allWorkingCheckedListDict != null)
+                {
+                    var key = _allWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == working.ID);
+                    if (key != null)
+                    {
+                        var hasChecked = _allWorkingCheckedListDict[key];
+                        _allWorkingCheckedListDict.Remove(key);
+                        _allWorkingCheckedListDict.Add(key, hasChecked);
+                    }
+                }
+            }
+            else
+            {
+                var elementScheme = this.elementProjectSiteSchemeList.Elements
+                    .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
+                if (elementScheme == null)
+                {
+                    return;
+                }
+                var element = elementScheme.Elements.
+                    Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
+                if (element == null)
+                {
+                    return;
+                }
+                element.Tag = working;
+                element.Text = working.Name;
+                element.Hint = working.Description;
+                if (_allSchemeWorkingCheckedListDict != null)
+                {
+                    var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                    if (schemeKey != null)
+                    {
+                        var workingCheckedDict = _allSchemeWorkingCheckedListDict[schemeKey];
+                        if (workingCheckedDict != null)
+                        {
+                            var workingKey = workingCheckedDict.Keys.FirstOrDefault(x => x.ID == working.ID);
+                            if (workingKey != null)
+                            {
+                                var hasChecked = workingCheckedDict[workingKey];
+                                workingCheckedDict.Remove(workingKey);
+                                workingCheckedDict.Add(working, hasChecked);
+                            }
+                        }
+                    }
+                }
+            }
+
+            this.ProjectSiteWorkingUpdateEvent?.Invoke(_project, _projectSite, scheme, working);
+        }
+
+        /// <summary>
+        /// 绉婚櫎宸ュ喌
+        /// 绉婚櫎锛屼細瑙﹀彂绉婚櫎浜嬩欢
+        /// </summary>
+        public void RemoveWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working)
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            if (working == null)
+            {
+                return;
+            }
+            if (scheme == null)
+            {
+                var element = this.elementProjectSiteSimulation.Elements.
+                        Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
+                if (element == null)
+                {
+                    return;
+                }
+                if (element.HeaderControl != null)
+                {
+                    this.accordionControl1.Controls.Remove(element.HeaderControl);
+                }
+                this.elementProjectSiteSimulation.Elements.Remove(element);
+                if (this.elementProjectSiteSimulation.Elements.Count < 1)
+                {
+                    this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+                }
+                if (_allWorkingCheckedListDict != null)
+                {
+                    var key = _allWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == working.ID);
+                    if (key != null)
+                    {
+                        _allWorkingCheckedListDict.Remove(key);
+                    }
+                }
+            }
+            else
+            {
+                var elementScheme = this.elementProjectSiteSchemeList.Elements
+                    .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID);
+                if (elementScheme == null)
+                {
+                    return;
+                }
+                var element = elementScheme.Elements.
+                    Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault();
+                if (element == null)
+                {
+                    return;
+                }
+                if (element.HeaderControl != null)
+                {
+                    this.accordionControl1.Controls.Remove(element.HeaderControl);
+                }
+                elementScheme.Elements.Remove(element);
+                if (elementScheme.Elements.Count < 1)
+                {
+                    elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+                }
+                if (_allSchemeWorkingCheckedListDict != null)
+                {
+                    var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+                    if (schemeKey != null)
+                    {
+                        var workingCheckedDict = _allSchemeWorkingCheckedListDict[schemeKey];
+                        if (workingCheckedDict != null)
+                        {
+                            var workingKey = workingCheckedDict.Keys.FirstOrDefault(x => x.ID == working.ID);
+                            if (workingKey != null)
+                            {
+                                workingCheckedDict.Remove(workingKey);
+                            }
+                        }
+                    }
+                }
+            }
+
+            this.ProjectSiteWorkingRemoveEvent?.Invoke(_project, _projectSite, scheme, working);
+        }
+
+        //鏄剧ず淇℃伅
+        private async Task ShowInfo()
+        {
+            if (_project == null)
+            {
+                return;
+            }
+            if (_projectSite == null)
+            {
+                return;
+            }
+            var hydroInfo = await GetHydroInfo(null, true);
+            if (hydroInfo == null)
+            {
+                return;
+            }
+            this.ShowProjectSiteInfoEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[0]);
+        }
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        public async Task<Yw.Model.HydroModelInfo> SaveModel(XhsSchemeVmo scheme, Yw.Model.HydroModelInfo hydroInfo)
+        {
+            if (hydroInfo == null)
+            {
+                return default;
+            }
+            var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo);
+            if (id < 1)
+            {
+                return default;
+            }
+            var db = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(id);
+            if (scheme == null)
+            {
+                _hydroInfo = db;
+                return _hydroInfo;
+            }
+            if (_allSchemeHydroInfoDict == null || _allSchemeHydroInfoDict.Count < 1)
+            {
+                return default;
+            }
+            var schemeKey = _allSchemeHydroInfoDict.Keys.FirstOrDefault(x => x.ID == scheme.ID);
+            if (schemeKey == null)
+            {
+                return default;
+            }
+            _allSchemeHydroInfoDict[schemeKey] = db;
+            return db;
+        }
+
+        /// <summary>
+        /// 鍒锋柊
+        /// </summary>
+        public async Task<Yw.Model.HydroModelInfo> RefreshModel(XhsSchemeVmo scheme)
+        {
+            return await GetHydroInfo(scheme, false);
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.9.3