You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
10 KiB

using HandyControl.Controls;
using log4net;
using Newtonsoft.Json.Linq;
using SparkClient.Model.Entity.Base;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.BaseWindow;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
namespace SparkClient.ViewModel.Configuration.SettingsPages
{
public class SettingsVM : BaseViewModel
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(ModelColorSetPageVM));
public ICommand SelectFileCommand { get; }
public string _languageId;
public string LanguageId { get { return _languageId; } set { _languageId = value; OnPropertyChanged(nameof(LanguageId)); } }
public bool _txtFileChecked;
public bool TxtFileChecked { get { return _txtFileChecked; } set { _txtFileChecked = value; OnPropertyChanged(nameof(TxtFileChecked)); } }
public bool _stlFileChecked;
public bool StlFileChecked { get { return _stlFileChecked; } set { _stlFileChecked = value; OnPropertyChanged(nameof(StlFileChecked)); } }
public bool _excelFileChecked;
public bool ExcelFileChecked { get { return _excelFileChecked; } set { _excelFileChecked = value; OnPropertyChanged(nameof(ExcelFileChecked)); } }
public bool _datFileChecked;
public bool DatFileChecked { get { return _datFileChecked; } set { _datFileChecked = value; OnPropertyChanged(nameof(DatFileChecked)); } }
public string _filePath;
public string FilePath { get { return _filePath; } set { _filePath = value; OnPropertyChanged(nameof(FilePath)); } }
public string _ruleId;
public string RuleId { get { return _ruleId; } set { _ruleId = value; OnPropertyChanged(nameof(RuleId)); } }
public DataTable _languages;
public DataTable Languages { get { return _languages; } set { _languages = value; OnPropertyChanged(nameof(Languages)); } }
public DataTable _rules;
public DataTable Rules { get { return _rules; } set { _rules = value; OnPropertyChanged(nameof(Rules)); } }
public SettingsVM()
{
try {
SelectFileCommand = new RelayCommand(SelectFile);
InitSetting();
}
catch (Exception ex)
{
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
private void InitSetting()
{
try
{
Languages = new DataTable();
Languages.Columns.Add("Key");
Languages.Columns.Add("Value");
Languages.Rows.Add("中文", "zh-cn");
Languages.Rows.Add("English", "en");
LanguageId = Settings.SelectValueById("LanguageId");
if (LanguageId.Length == 0)
{
LanguageId = "zh-cn";
}
bool.TryParse( Settings.SelectValueById("TxtFileChecked"), out bool TxtFileChecked);
this.TxtFileChecked = TxtFileChecked;
bool.TryParse(Settings.SelectValueById("StlFileChecked"), out bool StlFileChecked);
this.StlFileChecked = StlFileChecked;
bool.TryParse(Settings.SelectValueById("ExcelFileChecked"), out bool ExcelFileChecked);
this.ExcelFileChecked = ExcelFileChecked;
bool.TryParse(Settings.SelectValueById("DatFileChecked"), out bool DatFileChecked);
this.DatFileChecked = DatFileChecked;
FilePath = Settings.SelectValueById("FilePath");
RuleId = Settings.SelectValueById("RuleId");
selectRules();
}
catch (Exception ex)
{
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
private void selectRules()
{
try
{
Rules = new DataTable();
Rules.Columns.Add("Key");
Rules.Columns.Add("Value");
string sql = $"SELECT * FROM RULE WHERE RULE_ID NOT LIKE '%_TA_%';";
DataTable db = DataBaseHelper.ExecuteQuery(sql);
foreach (DataRow row in db.Rows)
{
Rules.Rows.Add(row[MultilingualHelper.getString("RULE_NAME")].ToString(), row["RULE_ID"].ToString());
}
}
catch (Exception ex)
{
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
//Rules.Rows.Add("IGI 2023", "IGI2023");
}
public bool SaveUpdate(object param)
{
try
{
if (!Directory.Exists(FilePath))
{
Growl.Error(MultilingualHelper.getString("SavePathIsnotExists"));
return false;
}
MultilingualHelper.setLanguage(_languageId);
updateDataBase();
Growl.InfoGlobal(MultilingualHelper.getString("Save_successful_message"));
return true;
}
catch (Exception ex)
{
Logger.Error($"全局异常捕获:{ex.Message}", ex);
return false;
}
}
private void updateDataBase()
{
try
{
// 语言设置登录
Settings LanguageData = new Settings()
{
Key = "LanguageId",
ItemName = "语言设置",
Value = LanguageId,
};
LanguageData.insert();
// 上传文件登录
Settings TxtFileCheckedData = new Settings()
{
Key = "TxtFileChecked",
ItemName = "上传文件 TXT文件",
Value = TxtFileChecked.ToString(),
};
TxtFileCheckedData.insert();
Settings StlFileCheckedData = new Settings()
{
Key = "StlFileChecked",
ItemName = "上传文件 STL文件",
Value = StlFileChecked.ToString(),
};
StlFileCheckedData.insert();
Settings ExcelFileCheckedData = new Settings()
{
Key = "ExcelFileChecked",
ItemName = "上传文件 Excel文件",
Value = ExcelFileChecked.ToString(),
};
ExcelFileCheckedData.insert();
Settings DatFileCheckedData = new Settings()
{
Key = "DatFileChecked",
ItemName = "上传文件 Dat文件",
Value = DatFileChecked.ToString(),
};
DatFileCheckedData.insert();
// 保存路径登录
Settings FilePathData = new Settings()
{
Key = "FilePath",
ItemName = "保存路径",
Value = FilePath,
};
FilePathData.insert();
// 定级标准登录
Settings RuleData = new Settings()
{
Key = "RuleId",
ItemName = "定级标准",
Value = RuleId,
};
RuleData.insert();
}
catch (Exception ex)
{
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
public void SelectFile(object param)
{
using (var folderBrowserDlg = new FolderBrowserDialog())
{
if (string.IsNullOrEmpty(FilePath))
{
folderBrowserDlg.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
}
else
{
folderBrowserDlg.SelectedPath = FilePath;
}
DialogResult result = folderBrowserDlg.ShowDialog();
if (result == DialogResult.OK)
{
FilePath = folderBrowserDlg.SelectedPath;
}
}
}
}
/// <summary>
/// 设定表实体
/// </summary>
public class Settings
{
private static string TABLE_NAME = "SETTING";
[DbField("GUID")]
public Guid GUID { get; set; }
/// <summary>
/// 项目名称
/// </summary>
[DbField("SETTING_ID")]
public required string Key { get; set; }
/// <summary>
/// key
/// </summary>
[DbField("SETTING_NAME")]
public required string ItemName{ get; set; }
/// <summary>
/// value
/// </summary>
[DbField("SETTING_P")]
public required string Value { get; set; }
/// <summary>
/// 设定表DB登录
/// </summary>
/// <returns>更新数量</returns>
public int insert()
{
string sql = $"SELECT * FROM {TABLE_NAME} WHERE SETTING_ID = '{Key}';";
DataTable db = DataBaseHelper.ExecuteQuery(sql);
if (db.Rows.Count > 0)
{
string updateSql = $"UPDATE {TABLE_NAME} SET SETTING_P = '{this.Value}' WHERE SETTING_ID = '{Key}';";
return DataBaseHelper.ExecuteNonQuery(updateSql);
}
else
{
string insertSql = $"INSERT INTO {TABLE_NAME} ('GUID','SETTING_ID','SETTING_NAME','SETTING_P') VALUES('{Guid.NewGuid().ToString()}','{Key}','{ItemName}','{Value}');";
return DataBaseHelper.ExecuteNonQuery(insertSql);
}
}
/// <summary>
/// 设定表值检索
/// </summary>
/// <param name="Id"></param>
/// <returns>value</returns>
public static string SelectValueById(string Id)
{
string sql = $"SELECT * FROM {TABLE_NAME} WHERE SETTING_ID = '{Id}';";
DataTable db = DataBaseHelper.ExecuteQuery(sql);
if (db!=null && db.Rows.Count > 0) {
return db.Rows[0]["SETTING_P"].ToString()??"";
}
else
{
return "";
}
}
}
}