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