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