master
sunhonglei 5 months ago
parent 174d0245c5
commit b18833aca8
  1. 440
      ViewModel/Configuration/LevelConfigVM.cs
  2. 4
      ViewModel/Grading/GradingResultVM.cs

@ -1,25 +1,22 @@
using EncryptFileTool.Entity; using EncryptFileTool.Entity;
using HandyControl.Controls; using HandyControl.Controls;
using log4net;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using NPOI.SS.Formula.Functions;
using SharpDX;
using SparkClient.Model.Helper; using SparkClient.Model.Helper;
using System; using SparkClient.ViewModel.Grading;
using System.Data; using System.Data;
using System.Drawing;
using System.IO; using System.IO;
using System.Linq.Expressions;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data; using System.Windows.Data;
using System.Windows.Input; using System.Windows.Input;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Configuration; namespace SparkClient.ViewModel.Configuration;
public class LevelConfigVM : BaseViewModel public class LevelConfigVM : BaseViewModel
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM));
public ICommand ChangeShapeModelCommand { get; } public ICommand ChangeShapeModelCommand { get; }
public ICommand ChangeInstituteModelCommand { get; } public ICommand ChangeInstituteModelCommand { get; }
public ICommand LoadLevelConfigCommand { get; } public ICommand LoadLevelConfigCommand { get; }
@ -108,149 +105,100 @@ public class LevelConfigVM : BaseViewModel
private void setStandardList(DataTable gradeList, DataTable standardList) private void setStandardList(DataTable gradeList, DataTable standardList)
{ {
Style cellStyle = new Style(typeof(TextBlock)); try
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)
{ {
StandardList = new DataTable(); Style cellStyle = new Style(typeof(TextBlock));
List<DataColumn> columns = new List<DataColumn>(); Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
foreach (DataRow columnInfo in gradeList.Rows) 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<DataColumn> columns = new List<DataColumn>();
foreach (DataRow columnInfo in gradeList.Rows)
{ {
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString())); if ("1".Equals(columnInfo["GRADE_ORDER"].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 }); columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString()));
this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString()??"", 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 }); var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString());
//this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"), ElementStyle = cellStyle }); foreach (var ruleStandardList in standardRules)
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)
{ {
List<string> rowInfo = new List<string>(); var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString());
foreach (DataRow columnInfo in gradeList.Rows) foreach (var standard in standards)
{ {
// 每一行单元格内数据 List<string> rowInfo = new List<string>();
var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault(); foreach (DataRow columnInfo in gradeList.Rows)
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
{ {
// 每一行单元格内数据 // 每一行单元格内数据
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") if ("1".Equals(columnInfo["GRADE_ORDER"].ToString()))
+ 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]); rowInfo.Add("-");
rowInfo.Add("");
} }
else else
{ {
rowInfo.Insert(0, "-");
rowInfo.Insert(0, ""); rowInfo.Insert(0, "");
rowInfo.Add("-");
rowInfo.Add("");
} }
continue;
} }
else if ("1".Equals(row["GRADE_ORDER"].ToString()))
{ {
value = getFix(row, "MIN_PREFIX") string Min = row["STANDARD_MIN"].ToString();
+ row["STANDARD_MIN"].ToString() string Max = row["STANDARD_MAX"].ToString();
+ row["UNIT"].ToString() if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max))
+ 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]); 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")
;
} }
} else if (!string.IsNullOrEmpty(Max))
if (row["STANDARD_MAX"] == null || row["STANDARD_MAX"].ToString() == "") {
{ value = getFix(row, "MIN_PREFIX") +
value = getFix(row, "MAX_PREFIX") + Max + row["UNIT"].ToString()
row["MAX_NULL_REPALCE"].ToString() + getFix(row, "MIN_SUFFIX")
+ getFix(row, "MAX_SUFFIX"); ;
}
var arr = value.Split("\r\n", 2); var arr = value.Split("\r\n", 2);
rowInfo.Add(arr[0]); rowInfo.Add(arr[0]);
if (arr.Length > 1) if (arr.Length > 1)
@ -264,49 +212,111 @@ public class LevelConfigVM : BaseViewModel
} }
else else
{ {
value = getFix(row, "MAX_PREFIX") + // 每一行单元格内数据
row["STANDARD_MAX"].ToString() + row["UNIT"].ToString() if (row["STANDARD_MIN"] == null || row["STANDARD_MIN"].ToString() == "")
+ getFix(row, "MAX_SUFFIX");
var arr = value.Split("\r\n", 2);
rowInfo.Add(arr[0]);
if (arr.Length > 1)
{ {
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 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) private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2)
{ {
@ -449,7 +459,7 @@ public class LevelConfigVM : BaseViewModel
} }
catch (Exception ex) { catch (Exception ex) {
DataBaseHelper.rollback(); DataBaseHelper.rollback();
Console.WriteLine(ex.Message); Logger.Error($"全局异常捕获:{ex.Message}", ex);
Growl.Error(save_fail_message); Growl.Error(save_fail_message);
} }
} }
@ -468,68 +478,76 @@ public class LevelConfigVM : BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void LoadLevelConfig(object param) public void LoadLevelConfig(object param)
{ {
InstitutesEnabled = false; try
ShapesEnabled = false;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
jsonEntity = null;
if (openFileDialog.ShowDialog() == true)
{ {
string filename = openFileDialog.FileName; InstitutesEnabled = false;
string content = ""; ShapesEnabled = false;
if (File.Exists(filename)) 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"); string filename = openFileDialog.FileName;
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content); string content = "";
} if (File.Exists(filename))
} {
else content = AESHelper.DecryptFile(filename, "000000");
{ jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content);
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;
} }
else else
{ {
ShapeId = shapes.Rows[0]["SHAPE_ID"].ToString()??""; InstitutesEnabled = true;
} ShapesEnabled = true;
return;
// 机构列表重新生成
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 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); catch (Exception ex)
DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson); {
string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson); Logger.Error($"全局异常捕获:{ex.Message}", ex);
setStandardList(gradeInfos, standardInfos);
} }
} }

@ -654,7 +654,7 @@ public class GradingResultVM : BaseViewModel
return; return;
} }
} }
if (!File.Exists(getFilePath())) if (!Directory.Exists(getFilePath()))
{ {
new MessageBox().Show(MultilingualHelper.getString("FilePathNotExists")); new MessageBox().Show(MultilingualHelper.getString("FilePathNotExists"));
return; return;
@ -672,7 +672,7 @@ public class GradingResultVM : BaseViewModel
{ {
defultFilePath = data.Rows[0]["SETTING_P"].ToString(); defultFilePath = data.Rows[0]["SETTING_P"].ToString();
} }
if( File.Exists(defultFilePath)){ if(File.Exists(defultFilePath)){
return defultFilePath; return defultFilePath;
} }
else else

Loading…
Cancel
Save