using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Data.SQLite; namespace CNAS_Authorize { public class Machine { public string FactoryName { get; set; } public string MachineCode { get; set; } public string ImportTime { get; set; } public bool IsGenerated { get; set; } public Machine(string name, string code, string time, bool isGen) { FactoryName = name; MachineCode = code; ImportTime = time; IsGenerated = isGen; } } class MachineAuth { /// /// 所有数据行 /// private List m_machines; /// /// 编码过滤 /// private string m_filter_code; /// /// 名称过滤 /// private string m_filter_factory; //以下都是过滤过的数据 /// /// 过滤过的数据 /// private List m_rangle; /// /// 过滤过的当前页 /// private List m_page; /// /// 每页数量 /// private int m_pageSize; /// /// 页号 /// private int m_pageIndex; /// /// 总页数 /// private int m_pageCount; public MachineAuth() { m_pageSize = 10; m_pageIndex = 1; } public void Load() { InitializeDatabase(); m_machines = new List(); string dbPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CNAS.db"); string connectionString = $"Data Source={dbPath};Version=3;"; try { using (var connection = new SQLiteConnection(connectionString)) { connection.Open(); using (var command = new SQLiteCommand(connection)) { command.CommandText = "SELECT PLANTCODE, MAC_ADDRESS, CREATETIME FROM macaddress"; using (var reader = command.ExecuteReader()) { while (reader.Read()) { Machine m = new Machine( reader["PLANTCODE"].ToString(), reader["MAC_ADDRESS"].ToString(), reader["CREATETIME"].ToString(), true ); m_machines.Add(m); } } } } } catch (Exception ex) { MessageBox.Show($"加载数据失败: {ex.Message}", "错误"); } m_rangle = new List(); m_rangle.AddRange(m_machines); m_pageSize = 10; m_pageIndex = 1; m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1); m_page = getPageData(m_pageIndex); } public int PageSize { get { return m_pageSize; } set { m_pageSize = value; updateView(); } } public string CurrentPage { get { return m_pageCount == 0 ? "" : string.Format("{0} / {1}", m_pageIndex, m_pageCount); } set { } } public int TotalCount { get { return m_machines == null ? 0 : m_machines.Count; } set { } } private void updateView() { List view = new List(); if (!string.IsNullOrEmpty(m_filter_code) || !string.IsNullOrEmpty(m_filter_factory)) { foreach (Machine item in m_machines) { bool flag = true; if (!string.IsNullOrEmpty(m_filter_code)) { if (item.MachineCode.IndexOf(m_filter_code) == -1) { flag = false; } } if (!string.IsNullOrEmpty(m_filter_factory)) { if (item.FactoryName.IndexOf(m_filter_factory) == -1) { flag = false; } } if (flag) { view.Add(item); } } } else { view.AddRange(m_machines); } m_rangle = view; m_pageIndex = 1; m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1); m_page = getPageData(m_pageIndex); } public void ChangeFilter(string code, string factory) { this.m_filter_code = code; this.m_filter_factory = factory; updateView(); } public List Page { get { return m_page; } } private List getPageData(int pageIndex) { int index = (pageIndex - 1) * m_pageSize; List page = new List(m_pageSize); for (int i = 0; i < m_pageSize && index < m_rangle.Count; i++) { page.Add(m_rangle[index]); index++; } return page; } public List NextPage(out bool ok) { int index = m_pageIndex * m_pageSize; if (m_rangle == null || index >= m_rangle.Count) { ok = false; return null; } m_pageIndex++; m_page = getPageData(m_pageIndex); ok = true; return m_page; } public List PrevPage(out bool ok) { if (m_pageIndex == 1 || m_rangle == null) { ok = false; return null; } m_pageIndex--; m_page = getPageData(m_pageIndex); ok = true; return m_page; } private void InitializeDatabase() { try { string dbPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CNAS.db"); string connectionString = $"Data Source={dbPath};Version=3;"; // 确保数据库目录存在 string dbDirectory = System.IO.Path.GetDirectoryName(dbPath); if (!System.IO.Directory.Exists(dbDirectory)) { System.IO.Directory.CreateDirectory(dbDirectory); } using (var connection = new SQLiteConnection(connectionString)) { connection.Open(); using (var command = new SQLiteCommand(connection)) { command.CommandText = @" CREATE TABLE IF NOT EXISTS macaddress ( id INTEGER PRIMARY KEY AUTOINCREMENT, MAC_ADDRESS TEXT, PLANTCODE TEXT, CREATETIME TEXT, FACILITY_STYLE TEXT );"; command.ExecuteNonQuery(); } } } catch (Exception ex) { MessageBox.Show($"初始化数据库失败: {ex.Message}", "错误"); } } private void InsertTestData() { string connectionString = "Data Source=|DataDirectory|\\CNAS.db;Version=3;"; using (var connection = new SQLiteConnection(connectionString)) { connection.Open(); using (var command = new SQLiteCommand(connection)) { command.CommandText = @" INSERT INTO macaddress (MAC_ADDRESS, PLANTCODE, CREATETIME, FACILITY_STYLE) VALUES (@mac, @plant, @time, @style)"; command.Parameters.AddWithValue("@mac", "00:11:22:33:44:55"); command.Parameters.AddWithValue("@plant", "PLANT001"); command.Parameters.AddWithValue("@time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); command.Parameters.AddWithValue("@style", "Style A"); command.ExecuteNonQuery(); } } } } }