using HMI.Core.Entity;
|
using HMI.Core.Util;
|
using System.Collections.ObjectModel;
|
using System.Data;
|
using System.IO;
|
|
namespace HMI.ParameterManage.Model
|
{
|
|
public class SqlModel : NotifyBase
|
{
|
public SqlModel(string baseFolder)
|
{
|
string dbpath = Path.Combine(baseFolder, "ParameterManage.db");
|
if (!File.Exists(dbpath))
|
{
|
SqliteHelper.CreateDatabase(dbpath);
|
}
|
SqliteHelper = new SqliteHelper(dbpath);
|
SqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS product (
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
name TEXT NOT NULL,
|
isMaster INTEGER,
|
parentId INTEGER,
|
UNIQUE(name)
|
);
|
CREATE TABLE IF NOT EXISTS parameter (
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
name TEXT NOT NULL,
|
value TEXT,
|
unit TEXT,
|
description TEXT,
|
pGroup TEXT,
|
productName TEXT,
|
UNIQUE(productName,name)
|
);");
|
}
|
|
public SqliteHelper SqliteHelper { get; private set; }
|
|
private ObservableCollection<ProductData> products;
|
|
public ObservableCollection<ProductData> Products
|
{
|
get { return products; }
|
set { Set(ref products, value); }
|
}
|
|
private ObservableCollection<ParameterData> parameters;
|
|
public ObservableCollection<ParameterData> Parameters
|
{
|
get { return parameters; }
|
set { Set(ref parameters, value); }
|
}
|
|
private ProductData selectedProduct;
|
|
public ProductData SelectedProduct
|
{
|
get { return selectedProduct; }
|
set
|
{
|
Set(ref selectedProduct, value);
|
LoadParameters();
|
}
|
}
|
|
public void LoadProducts()
|
{
|
DataTable dt = SqliteHelper.GetDataTable("SELECT * FROM product ORDER BY id;");
|
ObservableCollection<ProductData> products = new ObservableCollection<ProductData>();
|
|
if (dt != null)
|
{
|
foreach (DataRow dr in dt.Rows)
|
{
|
var p = new ProductData
|
{
|
Id = dr["id"].ToString(),
|
Name = dr["name"].ToString(),
|
IsMaster = dr["isMaster"].ToString() == "1",
|
ParentId = dr["parentId"].ToString(),
|
};
|
products.Add(p);
|
}
|
}
|
Products = products;
|
}
|
|
public void LoadParameters()
|
{
|
|
ObservableCollection<ParameterData> parameters = new ObservableCollection<ParameterData>();
|
if (SelectedProduct != null)
|
{
|
|
DataTable dt = SqliteHelper.GetDataTable($"SELECT * FROM parameter WHERE productName='{SelectedProduct.Name}' ORDER BY id;");
|
if (dt != null)
|
{
|
foreach (DataRow dr in dt.Rows)
|
{
|
var p = new ParameterData
|
{
|
Id = dr["id"].ToString(),
|
Name = dr["name"].ToString(),
|
Value = dr["value"].ToString(),
|
Unit = dr["unit"].ToString(),
|
Description = dr["description"].ToString(),
|
PGroup = dr["pGroup"].ToString(),
|
ProductName = dr["productName"].ToString(),
|
};
|
parameters.Add(p);
|
}
|
}
|
|
}
|
Parameters = parameters;
|
}
|
}
|
}
|