From 4607e20cecf567ee2e86f9a07158deaa1b74d622 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 09 十二月 2024 15:05:19 +0800 Subject: [PATCH] 方案修改 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs | 711 +++++++++++++++++++++++++++------------------------------- 1 files changed, 330 insertions(+), 381 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 c4a57c5..58dba41 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 @@ -20,56 +20,27 @@ /// <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, 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; - private XhsProjectVmo _project = null;//椤圭洰 private XhsProjectSiteVmo _projectSite = null;//椤圭洰绔� @@ -97,144 +68,89 @@ 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); + }); } - } + }); overlay.Close(); } - #region 鑾峰彇姘村姏淇℃伅 + #region 閫氱敤鏂规硶 /// <summary> /// 鑾峰彇姘村姏淇℃伅 /// UseCache 鏄惁浣跨敤缂撳瓨 /// </summary> - public async Task<Yw.Model.HydroModelInfo> GetHydroInfo(bool useCache) + public async Task<Yw.Model.HydroModelInfo> GetHydroInfo(XhsSchemeVmo scheme, bool useCache) { + Yw.Model.HydroModelInfo hydroInfo = null; 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); + hydroInfo = await GetHydroInfo(scheme); if (hydroInfo == null) { - return null; + return default; } - 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 (scheme == null) + { + if (hydroInfo == null) + { + if (_hydroInfo == null) + { + _hydroInfo = await GetHydroInfo(null); + } + return _hydroInfo; + } + _hydroInfo = hydroInfo; + return _hydroInfo; + } + if (_allSchemeHydroInfoDict == null) { _allSchemeHydroInfoDict = new Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo>(); } - if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) + + if (hydroInfo == null) { - var hydroInfo = await GetSchemeHydroInfo(scheme); - _allSchemeHydroInfoDict.Add(scheme, hydroInfo); - return hydroInfo; + if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) + { + hydroInfo = await GetHydroInfo(scheme); + _allSchemeHydroInfoDict.Add(scheme, hydroInfo); + return hydroInfo; + } } - return _allSchemeHydroInfoDict[scheme]; + + if (_allSchemeHydroInfoDict.ContainsKey(scheme)) + { + _allSchemeHydroInfoDict[scheme] = hydroInfo; + } + else + { + _allSchemeHydroInfoDict.Add(scheme, hydroInfo); + } + + return hydroInfo; } - //鑾峰彇鏂规姘村姏淇℃伅 - private async Task<Yw.Model.HydroModelInfo> GetSchemeHydroInfo(XhsSchemeVmo scheme) + //鑾峰彇姘村姏淇℃伅 + private async Task<Yw.Model.HydroModelInfo> GetHydroInfo(XhsSchemeVmo scheme) { if (_project == null) { @@ -244,12 +160,18 @@ { return default; } + + HydroModelRelationVmo relation = null; if (scheme == null) { - return default; + relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance + .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); } - var relation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance - .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.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; @@ -257,163 +179,34 @@ 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 (_project == null) + { + return; + } + if (_projectSite == null) + { + return; + } 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.Text = scheme.Name; + elementScheme.Hint = scheme.Description; elementScheme.Tag = scheme; + elementScheme.ImageOptions.ImageIndex = 3; elementScheme.Click += async (sender, e) => { - if (_project == null) - { - return; - } - if (_projectSite == null) - { - return; - } - var hydroInfo = await GetSchemeHydroInfo(scheme); + var hydroInfo = await GetHydroInfo(scheme, true); if (hydroInfo == null) { return; @@ -426,19 +219,29 @@ dict = _allSchemeWorkingCheckedListDict[scheme]; } } - this.ShowProjectSiteSchemeEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, dict, this.svgImg32[3]); + this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, dict, this.svgImg32[3]); }; - this.elementSchemeList.Elements.Add(elementScheme); + 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>()); + } } - #endregion - - #region 椤圭洰绔欐柟妗堝伐鍐� - /// <summary> - /// 娣诲姞鏂规宸ュ喌 + /// 娣诲姞宸ュ喌 + /// 绾坊鍔狅紝涓嶄細瑙﹀彂浜嬩欢 /// </summary> - public void AppendSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) + public void AppendWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { @@ -448,47 +251,114 @@ { 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) + if (scheme == null) { - return; + 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); + } } - elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; - var ckEdit = new CheckEdit(); - ckEdit.Properties.AutoWidth = true; - ckEdit.Properties.Caption = string.Empty; - ckEdit.CheckedChanged += (sender, e) => + else { - 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.Hint = working.Description; - 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); + 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); + } + } + } + } } /// <summary> - /// 鏇存柊鏂规宸ュ喌 + /// 鏇存柊宸ュ喌 /// 鏇存柊锛屼細瑙﹀彂鏇存柊浜嬩欢 /// </summary> - public void UpdateSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) + public void UpdateWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { @@ -498,35 +368,78 @@ { 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) + + if (scheme == null) { - return; + 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); + } + } } - var element = elementScheme.Elements. - Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); - if (element == null) + else { - return; + 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); + } + } + } + } } - element.Tag = working; - element.Text = working.Name; - element.Hint = working.Description; - this.ProjectSiteSchemeWorkingUpdateEvent?.Invoke(scheme, working); + + this.ProjectSiteWorkingUpdateEvent?.Invoke(_project, _projectSite, scheme, working); } /// <summary> - /// 绉婚櫎鏂规宸ュ喌 + /// 绉婚櫎宸ュ喌 + /// 绉婚櫎锛屼細瑙﹀彂绉婚櫎浜嬩欢 /// </summary> - public void RemoveSchemeWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) + public void RemoveWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { @@ -536,46 +449,81 @@ { 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) + if (scheme == null) { - return; + 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); + } + } } - var element = elementScheme.Elements. - Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); - if (element == null) + else { - return; + 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); + } + } + } + } } - 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; - } - this.ProjectSiteSchemeWorkingRemoveEvent?.Invoke(scheme, working); - } + this.ProjectSiteWorkingRemoveEvent?.Invoke(_project, _projectSite, scheme, working); + } #endregion - - - //鍏冪礌鐐瑰嚮浜嬩欢 - private void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e) - { - - } //椤圭洰绔欐鍐� private async void elementProjectSiteInfo_Click(object sender, EventArgs e) @@ -588,7 +536,7 @@ { return; } - var hydroInfo = await GetHydroInfo(true); + var hydroInfo = await GetHydroInfo(null, true); if (hydroInfo == null) { return; @@ -607,16 +555,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) { @@ -626,7 +574,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; @@ -634,11 +587,7 @@ this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[3]); } - //宸ュ喌瀵规瘮 - private void btnCompareWorking_Click(object sender, EventArgs e) - { - this.CompareProjectWorkingEvent?.Invoke(this.svgImg32[5]); - } + } -- Gitblit v1.9.3