From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
Plugin.ModelManage/ModelManage.xaml.cs | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 300 insertions(+), 0 deletions(-)
diff --git a/Plugin.ModelManage/ModelManage.xaml.cs b/Plugin.ModelManage/ModelManage.xaml.cs
new file mode 100644
index 0000000..e5f0bd7
--- /dev/null
+++ b/Plugin.ModelManage/ModelManage.xaml.cs
@@ -0,0 +1,300 @@
+锘縰sing CommunityToolkit.Mvvm.ComponentModel;
+using HMI.Base;
+using HMI.Core.Util;
+using HMI.UI.Util;
+using HMI.Util;
+using Microsoft.Win32;
+using Plugin.ModelManage.Entity;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+
+namespace Plugin.ModelManage
+{
+ /// <summary>
+ /// ModelManage.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ [ObservableObject]
+ public partial class ModelManage : SimpleMaskControl
+ {
+ private string dataFilePath;
+ private SqliteHelper sqliteHelper;
+ private double size = 30;
+
+ [ObservableProperty]
+ private ObservableCollection<ModelData> datasource;
+
+ [ObservableProperty]
+ private int currentPage;
+ [ObservableProperty]
+ private int maxPage;
+
+ public ModelManage()
+ {
+ DataContext = this;
+ InitializeComponent();
+ }
+
+ public override void InitFinish()
+ {
+ base.InitFinish();
+ dataFilePath = Path.Combine(BaseFolder, "data.db");
+ if (!File.Exists(dataFilePath))
+ {
+ SqliteHelper.CreateDatabase(dataFilePath);
+ }
+ sqliteHelper = new SqliteHelper(dataFilePath);
+ sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS ModelData (
+ Id INTEGER PRIMARY KEY AUTOINCREMENT,
+ Model TEXT NOT NULL,
+ CodeLength INT,
+ StartIndex INT,
+ Length INT,
+ Fixcode TEXT,
+ UNIQUE(Model),
+ UNIQUE(Fixcode));");
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ Button btn = sender as Button;
+ ModelData data;
+ switch (btn.Name)
+ {
+ case "addBtn":
+ OpenDataModal(new ModelData());
+ break;
+ case "rfhBtn":
+ RefreshPage(CurrentPage);
+ break;
+ case "exportBtn":
+ ExportExcel();
+ break;
+ case "importBtn":
+ ImportExcel();
+ break;
+ case "editBtn":
+ data = btn.Tag as ModelData;
+ OpenDataModal(data);
+ break;
+ case "delBtn":
+ data = btn.Tag as ModelData;
+ DeleteData(data);
+ break;
+ case "delBatchBtn":
+ DeleteBatchData();
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void RefreshPage(int? page = null)
+ {
+ try
+ {
+ var sql = "SELECT COUNT (*) as num FROM ModelData;";
+ var dt = sqliteHelper.GetDataTable(sql);
+ if (dt.Rows.Count <= 0)
+ {
+ CurrentPage = 1;
+ MaxPage = 1;
+ return;
+ }
+ int count = int.Parse(dt.Rows[0]["num"].ToString());
+ MaxPage = (int)Math.Ceiling(count / size);
+
+ if (page != null)
+ {
+ CurrentPage = page.Value;
+ }
+
+ if (CurrentPage > MaxPage)
+ {
+ CurrentPage = MaxPage;
+ }
+
+ if (page == CurrentPage)
+ {
+ RefreshData();
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("RefreshPage Error.", ex);
+ ToastHelper.Error($"鍒锋柊鏁版嵁澶辫触: {ex.Message}");
+ }
+ }
+
+ private void RefreshData()
+ {
+ try
+ {
+ var list = new ObservableCollection<ModelData>();
+ var sql = $"SELECT Id, Model, CodeLength, StartIndex, Length, Fixcode FROM ModelData ORDER BY Id DESC LIMIT ({CurrentPage - 1} * {size}), {size};";
+ var dt = sqliteHelper.GetDataTable(sql);
+ if (dt.Rows.Count > 0)
+ {
+ foreach (DataRow dr in dt.Rows)
+ {
+ var at = new ModelData
+ {
+ Id = dr["Id"].ToString(),
+ Model = dr["Model"].ToString(),
+ CodeLength = int.Parse(dr["CodeLength"].ToString()),
+ StartIndex = int.Parse(dr["StartIndex"].ToString()),
+ //Length = int.Parse(dr["Length"].ToString()),
+ Fixcode = dr["Fixcode"].ToString()
+ };
+ list.Add(at);
+ }
+ }
+ Datasource = list;
+ }
+ catch (Exception ex)
+ {
+ log.Error("RefreshData Error.", ex);
+ ToastHelper.Error($"鍒锋柊鏁版嵁澶辫触: {ex.Message}");
+ }
+ }
+
+ private void ExportExcel()
+ {
+ try
+ {
+ SaveFileDialog sfd = new SaveFileDialog
+ {
+ FileName = "鍨嬪彿绠$悊",
+ Filter = "Excel|*.xls"
+ };
+ if (sfd.ShowDialog() == true)
+ {
+ ExcelHelper.ExportExcel(sfd.FileName, Datasource);
+ ToastHelper.Success("瀵煎嚭鎴愬姛");
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("ExportExcel Error.", ex);
+ ToastHelper.Error($"瀵煎嚭澶辫触: {ex.Message}");
+ }
+ }
+
+ private void ImportExcel()
+ {
+ try
+ {
+ OpenFileDialog ofd = new OpenFileDialog
+ {
+ Filter = "Excel|*.xls;*.xlsx"
+ };
+ if (ofd.ShowDialog() == true)
+ {
+ List<ModelData> list = ExcelHelper.ReadFromExcel<ModelData>(ofd.FileName);
+ List<string> sqls = new List<string> {
+ "DELETE FROM ModelData;"
+ };
+ foreach (ModelData at in list)
+ {
+ sqls.Add($"INSERT INTO ModelData (Model,CodeLength,StartIndex,Fixcode) VALUES ('{at.Model}',{at.CodeLength},{at.StartIndex},'{at.Fixcode}');");
+ }
+
+ sqliteHelper.ExecuteBatchSql(sqls);
+ ToastHelper.Success("瀵煎叆鎴愬姛");
+ RefreshPage(CurrentPage);
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("ImportExcel Error.", ex);
+ ToastHelper.Error($"瀵煎叆澶辫触: {ex.Message}");
+ }
+ }
+
+ private void DeleteData(ModelData data)
+ {
+ try
+ {
+ if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "纭畾瑕佸垹闄よ鏁版嵁鍚楋紵") == MessageBoxResult.OK)
+ {
+ string sql = $"DELETE FROM ModelData WHERE Id = {data.Id}";
+ sqliteHelper.ExecuteSql(sql);
+ ToastHelper.Success("鍒犻櫎鎴愬姛");
+ RefreshPage(CurrentPage);
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("DeleteData Error.", ex);
+ ToastHelper.Error($"鍒犻櫎澶辫触: {ex.Message}");
+ }
+ }
+
+ private void DeleteBatchData()
+ {
+ try
+ {
+ var datas = Datasource.Where(e => e.IsSelected).Select(e => e.Id).ToList();
+ if (datas.Count <= 0) return;
+ if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "纭畾瑕佸垹闄ら�変腑鐨勬暟鎹悧锛�") == MessageBoxResult.OK)
+ {
+ var ids = string.Join("','", datas);
+ string sql = $"DELETE FROM ModelData WHERE Id IN ('{ids}')";
+ sqliteHelper.ExecuteSql(sql);
+ ToastHelper.Success("鍒犻櫎鎴愬姛");
+ RefreshPage(CurrentPage);
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("DeleteData Error.", ex);
+ ToastHelper.Error($"鍒犻櫎澶辫触: {ex.Message}");
+ }
+ }
+
+ private void OpenDataModal(ModelData data)
+ {
+ try
+ {
+ var win = new DataModal
+ {
+ Title = string.IsNullOrEmpty(data.Id) ? "鏂板" : "缂栬緫",
+ Owner = Window.GetWindow(this)
+ };
+ if (win.Open(data, sqliteHelper) == true)
+ {
+ RefreshPage(CurrentPage);
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("OpenDataModal Error.", ex);
+ }
+ }
+
+ partial void OnCurrentPageChanged(int value)
+ {
+ RefreshData();
+ }
+
+ private void SimpleMaskControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ RefreshPage(1);
+ Loaded -= SimpleMaskControl_Loaded;
+ }
+ }
+}
--
Gitblit v1.9.1