| | |
| | | using DevExpress.Utils.Extensions; |
| | | using DevExpress.CodeParser; |
| | | using DevExpress.DataAccess.Native; |
| | | using DevExpress.Utils.Extensions; |
| | | using DevExpress.Utils.Svg; |
| | | using DevExpress.XtraCharts; |
| | | using System.Collections.Concurrent; |
| | | using Yw.DAL.Basic; |
| | | using Yw.Vmo; |
| | | |
| | |
| | | /// <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;//项目站 |
| | |
| | | private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//所有工况选择列表字典 |
| | | private Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo> _allSchemeHydroInfoDict = null;//所有方案水力信息列表 |
| | | private Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>> _allSchemeWorkingCheckedListDict = null;//所有方案工况选择列表字典 |
| | | private ConcurrentDictionary<string, bool> _gettingHydroInfoDict = new ConcurrentDictionary<string, bool>();//获取水力信息字典 |
| | | |
| | | /// <summary> |
| | | /// 绑定数据 |
| | |
| | | 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.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); |
| | | } |
| | | |
| | | /// <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; |
| | | } |
| | | 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; |
| | | this.ProjectSiteSchemeWorkingUpdateEvent?.Invoke(scheme, working); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 移除方案工况 |
| | | /// </summary> |
| | | public void RemoveSchemeWorking(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; |
| | | } |
| | | 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; |
| | | } |
| | | this.ProjectSiteSchemeWorkingRemoveEvent?.Invoke(scheme, 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(); |
| | | } |
| | | |
| | | //项目站水力模拟 |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | { |
| | | 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; |
| | |
| | | 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) |
| | | { |
| | | if (hydroInfo == null) |
| | | { |
| | | 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) |
| | | { |
| | | return default; |
| | | } |
| | | 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 (hydroInfo == null) |
| | | { |
| | | return default; |
| | | } |
| | | 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; |
| | | } |
| | | string key = $"{_project.ID}-{_projectSite.ID}-{scheme?.ID}"; |
| | | if (_gettingHydroInfoDict.TryGetValue(key, out bool getting)) |
| | | { |
| | | if (getting) |
| | | { |
| | | return default; |
| | | } |
| | | } |
| | | if (!_gettingHydroInfoDict.TryAdd(key, true)) |
| | | { |
| | | _gettingHydroInfoDict[key] = true; |
| | | } |
| | | |
| | | 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); |
| | | _gettingHydroInfoDict[key] = false; |
| | | 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); |
| | | 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; |
| | | 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); |
| | | 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; |
| | | 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 |
| | | } |
| | | } |