From 480d3257317d6f48ab2d910cb4d731b69fa53b40 Mon Sep 17 00:00:00 2001 From: duheng <2286773002@qq.com> Date: 星期五, 21 三月 2025 18:25:09 +0800 Subject: [PATCH] 能耗分析界面修改 --- WinFrmUI/PBS.WinFrmUI.DataAnalysis/EnergyAnalysis.cs | 166 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 132 insertions(+), 34 deletions(-) diff --git a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/EnergyAnalysis.cs b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/EnergyAnalysis.cs index 19d7d1c..3ff14f8 100644 --- a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/EnergyAnalysis.cs +++ b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/EnergyAnalysis.cs @@ -3,6 +3,7 @@ using DevExpress.XtraCharts; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; +using Org.BouncyCastle.Tls.Crypto; using System.Data; using System.IO; using Yw.WinFrmUI; @@ -17,6 +18,10 @@ InitialChart(); } + private List<FlowPressChartViewModel> _datalist; + + private DataTable _datatable; + private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { //瀵煎叆鏂囦欢 @@ -25,14 +30,17 @@ dlg.CheckFileExists = true; if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; - var datalist = new List<FlowPressChartViewModel>(); - var datatable = new DataTable(); - ParseExcel(dlg.FileName, out datalist, out datatable); - if (datalist.Any()) + _datalist = new List<FlowPressChartViewModel>(); + _datatable = new DataTable(); + ParseExcel(dlg.FileName, out _datalist, out _datatable); + if (_datalist.Any()) { - SetBindingData(datalist, datatable); + SetBindingData(_datalist, _datatable); } } + + private double _totalPrice = 0; + #region Private Variable private XYDiagram _diagram; @@ -42,14 +50,23 @@ private AxisY _axis_y_head; private SecondaryAxisY _axis_y_eff; + #endregion Private Variable - #endregion + private class PowerData + { + public double Power; + + public DateTime Time; + } + + private List<PowerData> _oldData; + private List<PowerData> _newData; + /// <summary> /// 鍒濆鍖栧浘琛� /// </summary> private void InitialChart() { - this.chartControl1.RuntimeHitTesting = true; this.chartControl1.Legend.Visibility = DefaultBoolean.True; @@ -68,13 +85,11 @@ _axis_y_eff = _diagram.SecondaryAxesY.GetAxisByName("AxisYEff"); _axis_y_eff.Alignment = AxisAlignment.Far; - _axis_x_flow.GridLines.Visible = false; _axis_y_head.GridLines.Visible = false; _axis_y_eff.GridLines.Visible = false; this.chartControl1.CrosshairEnabled = DefaultBoolean.True; - } /// <summary> @@ -82,12 +97,11 @@ /// </summary> public void SetBindingData(List<FlowPressChartViewModel> vm_list, DataTable dataTable) { - var view = gridControl1.MainView as GridView; view.Columns.Clear(); this.chartControl1.BeginInit(); - this.chartControl1.Series.Clear(); + //this.chartControl1.Series.Clear(); for (int i = this.chartControl1.AnnotationRepository.Count - 1; i > 0; i--) { if (i == 0) @@ -97,7 +111,6 @@ this.chartControl1.Legend.CustomItems.Clear(); if (IsInvalidData()) { - this.chartControl1.EndInit(); return; } @@ -126,7 +139,6 @@ axis_x = _axis_x_flow; axis_y = _axis_y_eff; pane = _default_pane; - } var col = new GridColumn(); col.FieldName = vm.Name; @@ -139,9 +151,10 @@ double totalEl = 0; double totalOldEl = 0; - double totalFy = 0; var tempdatas = vm_list.FirstOrDefault(c => c.Name.Contains("鍘嬪姏")); var tempflow = vm_list.FirstOrDefault(c => c.Name.Contains("娴侀噺")); + _oldData = new List<PowerData>(); + _newData = new List<PowerData>(); foreach (var item in tempdatas.Datas) { var flow = tempflow.Datas.FirstOrDefault(c => c.Time == item.Time); @@ -151,21 +164,29 @@ var newpressM = Yw.Pump.CalculationHelper.Mpa2M(item.Y); var oldel = Yw.Pump.CalculationHelper.CalcuP(flow.Y, oldpressM, Efficiency); var newel = Yw.Pump.CalculationHelper.CalcuP(flow.Y, newpressM, Efficiency); + _oldData.Add(new PowerData + { + Power = oldel / 60, + Time = DateTime.Parse(item.Time) + }); + _newData.Add(new PowerData + { + Power = newel / 60, + Time = DateTime.Parse(item.Time) + }); var el = oldel - newel; totalOldEl += oldel; totalEl += el; var Fy = ElecPriceHelper.CalcuShysElectricityFees(DateTime.Parse(item.Time), el); - totalFy += Fy; + //totalFy += Fy; } item.Y = Press;//Yw.Pump.CalculationHelper.CalcuP(); - } AddLineSeries("鍘熸车鍚庡帇鍔�", axis_x, _axis_y_eff, _default_pane, tempdatas.Datas); var min_x = vm_list.SelectMany(x => x.Datas).Min(x => DateTime.Parse(x.Time)); var max_x = vm_list.SelectMany(x => x.Datas).Max(x => DateTime.Parse(x.Time)); - _axis_x_flow.NumericScaleOptions.AutoGrid = false; _axis_x_flow.WholeRange.SideMarginsValue = 0; @@ -178,20 +199,94 @@ textEdit2.Text = Math.Round(totalFlow.Sum() / 60).ToString(); textEdit3.Text = Math.Round(totalEl).ToString(); textEdit4.Text = Math.Round(totalEl / totalOldEl * 100).ToString(); - textEdit5.Text = Math.Round(totalFy).ToString(); gridControl1.DataSource = dataTable; this.chartControl1.EndInit(); + SetEffData(); + SetEffPriceData(); + } + private void SetEffData() + { + var SeriseOld = this.chartControl1.GetSeriesByName("Series 1"); + SeriseOld.Points.Clear(); + if (_oldData != null) + { + foreach (var item in _oldData) + { + SeriseOld.Points.Add(new SeriesPoint(item.Time, item.Power)); + } + } + var SeriseNew = this.chartControl1.GetSeriesByName("Series 2"); + SeriseNew.Points.Clear(); + if (_newData != null) + { + foreach (var item in _newData) + { + SeriseNew.Points.Add(new SeriesPoint(item.Time, item.Power)); + } + } + var SeriesDef = this.chartControl1.GetSeriesByName("Series 3"); + SeriesDef.Points.Clear(); + + if (_oldData != null && _newData != null) + { + for (int i = 0; i < _oldData.Count; i++) + { + var def = _oldData[i].Power - _newData[i].Power; + SeriesDef.Points.Add(new SeriesPoint(_newData[i].Time, def)); + } + } + } + + private void SetEffPriceData() + { + _totalPrice = default; + List<PowerData> oldPrice = null; + List<PowerData> newPrice = null; + var SeriseOld = this.chartControl1.GetSeriesByName("Series 4"); + SeriseOld.Points.Clear(); + if (_oldData != null) + { + oldPrice = new List<PowerData>(); + foreach (var item in _oldData) + { + var price = ElecPriceHelper.CalcuShysElectricityFees(item.Time, item.Power); + SeriseOld.Points.Add(new SeriesPoint(item.Time, price)); + oldPrice.Add(new PowerData { Time = item.Time, Power = item.Power }); + } + } + var SeriseNew = this.chartControl1.GetSeriesByName("Series 5"); + SeriseNew.Points.Clear(); + if (_newData != null) + { + newPrice = new List<PowerData>(); + foreach (var item in _newData) + { + var price = ElecPriceHelper.CalcuShysElectricityFees(item.Time, item.Power); + SeriseNew.Points.Add(new SeriesPoint(item.Time, price)); + newPrice.Add(new PowerData { Time = item.Time, Power = item.Power }); + } + } + var SeriesDef = this.chartControl1.GetSeriesByName("Series 6"); + SeriesDef.Points.Clear(); + + if (oldPrice != null && newPrice != null) + { + for (int i = 0; i < oldPrice.Count; i++) + { + var def = oldPrice[i].Power - newPrice[i].Power; + _totalPrice += def; + SeriesDef.Points.Add(new SeriesPoint(oldPrice[i].Time, def)); + } + } + textEdit5.Text = Math.Round(_totalPrice).ToString(); } //鏄惁鏄棤鏁堟暟鎹� private bool IsInvalidData() { - return false; } - - private void AddLineSeries(string id, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<TimeChartViewModel> pt_list, DevExpress.XtraCharts.DashStyle dash = DevExpress.XtraCharts.DashStyle.Solid) { @@ -214,9 +309,9 @@ view.EmptyPointOptions.Color = Color.Transparent; view.Pane = pane; - var series_pt_list = pt_list.Select(x => new SeriesPoint(DateTime.Parse(x.Time), x.Y)).ToArray(); - var series = new DevExpress.XtraCharts.Series(); + var series = this.chartControl1.GetSeriesByName(id); + series.Points.Clear(); series.Tag = id; //series.ShowInLegend = false; series.Name = id; @@ -232,8 +327,9 @@ series.View = view; series.Points.AddRange(series_pt_list); - this.chartControl1.Series.Add(series); + //this.chartControl1.Series.Add(series); } + public static string ParseExcel(string fileName, out List<FlowPressChartViewModel> datalist, out DataTable dataTable) { datalist = new List<FlowPressChartViewModel>(); @@ -295,7 +391,6 @@ else { dataTable.Columns.Add(row_cell.StringCellValue, typeof(string)); - } } @@ -304,7 +399,6 @@ for (line = start_line; line < 10000; line++) { - row_temp = sheet1.GetRow(line); if (row_temp == null) break; @@ -340,16 +434,12 @@ dataTable.Rows.Add(rowData); } - - return ""; - - - } - double Press = 0.6; - double Efficiency = 75; - SetPressForm dlg = new SetPressForm(); + + private double Press = 0.6; + private double Efficiency = 75; + private SetPressForm dlg = new SetPressForm(); private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { @@ -359,5 +449,13 @@ Efficiency = dlg.Efficiency; } } + + private void BtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_datalist.Any()) + { + SetBindingData(_datalist, _datatable); + } + } } } \ No newline at end of file -- Gitblit v1.9.3