From f08871fe7d148d667f2f11f80f64de71a0d9504c Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 15 六月 2026 18:19:37 +0800
Subject: [PATCH] 优化标准老化界面
---
Plugin.TestResult/SingleCell.xaml.cs | 194 ++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 179 insertions(+), 15 deletions(-)
diff --git a/Plugin.TestResult/SingleCell.xaml.cs b/Plugin.TestResult/SingleCell.xaml.cs
index 7d5659d..0e7a8b9 100644
--- a/Plugin.TestResult/SingleCell.xaml.cs
+++ b/Plugin.TestResult/SingleCell.xaml.cs
@@ -15,6 +15,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
+using System.Dynamic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows;
@@ -296,6 +297,17 @@
private string visualTestId;
private Sqlite3Helper helper;
+ private void InitCurrentTestHelper()
+ {
+ if (helper == null)
+ {
+ var now = DateTime.Now;
+ string dateStr = now.ToString("yyyyMMdd");
+ visualTestId = $"{title}_{now.ToString("yyyyMMddHHmmssfff")}";
+ helper = CheckSqlHelper(dateStr);
+ }
+ }
+
public void SetStatus(string status)
{
Dispatcher.Invoke(() =>
@@ -305,11 +317,8 @@
if (oldStatus != "testing" && status == "testing")
{
UpdateProbeCount(ProbeCount + 1);
- var now = DateTime.Now;
- string dateStr = now.ToString("yyyyMMdd");
- visualTestId = $"{title}_{now.ToString("yyyyMMddHHmmssfff")}";
- helper = CheckSqlHelper(dateStr);
- InsertARecourd();
+ InitCurrentTestHelper();
+ InsertARecord();
}
if (oldStatus != "ok" && status == "ok")
@@ -324,7 +333,7 @@
});
}
- private void InsertARecourd()
+ private void InsertARecord()
{
try
{
@@ -335,7 +344,7 @@
}
catch (Exception ex)
{
- ViewControl.Logger.Error($"Cell[{title}] SaveToDB Error.", ex);
+ ViewControl.Logger.Error($"Cell[{title}] InsertARecord Error.", ex);
}
}
@@ -456,6 +465,7 @@
try
{
+ InitCurrentTestHelper();
string model = table?.CbProduct?.SelectedItem?.ToString();
sql = $@"INSERT INTO serialData (sn,model,station,position,step,limitDown,limitUp,unit,value,status,finalStatus,time,resultId)
VALUES ('{sn}','{model}','','{this.title}','{info.step}','{info.limitDown}','{info.limitUp}','{info.unit}','{info.value}','{info.result}',
@@ -616,7 +626,7 @@
}
}
- private void NormalCSV(string filePath)
+ public void NormalCSV(string filePath)
{
try
{
@@ -644,7 +654,7 @@
}
}
- private void ReverseCSV(string filePath)
+ public void ReverseCSV_Bak(string filePath)
{
try
{
@@ -777,6 +787,150 @@
}
}
+ public void ReverseCSV(string filePath)
+ {
+ try
+ {
+ if (allInfos == null || allInfos.Count < 4) return;
+
+ Dictionary<string, int> columnMap = new Dictionary<string, int>();
+ int colPoint = 0;
+ List<string> titleRow = new List<string>();
+ List<string[]> datas = new List<string[]>();
+ List<string> timeRow = new List<string>();
+
+ void AddTitle(string title)
+ {
+ if (titleRow.IndexOf(title) < 0)
+ {
+ titleRow.Add(title);
+ }
+ }
+
+ // 鍏堣缃〃澶�
+ for (int i = 0; i < allInfos.Count; i++)
+ {
+ var info = allInfos[i];
+ if (IgnoreTestItem.Contains(info.step.ToLower()))
+ {
+ continue;
+ }
+ string testTime = info.updateTime;
+ int rowIndex = timeRow.IndexOf(testTime);
+ if (rowIndex < 0)
+ {
+ timeRow.Add(testTime);
+ }
+
+ string title = $"{info.step}{(string.IsNullOrEmpty(info.unit) ? "" : $"({info.unit})")}";
+ AddTitle("娴嬭瘯鏃堕棿");
+ AddTitle(title);
+ if (!string.IsNullOrEmpty(info.limitDown))
+ {
+ string key2 = $"{info.step}涓嬮檺";
+ AddTitle(key2);
+ }
+
+ if (!string.IsNullOrEmpty(info.limitUp))
+ {
+ string key2 = $"{info.step}涓婇檺";
+ AddTitle(key2);
+ }
+
+ if (!string.IsNullOrEmpty(info.limitUp))
+ {
+ string key2 = $"{info.step}娴嬭瘯缁撴灉";
+ AddTitle(key2);
+ }
+
+ //if (!string.IsNullOrEmpty(info.updateTime))
+ //{
+ // string key2 = $"{info.step}娴嬭瘯鏃堕棿";
+ // AddTitle(key2);
+ //}
+ }
+
+ for (int i = 0; i < allInfos.Count; i++)
+ {
+ var info = allInfos[i];
+ if (IgnoreTestItem.Contains(info.step.ToLower()))
+ {
+ continue;
+ }
+ string testTime = info.updateTime;
+ int row = timeRow.IndexOf(testTime);
+ if (row < 0)
+ {
+ continue;
+ }
+
+
+
+ string title = $"{info.step}{(string.IsNullOrEmpty(info.unit) ? "" : $"({info.unit})")}";
+ int col = titleRow.IndexOf(title);
+
+ if (datas.Count <= row)
+ {
+ datas.Add(new string[titleRow.Count]);
+ }
+ var arr = datas[row];
+ arr[col] = info.value;
+
+
+ if (!string.IsNullOrEmpty(info.limitDown))
+ {
+ string key2 = $"{info.step}涓嬮檺";
+ int col2 = titleRow.IndexOf(key2);
+ arr[col2] = info.limitDown;
+ }
+
+ if (!string.IsNullOrEmpty(info.limitUp))
+ {
+ string key2 = $"{info.step}涓婇檺";
+ int col2 = titleRow.IndexOf(key2);
+ arr[col2] = info.limitUp;
+ }
+
+ if (!string.IsNullOrEmpty(info.limitUp))
+ {
+ string key2 = $"{info.step}娴嬭瘯缁撴灉";
+ int col2 = titleRow.IndexOf(key2);
+ arr[col2] = info.result;
+ }
+
+ if (!string.IsNullOrEmpty(info.updateTime))
+ {
+ string key2 = "娴嬭瘯鏃堕棿";// $"{info.step}娴嬭瘯鏃堕棿";
+ int col2 = titleRow.IndexOf(key2);
+ arr[col2] = info.updateTime;
+ }
+ }
+
+
+ FileInfo fi = new FileInfo(filePath);
+ if (!fi.Directory.Exists)
+ {
+ fi.Directory.Create(); //鏂囦欢涓嶅瓨鍦紝鍒涘缓鏂囦欢
+ }
+
+ using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
+ using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
+ {
+ string title = string.Join(",", titleRow);
+ sw.WriteLine(title);
+ foreach (var info in datas)
+ {
+ string row = string.Join(",", info);
+ sw.WriteLine(row);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ ViewControl.Logger.Error($"Cell[{title}] SaveInfoToCSV Error.", ex);
+ }
+ }
+
/// <summary>
/// 淇濆瓨娴嬭瘯鏁版嵁鍒癈SV
/// </summary>
@@ -847,7 +1001,7 @@
/// <param name="filePath"></param>
public void SaveInfoToDB()
{
- Dispatcher.BeginInvoke(new Action(() =>
+ Dispatcher.Invoke(() =>
{
try
{
@@ -876,7 +1030,7 @@
{
ViewControl.Logger.Error($"Cell[{title}] SaveToDB Error.", ex);
}
- }));
+ });
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
@@ -910,6 +1064,7 @@
return;
}
string modelPath = table.parent.testModelFile;
+ int dutNo = table.index * table.cellCount + this.index;
var win = new ManualDebugWindow(manualDebugSeq, modelPath)
{
Title = $"{this.title}鎵嬪姩璋冭瘯",
@@ -917,7 +1072,7 @@
OvenIndex = this.table.index,
OvenName = this.table.title,
- CellIndex = this.index,
+ CellIndex = dutNo,
CellName = this.title
};
win.ShowDialog();
@@ -934,7 +1089,7 @@
};
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
- this.SaveInfoToCSV(sfd.FileName);
+ this.NormalCSV(sfd.FileName);
}
}
@@ -947,8 +1102,17 @@
public bool LightGreen(bool on, out string msg)
{
- return S7Context.WriteData(RunTimeVariablePool.DEFAULT_PLC_NAME,
- $"Oven{table.index + 1}_Cell{index + 1}_Light_OK", on, out msg);
+ string key = $"Oven{table.index + 1}_Cell{index + 1}_Light_OK";
+ bool res = S7Context.WriteData(RunTimeVariablePool.DEFAULT_PLC_NAME, key, on, out msg);
+ if (res)
+ {
+ ViewControl.Logger.Debug($"Set Light [{key}] {on}.");
+ }
+ else
+ {
+ ViewControl.Logger.Debug($"Open Light [{key}] {on} Error.{msg}");
+ }
+ return res;
}
public bool LightRed(bool on, out string msg)
--
Gitblit v1.9.1