From aaac84e4ed86d089c01c5b180e4249db73cc78d7 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 19 二月 2025 14:08:04 +0800 Subject: [PATCH] 监测分析改造 --- /dev/null | 268 ---------------------- WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs | 20 + WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx | 0 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 26 + WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs | 327 +++++++++++++++++++++++++++ WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj | 3 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs | 13 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs | 2 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs | 29 +- WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs | 2 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user | 3 11 files changed, 387 insertions(+), 306 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs index e151e1e..369c254 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs @@ -2783,7 +2783,7 @@ //姘存车鍒嗘瀽 printWorking.PumpAnaly = SimulationPrintPumpAnalyHelper.Create(baseHydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鐩戞祴鍒嗘瀽 - printWorking.MonitorAnaly = SimulationPrintMonitorAnalyHelper.Create(baseHydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); + printWorking.MonitorAnaly = HydroMonitorAnalyHelper.Create(baseHydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鑳借�楀垎鏋� printWorking.EnergyAnaly = HydroEnergyAnalyHelper.Create(baseHydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鎹熷け缁熻 @@ -2814,7 +2814,7 @@ //姘存车鍒嗘瀽 printWorking.PumpAnaly = SimulationPrintPumpAnalyHelper.Create(hydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鐩戞祴鍒嗘瀽 - printWorking.MonitorAnaly = SimulationPrintMonitorAnalyHelper.Create(hydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); + printWorking.MonitorAnaly = HydroMonitorAnalyHelper.Create(hydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鑳借�楀垎鏋� printWorking.EnergyAnaly = HydroEnergyAnalyHelper.Create(hydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList); //鎹熷け缁熻 @@ -3040,14 +3040,14 @@ #region 鐩戞祴鍒嗘瀽 //鐩戞祴鍒嗘瀽鍒楄〃鎺т欢 - private HydroWorkingMonitorAnalyListCtrl _monitorAnalyListCtrl = null; + private HydroMonitorAnalyListCtrl _monitorAnalyListCtrl = null; //鑾峰彇鐩戞祴鍒嗘瀽鍒楄〃鎺т欢 - private HydroWorkingMonitorAnalyListCtrl GetMonitorAnalyListCtrl() + private HydroMonitorAnalyListCtrl GetMonitorAnalyListCtrl() { if (_monitorAnalyListCtrl == null) { - _monitorAnalyListCtrl = new HydroWorkingMonitorAnalyListCtrl(); + _monitorAnalyListCtrl = new HydroMonitorAnalyListCtrl(); _monitorAnalyListCtrl.Dock = DockStyle.Fill; _monitorAnalyListCtrl.HydroViewEvent += (code) => { @@ -3067,7 +3067,7 @@ { if (this.controlContainerBottom.Controls.Count > 0) { - if (this.controlContainerBottom.Controls[0] is HydroWorkingMonitorAnalyListCtrl) + if (this.controlContainerBottom.Controls[0] is HydroMonitorAnalyListCtrl) { return true; } @@ -3077,7 +3077,7 @@ } } - //鏄剧ず鐩戞祴鍊煎垪琛ㄦ帶浠� + //鏄剧ず鐩戞祴鍒嗘瀽鍒楄〃鎺т欢 private async void ShowMonitorAnalyListCtrl() { if (_hydroInfo == null) @@ -3094,6 +3094,7 @@ return; } } + var monitorAnalyListCtrl = GetMonitorAnalyListCtrl(); if (!IsMonitorAnalyListCtrlVisible) { @@ -3103,14 +3104,19 @@ this.docPnlBottom.Text = "鐩戞祴鍒嗘瀽"; this.docPnlBottom.Height = 350; } - var allMontorList = await GetMonitorAnalyseList(); + + var allMonitorList = await GetMonitorAnalyseList(); + var isHead = _calcuPressModeIsHead; + var allEvaluationList = await GetEvaluationList(); + if (allWorkingList == null || allWorkingList.Count < 1) { - monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, GetCalcuResult()); + var workingHelper = GetWorkingHelper(); + monitorAnalyListCtrl.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult, isHead, allEvaluationList); } else { - monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, allWorkingList); + monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMonitorList, allWorkingList, isHead, allEvaluationList); } } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs deleted file mode 100644 index ebc96ad..0000000 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs +++ /dev/null @@ -1,20 +0,0 @@ -锘縩amespace HStation.WinFrmUI -{ - /// <summary> - /// 鐩戞祴鍒嗘瀽瑙嗗浘 - /// </summary> - public class SimulationPrintMonitorAnalyViewModel - { - /// <summary> - /// - /// </summary> - public SimulationPrintMonitorAnalyViewModel() { } - - - /// <summary> - /// 瀛愮骇闆嗗悎 - /// </summary> - public List<SimulationPrintMonitorAnalyItemViewModel> Items { get; set; } - - } -} diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs index 32b7c51..1cdf1af 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs @@ -48,7 +48,7 @@ /// <summary> /// 鐩戞祴鍒嗘瀽 /// </summary> - public SimulationPrintMonitorAnalyViewModel MonitorAnaly { get; set; } + public HydroMonitorAnalyViewModel MonitorAnaly { get; set; } /// <summary> /// 鑳借�楀垎鏋� diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs deleted file mode 100644 index 805cae6..0000000 --- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs +++ /dev/null @@ -1,268 +0,0 @@ -锘縰sing DevExpress.XtraEditors.Controls; -using DevExpress.XtraGrid.Columns; -using Mapster; -using System.Data; - -namespace Yw.WinFrmUI -{ - public partial class HydroWorkingMonitorAnalyListCtrl : DevExpress.XtraEditors.XtraUserControl - { - public HydroWorkingMonitorAnalyListCtrl() - { - InitializeComponent(); - this.gridView1.SetLimitView(); - this.gridView1.RegistCustomDrawRowIndicator(40); - } - - /// <summary> - /// 姘村姏瑙嗗浘浜嬩欢 - /// </summary> - public event Action<string> HydroViewEvent; - - /// <summary> - /// 杈规鍙鎬� - /// </summary> - public bool BorderVisible - { - get - { - return this.gridView1.BorderStyle != BorderStyles.NoBorder; - } - set - { - this.gridView1.BorderStyle = value ? BorderStyles.Default : BorderStyles.NoBorder; - } - } - - private DataTable _dt = null;//琛ㄦ牸 - private Yw.Model.HydroModelInfo _hydroInfo = null; - private List<HydroMonitorVmo> _allMonitorList = null; - private HydroCalcuResult _calcuResult = null; - private List<HydroWorkingVmo> _allWorkingList = null; - - /// <summary> - /// 缁戝畾鏁版嵁 - /// </summary> - public void SetBindingData - ( - Yw.Model.HydroModelInfo hydroInfo, - List<HydroMonitorVmo> allMonitorList, - HydroCalcuResult calcuResult - ) - { - - _hydroInfo = hydroInfo; - _allMonitorList = allMonitorList; - _calcuResult = calcuResult; - InitialSingleColumns(); - InitialSingleDataTable(); - var overlay = this.ShowOverlay(); - this.bindingSource1.DataSource = _dt; - this.gridView1.RefreshData(); - overlay.Close(); - } - - /// <summary> - /// 缁戝畾鏁版嵁 - /// </summary> - public void SetBindingData - ( - Yw.Model.HydroModelInfo hydroInfo, - List<HydroMonitorVmo> allMonitorList, - List<HydroWorkingVmo> allWorkingList - ) - { - - _hydroInfo = hydroInfo; - _allMonitorList = allMonitorList; - _allWorkingList = allWorkingList; - var overlay = this.ShowOverlay(); - InitialMultiColumns(); - InitialMultiDataTable(); - this.bindingSource1.DataSource = _dt; - this.gridView1.RefreshData(); - overlay.Close(); - } - - - //鍒濆鍖栧崟宸ュ喌鍒� - private void InitialSingleColumns() - { - this.gridView1.Columns.Clear(); - - //鏋勪欢 - var colRelation = new GridColumn(); - colRelation.Caption = "鏋勪欢"; - colRelation.FieldName = "Parter"; - colRelation.Visible = true; - this.gridView1.Columns.Add(colRelation); - - //灞炴�� - var colProp = new GridColumn(); - colProp.Caption = "灞炴��"; - colProp.FieldName = "PropName"; - colProp.Visible = true; - this.gridView1.Columns.Add(colProp); - - //璁$畻鍊� - var colCalcuValue = new GridColumn(); - colCalcuValue.Caption = "璁$畻鍊�"; - colCalcuValue.FieldName = "CalcuValue"; - colCalcuValue.Visible = true; - this.gridView1.Columns.Add(colCalcuValue); - - //鍗曚綅 - var colUnit = new GridColumn(); - colUnit.Caption = "鍗曚綅"; - colUnit.FieldName = "UnitName"; - colUnit.Visible = true; - this.gridView1.Columns.Add(colUnit); - } - - //鍒濆鍖栧崟宸ュ喌琛ㄦ牸 - private void InitialSingleDataTable() - { - _dt = new DataTable(); - _dt.Columns.Add("Code", typeof(string)); - _dt.Columns.Add("Parter", typeof(string)); - _dt.Columns.Add("PropName", typeof(string)); - _dt.Columns.Add("CalcuValue", typeof(string)); - _dt.Columns.Add("UnitName", typeof(string)); - - var allMonitorList = _allMonitorList?.OrderBy(x => x.SortCode).ToList(); - if (allMonitorList != null && allMonitorList.Count > 0) - { - var allVisualDict = _hydroInfo.GetVisualDict(); - var allCalcuVisualDict = _calcuResult?.GetVisualDict(); - foreach (var monitor in allMonitorList) - { - var visual = allVisualDict?.GetValue(monitor.Parter); - if (visual == null) - { - continue; - } - var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName); - var row = _dt.NewRow(); - row["Code"] = monitor.Parter; - row["Parter"] = visual.Name; - row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName); - row["CalcuValue"] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null; - row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName); - _dt.Rows.Add(row); - } - } - } - - //鍒濆鍖栧宸ュ喌鍒� - private void InitialMultiColumns() - { - this.gridView1.Columns.Clear(); - - //鏋勪欢 - var colRelation = new GridColumn(); - colRelation.Caption = "鏋勪欢"; - colRelation.FieldName = "Parter"; - colRelation.Visible = true; - this.gridView1.Columns.Add(colRelation); - - //灞炴�� - var colProp = new GridColumn(); - colProp.Caption = "灞炴��"; - colProp.FieldName = "PropName"; - colProp.Visible = true; - this.gridView1.Columns.Add(colProp); - - //宸ュ喌 - if (_allWorkingList != null && _allWorkingList.Count > 0) - { - foreach (var working in _allWorkingList) - { - var colCalcuValue = new GridColumn(); - colCalcuValue.Caption = working.Name; - colCalcuValue.FieldName = working.ID.ToString(); - colCalcuValue.Visible = true; - this.gridView1.Columns.Add(colCalcuValue); - } - } - - //鍗曚綅 - var colUnit = new GridColumn(); - colUnit.Caption = "鍗曚綅"; - colUnit.FieldName = "UnitName"; - colUnit.Visible = true; - this.gridView1.Columns.Add(colUnit); - } - - //鍒濆鍖栧宸ュ喌琛ㄦ牸 - private void InitialMultiDataTable() - { - _dt = new DataTable(); - _dt.Columns.Add("Code", typeof(string)); - _dt.Columns.Add("Parter", typeof(string)); - _dt.Columns.Add("PropName", typeof(string)); - if (_allWorkingList != null && _allWorkingList.Count > 0) - { - foreach (var working in _allWorkingList) - { - _dt.Columns.Add(working.ID.ToString(), typeof(string)); - } - } - _dt.Columns.Add("UnitName", typeof(string)); - - var dict = new Dictionary<HydroWorkingVmo, Dictionary<string, HydroCalcuVisualResult>>(); - if (_allWorkingList != null && _allWorkingList.Count > 0) - { - foreach (var working in _allWorkingList) - { - var hydroInfo = _hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); - hydroInfo.UpdateWorkingInfo(working.WorkingInfo); - var calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); - var allCalcuVisualDict = calcuResult.GetVisualDict(); - dict.Add(working, allCalcuVisualDict); - } - } - - var allMonitorList = _allMonitorList?.OrderBy(x => x.SortCode).ToList(); - if (allMonitorList != null && allMonitorList.Count > 0) - { - var allVisualDict = _hydroInfo.GetVisualDict(); - foreach (var monitor in allMonitorList) - { - var visual = allVisualDict?.GetValue(monitor.Parter); - if (visual == null) - { - continue; - } - var row = _dt.NewRow(); - row["Code"] = monitor.Parter; - row["Parter"] = visual.Name; - row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName); - if (dict.Count > 0) - { - foreach (var item in dict) - { - var calcuValue = item.Value.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName); - row[item.Key.ID.ToString()] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null; - } - } - row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName); - - _dt.Rows.Add(row); - } - } - } - - private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) - { - var row = this.gridView1.GetRow(e.RowHandle) as DataRowView; - if (row == null) - { - return; - } - var code = row.Row["Code"]?.ToString(); - this.HydroViewEvent?.Invoke(code); - } - - - } -} diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj index 3ef01c9..78b432b 100644 --- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj @@ -431,6 +431,9 @@ <Compile Update="loss-statistics\08-working\HydroLossStatisticsWorkingDlg.cs"> <SubType>Form</SubType> </Compile> + <Compile Update="monitor-analy\02-control\HydroMonitorAnalyListCtrl.cs"> + <SubType>UserControl</SubType> + </Compile> <Compile Update="Properties\Resources.Designer.cs"> <DesignTime>True</DesignTime> <AutoGen>True</AutoGen> diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user index ac40d95..d36dfff 100644 --- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user @@ -43,9 +43,6 @@ <Compile Update="12-monitor\01-value\HydroMonitorValueListCtrl.cs"> <SubType>UserControl</SubType> </Compile> - <Compile Update="12-monitor\05-analy\HydroWorkingMonitorAnalyListCtrl.cs"> - <SubType>UserControl</SubType> - </Compile> <Compile Update="16-evaluation\04-single\HydroSingleWorkingEvaluationCtrl.cs"> <SubType>UserControl</SubType> </Compile> diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs similarity index 68% rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs index e862880..cd8a96a 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs @@ -1,16 +1,14 @@ -锘縰sing Mapster; - -namespace HStation.WinFrmUI +锘縩amespace Yw.WinFrmUI { /// <summary> /// /// </summary> - public class SimulationPrintMonitorAnalyHelper + public class HydroMonitorAnalyHelper { /// <summary> /// 鍒涘缓 /// </summary> - public static SimulationPrintMonitorAnalyViewModel Create + public static HydroMonitorAnalyViewModel Create ( Yw.Model.HydroModelInfo hydroInfo, List<Yw.Vmo.HydroMonitorVmo> allMonitorList, @@ -20,31 +18,31 @@ List<Yw.Vmo.HydroEvaluationVmo> allEvaluationList = null ) { - var vm = new SimulationPrintMonitorAnalyViewModel(); - //楠岃瘉 if (hydroInfo == null) { - return vm; + return default; } if (allMonitorList == null || allMonitorList.Count < 1) { - return vm; + return default; } if (working == null) { - return vm; + return default; } + var vm = new HydroMonitorAnalyViewModel(); + + //杩囨护娴嬬偣锛屼粎闇�瑕佸垎鏋愭祴鐐� - var monitorList = allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList(); + var monitorList = allMonitorList.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList(); if (monitorList == null || monitorList.Count < 1) { return vm; } - //璧嬪�兼ā鍨嬩俊鎭紝閬垮厤骞叉壈 - //var newHydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); + //鏋勪欢鍒楄〃 var allVisualDict = hydroInfo.GetVisualDict(); if (allVisualDict == null || allVisualDict.Count < 1) { @@ -54,6 +52,7 @@ //璁$畻缁撴灉 if (calcuResult == null) { + hydroInfo.UpdateWorkingInfo(working.WorkingInfo); calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList); if (!calcuResult.Succeed) { @@ -63,10 +62,10 @@ var allCalcuVisualDict = calcuResult.GetVisualDict(); //閬嶅巻娴嬬偣 - vm.Items = new List<SimulationPrintMonitorAnalyItemViewModel>(); + vm.Items = new List<HydroMonitorAnalyItemViewModel>(); foreach (var monitor in monitorList) { - var item = new SimulationPrintMonitorAnalyItemViewModel(monitor, allVisualDict, allCalcuVisualDict); + var item = new HydroMonitorAnalyItemViewModel(monitor, allVisualDict, allCalcuVisualDict); vm.Items.Add(item); } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs similarity index 83% rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs index 5615499..bde199f 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs @@ -1,24 +1,21 @@ -锘縰sing DevExpress.PerformanceTests.PerfomanceMonitor; -using System.Threading; -using Yw.Model; -using Yw.Vmo; +锘縰sing Yw.Model; -namespace HStation.WinFrmUI +namespace Yw.WinFrmUI { /// <summary> /// 鐩戞祴鍒嗘瀽椤硅鍥� /// </summary> - public class SimulationPrintMonitorAnalyItemViewModel + public class HydroMonitorAnalyItemViewModel { /// <summary> /// /// </summary> - public SimulationPrintMonitorAnalyItemViewModel() { } + public HydroMonitorAnalyItemViewModel() { } /// <summary> /// /// </summary> - public SimulationPrintMonitorAnalyItemViewModel + public HydroMonitorAnalyItemViewModel ( HydroMonitorVmo rhs, Dictionary<string, HydroVisualInfo> allVisualDict, diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs new file mode 100644 index 0000000..271a1ae --- /dev/null +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs @@ -0,0 +1,20 @@ +锘縩amespace Yw.WinFrmUI +{ + /// <summary> + /// 鐩戞祴鍒嗘瀽瑙嗗浘 + /// </summary> + public class HydroMonitorAnalyViewModel + { + /// <summary> + /// + /// </summary> + public HydroMonitorAnalyViewModel() { } + + + /// <summary> + /// 瀛愮骇闆嗗悎 + /// </summary> + public List<HydroMonitorAnalyItemViewModel> Items { get; set; } + + } +} diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs similarity index 97% rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs index d5816f3..7294504 100644 --- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs @@ -1,6 +1,6 @@ 锘縩amespace Yw.WinFrmUI { - partial class HydroWorkingMonitorAnalyListCtrl + partial class HydroMonitorAnalyListCtrl { /// <summary> /// Required designer variable. diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs new file mode 100644 index 0000000..6632f52 --- /dev/null +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs @@ -0,0 +1,327 @@ +锘縰sing DevExpress.XtraEditors.Controls; +using DevExpress.XtraGrid.Columns; +using Mapster; +using System.Data; + +namespace Yw.WinFrmUI +{ + public partial class HydroMonitorAnalyListCtrl : DevExpress.XtraEditors.XtraUserControl + { + public HydroMonitorAnalyListCtrl() + { + InitializeComponent(); + this.gridView1.SetLimitView(); + this.gridView1.RegistCustomDrawRowIndicator(40); + } + + /// <summary> + /// 姘村姏瑙嗗浘浜嬩欢 + /// </summary> + public event Action<string> HydroViewEvent; + + /// <summary> + /// 杈规鍙鎬� + /// </summary> + public bool BorderVisible + { + get + { + return this.gridView1.BorderStyle != BorderStyles.NoBorder; + } + set + { + this.gridView1.BorderStyle = value ? + BorderStyles.Default : + BorderStyles.NoBorder; + } + } + + private DataTable _dt = null;//琛ㄦ牸 + private Yw.Model.HydroModelInfo _hydroInfo = null; + private List<HydroMonitorVmo> _allMonitorList = null; + private List<HydroWorkingVmo> _allWorkingList = null; + private Dictionary<HydroWorkingVmo, HydroCalcuResult> _allCalcuResultDict = null;//璁$畻缁撴灉瀛楀吀 + + /// <summary> + /// 缁戝畾鏁版嵁 + /// </summary> + public void SetBindingData + ( + Yw.Model.HydroModelInfo hydroInfo, + List<HydroMonitorVmo> allMonitorList, + HydroWorkingVmo working, + HydroCalcuResult calcuResult = null, + bool isHead = false, + List<HydroEvaluationVmo> allEvaluationList = null + ) + { + if (hydroInfo == null) + { + return; + } + if (allMonitorList == null || allMonitorList.Count < 1) + { + return; + } + if (working == null) + { + return; + } + _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); + _allMonitorList = allMonitorList; + _allWorkingList = new List<HydroWorkingVmo>() { working }; + if (calcuResult == null) + { + _hydroInfo.UpdateWorkingInfo(working.WorkingInfo); + calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList); + if (!calcuResult.Succeed) + { + return; + } + } + _allCalcuResultDict = new Dictionary<HydroWorkingVmo, HydroCalcuResult>() + { + { working,calcuResult} + }; + + var overlay = this.ShowOverlay(); + InitialSingleColumns(); + InitialSingleDataTable(); + this.bindingSource1.DataSource = _dt; + this.bindingSource1.ResetBindings(false); + this.gridView1.RefreshData(); + overlay.Close(); + } + + /// <summary> + /// 缁戝畾鏁版嵁 + /// </summary> + public void SetBindingData + ( + Yw.Model.HydroModelInfo hydroInfo, + List<HydroMonitorVmo> allMonitorList, + List<HydroWorkingVmo> allWorkingList, + bool isHead = false, + List<HydroEvaluationVmo> allEvaluationList = null + ) + { + if (hydroInfo == null) + { + return; + } + if (allMonitorList == null || allMonitorList.Count < 1) + { + return; + } + if (allWorkingList == null || allWorkingList.Count < 1) + { + return; + } + + var overlay = this.ShowOverlay(); + + _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); + _allMonitorList = allMonitorList; + _allWorkingList = allWorkingList; + _allCalcuResultDict = new Dictionary<HydroWorkingVmo, HydroCalcuResult>(); + foreach (var working in allWorkingList) + { + _hydroInfo.UpdateWorkingInfo(working.WorkingInfo); + var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList); + if (calcuResult != null && calcuResult.Succeed) + { + _allCalcuResultDict.Add(working, calcuResult); + } + } + InitialMultiColumns(); + InitialMultiDataTable(); + this.bindingSource1.DataSource = _dt; + this.bindingSource1.ResetBindings(false); + this.gridView1.RefreshData(); + overlay.Close(); + } + + + //鍒濆鍖栧崟宸ュ喌鍒� + private void InitialSingleColumns() + { + this.gridView1.Columns.Clear(); + + //鏋勪欢 + var colRelation = new GridColumn(); + colRelation.Caption = "鏋勪欢"; + colRelation.FieldName = "VisualName"; + colRelation.Visible = true; + this.gridView1.Columns.Add(colRelation); + + //灞炴�� + var colProp = new GridColumn(); + colProp.Caption = "灞炴��"; + colProp.FieldName = "PropName"; + colProp.Visible = true; + this.gridView1.Columns.Add(colProp); + + //璁$畻鍊� + var colCalcuValue = new GridColumn(); + colCalcuValue.Caption = "璁$畻鍊�"; + colCalcuValue.FieldName = "CalcuValue"; + colCalcuValue.Visible = true; + this.gridView1.Columns.Add(colCalcuValue); + + //鍗曚綅 + var colUnit = new GridColumn(); + colUnit.Caption = "鍗曚綅"; + colUnit.FieldName = "UnitName"; + colUnit.Visible = true; + this.gridView1.Columns.Add(colUnit); + } + + //鍒濆鍖栧崟宸ュ喌琛ㄦ牸 + private void InitialSingleDataTable() + { + _dt = new DataTable(); + _dt.Columns.Add("Code", typeof(string)); + _dt.Columns.Add("VisualName", typeof(string)); + _dt.Columns.Add("PropName", typeof(string)); + _dt.Columns.Add("CalcuValue", typeof(string)); + _dt.Columns.Add("UnitName", typeof(string)); + + var monitorList = _allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList(); + monitorList = monitorList?.OrderBy(x => x.SortCode).ToList(); + if (monitorList != null && monitorList.Count > 0) + { + var allVisualDict = _hydroInfo?.GetVisualDict(); + if (allVisualDict != null && allVisualDict.Count > 0) + { + var allCalcuVisualDict = _allCalcuResultDict?.FirstOrDefault().Value?.GetVisualDict(); + foreach (var monitor in monitorList) + { + var visual = allVisualDict.GetValue(monitor.Parter); + if (visual == null) + { + continue; + } + var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName); + var row = _dt.NewRow(); + row["Code"] = monitor.Parter; + row["VisualName"] = visual.Name; + row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName); + row["CalcuValue"] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null; + row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName); + _dt.Rows.Add(row); + } + } + } + } + + //鍒濆鍖栧宸ュ喌鍒� + private void InitialMultiColumns() + { + this.gridView1.Columns.Clear(); + + //鏋勪欢 + var colRelation = new GridColumn(); + colRelation.Caption = "鏋勪欢"; + colRelation.FieldName = "VisualName"; + colRelation.Visible = true; + this.gridView1.Columns.Add(colRelation); + + //灞炴�� + var colProp = new GridColumn(); + colProp.Caption = "灞炴��"; + colProp.FieldName = "PropName"; + colProp.Visible = true; + this.gridView1.Columns.Add(colProp); + + //宸ュ喌 + if (_allWorkingList != null && _allWorkingList.Count > 0) + { + foreach (var working in _allWorkingList) + { + var colCalcuValue = new GridColumn(); + colCalcuValue.Caption = working.Name; + colCalcuValue.FieldName = working.ID.ToString(); + colCalcuValue.Visible = true; + this.gridView1.Columns.Add(colCalcuValue); + } + } + + //鍗曚綅 + var colUnit = new GridColumn(); + colUnit.Caption = "鍗曚綅"; + colUnit.FieldName = "UnitName"; + colUnit.Visible = true; + this.gridView1.Columns.Add(colUnit); + } + + //鍒濆鍖栧宸ュ喌琛ㄦ牸 + private void InitialMultiDataTable() + { + _dt = new DataTable(); + _dt.Columns.Add("Code", typeof(string)); + _dt.Columns.Add("VisualName", typeof(string)); + _dt.Columns.Add("PropName", typeof(string)); + if (_allWorkingList != null && _allWorkingList.Count > 0) + { + foreach (var working in _allWorkingList) + { + _dt.Columns.Add(working.ID.ToString(), typeof(string)); + } + } + _dt.Columns.Add("UnitName", typeof(string)); + + var monitorList = _allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList(); + monitorList = monitorList?.OrderBy(x => x.SortCode).ToList(); + if (monitorList != null && monitorList.Count > 0) + { + var allVisualDict = _hydroInfo?.GetVisualDict(); + if (allVisualDict != null && allVisualDict.Count > 0) + { + foreach (var monitor in monitorList) + { + var visual = allVisualDict.GetValue(monitor.Parter); + if (visual == null) + { + continue; + } + var row = _dt.NewRow(); + row["Code"] = monitor.Parter; + row["VisualName"] = visual.Name; + row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName); + if (_allWorkingList != null && _allWorkingList.Count > 0) + { + foreach (var working in _allWorkingList) + { + if (_allCalcuResultDict != null && _allCalcuResultDict.Count > 0) + { + if (_allCalcuResultDict.ContainsKey(working)) + { + var allCalcuVisualDict = _allCalcuResultDict[working].GetVisualDict(); + var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName); + row[working.ID.ToString()] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null; + } + } + } + } + row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName); + _dt.Rows.Add(row); + } + } + } + } + + //琛屽崟鍏冩牸鐐瑰嚮浜嬩欢 + private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) + { + var row = this.gridView1.GetRow(e.RowHandle) as DataRowView; + if (row == null) + { + return; + } + var code = row.Row["Code"]?.ToString(); + this.HydroViewEvent?.Invoke(code); + } + + + } +} diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx similarity index 100% rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx -- Gitblit v1.9.3