From 9211ec11c112e18cd99e77f889a01110a70031ce Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 24 十一月 2025 17:47:15 +0800
Subject: [PATCH] 优化项目结构

---
 Plugin.TsExecution/TsExecution.xaml.cs |  226 +++++++++++++++++++++++++++-----------------------------
 1 files changed, 108 insertions(+), 118 deletions(-)

diff --git a/Plugin.TsExecution/TsExecution.xaml.cs b/Plugin.TsExecution/TsExecution.xaml.cs
index 83c45f0..2b498b2 100644
--- a/Plugin.TsExecution/TsExecution.xaml.cs
+++ b/Plugin.TsExecution/TsExecution.xaml.cs
@@ -6,7 +6,6 @@
 using HMI.Core.Util;
 using HMI.MQUtil;
 using HMI.UI;
-using HMI.UI.Controls;
 using HMI.UI.Util;
 using HMI.Util;
 using log4net;
@@ -26,7 +25,6 @@
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Forms.DataVisualization.Charting;
-using System.Windows.Media;
 
 namespace Plugin.TsExecution
 {
@@ -263,10 +261,12 @@
             }
         }
 
+        private string tsModelPath;
         private string dataLogPath;
         private SqliteHelper sqliteHelper;
 
         private MQConnector mqConnector;
+        private int probeWarn;
 
         public TsExecution()
         {
@@ -278,29 +278,32 @@
             //鍒濆鍖朤estStand寮曟搸
             this.InitTestStandEngine();
         }
+
         public override void SetBaseFolder(string folder)
         {
             CountIniPath = Path.Combine(folder, "Count.ini");
             base.SetBaseFolder(folder);
         }
 
-        public override void InitFinish()
+        private void CheckSqlHelper()
         {
-            this.ReadCount(out int pass, out int fail);
-            this.DisplayCount(pass, fail);
-            InitProducts();
-            ReadConfig();
-            if (!File.Exists(dataLogPath))
+            string today = DateTime.Now.ToString("yyyyMMdd");
+            string dbPath = Path.Combine(dataLogPath, $"Data_{today}.db");
+            if (!File.Exists(dbPath))
             {
-                SqliteHelper.CreateDatabase(dataLogPath);
+                SqliteHelper.CreateDatabase(dbPath);
             }
-            sqliteHelper = new SqliteHelper(dataLogPath);
-            sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS serialData (
+            if (sqliteHelper == null || sqliteHelper.DataBaseFile != dbPath)
+            {
+                sqliteHelper?.Dispose();
+                sqliteHelper = new SqliteHelper(dbPath);
+                sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS serialData (
                     id INTEGER PRIMARY KEY AUTOINCREMENT,
                     sn TEXT NOT NULL,
                     model TEXT,
                     station TEXT NOT NULL,
                     step TEXT NOT NULL,
+                    position TEXT,
                     limitDown TEXT,
                     limitUp TEXT,
                     unit TEXT,
@@ -311,48 +314,25 @@
                     consumeTime TEXT, 
                     totalConsumeTime TEXT, 
                     time DATETIME NOT NULL);");
-            sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS testResult (
+                sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS testResult (
                     id INTEGER PRIMARY KEY AUTOINCREMENT,
                     sn TEXT NOT NULL,
                     model TEXT,
                     station TEXT NOT NULL,
+                    position TEXT,
+                    status TEXT,
                     result TEXT NOT NULL, 
                     time DATETIME NOT NULL);");
-            try
-            {
-                sqliteHelper.ExecuteSql("alter table serialData add column 'model' TEXT default NULL;");
             }
-            catch
-            {
+        }
 
-            }
-
-            try
-            {
-                sqliteHelper.ExecuteSql("alter table serialData add column 'position' TEXT default NULL;");
-            }
-            catch
-            {
-
-            }
-            try
-            {
-                sqliteHelper.ExecuteSql("alter table testResult add column 'position' TEXT default NULL;");
-            }
-            catch
-            {
-
-            }
-
-            try
-            {
-                sqliteHelper.ExecuteSql("alter table testResult add column 'status' TEXT default NULL;");
-            }
-            catch
-            {
-
-            }
-
+        public override void InitFinish()
+        {
+            this.ReadCount(out int pass, out int fail);
+            this.DisplayCount(pass, fail);
+            ReadConfig();
+            InitProducts();
+            CheckSqlHelper();
             base.InitFinish();
         }
 
@@ -372,30 +352,6 @@
             {
                 HandleUIMessage(eventCode, index, strData);
             }));
-        }
-
-        void createChildInNewThread(int index, string configFile, int probeWarn)
-        {
-            HostVisual hostVisual = new HostVisual();
-
-            UIElement content = new VisualHost(hostVisual);
-
-            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(() =>
-            {
-                VisualTarget visualTarget = new VisualTarget(hostVisual);
-
-                var control = new SingleControl(index, configFile, probeWarn);
-                control.Arrange(new Rect(new Point(), content.RenderSize));
-
-                visualTarget.RootVisual = control;
-                tsSockets.Add(control);
-                System.Windows.Threading.Dispatcher.Run();
-            }));
-            //panel.Children.Add(content);
-
-            thread.SetApartmentState(System.Threading.ApartmentState.STA);
-            thread.IsBackground = true;
-            thread.Start();
         }
 
         /// <summary>
