From 5f51a2fe3461e1f88e75b0b6959719d25f657ef3 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期二, 07 一月 2025 17:34:27 +0800 Subject: [PATCH] 曲线模块修改 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs | 82 ++++++++++++++++++----------------------- 1 files changed, 36 insertions(+), 46 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 82cb9c5..cf9232a 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 @@ -3,6 +3,7 @@ using DevExpress.Utils.Extensions; using DevExpress.Utils.Svg; using DevExpress.XtraCharts; +using System.Collections.Concurrent; using Yw.DAL.Basic; using Yw.Vmo; @@ -25,10 +26,6 @@ /// </summary> public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, Dictionary<HydroWorkingVmo, bool>, SvgImage> ShowProjectSiteSimulationEvent; /// <summary> - /// 鏄剧ず椤圭洰绔欏伐鍐典簨浠� - /// </summary> - public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Yw.Model.HydroModelInfo, HydroWorkingVmo, SvgImage> ShowProjectSiteWorkingEvent; - /// <summary> /// 椤圭洰绔欏伐鍐甸�夋嫨鏀瑰彉浜嬩欢 /// </summary> public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo, bool> ProjectSiteWorkingCheckedEvent; @@ -47,7 +44,7 @@ /// <summary> /// 鍒涘缓椤圭洰绔欐柟妗堜簨浠� /// </summary> - public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, SvgImage> CreateProjectSiteSchemeEvent; + public event Action<XhsProjectVmo, XhsProjectSiteVmo, Yw.Model.HydroModelInfo, List<XhsSchemeVmo>, SvgImage> CreateProjectSiteSchemeEvent; /// <summary> /// 椤圭洰绔欐柟妗堝鍔犱簨浠� /// </summary> @@ -67,7 +64,7 @@ private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//鎵�鏈夊伐鍐甸�夋嫨鍒楄〃瀛楀吀 private Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo> _allSchemeHydroInfoDict = null;//鎵�鏈夋柟妗堟按鍔涗俊鎭垪琛� private Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>> _allSchemeWorkingCheckedListDict = null;//鎵�鏈夋柟妗堝伐鍐甸�夋嫨鍒楄〃瀛楀吀 - private readonly object _locker = new();//閿佸畾瀵硅薄 + private ConcurrentDictionary<string, bool> _gettingHydroInfoDict = new ConcurrentDictionary<string, bool>();//鑾峰彇姘村姏淇℃伅瀛楀吀 /// <summary> /// 缁戝畾鏁版嵁 @@ -109,6 +106,7 @@ }); await ShowInfo(); overlay.Close(); + this.accordionControl1.ExpandAll(); } //椤圭洰绔欐鍐� @@ -157,7 +155,8 @@ { return; } - this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[3]); + var allSchemeList = _allSchemeHydroInfoDict?.Keys.ToList(); + this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, allSchemeList, this.svgImg32[3]); } //鍙抽敭寮瑰嚭 @@ -209,6 +208,10 @@ if (_hydroInfo == null) { hydroInfo = await GetHydroInfo(null); + if (hydroInfo == null) + { + return default; + } if (_hydroInfo == null) { _hydroInfo = hydroInfo; @@ -230,6 +233,10 @@ if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) { hydroInfo = await GetHydroInfo(scheme); + if (hydroInfo == null) + { + return default; + } if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) { _allSchemeHydroInfoDict.Add(scheme, hydroInfo); @@ -261,6 +268,21 @@ { return default; } + string key = $"{_project.ID}-{_projectSite.ID}-{scheme?.ID}"; + if (_gettingHydroInfoDict.TryGetValue(key, out bool getting)) + { + if (getting) + { + return default; + } + } + + WaitFormHelper.ShowWaitForm(this.FindForm(), "姝e湪鍔犺浇妯″瀷鏁版嵁锛岃绋嶅悗..."); + //var overlay = this.ShowOverlay(); + if (!_gettingHydroInfoDict.TryAdd(key, true)) + { + _gettingHydroInfoDict[key] = true; + } HydroModelRelationVmo relation = null; if (scheme == null) @@ -278,6 +300,9 @@ return default; } var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID); + _gettingHydroInfoDict[key] = false; + //overlay.Close(); + WaitFormHelper.HideWaitForm(); return hydroInfo; } @@ -497,10 +522,9 @@ elementWorking.Text = working.Name; elementWorking.Hint = working.Description; elementWorking.Tag = working; - elementWorking.Click += async (sender, e) => + elementWorking.Click += (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; @@ -547,10 +571,9 @@ elementWorking.Text = working.Name; elementWorking.Hint = working.Description; elementWorking.Tag = working; - elementWorking.Click += async (sender, e) => + elementWorking.Click += (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; @@ -760,39 +783,6 @@ 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> -- Gitblit v1.9.3