From d5a2d7e66f9c8046bd88b8269e61aac5a2a265e2 Mon Sep 17 00:00:00 2001
From: duheng <2286773002@qq.com>
Date: 星期五, 28 三月 2025 10:49:55 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs |  217 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 134 insertions(+), 83 deletions(-)

diff --git a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs
index 2b9d445..702b6ec 100644
--- a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs
+++ b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs
@@ -1,5 +1,7 @@
 锘縰sing DevExpress.Utils;
 using DevExpress.XtraCharts;
+using DevExpress.XtraGrid.Columns;
+using DevExpress.XtraGrid.Views.Grid;
 using System.Data;
 using System.IO;
 using Yw.WinFrmUI;
@@ -23,17 +25,17 @@
             if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                 return;
             var datalist = new List<FlowPressChartViewModel>();
-            ParseExcel(dlg.FileName, out datalist);
+            var datatable = new DataTable();
+            ParseExcel(dlg.FileName, out datalist,out datatable);
             if (datalist.Any())
             {
-                SetBindingData(datalist);
+                SetBindingData(datalist,datatable);
             }
         }
         #region Private Variable
 
         private XYDiagram _diagram;
         private XYDiagramDefaultPane _default_pane;
-        private XYDiagramPane _bottom_pane;
 
         private AxisX _axis_x_flow;
         private AxisY _axis_y_head;
@@ -49,11 +51,16 @@
 
             this.chartControl1.RuntimeHitTesting = true;
 
-
-
+            this.chartControl1.Legend.Visibility = DefaultBoolean.True;
             _diagram = (XYDiagram)this.chartControl1.Diagram;
+            _diagram.EnableAxisXScrolling = true;
+            _diagram.EnableAxisYScrolling = true;
+            _diagram.EnableAxisXZooming = true;
+            _diagram.EnableAxisYZooming = true;
             _default_pane = _diagram.DefaultPane;
-            _bottom_pane = (XYDiagramPane)_diagram.FindPaneByName("BottomPanel");
+
+            _diagram.AxisX.TimeSpanScaleOptions.MeasureUnit = TimeSpanMeasureUnit.Minute;
+            _diagram.AxisX.TimeSpanScaleOptions.ScaleMode = ScaleMode.Continuous;
 
             _axis_x_flow = _diagram.AxisX;
             _axis_y_head = _diagram.AxisY;
@@ -61,20 +68,21 @@
             _axis_y_eff.Alignment = AxisAlignment.Far;
 
 
-            _axis_x_flow.Visibility = DefaultBoolean.False;
             _axis_x_flow.GridLines.Visible = false;
-            _axis_y_head.Visibility = DefaultBoolean.False;
             _axis_y_head.GridLines.Visible = false;
-            _axis_y_eff.Visibility = DefaultBoolean.False;
             _axis_y_eff.GridLines.Visible = false;
+
+            this.chartControl1.CrosshairEnabled = DefaultBoolean.True;
 
         }
 
         /// <summary>
         /// 璁剧疆鍥捐〃
         /// </summary>
-        public void SetBindingData(List<FlowPressChartViewModel> vm_list)
+        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();
@@ -96,10 +104,15 @@
             AxisYBase axis_y = null;
             XYDiagramPaneBase pane = null;
 
+            var colTime = new GridColumn();
+            colTime.FieldName = "鏃堕棿";
+            colTime.Caption = "鏃堕棿";
+            colTime.Visible = true;
+            view.Columns.Add(colTime);
 
             foreach (var vm in vm_list)
             {
-                if (vm.Name.Contains("鍘嬪姏"))
+                if (!vm.Name.Contains("鍘嬪姏"))
                 {
                     axis_x = _axis_x_flow;
                     axis_y = _axis_y_head;
@@ -112,11 +125,26 @@
                     pane = _default_pane;
 
                 }
+                var col = new GridColumn();
+                col.FieldName = vm.Name;
+                col.Caption = vm.Name;
+                col.Visible = true;
+                view.Columns.Add(col);
 
                 AddLineSeries(vm.Name, axis_x, axis_y, pane, vm.Datas);
             }
 
+            var min_x = vm_list.SelectMany(x => x.Datas).Min(x => TimeSpan.Parse(x.Time));
+            var max_x = vm_list.SelectMany(x => x.Datas).Max(x => TimeSpan.Parse(x.Time));
 
+
+            _axis_x_flow.NumericScaleOptions.AutoGrid = false;
+            _axis_x_flow.WholeRange.SideMarginsValue = 0;
+            _axis_x_flow.VisualRange.SideMarginsValue = 0;
+            _axis_x_flow.WholeRange.SetMinMaxValues(min_x, max_x);
+            _axis_x_flow.VisualRange.SetMinMaxValues(min_x, max_x);
+
+            gridControl1.DataSource = dataTable;
             this.chartControl1.EndInit();
 
         }
@@ -153,13 +181,17 @@
             view.EmptyPointOptions.Color = Color.Transparent;
             view.Pane = pane;
 
-            var series_pt_list = pt_list.Select(x => new SeriesPoint(x.Time, x.Y)).ToArray();
+
+            var series_pt_list = pt_list.Select(x => new SeriesPoint(TimeSpan.Parse(x.Time), x.Y)).ToArray();
             var series = new DevExpress.XtraCharts.Series();
             series.Tag = id;
-            series.ShowInLegend = false;
-            series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime;
+            //series.ShowInLegend = false;
+            series.Name = id;
+            series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.TimeSpan;
+            series.TimeSpanSummaryOptions.MeasureUnit = TimeSpanMeasureUnit.Minute;
             series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