@@ -441,28 +397,19 @@
             Products = ProductManager.GetProducts<ObservableCollection<ProductData>>();
             if (Products != null && Products.Count > 0)
             {
-                List<ParameterData> parameters =
-                    ParameterManager.GetCommonParameter<List<ParameterData>>();
-                string tmpNum = parameters?.FirstOrDefault(p => p.Name == "SocketNum")?.Value?.ToString();
-                if (!string.IsNullOrEmpty(tmpNum))
-                {
-                    this.socketNum = Convert.ToInt32(tmpNum);
-                }
                 string lastModel = engine?.Globals.GetValString("StationState.ProductModel", 1);
-
+                var tempProduct = Products[0];
                 if (!string.IsNullOrEmpty(lastModel))
                 {
                     var product = Products.FirstOrDefault(p => p.Name == lastModel);
                     if (product != null)
                     {
-                        SelectedProduct = product;
-                        RefershUI();
-                        return;
+                        tempProduct = product;
                     }
                 }
-                SelectedProduct = Products[0];
-                RefershUI();
+                SelectedProduct = tempProduct;
             }
+            RefershUI();
             SampleStatus = false;
         }
 
@@ -572,25 +519,11 @@
 
         private void RefershUI()
         {
-            ParameterData p = ParameterManager.GetCommonParameterByName("ProbeWarn");
-            int ProbeWarn = 0;
-            if (p != null)
-            {
-                try
-                {
-                    ProbeWarn = Convert.ToInt32(p.Value);
-                }
-                catch
-                {
-                    ProbeWarn = 0;
-                }
-            }
-
             panel.Children.Clear();
             //閲嶆柊鐢熸垚瀛愰潰鏉�
             for (int i = 0; i < this.socketNum; i++)
             {
-                SingleControl control = new SingleControl(i, CountIniPath, ProbeWarn);
+                SingleControl control = new SingleControl(i, CountIniPath, this.probeWarn);
                 panel.Children.Add(control);
                 tsSockets.Add(control);
 
@@ -599,6 +532,10 @@
             if (tsSockets.Count == 1)
             {
                 panel.Columns = 1;
+            }
+            else if (tsSockets.Count > 0 && (tsSockets.Count % 3) == 0)
+            {
+                panel.Columns = 3;
             }
             else
             {
@@ -661,6 +598,19 @@
             catch
             {
                 flag = false;
+            }
+
+            try
+            {
+                value = ParameterManager.GetCommonParameterByName("SocketNum");
+                if (value != null)
+                {
+                    this.socketNum = int.Parse(value.Value);
+                }
+            }
+            catch
+            {
+                this.socketNum = 2;
             }
 
             if (flag)
@@ -865,28 +815,38 @@
             }
             catch
             {
-                dataLogPath = Path.Combine(PathHelper.ConfigFolder, "DataBoard", "DataLog.db");
+                dataLogPath = Path.Combine(PathHelper.ConfigFolder, "DataBoard");
             }
 
+            try
+            {
+
+                value = ParameterManager.GetCommonParameterByName("TsModelPath");
+                tsModelPath = value.Value;
+            }
+            catch
+            {
+                //@"C:\Program Files\National Instruments\TestStand 2020\Components\Models\TestStandModels\ParallelModel.seq"
+                tsModelPath = @"C:\Users\Public\Documents\National Instruments\TestStand 2020 (64-bit)\Components\Models\ParallelModel.seq";
+            }
+
+            try
+            {
+
+                value = ParameterManager.GetCommonParameterByName("ProbeWarn");
+                probeWarn = int.Parse(value?.Value);
+            }
+            catch
+            {
+                probeWarn = 0;
+            }
             //Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableMes", "true", CountIniPath));
             //EnableCanLog = Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableCanLog", "true", CountIniPath));
             //EnableDebugMode = Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableDebugMode", "true", CountIniPath));
         }
 
-        //private void WriteToTsWhenInit()
-        //{
-        //    foreach (var ts in tsSockets)
-        //    {
-        //        ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableMes", 1, EnableMes);
-        //        ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableNGPause", 1, EnableNGPause);
-        //        ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableCanLog", 1, EnableCanLog);
-        //        ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableDebugMode", 1, EnableDebugMode);
-        //    }
-        //}
-
         private bool WriteConfig(string name, bool value)
         {
-            //IniFileHelper.WriteIniData("Config", name, value.ToString(), CountIniPath);
             try
             {
                 if (ParameterManager.UpdateCommonParameter(name, value, out string errMsg))
@@ -1001,8 +961,7 @@
             {
                 engine?.Globals.SetValString("StationState.ProductModel", 1, SelectedProduct?.Name);
                 engine?.CommitGlobalsToDisk(promptOnSaveConflicts: false);
-                //this.modeSeq = this.engine.GetSequenceFileEx(@"C:\Program Files\National Instruments\TestStand 2020\Components\Models\TestStandModels\ParallelModel.seq");
-                this.modeSeq = this.engine.GetSequenceFileEx(@"C:\Users\Public\Documents\National Instruments\TestStand 2020 (64-bit)\Components\Models\ParallelModel.seq");
+                this.modeSeq = this.engine.GetSequenceFileEx(tsModelPath);
                 this.testSeq = this.engine.GetSequenceFileEx(this.testSeqFile, 2, TypeConflictHandlerTypes.ConflictHandler_UseGlobalType);
                 this.execution = this.engine.NewExecution(this.testSeq, "Test UUTs", this.modeSeq, false, 0, null, null, null);
                 IsTesting = true;
@@ -1178,20 +1137,30 @@
             this.tsSockets[index].WriteToCSV(csvPath);
         }
 
+        public void SaveTemplateCSV(int index)
+        {
+            var time = DateTime.Now;
+            string status = this.tsSockets[index].Status == "Passed" ? "PASS" : "FAIL";
+            string csvPath = Path.Combine(csvDir, SelectedProduct?.Name ?? "鏈煡浜у搧", time.ToString("yyyyMMdd"), status, $"{this.tsSockets[index].Barcode}-{time.ToString("HHmmss")}.csv");
+            this.tsSockets[index].WriteToCSV(csvPath);
+        }
+
         public void SavePositionDB(int index, string status)
         {
+            CheckSqlHelper();
             var socket = this.tsSockets[index];
             var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
             string snr = socket.Barcode;
+            string model = SelectedProduct?.Name;
 
             List<string> sqls = new List<string>();
             foreach (var data in socket.Datasource)
             {
-                sqls.Add($@"INSERT INTO serialData (sn,model,station,step,limitDown,limitUp,unit,value,status,finalStatus,consumeTime,totalConsumeTime,time) VALUES
-('{snr}','{socket.Model}','','{data.Name}','{data.LimitDown}','{data.LimitUp}','{data.Unit}','{data.Value}','{data.Result}','{socket.Status}','{data.ConsumeTime}','{socket.ElapseTime}','{time}')");
+                sqls.Add($@"INSERT INTO serialData (sn,model,station,step,position,limitDown,limitUp,unit,value,status,finalStatus,consumeTime,totalConsumeTime,time) VALUES
+('{snr}','{model}','','{data.Name}','{index}','{data.LimitDown}','{data.LimitUp}','{data.Unit}','{data.Value}','{data.Result}','{socket.Status}','{data.ConsumeTime}','{socket.ElapseTime}','{time}')");
             }
             sqls.Add($@"INSERT INTO testResult (sn,model,station,result,time,position,status) VALUES 
-('{snr}','{socket.Model}','','{socket.Status}','{time}','{index}','{status}')");
+('{snr}','{model}','','{socket.Status}','{time}','{index}','{status}')");
             sqliteHelper.ExecuteBatchSql(sqls);
         }
 
@@ -1279,9 +1248,30 @@
                     this.tsSockets[index].SetTestProcess(ProcessVal);
                     break;
                 case 10031://瀵煎嚭CSV
-                    string[] datas = strData.Split(';');
-                    SavePositionCSV(index, datas[0]);
-                    SavePositionDB(index, datas[1]);
+                    if (string.IsNullOrEmpty(strData))
+                    {
+                        SaveTemplateCSV(index);
+                        return;
+                    }
+                    try
+                    {
+                        string[] datas = strData.Split(';');
+                        SavePositionCSV(index, datas[0]);
+                        if (datas.Length >= 2)
+                        {
+                            SavePositionDB(index, datas[1]);
+                        }
+                        else
+                        {
+                            var sss = this.tsSockets[index].Status;
+                            SavePositionDB(index, sss);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        log.Warn("10031 Error.", ex);
+                        SaveTemplateCSV(index);
+                    }
                     break;
                 case 10032://鎸変笅鏍囨殏鍋滄祴璇�
                     this.tsSockets[index].ShowPausePanel();

--
Gitblit v1.9.1