From 1f7091dac2a5dddf4a0a40acb0940d3787cf35f5 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 18 二月 2025 14:05:47 +0800 Subject: [PATCH] 损失统计整理 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs | 314 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 245 insertions(+), 69 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 0adeba7..8c1810e 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,10 +1,5 @@ -锘縰sing DevExpress.CodeParser; -using DevExpress.DataAccess.Native; -using DevExpress.Utils.Extensions; -using DevExpress.Utils.Svg; -using DevExpress.XtraCharts; +锘縰sing DevExpress.Utils.Svg; using System.Collections.Concurrent; -using Yw.DAL.Basic; using Yw.Vmo; namespace HStation.WinFrmUI @@ -17,6 +12,8 @@ this.layoutControl1.SetupLayoutControl(); } + #region 椤圭洰浜嬩欢 + /// <summary> /// 鏄剧ず椤圭洰绔欎俊鎭簨浠� /// </summary> @@ -25,14 +22,11 @@ /// 鏄剧ず椤圭洰绔欐ā鎷熶簨浠� /// </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; + + #endregion + + #region 宸ュ喌浜嬩欢 + /// <summary> /// 椤圭洰绔欏伐鍐靛鍔犱簨浠� /// </summary> @@ -46,9 +40,22 @@ /// </summary> public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo> ProjectSiteWorkingRemoveEvent; /// <summary> + /// 椤圭洰绔欏伐鍐甸�夋嫨鏀瑰彉浜嬩欢 + /// </summary> + public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, HydroWorkingVmo, bool> ProjectSiteWorkingCheckedEvent; + /// <summary> + /// 椤圭洰绔欏伐鍐甸噸杞戒簨浠� + /// </summary> + public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>> ProjectSiteWorkingReloadEvent; + + #endregion + + #region 鏂规浜嬩欢 + + /// <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> @@ -61,6 +68,8 @@ /// 椤圭洰绔欐柟妗堢Щ闄や簨浠� /// </summary> public event Action<XhsProjectVmo, XhsProjectSiteVmo, XhsSchemeVmo> ProjectSiteSchemeRemoveEvent; + + #endregion private XhsProjectVmo _project = null;//椤圭洰 private XhsProjectSiteVmo _projectSite = null;//椤圭洰绔� @@ -110,6 +119,8 @@ }); await ShowInfo(); overlay.Close(); + await Task.Delay(2000); + this.accordionControl1.ExpandAll(); } //椤圭洰绔欐鍐� @@ -158,7 +169,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]); } //鍙抽敭寮瑰嚭 @@ -183,6 +195,26 @@ } #region 閫氱敤鏂规硶 + + #region Model + + /// <summary> + /// 鑾峰彇妯″瀷 + /// </summary> + public async Task<Yw.Model.HydroModelInfo> GetModel(XhsSchemeVmo scheme) + { + return await GetHydroInfo(scheme, true); + } + + /// <summary> + /// 鍒锋柊Model + /// </summary> + public async Task<Yw.Model.HydroModelInfo> RefreshModel(XhsSchemeVmo scheme) + { + return await GetHydroInfo(scheme, false); + } + + #endregion /// <summary> /// 鑾峰彇姘村姏淇℃伅 @@ -278,6 +310,9 @@ return default; } } + + WaitFormHelper.ShowWaitForm(this.FindForm(), "姝e湪鍔犺浇妯″瀷鏁版嵁锛岃绋嶅悗..."); + //var overlay = this.ShowOverlay(); if (!_gettingHydroInfoDict.TryAdd(key, true)) { _gettingHydroInfoDict[key] = true; @@ -300,6 +335,8 @@ } var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID); _gettingHydroInfoDict[key] = false; + //overlay.Close(); + WaitFormHelper.HideWaitForm(); return hydroInfo; } @@ -519,14 +556,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); - if (hydroInfo == null) - { - return; - } - this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, null, hydroInfo, working, this.svgImg32[4]); + }; this.elementProjectSiteSimulation.Elements.Add(elementWorking); this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; @@ -573,14 +605,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); - if (hydroInfo == null) - { - return; - } - this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]); + }; elementScheme.Elements.Add(elementWorking); elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; @@ -773,6 +800,194 @@ this.ProjectSiteWorkingRemoveEvent?.Invoke(_project, _projectSite, scheme, working); } + /// <summary> + /// 閲嶈浇宸ュ喌 + /// 閲嶈浇锛屼細瑙﹀彂閲嶈浇浜嬩欢 + /// </summary> + public void ReloadWorking(XhsSchemeVmo scheme, Dictionary<HydroWorkingVmo, bool> dict) + { + if (_project == null) + { + return; + } + if (_projectSite == null) + { + return; + } + if (dict == null) + { + dict = new Dictionary<HydroWorkingVmo, bool>(); + } + if (scheme == null) + { + var elements = this.elementProjectSiteSimulation.Elements.ToList(); + //瀛樺湪鍒欐洿鏂帮紝涓嶅瓨鍦ㄥ垯鍒犻櫎 + foreach (var ele in elements) + { + var working = ele.Tag as HydroWorkingVmo; + if (working != null) + { + if (ele.HeaderControl != null) + { + this.accordionControl1.Controls.Remove(ele.HeaderControl); + } + ele.HeaderControl = null; + + var key = dict.Keys.FirstOrDefault(x => x.ID == working.ID); + if (key == null) + { + //绉婚櫎element + this.elementProjectSiteSimulation.Elements.Remove(ele); + } + else + { + var ckEdit = new CheckEdit(); + ckEdit.Properties.AutoWidth = true; + ckEdit.Properties.Caption = string.Empty; + ckEdit.Checked = dict[key]; + ckEdit.CheckedChanged += (sender, e) => + { + if (_allWorkingCheckedListDict != null) + { + if (_allWorkingCheckedListDict.ContainsKey(key)) + { + _allWorkingCheckedListDict[key] = ckEdit.Checked; + } + } + this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, null, key, ckEdit.Checked); + }; + this.accordionControl1.Controls.Add(ckEdit); + ele.HeaderControl = ckEdit; + ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; + ele.Text = key.Name; + ele.Hint = key.Description; + ele.Tag = key; + ele.Click += (sender, e) => + { + + }; + } + } + } + //涓嶅瓨鍦ㄥ垯澧炲姞 + foreach (var item in dict) + { + var ele = elements.FirstOrDefault(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == item.Key.ID); + if (ele == null) + { + //娣诲姞element + //鐩墠涓嶅瓨鍦ㄦ坊鍔犵殑鎯呭喌 + } + } + + if (this.elementProjectSiteSimulation.Elements.Count < 1) + { + this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; + } + else + { + this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; + } + _allWorkingCheckedListDict = dict; + } + else + { + var elementScheme = this.elementProjectSiteSchemeList.Elements + .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); + if (elementScheme == null) + { + return; + } + var elements = elementScheme.Elements.ToList(); + //瀛樺湪鍒欐洿鏂帮紝涓嶅瓨鍦ㄥ垯鍒犻櫎 + foreach (var ele in elements) + { + var working = ele.Tag as HydroWorkingVmo; + if (working != null) + { + if (ele.HeaderControl != null) + { + this.accordionControl1.Controls.Remove(ele.HeaderControl); + } + ele.HeaderControl = null; + + var key = dict.Keys.FirstOrDefault(x => x.ID == working.ID); + if (key == null) + { + //绉婚櫎element + elementScheme.Elements.Remove(ele); + } + else + { + var ckEdit = new CheckEdit(); + ckEdit.Properties.AutoWidth = true; + ckEdit.Properties.Caption = string.Empty; + ckEdit.Checked = dict[key]; + ckEdit.CheckedChanged += (sender, e) => + { + if (_allSchemeWorkingCheckedListDict != null) + { + if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) + { + var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme]; + if (workingCheckedDict.ContainsKey(key)) + { + workingCheckedDict[key] = ckEdit.Checked; + } + } + } + this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, scheme, key, ckEdit.Checked); + }; + this.accordionControl1.Controls.Add(ckEdit); + ele.HeaderControl = ckEdit; + ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; + ele.Text = key.Name; + ele.Hint = key.Description; + ele.Tag = key; + ele.Click += (sender, e) => + { + + }; + + } + } + } + //涓嶅瓨鍦ㄥ澧炲姞 + foreach (var item in dict) + { + var ele = elements.FirstOrDefault(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == item.Key.ID); + if (ele == null) + { + //娣诲姞element + //鐩墠涓嶅瓨鍦ㄥ鍔犵殑鎯呭喌 + } + } + if (elementScheme.Elements.Count < 1) + { + elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; + } + else + { + elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; + } + if (_allSchemeWorkingCheckedListDict == null) + { + _allSchemeWorkingCheckedListDict = new Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>>(); + } + var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); + if (schemeKey == null) + { + _allSchemeWorkingCheckedListDict.Add(scheme, dict); + } + else + { + _allSchemeWorkingCheckedListDict[schemeKey] = dict; + } + } + + this.ProjectSiteWorkingReloadEvent?.Invoke(_project, _projectSite, scheme, dict); + } + //鏄剧ず淇℃伅 private async Task ShowInfo() { @@ -792,46 +1007,7 @@ 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