-            series.CrosshairEnabled = DefaultBoolean.False;
+            series.CrosshairEnabled = DefaultBoolean.True;
+            series.CrosshairLabelPattern = id + ":{V:N2}";
             series.ToolTipEnabled = DefaultBoolean.False;
             series.SeriesPointsSorting = SortingMode.None;
             series.Visible = true;
@@ -168,98 +200,117 @@
 
             this.chartControl1.Series.Add(series);
         }
-        public static string ParseExcel(string fileName, out List<FlowPressChartViewModel> datalist)
+        public static string ParseExcel(string fileName, out List<FlowPressChartViewModel> datalist,out DataTable dataTable)
         {
             datalist = new List<FlowPressChartViewModel>();
-            try
+            dataTable = new DataTable();
+            if (!File.Exists(fileName))
+                return "鏂囦欢涓嶅瓨鍦�";
+            int line = 0;
+
+            //鍒濆鍖栨枃浠�
+            NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
+            using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
             {
-                if (!File.Exists(fileName))
-                    return "鏂囦欢涓嶅瓨鍦�";
-                int line = 0;
+                theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
+            }
 
-                //鍒濆鍖栨枃浠�
-                NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
-                using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
-                {
-                    theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
-                }
-
-                //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
-                NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
+            //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
+            NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
+            if (sheet1 == null)
+            {
+                sheet1 = theBook.GetSheetAt(0);
                 if (sheet1 == null)
+                    return ("鏃燬heet鏁版嵁");
+            }
+
+            //鏍囬琛�
+            int title_line_index = 0;
+
+            var row_title = sheet1.GetRow(title_line_index);
+            if (row_title == null)
+            {
+                return ("绗竴琛岀涓�鍒椾笉鑳界┖");
+            }
+
+            //寮�濮嬭鍙栫殑琛�
+            int start_line = title_line_index + 1;
+            var cell_0 = row_title.GetCell(0);
+            if (cell_0 == null)
+            {
+                return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
+            }
+
+            var totalcell = row_title.Cells.Count;
+            for (int i = 0; i < totalcell; i++)
+            {
+                var row_cell = row_title.GetCell(i);
+
+                if (i > 0)
                 {
-                    sheet1 = theBook.GetSheetAt(0);
-                    if (sheet1 == null)
-                        return ("鏃燬heet鏁版嵁");
+                    if (row_cell != null)
+                    {
+                        datalist.Add(new FlowPressChartViewModel()
+                        {
+                            Name = row_cell.StringCellValue,
+                            Datas = new List<TimeChartViewModel>()
+                        });
+                    }
+                    dataTable.Columns.Add(row_cell.StringCellValue, typeof(double));
                 }
-
-                //鏍囬琛�
-                int title_line_index = 0;
-
-                var row_title = sheet1.GetRow(title_line_index);
-                if (row_title == null)
+                else
                 {
-                    return ("绗竴琛岀涓�鍒椾笉鑳界┖");
-                }
+                    dataTable.Columns.Add(row_cell.StringCellValue, typeof(string));
 
-                //寮�濮嬭鍙栫殑琛�
-                int start_line = title_line_index + 1;
-                var cell_0 = row_title.GetCell(0);
-                if (cell_0 == null)
-                {
-                    return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
                 }
+            }
 
-                var totalcell = row_title.Cells.Count;
+            NPOI.SS.UserModel.IRow row_temp = null;
+            NPOI.SS.UserModel.ICell cell;
+
+            for (line = start_line; line < 10000; line++)
+            {
+
+                row_temp = sheet1.GetRow(line);
+                if (row_temp == null)
+                    break;
+                var rowData = new object[totalcell];
                 for (int i = 0; i < totalcell; i++)
                 {
-                    if (i > 0)
-                    {
-                        var row_cell = row_title.GetCell(i);
-                        if (row_cell != null)
-                        {
-                            datalist.Add(new FlowPressChartViewModel()
-                            {
-                                Name = row_cell.StringCellValue,
-                                Datas = new List<TimeChartViewModel>()
-                            });
-                        }
-                    }
-                }
-
-                NPOI.SS.UserModel.IRow row_temp = null;
-                NPOI.SS.UserModel.ICell cell;
-
-                for (line = start_line; line < 10000; line++)
-                {
-
-                    row_temp = sheet1.GetRow(line);
-                    if (row_temp == null)
-                        break;
-
-                    for (int i = 0; i < totalcell; i++)
+                    try
                     {
                         if (i > 0)
                         {
                             var cell_temp = row_temp.GetCell(i);
-                            datalist[i].Datas.Add(new TimeChartViewModel()
+                            double yvalue = cell_temp.NumericCellValue;
+                            var timevalue = row_temp.GetCell(0).NumericCellValue;
+                            //double.TryParse(cell_temp.StringCellValue,out yvalue);
+                            datalist[i - 1].Datas.Add(new TimeChartViewModel()
                             {
-                                Time = row_temp.GetCell(0).StringCellValue,
-                                Y = row_temp.GetCell(i).NumericCellValue,
+                                Time = DateTime.FromOADate(timevalue).ToString("HH:mm:ss"),
+                                Y = yvalue,
                             });
+                            rowData[i] = yvalue;
+                        }
+                        else
+                        {
+                            var timevalue = row_temp.GetCell(0).NumericCellValue;
+                            rowData[i] = DateTime.FromOADate(timevalue).ToString("HH:mm:ss");
                         }
                     }
-
-
+                    catch (Exception ex)
+                    {
+                        var a = ex.Message;
+                    }
                 }
 
-                return "";
+                dataTable.Rows.Add(rowData);
+            }
 
-            }
-            catch (Exception ex)
-            {
-                return "鏂囦欢寮傚父!";
-            }
+            return "";
+
+
+
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3