From 3a471ae651b228231bebb3a2d438baa1d4ac0261 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 21 十一月 2025 08:57:52 +0800
Subject: [PATCH] 优化

---
 Plugin.DataBoard/DataBoard.xaml.cs |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 108 insertions(+), 8 deletions(-)

diff --git a/Plugin.DataBoard/DataBoard.xaml.cs b/Plugin.DataBoard/DataBoard.xaml.cs
index 7e66211..941dc5c 100644
--- a/Plugin.DataBoard/DataBoard.xaml.cs
+++ b/Plugin.DataBoard/DataBoard.xaml.cs
@@ -1,4 +1,6 @@
 锘縰sing HMI.Base;
+using HMI.Core.Entity;
+using HMI.Core.Manager;
 using HMI.Core.Util;
 using HMI.UI.Util;
 using HMI.Util;
@@ -41,9 +43,78 @@
             set { Set(ref _options, value); }
         }
 
+        private string iniFile;
+        public override void InitFinish()
+        {
+            iniFile = Path.Combine(BaseFolder, "Config.ini");
+            if (!File.Exists(iniFile))
+            {
+                File.Create(iniFile);
+            }
+            LoadProduct();
+        }
+
         private void PluginControl_Loaded(object sender, RoutedEventArgs e)
         {
 
+        }
+
+        private void LoadProduct()
+        {
+            List<ProductData> products = ProductManager.GetProducts<List<ProductData>>()
+               ?? new List<ProductData>();
+            this.modelSelect.Items.Clear();
+            List<string> productSource = new List<string>();
+            foreach (var prd in products)
+            {
+                this.modelSelect.Items.Add(prd.Name);
+                productSource.Add(prd.Name);
+            }
+
+            string model = IniFileHelper.ReadIniData("Config", "Model", "", iniFile);
+            if (!string.IsNullOrEmpty(model))
+            {
+                this.modelSelect.SelectedItem = model;
+            }
+            else if (products.Count > 0)
+            {
+                this.modelSelect.SelectedIndex = 0;
+            }
+        }
+
+        private void RefreshAll()
+        {
+            try
+            {
+                var start0 = dtp00.SelectedDateTime ?? DateTime.Now;
+                var end0 = dtp01.SelectedDateTime ?? DateTime.Now;
+                RefreshChart0(start0, end0);
+            }
+            catch { }
+
+            try
+            {
+                var start1 = dtp10.SelectedDateTime ?? DateTime.Now;
+                var end1 = dtp11.SelectedDateTime ?? DateTime.Now;
+                RefreshChart1(start1, end1);
+            }
+            catch { }
+
+            try
+            {
+                var start2 = dtp20.SelectedDateTime ?? DateTime.Now;
+                var end2 = dtp21.SelectedDateTime ?? DateTime.Now;
+                RefreshChart2(start2, end2);
+            }
+            catch { }
+
+            try
+            {
+                var start3 = dtp30.SelectedDateTime ?? DateTime.Now;
+                var end3 = dtp31.SelectedDateTime ?? DateTime.Now;
+                RefreshChart3(start3, end3);
+            }
+            catch { }
         }
 
         private void Button_Click(object sender, RoutedEventArgs e)
@@ -52,6 +123,9 @@
             DateTime start, end;
             switch (btn.Name)
             {
+                case "btnAll":
+                    RefreshAll();
+                    break;
                 case "btn0":
                     start = dtp00.SelectedDateTime ?? DateTime.Now;
                     end = dtp01.SelectedDateTime ?? DateTime.Now;
@@ -99,7 +173,7 @@
         }
 
 
-        private List<SerialData> SelectSerialDataByTime(DateTime start, DateTime end)
+        private List<SerialData> SelectSerialDataByTime(string model, DateTime start, DateTime end)
         {
             var s1 = DateTime.Now;
             string[] files = GetDbFiles(BaseFolder, start, end);
@@ -107,7 +181,14 @@
             {
                 return new List<SerialData>();
             }
-            string sql = $"SELECT * FROM serialData WHERE time BETWEEN '{start:yyyy-MM-dd HH:mm:ss}' AND '{end:yyyy-MM-dd HH:mm:ss}' ORDER BY time DESC;";
+            string segment = string.Empty;
+            if (!string.IsNullOrEmpty(model))
+            {
+                segment = $"AND model = '{model}'";
+            }
+
+            string sql = $@"SELECT * FROM serialData WHERE time BETWEEN '{start:yyyy-MM-dd HH:mm:ss}' AND '{end:yyyy-MM-dd HH:mm:ss}' 
+{segment} ORDER BY time DESC;";
 
             DataTable dt = new DataTable();
             foreach (string file in files)
@@ -124,14 +205,21 @@
             return data;
         }
 
