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 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<DataColumn> columns = new List<DataColumn>();
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<DataColumn> columns = new List<DataColumn>();
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<string> rowInfo = new List<string>();
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<string> rowInfo = new List<string>();
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
/// <param name="param"></param>
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<JsonEntity>(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<JsonEntity>(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);
}
}

@ -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

Loading…
Cancel
Save