alielie
2026-03-02 12e606635c42ea20f4b7c2bdda5204237a4b4c96
Plugin.DataBoard/DataBoard.xaml.cs
@@ -1,4 +1,7 @@
using HMI.Base;
using HMI.Core.Entity;
using HMI.Core.Manager;
using HMI.Core.Setting;
using HMI.Core.Util;
using HMI.UI.Util;
using HMI.Util;
@@ -41,9 +44,81 @@
            set { Set(ref _options, value); }
        }
        private string iniFile;
        private string DataFolder;
        public override void InitFinish()
        {
            iniFile = Path.Combine(BaseFolder, "Config.ini");
            if (!File.Exists(iniFile))
            {
                File.Create(iniFile);
            }
            DataFolder = ParamSetting.DataLogFolder;
            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 +127,9 @@
            DateTime start, end;
            switch (btn.Name)
            {
                case "btnAll":
                    RefreshAll();
                    break;
                case "btn0":
                    start = dtp00.SelectedDateTime ?? DateTime.Now;
                    end = dtp01.SelectedDateTime ?? DateTime.Now;
@@ -77,15 +155,15 @@
            }
        }
        public static string[] GetDbFiles(string folderPath, DateTime startTime, DateTime endTime)
        public string[] GetDbFiles(DateTime startTime, DateTime endTime)
        {
            if (!Directory.Exists(folderPath))
            if (!Directory.Exists(DataFolder))
            {
                return new string[0];
            }
            string startName = $"Data_{startTime.ToString("yyyyMMdd")}";
            string endName = $"Data_{endTime.ToString("yyyyMMdd")}";
            var oldFiles = Directory.GetFiles(folderPath, "Data_*.db");
            var oldFiles = Directory.GetFiles(DataFolder, "Data_*.db");
            oldFiles = oldFiles.Where(file =>
            {
                var fileName = Path.GetFileNameWithoutExtension(file);
@@ -99,15 +177,22 @@
        }
        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);
            string[] files = GetDbFiles(start, end);
            if (files == null || files.Length <= 0)
            {
                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 +209,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);
            string[] files = GetDbFiles(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 +298,7 @@
        {
            dtp00.SelectedDateTime = start;
            dtp01.SelectedDateTime = end;
            string model = modelSelect.SelectedItem?.ToString();
            Task.Run(() =>
            {
                try
@@ -214,7 +307,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 +336,7 @@
        {
            dtp10.SelectedDateTime = start;
            dtp11.SelectedDateTime = end;
            string model = modelSelect.SelectedItem?.ToString();
            Task.Run(() =>
            {
                try
@@ -251,7 +345,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 +461,7 @@
        {
            dtp20.SelectedDateTime = start;
            dtp21.SelectedDateTime = end;
            string model = modelSelect.SelectedItem?.ToString();
            Task.Run(() =>
            {
                try
@@ -375,7 +470,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 +541,7 @@
        {
            dtp30.SelectedDateTime = start;
            dtp31.SelectedDateTime = end;
            string model = modelSelect.SelectedItem?.ToString();
            Task.Run(() =>
            {
                try
@@ -455,7 +551,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 +640,13 @@
                    break;
            }
        }
        private void modelSelect_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count > 0)
            {
                IniFileHelper.WriteIniData("Config", "Model", e.AddedItems[0].ToString(), iniFile);
            }
        }
    }
}