-        private List<SerialData> SelectResultDataByTime(DateTime start, DateTime end)
+        private List<SerialData> SelectResultDataByTime(string model, DateTime start, DateTime end)
         {
             string[] files = GetDbFiles(BaseFolder, start, end);
             if (files == null || files.Length <= 0)
             {
                 return new List<SerialData>();
             }
-            string sql = $"SELECT * FROM testResult WHERE time BETWEEN '{start:yyyy-MM-dd HH:mm:ss}' AND '{end:yyyy-MM-dd HH:mm:ss}';";
+
+            string segment = string.Empty;
+            if (!string.IsNullOrEmpty(model))
+            {
+                segment = $"AND model = '{model}'";
+            }
+
+            string sql = $@"SELECT * FROM testResult WHERE time BETWEEN '{start:yyyy-MM-dd HH:mm:ss}' AND '{end:yyyy-MM-dd HH:mm:ss}' {segment};";
 
             DataTable dt = new DataTable();
             foreach (string file in files)
@@ -206,6 +294,7 @@
         {
             dtp00.SelectedDateTime = start;
             dtp01.SelectedDateTime = end;
+            string model = modelSelect.SelectedItem?.ToString();
             Task.Run(() =>
             {
                 try
@@ -214,7 +303,7 @@
                     {
                         webview2.CoreWebView2?.ExecuteScriptAsync($"loading0('鍔犺浇涓紝璇风◢鍚�...')");
                     }));
-                    List<SerialData> datas = SelectResultDataByTime(start, end);
+                    List<SerialData> datas = SelectResultDataByTime(model, start, end);
                     datas.OrderByDescending(e => e.time);
                     int all = 0, output = 0;
                     HashSet<string> snCache = new HashSet<string>();
@@ -243,6 +332,7 @@
         {
             dtp10.SelectedDateTime = start;
             dtp11.SelectedDateTime = end;
+            string model = modelSelect.SelectedItem?.ToString();
             Task.Run(() =>
             {
                 try
@@ -251,7 +341,7 @@
                     {
                         webview2.CoreWebView2?.ExecuteScriptAsync($"loading1('鍔犺浇涓紝璇风◢鍚�...')");
                     }));
-                    List<SerialData> datas = SelectResultDataByTime(start, end);
+                    List<SerialData> datas = SelectResultDataByTime(model, start, end);
 
                     datas = datas.OrderByDescending(e => e.time).ToList();
                     Dictionary<string, int?> pieData = new Dictionary<string, int?> {
@@ -367,6 +457,7 @@
         {
             dtp20.SelectedDateTime = start;
             dtp21.SelectedDateTime = end;
+            string model = modelSelect.SelectedItem?.ToString();
             Task.Run(() =>
             {
                 try
@@ -375,7 +466,7 @@
                     {
                         webview2.CoreWebView2?.ExecuteScriptAsync($"loading2('鍔犺浇涓紝璇风◢鍚�...')");
                     }));
-                    List<SerialData> datas = SelectResultDataByTime(start, end);
+                    List<SerialData> datas = SelectResultDataByTime(model, start, end);
 
                     var groups =
                         datas.GroupBy(d => d.time.ToString("yyyy-MM-dd"));
@@ -446,6 +537,7 @@
         {
             dtp30.SelectedDateTime = start;
             dtp31.SelectedDateTime = end;
+            string model = modelSelect.SelectedItem?.ToString();
             Task.Run(() =>
             {
                 try
@@ -455,7 +547,7 @@
                         webview2.CoreWebView2?.ExecuteScriptAsync($"loading3('鍔犺浇涓紝璇风◢鍚�...')");
                     }));
                     var st = DateTime.Now;
-                    List<SerialData> datas = SelectSerialDataByTime(start, end);
+                    List<SerialData> datas = SelectSerialDataByTime(model, start, end);
                     var s2 = DateTime.Now;
                     log.Info($"RefreshChart3 Data Cast {(s2 - st).TotalMilliseconds}");
 
@@ -544,5 +636,13 @@
                     break;
             }
         }
+
+        private void modelSelect_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (e.AddedItems.Count > 0)
+            {
+                IniFileHelper.WriteIniData("Config", "Model", e.AddedItems[0].ToString(), iniFile);
+            }
+        }
     }
 }

--
Gitblit v1.9.1