| | |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Manager; |
| | | using HMI.Core.Util; |
| | | using HMI.ParameterManage.Entity; |
| | | using System.Collections.Generic; |
| | | using System.Collections.ObjectModel; |
| | | using System.IO; |
| | | using System.Linq; |
| | |
| | | { |
| | | public class XmlModel : NotifyBase |
| | | { |
| | | private string ProductSettingFile; |
| | | private string ParameterSettingFolder; |
| | | |
| | | public XmlModel(string baseFolder) |
| | | { |
| | | ProductSettingFile = Path.Combine(baseFolder, "Product.setting"); |
| | | ParameterSettingFolder = Path.Combine(baseFolder, "Parameter"); |
| | | if (!Directory.Exists(ParameterSettingFolder)) |
| | | { |
| | | Directory.CreateDirectory(ParameterSettingFolder); |
| | | } |
| | | } |
| | | |
| | | private ObservableCollection<ProductData> products; |
| | |
| | | |
| | | public void LoadProducts() |
| | | { |
| | | ObservableCollection<ProductData> products; |
| | | if (File.Exists(ProductSettingFile)) |
| | | { |
| | | products = XmlHelper.DeserializeFromXml<ObservableCollection<ProductData>>(ProductSettingFile); |
| | | } |
| | | else |
| | | { |
| | | products = new ObservableCollection<ProductData>(); |
| | | } |
| | | ObservableCollection<ProductData> products = ProductManager.GetProducts<ObservableCollection<ProductData>>(); |
| | | products = products ?? new ObservableCollection<ProductData>(); |
| | | Products = products; |
| | | } |
| | | |
| | | public void LoadParameters() |
| | | { |
| | | ObservableCollection<ParameterData> parameters = new ObservableCollection<ParameterData>(); |
| | | ObservableCollection<ParameterData> parameters = null; |
| | | if (SelectedProduct != null) |
| | | { |
| | | string fileName = $"Parameter_{SelectedProduct.Name}.setting"; |
| | | string parameterSettingFile = Path.Combine(ParameterSettingFolder, fileName); |
| | | if (File.Exists(parameterSettingFile)) |
| | | { |
| | | parameters = XmlHelper.DeserializeFromXml<ObservableCollection<ParameterData>>(parameterSettingFile); |
| | | parameters = ProductManager.GetParametersByProductName<ObservableCollection<ParameterData>>(SelectedProduct.Name); |
| | | |
| | | } |
| | | } |
| | | parameters = parameters ?? new ObservableCollection<ParameterData>(); |
| | | Parameters = parameters; |
| | | } |
| | | |
| | |
| | | int index = Products.IndexOf(data); |
| | | if (index > -1) |
| | | { |
| | | UpdateData(index, data); |
| | | UpdateProduct(index, data); |
| | | } |
| | | else |
| | | { |
| | | InsertData(data); |
| | | InsertProduct(data); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public void InsertData(ProductData data) |
| | | #region 产品操作 |
| | | /// <summary> |
| | | /// 新增产品 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | public void InsertProduct(ProductData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Products); |
| | | temp.Add(data); |
| | | XmlHelper.SerializeToXml(ProductSettingFile, temp); |
| | | SaveProduct(temp); |
| | | } |
| | | |
| | | public void UpdateData(int index, ProductData data) |
| | | /// <summary> |
| | | /// 更新产品 |
| | | /// </summary> |
| | | /// <param name="index"></param> |
| | | /// <param name="data"></param> |
| | | public void UpdateProduct(int index, ProductData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Products); |
| | | temp[index] = data; |
| | | XmlHelper.SerializeToXml(ProductSettingFile, temp); |
| | | SaveProduct(temp); |
| | | } |
| | | |
| | | public void InsertParameter(ParameterData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Parameters); |
| | | temp.Add(data); |
| | | string fileName = Path.Combine(ParameterSettingFolder, $"Parameter_{SelectedProduct.Name}.setting"); |
| | | XmlHelper.SerializeToXml(fileName, temp); |
| | | } |
| | | |
| | | public void UpdateParameter(int index, ParameterData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Parameters); |
| | | temp[index] = data; |
| | | string fileName = Path.Combine(ParameterSettingFolder, $"Parameter_{SelectedProduct.Name}.setting"); |
| | | XmlHelper.SerializeToXml(fileName, temp); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除产品 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | public void DeleteProduct(ProductData data) |
| | | { |
| | | int index = Products.IndexOf(data); |
| | | if (index > -1) |
| | | { |
| | | var temp = Products.Where(p => p != data).ToList(); |
| | | XmlHelper.SerializeToXml(ProductSettingFile, temp); |
| | | SaveProduct(temp); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 批量删除产品 |
| | | /// </summary> |
| | | public void DeleteProducts() |
| | | { |
| | | var temp = Products.Where(p => !p.IsSelected).ToList(); |
| | | XmlHelper.SerializeToXml(ProductSettingFile, temp); |
| | | SaveProduct(temp); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 持久化产品数据 |
| | | /// </summary> |
| | | /// <param name="datas"></param> |
| | | private void SaveProduct(IList<ProductData> datas) |
| | | { |
| | | XmlHelper.SerializeToXml(PathHelper.ProductDataFile, datas); |
| | | } |
| | | #endregion |
| | | |
| | | #region 产品参数操作 |
| | | /// <summary> |
| | | /// 新增参数 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | public void InsertParameter(ParameterData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Parameters); |
| | | temp.Add(data); |
| | | SaveParameter(temp); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新参数 |
| | | /// </summary> |
| | | /// <param name="index"></param> |
| | | /// <param name="data"></param> |
| | | public void UpdateParameter(int index, ParameterData data) |
| | | { |
| | | var temp = XmlHelper.DeepClone(Parameters); |
| | | temp[index] = data; |
| | | SaveParameter(temp); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除参数 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | public void DeleteParameter(ParameterData data) |
| | | { |
| | | int index = Parameters.IndexOf(data); |
| | | if (index > -1) |
| | | { |
| | | var temp = Parameters.Where(p => p != data).ToList(); |
| | | string fileName = Path.Combine(ParameterSettingFolder, $"Parameter_{SelectedProduct.Name}.setting"); |
| | | XmlHelper.SerializeToXml(fileName, temp); |
| | | SaveParameter(temp); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 批量删除参数 |
| | | /// </summary> |
| | | public void DeleteParameters() |
| | | { |
| | | var temp = Parameters.Where(p => !p.IsSelected).ToList(); |
| | | string fileName = Path.Combine(ParameterSettingFolder, $"Parameter_{SelectedProduct.Name}.setting"); |
| | | XmlHelper.SerializeToXml(fileName, temp); |
| | | SaveParameter(temp); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 持久化参数数据 |
| | | /// </summary> |
| | | /// <param name="datas"></param> |
| | | private void SaveParameter(IList<ParameterData> datas) |
| | | { |
| | | string fileName = Path.Combine(PathHelper.ProductDataFolder, "Parameter", $"Parameter_{SelectedProduct.Name}.data"); |
| | | XmlHelper.SerializeToXml(fileName, datas); |
| | | } |
| | | #endregion |
| | | } |
| | | } |