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; } } } } /// /// 设定表实体 /// public class Settings { private static string TABLE_NAME = "SETTING"; [DbField("GUID")] public Guid GUID { get; set; } /// /// 项目名称 /// [DbField("SETTING_ID")] public required string Key { get; set; } /// /// key /// [DbField("SETTING_NAME")] public required string ItemName{ get; set; } /// /// value /// [DbField("SETTING_P")] public required string Value { get; set; } /// /// 设定表DB登录 /// /// 更新数量 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); } } /// /// 设定表值检索 /// /// /// value 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 ""; } } } }