From b18833aca8428a1dfc5cd188adb501b3ca685c20 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Thu, 9 Jan 2025 17:35:58 +0800 Subject: [PATCH] fix: --- ViewModel/Configuration/LevelConfigVM.cs | 440 ++++++++++++----------- ViewModel/Grading/GradingResultVM.cs | 4 +- 2 files changed, 231 insertions(+), 213 deletions(-) diff --git a/ViewModel/Configuration/LevelConfigVM.cs b/ViewModel/Configuration/LevelConfigVM.cs index 46ea2d7..0aa326d 100644 --- a/ViewModel/Configuration/LevelConfigVM.cs +++ b/ViewModel/Configuration/LevelConfigVM.cs @@ -1,25 +1,22 @@ using EncryptFileTool.Entity; using HandyControl.Controls; +using log4net; using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using NPOI.SS.Formula.Functions; -using SharpDX; using SparkClient.Model.Helper; -using System; +using SparkClient.ViewModel.Grading; using System.Data; -using System.Drawing; using System.IO; -using System.Linq.Expressions; using System.Windows; using System.Windows.Controls; -using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Input; +using MessageBox = SparkClient.Views.Dialog.MessageBox; namespace SparkClient.ViewModel.Configuration; public class LevelConfigVM : BaseViewModel { + private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM)); public ICommand ChangeShapeModelCommand { get; } public ICommand ChangeInstituteModelCommand { get; } public ICommand LoadLevelConfigCommand { get; } @@ -108,149 +105,100 @@ public class LevelConfigVM : BaseViewModel private void setStandardList(DataTable gradeList, DataTable standardList) { - Style cellStyle = new Style(typeof(TextBlock)); - Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center); - cellStyle.Setters.Add(setSellStyle); - Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); - cellStyle.Setters.Add(setSellStyle1); - dataGrid.Columns.Clear(); - if (gradeList != null) + try { - StandardList = new DataTable(); - List columns = new List(); - foreach (DataRow columnInfo in gradeList.Rows) + Style cellStyle = new Style(typeof(TextBlock)); + Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center); + cellStyle.Setters.Add(setSellStyle); + Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); + cellStyle.Setters.Add(setSellStyle1); + dataGrid.Columns.Clear(); + if (gradeList != null) { - if ("1".Equals(columnInfo["GRADE_ORDER"].ToString())) + StandardList = new DataTable(); + List columns = new List(); + foreach (DataRow columnInfo in gradeList.Rows) { - columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString())); - columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString()+"_"+1)); - //this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()),ElementStyle = cellStyle }); - this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString()??"", columnInfo["GRADE_EN_NAME"].ToString() ?? "")); + if ("1".Equals(columnInfo["GRADE_ORDER"].ToString())) + { + columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString())); + columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_" + 1)); + //this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()),ElementStyle = cellStyle }); + this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", columnInfo["GRADE_EN_NAME"].ToString() ?? "")); + } + else + { + //this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle }); + //this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"), ElementStyle = cellStyle }); + this.dataGrid.Columns.Insert(0, GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", (columnInfo["GRADE_EN_NAME"].ToString() ?? "") + "_MIN")); + this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", (columnInfo["GRADE_EN_NAME"].ToString() ?? "") + "_MAX")); + columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN")); + columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN" + "_" + 1)); + columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX")); + columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX" + "_" + 1)); + } } - else + columns.Insert(0, new DataColumn("title")); + this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle }); + StandardList.Columns.AddRange(columns.ToArray()); + // 以标准名分组表示每一行 + if (standardList != null) { - //this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle }); - //this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"), ElementStyle = cellStyle }); - this.dataGrid.Columns.Insert(0, GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", (columnInfo["GRADE_EN_NAME"].ToString() ?? "") + "_MIN")); - this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", (columnInfo["GRADE_EN_NAME"].ToString() ?? "") + "_MAX")); - columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN")); - columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN" + "_" + 1)); - columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX")); - columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX" + "_" + 1)); - } - } - columns.Insert(0, new DataColumn("title")); - this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle }); - StandardList.Columns.AddRange(columns.ToArray()); - // 以标准名分组表示每一行 - if (standardList != null) - { - var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString()); - foreach (var ruleStandardList in standardRules) { - var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString()); - foreach (var standard in standards) + var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString()); + foreach (var ruleStandardList in standardRules) { - List rowInfo = new List(); - foreach (DataRow columnInfo in gradeList.Rows) + var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString()); + foreach (var standard in standards) { - // 每一行单元格内数据 - var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault(); - string value = ""; - if (row == null ) - { - if ("1".Equals(columnInfo["GRADE_ORDER"].ToString())) - { - rowInfo.Add("-"); - rowInfo.Add(""); - } - else - { - rowInfo.Insert(0, "-"); - rowInfo.Insert(0, ""); - rowInfo.Add("-"); - rowInfo.Add(""); - } - continue; - } - if ("1".Equals(row["GRADE_ORDER"].ToString())) - { - string Min = row["STANDARD_MIN"].ToString(); - string Max = row["STANDARD_MAX"].ToString(); - if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max)) - { - value = getFix(row, "MIN_PREFIX") + - Min + row["UNIT"].ToString() + "-" - + Max + row["UNIT"].ToString() - + getFix(row, "MIN_SUFFIX") - ; - } - else if (!string.IsNullOrEmpty(Min)) - { - value = getFix(row, "MIN_PREFIX") + - Min + row["UNIT"].ToString() - + getFix(row, "MIN_SUFFIX") - ; - } - else if (!string.IsNullOrEmpty(Max)) - { - value = getFix(row, "MIN_PREFIX") + - Max + row["UNIT"].ToString() - + getFix(row, "MIN_SUFFIX") - ; - } - - var arr = value.Split("\r\n", 2); - rowInfo.Add(arr[0]); - if (arr.Length > 1) { - rowInfo.Add(arr[1]); - } - else - { - rowInfo.Add(""); - } - } - else + List rowInfo = new List(); + foreach (DataRow columnInfo in gradeList.Rows) { // 每一行单元格内数据 - if (row["STANDARD_MIN"] == null || row["STANDARD_MIN"].ToString() == "") + var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault(); + string value = ""; + if (row == null) { - value = getFix(row, "MIN_PREFIX") - + row["MIN_NULL_REPALCE"].ToString() - + getFix(row, "MIN_SUFFIX"); - var arr = value.Split("\r\n", 2); - rowInfo.Insert(0, arr[0]); - if (arr.Length > 1) + if ("1".Equals(columnInfo["GRADE_ORDER"].ToString())) { - rowInfo.Insert(0, arr[1]); + rowInfo.Add("-"); + rowInfo.Add(""); } else { + rowInfo.Insert(0, "-"); rowInfo.Insert(0, ""); + rowInfo.Add("-"); + rowInfo.Add(""); } - + continue; } - else + if ("1".Equals(row["GRADE_ORDER"].ToString())) { - value = getFix(row, "MIN_PREFIX") - + row["STANDARD_MIN"].ToString() - + row["UNIT"].ToString() - + getFix(row, "MIN_SUFFIX"); - var arr = value.Split("\r\n", 2); - rowInfo.Insert(0, arr[0]); - if (arr.Length > 1) + string Min = row["STANDARD_MIN"].ToString(); + string Max = row["STANDARD_MAX"].ToString(); + if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max)) { - rowInfo.Insert(0, arr[1]); + value = getFix(row, "MIN_PREFIX") + + Min + row["UNIT"].ToString() + "-" + + Max + row["UNIT"].ToString() + + getFix(row, "MIN_SUFFIX") + ; } - else + else if (!string.IsNullOrEmpty(Min)) { - rowInfo.Insert(0, ""); + value = getFix(row, "MIN_PREFIX") + + Min + row["UNIT"].ToString() + + getFix(row, "MIN_SUFFIX") + ; } - } - if (row["STANDARD_MAX"] == null || row["STANDARD_MAX"].ToString() == "") - { - value = getFix(row, "MAX_PREFIX") + - row["MAX_NULL_REPALCE"].ToString() - + getFix(row, "MAX_SUFFIX"); + else if (!string.IsNullOrEmpty(Max)) + { + value = getFix(row, "MIN_PREFIX") + + Max + row["UNIT"].ToString() + + getFix(row, "MIN_SUFFIX") + ; + } + var arr = value.Split("\r\n", 2); rowInfo.Add(arr[0]); if (arr.Length > 1) @@ -264,49 +212,111 @@ public class LevelConfigVM : BaseViewModel } else { - value = getFix(row, "MAX_PREFIX") + - row["STANDARD_MAX"].ToString() + row["UNIT"].ToString() - + getFix(row, "MAX_SUFFIX"); - var arr = value.Split("\r\n", 2); - rowInfo.Add(arr[0]); - if (arr.Length > 1) + // 每一行单元格内数据 + if (row["STANDARD_MIN"] == null || row["STANDARD_MIN"].ToString() == "") { - rowInfo.Add(arr[1]); + value = getFix(row, "MIN_PREFIX") + + row["MIN_NULL_REPALCE"].ToString() + + getFix(row, "MIN_SUFFIX"); + var arr = value.Split("\r\n", 2); + rowInfo.Insert(0, arr[0]); + if (arr.Length > 1) + { + rowInfo.Insert(0, arr[1]); + } + else + { + rowInfo.Insert(0, ""); + } + } else { - rowInfo.Add(""); + value = getFix(row, "MIN_PREFIX") + + row["STANDARD_MIN"].ToString() + + row["UNIT"].ToString() + + getFix(row, "MIN_SUFFIX"); + var arr = value.Split("\r\n", 2); + rowInfo.Insert(0, arr[0]); + if (arr.Length > 1) + { + rowInfo.Insert(0, arr[1]); + } + else + { + rowInfo.Insert(0, ""); + } + } + if (row["STANDARD_MAX"] == null || row["STANDARD_MAX"].ToString() == "") + { + value = getFix(row, "MAX_PREFIX") + + row["MAX_NULL_REPALCE"].ToString() + + getFix(row, "MAX_SUFFIX"); + var arr = value.Split("\r\n", 2); + rowInfo.Add(arr[0]); + if (arr.Length > 1) + { + rowInfo.Add(arr[1]); + } + else + { + rowInfo.Add(""); + } + } + else + { + value = getFix(row, "MAX_PREFIX") + + row["STANDARD_MAX"].ToString() + row["UNIT"].ToString() + + getFix(row, "MAX_SUFFIX"); + var arr = value.Split("\r\n", 2); + rowInfo.Add(arr[0]); + if (arr.Length > 1) + { + rowInfo.Add(arr[1]); + } + else + { + rowInfo.Add(""); + } } } - } - } - string ruleId = ruleStandardList.Key; - string prefix = ""; - string ta = ruleId.Substring(ruleId.Length - 2); - if (ruleId.StartsWith("GB")) - { - if ("49".Equals(ta)) - { - prefix = "[台宽比<" + ruleId.Substring(ruleId.Length - 2) + "] "; - } - else if ("71".Equals(ta)) - { - prefix = "[台宽比>" + ruleId.Substring(ruleId.Length - 2) + "] "; } - else + string ruleId = ruleStandardList.Key; + string prefix = ""; + if (ruleId != null && !string.IsNullOrEmpty(ruleId)) { - prefix = "[台宽比=" + ruleId.Substring(ruleId.Length - 2) + "] "; + string ta = ruleId.Substring(ruleId.Length - 2); + if (ruleId.StartsWith("GB")) + { + if ("49".Equals(ta)) + { + prefix = "[台宽比<" + ruleId.Substring(ruleId.Length - 2) + "] "; + } + else if ("71".Equals(ta)) + { + prefix = "[台宽比>" + ruleId.Substring(ruleId.Length - 2) + "] "; + } + else + { + prefix = "[台宽比=" + ruleId.Substring(ruleId.Length - 2) + "] "; + } + } } + rowInfo.Insert(0, prefix + standard.Key); + var showRow = StandardList.NewRow(); + showRow.ItemArray = rowInfo.ToArray(); + StandardList.Rows.Add(showRow); } - rowInfo.Insert(0, prefix + standard.Key); - var showRow = StandardList.NewRow(); - showRow.ItemArray = rowInfo.ToArray(); - StandardList.Rows.Add(showRow); } } } } + catch (Exception ex) + { + new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}"); + Logger.Error($"全局异常捕获:{ex.Message}", ex); + } } private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2) { @@ -449,7 +459,7 @@ public class LevelConfigVM : BaseViewModel } catch (Exception ex) { DataBaseHelper.rollback(); - Console.WriteLine(ex.Message); + Logger.Error($"全局异常捕获:{ex.Message}", ex); Growl.Error(save_fail_message); } } @@ -468,68 +478,76 @@ public class LevelConfigVM : BaseViewModel /// public void LoadLevelConfig(object param) { - InstitutesEnabled = false; - ShapesEnabled = false; - Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); - openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*"; - jsonEntity = null; - if (openFileDialog.ShowDialog() == true) + try { - string filename = openFileDialog.FileName; - string content = ""; - if (File.Exists(filename)) + InstitutesEnabled = false; + ShapesEnabled = false; + Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); + openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*"; + jsonEntity = null; + if (openFileDialog.ShowDialog() == true) { - content = AESHelper.DecryptFile(filename, "000000"); - jsonEntity = JsonConvert.DeserializeObject(content); - } - } - else - { - InstitutesEnabled = true; - ShapesEnabled = true; - return; - } - if (jsonEntity != null) - { - // 形状列表重新生成 - string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{jsonEntity.SHAPE_ID}';"; - DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql); - if (shapes == null || shapes.Rows.Count == 0) - { - var row = Shapes.NewRow(); - row["SHAPE_ID"] = jsonEntity.SHAPE_ID; - row["SHAPE_NAME"] = jsonEntity.SHAPE_NAME; - row["SHAPE_EN_NAME"] = jsonEntity.SHAPE_EN_NAME; - Shapes.Rows.Add(row); - ShapeId = jsonEntity.SHAPE_ID; + string filename = openFileDialog.FileName; + string content = ""; + if (File.Exists(filename)) + { + content = AESHelper.DecryptFile(filename, "000000"); + jsonEntity = JsonConvert.DeserializeObject(content); + } } else { - ShapeId = shapes.Rows[0]["SHAPE_ID"].ToString()??""; - } - - // 机构列表重新生成 - string instituteSql = $"SELECT * FROM RULE WHERE RULE_ID = '{jsonEntity.RULE_ID}';"; - DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql); - if (institute == null || institute.Rows.Count == 0) - { - var row = Institutes.NewRow(); - row["RULE_ID"] = jsonEntity.RULE_ID; - row["RULE_NAME"]=jsonEntity.RULE_NAME; - row["RULE_EN_NAME"]= jsonEntity.RULE_EN_NAME; - Institutes.Rows.Add(row); - InstituteId = jsonEntity.RULE_ID; + InstitutesEnabled = true; + ShapesEnabled = true; + return; } - else + if (jsonEntity != null) { - InstituteId = institute.Rows[0]["RULE_ID"].ToString()??""; + // 形状列表重新生成 + string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{jsonEntity.SHAPE_ID}';"; + DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql); + if (shapes == null || shapes.Rows.Count == 0) + { + var row = Shapes.NewRow(); + row["SHAPE_ID"] = jsonEntity.SHAPE_ID; + row["SHAPE_NAME"] = jsonEntity.SHAPE_NAME; + row["SHAPE_EN_NAME"] = jsonEntity.SHAPE_EN_NAME; + Shapes.Rows.Add(row); + ShapeId = jsonEntity.SHAPE_ID; + } + else + { + ShapeId = shapes.Rows[0]["SHAPE_ID"].ToString() ?? ""; + } + + // 机构列表重新生成 + string instituteSql = $"SELECT * FROM RULE WHERE RULE_ID = '{jsonEntity.RULE_ID}';"; + DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql); + if (institute == null || institute.Rows.Count == 0) + { + var row = Institutes.NewRow(); + row["RULE_ID"] = jsonEntity.RULE_ID; + row["RULE_NAME"] = jsonEntity.RULE_NAME; + row["RULE_EN_NAME"] = jsonEntity.RULE_EN_NAME; + Institutes.Rows.Add(row); + InstituteId = jsonEntity.RULE_ID; + } + else + { + InstituteId = institute.Rows[0]["RULE_ID"].ToString() ?? ""; + } + // 表格内容重新生成 + string gradeInfosJson = JsonConvert.SerializeObject(jsonEntity.gradeInfos); + DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson); + string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos); + DataTable standardInfos = Common.JsonToDataTable(standardInfosJson); + setStandardList(gradeInfos, standardInfos); } - // 表格内容重新生成 - string gradeInfosJson = JsonConvert.SerializeObject(jsonEntity.gradeInfos); - DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson); - string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos); - DataTable standardInfos = Common.JsonToDataTable(standardInfosJson); - setStandardList(gradeInfos, standardInfos); + } + catch (Exception ex) + { + new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}"); + Logger.Error($"全局异常捕获:{ex.Message}", ex); } } diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs index 211621d..c5e18db 100644 --- a/ViewModel/Grading/GradingResultVM.cs +++ b/ViewModel/Grading/GradingResultVM.cs @@ -654,7 +654,7 @@ public class GradingResultVM : BaseViewModel return; } } - if (!File.Exists(getFilePath())) + if (!Directory.Exists(getFilePath())) { new MessageBox().Show(MultilingualHelper.getString("FilePathNotExists")); return; @@ -672,7 +672,7 @@ public class GradingResultVM : BaseViewModel { defultFilePath = data.Rows[0]["SETTING_P"].ToString(); } - if( File.Exists(defultFilePath)){ + if(File.Exists(defultFilePath)){ return defultFilePath; } else