From 771a0e7b6b1276087515bbe94de28358cb92963b Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 04 六月 2026 10:32:27 +0800
Subject: [PATCH] 优化老化;
---
HMI.LogViewer/LogViewer.xaml.cs | 120 ++++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 92 insertions(+), 28 deletions(-)
diff --git a/HMI.LogViewer/LogViewer.xaml.cs b/HMI.LogViewer/LogViewer.xaml.cs
index a2fc8f4..72f3461 100644
--- a/HMI.LogViewer/LogViewer.xaml.cs
+++ b/HMI.LogViewer/LogViewer.xaml.cs
@@ -1,6 +1,8 @@
锘縰sing HMI.Base;
using HMI.Core.Util;
using HMI.UI.Util;
+using HMI.Util;
+using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Data;
@@ -131,8 +133,26 @@
}
}
- private void DoExport() {
-
+ private void DoExport()
+ {
+ try
+ {
+ SaveFileDialog sfd = new SaveFileDialog
+ {
+ Filter = "Excel Files (*.xls)|*.xls",
+ };
+ if (sfd.ShowDialog() == true)
+ {
+ var dt = GetDataTable(false, 1, 1, out long totalPage);
+ ExcelHelper.ExportExcel<LogData>(sfd.FileName, dt);
+ ToastHelper.Success(this.lang("App.ExportSuccess"));
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Export Log Failed.", ex);
+ MsgBoxHelper2.Error($"瀵煎嚭澶辫触: {ex.Message}");
+ }
}
private void QueryLog()
@@ -180,45 +200,89 @@
endTimeInput.SelectedDateTime = end;
}
+ public DataTable GetDataTable(bool usePage, long page, long size, out long totalPage)
+ {
+ totalPage = 0;
+ var files = GetOldDbFiles(PathHelper.LogViewerDir, new DateTime?[] { startTimeInput.SelectedDateTime,
+ endTimeInput.SelectedDateTime });
+ if (files.Length <= 0)
+ {
+ return new DataTable();
+ }
+
+ using (Sqlite3Helper helper = new Sqlite3Helper(files[0]))
+ {
+ for (int i = 0; i < files.Length; i++)
+ {
+ var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ helper.Execute(attach);
+ }
+
+ string sql = string.Join(" UNION ALL ", GetSqls(files));
+
+ string sortName = "time", sortDirection = "DESC";
+
+ string baseSql = $"SELECT level,time,source,text FROM ({sql}) as _temp";
+
+ string countSql = $"SELECT COUNT(1) FROM ({sql}) as __temp";
+
+ long total = (long)helper.SelectOne(countSql);
+ totalPage = (total / pageSize) + ((total % pageSize) > 0 ? 1 : 0);
+
+ if (usePage)
+ {
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection} LIMIT {size} OFFSET {(page - 1) * size} ";
+ }
+ else
+ {
+ sql = $"{baseSql} ORDER BY {sortName} {sortDirection}";
+ }
+
+ DataTable dt = helper.GetDataTable(sql);
+ return dt;
+ }
+ }
+
private void Filtrate(long page, long size)
{
try
{
- var files = GetOldDbFiles(PathHelper.LogViewerDir, new DateTime?[] { startTimeInput.SelectedDateTime,
- endTimeInput.SelectedDateTime });
- if (files.Length <= 0)
- {
- table.ItemsSource = new DataTable().DefaultView;
- return;
- }
+ //var files = GetOldDbFiles(PathHelper.LogViewerDir, new DateTime?[] { startTimeInput.SelectedDateTime,
+ //endTimeInput.SelectedDateTime });
+ //if (files.Length <= 0)
+ //{
+ // table.ItemsSource = new DataTable().DefaultView;
+ // return;
+ //}
- using (Sqlite3Helper helper = new Sqlite3Helper(files[0]))
- {
- for (int i = 0; i < files.Length; i++)
- {
- var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
- helper.Execute(attach);
- }
+ //using (Sqlite3Helper helper = new Sqlite3Helper(files[0]))
+ //{
+ // for (int i = 0; i < files.Length; i++)
+ // {
+ // var attach = $"ATTACH DATABASE '{files[i]}' AS 'db{i}'";
+ // helper.Execute(attach);
+ // }
- string sql = string.Join(" UNION ALL ", GetSqls(files));
+ // string sql = string.Join(" UNION ALL ", GetSqls(files));
- string sortName = "time", sortDirection = "DESC";
+ // string sortName = "time", sortDirection = "DESC";
- string baseSql = $"SELECT level,time,source,text FROM ({sql}) as _temp";
+ // string baseSql = $"SELECT level,time,source,text FROM ({sql}) as _temp";
- string countSql = $"SELECT COUNT(1) FROM ({sql}) as __temp";
+ // string countSql = $"SELECT COUNT(1) FROM ({sql}) as __temp";
- long total = (long)helper.SelectOne(countSql);
- long pages = (total/pageSize)+ ((total % pageSize) > 0 ? 1 : 0);
+ // long total = (long)helper.SelectOne(countSql);
+ // long pages = (total/pageSize)+ ((total % pageSize) > 0 ? 1 : 0);
- sql = $"{baseSql} ORDER BY {sortName} {sortDirection} LIMIT {size} OFFSET {(page - 1) * size} ";
+ // sql = $"{baseSql} ORDER BY {sortName} {sortDirection} LIMIT {size} OFFSET {(page - 1) * size} ";
- DataTable dt = helper.GetDataTable(sql);
- table.ItemsSource = dt.DefaultView;
+ // DataTable dt = helper.GetDataTable(sql);
+ // table.ItemsSource = dt.DefaultView;
- MaxPage = pages;
- }
-
+ // MaxPage = pages;
+ //}
+ table.ItemsSource = GetDataTable(true, page, size, out long totalPage).DefaultView;
+ MaxPage = totalPage;
}
catch (Exception ex)
{
--
Gitblit v1.9.1