master
sunhonglei 5 months ago
parent 87e63b5dda
commit 681bc64930
  1. 2
      Language/zh_CN.xaml
  2. 28
      ViewModel/Configuration/AlgorithmConfigVM.cs
  3. 183
      ViewModel/Configuration/CutConfigVM.cs
  4. 128
      ViewModel/Configuration/LevelConfigVM.cs
  5. 32
      ViewModel/Configuration/SettingBaseVM.cs
  6. 3
      ViewModel/Dialog/StartDialogVM.cs
  7. 8
      ViewModel/Grading/DiamondSelectVM.cs
  8. 54
      ViewModel/Grading/GradingResultVM.cs
  9. 2
      Views/Configuration/LevelConfigPage.xaml

@ -198,5 +198,5 @@
<sys:String x:Key="CUDANoInstall">CUDA未安装,程序执行中可能会出错</sys:String> <sys:String x:Key="CUDANoInstall">CUDA未安装,程序执行中可能会出错</sys:String>
<sys:String x:Key="MSVCRuntimeNoInstall">MSVC Runtime未安装,程序执行中可能会出错</sys:String> <sys:String x:Key="MSVCRuntimeNoInstall">MSVC Runtime未安装,程序执行中可能会出错</sys:String>
<sys:String x:Key="FilePathNotExists">文件路径不存在</sys:String> <sys:String x:Key="FilePathNotExists">文件路径不存在</sys:String>
<sys:String x:Key="LevelConfigFormatError">定级配置文件格式不正</sys:String>
</ResourceDictionary> </ResourceDictionary>

@ -39,20 +39,28 @@ public class AlgorithmConfigVM : BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void InitAlgorithmData(object param) public void InitAlgorithmData(object param)
{ {
AlgorithmConfigJson = "{}"; try
string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
StringBuilder sb = new StringBuilder();
if (dataTable != null)
{ {
foreach (DataRow row in dataTable.Rows) AlgorithmConfigJson = "{}";
string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
StringBuilder sb = new StringBuilder();
if (dataTable != null)
{ {
sb.Append(row["json"].ToString()); foreach (DataRow row in dataTable.Rows)
{
sb.Append(row["json"].ToString());
}
}
if (sb.Length > 0)
{
AlgorithmConfigJson = JToken.Parse(sb.ToString()).ToString();
} }
} }
if (sb.Length > 0) catch (Exception ex)
{ {
AlgorithmConfigJson = JToken.Parse(sb.ToString()).ToString(); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
} }
} }
@ -118,7 +126,7 @@ public class AlgorithmConfigVM : BaseViewModel
catch (Exception ex) catch (Exception ex)
{ {
Growl.Error(MultilingualHelper.getString("SaveFail")); Growl.Error(MultilingualHelper.getString("SaveFail"));
Logger.Error(ex); Logger.Error($"全局异常捕获:{ex.Message}",ex);
} }
} }
private void IsEnabledByRole (){ private void IsEnabledByRole (){

@ -8,11 +8,13 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using SparkClient.ViewModel.Configuration.SettingsPages; using SparkClient.ViewModel.Configuration.SettingsPages;
using log4net;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Configuration; namespace SparkClient.ViewModel.Configuration;
public class CutConfigVM: BaseViewModel public class CutConfigVM: BaseViewModel
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(CutConfigVM));
public ICommand AddRowsCommand { get; } public ICommand AddRowsCommand { get; }
public ICommand SaveCutConfigDataCommand { get; } public ICommand SaveCutConfigDataCommand { get; }
public ICommand DelCutRowCommand { get; } public ICommand DelCutRowCommand { get; }
@ -23,17 +25,26 @@ public class CutConfigVM: BaseViewModel
public DataTable CutterInfos { get { return _cutterInfos; } set { _cutterInfos = value; OnPropertyChanged("CutterInfos"); } } public DataTable CutterInfos { get { return _cutterInfos; } set { _cutterInfos = value; OnPropertyChanged("CutterInfos"); } }
private int RowNo = 0; private int RowNo = 0;
public CutConfigVM() public CutConfigVM()
{ {
AddRowsCommand = new RelayCommand(AddRows); try
{
AddRowsCommand = new RelayCommand(AddRows);
SaveCutConfigDataCommand = new RelayCommand(SaveCutConfigData); SaveCutConfigDataCommand = new RelayCommand(SaveCutConfigData);
DelCutRowCommand = new RelayCommand(DelCutRow); DelCutRowCommand = new RelayCommand(DelCutRow);
// 初始化VIEW层参数 // 初始化VIEW层参数
// 初始化VIEW层Command // 初始化VIEW层Command
this.InitCutConfigData(null); this.InitCutConfigData(null);
IsEnabledByRole(); IsEnabledByRole();
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
} }
@ -43,15 +54,23 @@ public class CutConfigVM: BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void InitCutConfigData(object param) public void InitCutConfigData(object param)
{ {
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG"; try
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql); {
if (dataTable!=null) { string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
dataTable.Columns.Add(new DataColumn("RowNo", typeof(int))); DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
foreach (DataRow row in dataTable.Rows) if (dataTable!=null) {
{ dataTable.Columns.Add(new DataColumn("RowNo", typeof(int)));
row["RowNo"] = RowNo++; foreach (DataRow row in dataTable.Rows)
{
row["RowNo"] = RowNo++;
}
CutterInfos = dataTable;
} }
CutterInfos = dataTable; }
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
} }
} }
@ -61,7 +80,15 @@ public class CutConfigVM: BaseViewModel
/// <param name="row">行数</param> /// <param name="row">行数</param>
public void AddRows(object row) public void AddRows(object row)
{ {
CutterInfos.Rows.Add("", "", "",Guid.NewGuid(), RowNo++); try
{
CutterInfos.Rows.Add("", "", "",Guid.NewGuid(), RowNo++);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
} }
/// <summary> /// <summary>
@ -70,79 +97,87 @@ public class CutConfigVM: BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void SaveCutConfigData(object param) public void SaveCutConfigData(object param)
{ {
int count = CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").GroupBy(r => new { key = r.Field<string>("Key") }).Count(); try
if (count < CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").Count())
{
Growl.Error("Key有重复数据");
return;
}
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
int insertCount = 0;
foreach (DataRow row in CutterInfos.Rows)
{ {
if (row["Key"].ToString() == "") int count = CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").GroupBy(r => new { key = r.Field<string>("Key") }).Count();
if (count < CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").Count())
{ {
continue; Growl.Error("Key有重复数据");
return;
} }
DataRow? removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault(); string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
if (removerow != null) DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
int insertCount = 0;
foreach (DataRow row in CutterInfos.Rows)
{ {
CutterConfigEntity entity = new CutterConfigEntity() if (row["Key"].ToString() == "")
{ {
ItemName = row["ItemName"].ToString() ?? "", continue;
Key = row["Key"].ToString() ?? "", }
Value = row["Value"].ToString() ?? "", DataRow? removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault();
GUID = Guid.Parse(row["GUID"].ToString()??"") if (removerow != null)
}; {
sql = entity.GenerateUpdateSQL(); CutterConfigEntity entity = new CutterConfigEntity()
SqliteParameter[] sqliteParameters = { {
new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()), ItemName = row["ItemName"].ToString() ?? "",
new SqliteParameter("@KEY", row["Key"].ToString()), Key = row["Key"].ToString() ?? "",
new SqliteParameter("@VALUE", row["Value"].ToString()), Value = row["Value"].ToString() ?? "",
new SqliteParameter("@GUID", row["GUID"].ToString()), GUID = Guid.Parse(row["GUID"].ToString()??"")
}; };
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters); sql = entity.GenerateUpdateSQL();
dataTable.Rows.Remove(removerow); SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()),
new SqliteParameter("@KEY", row["Key"].ToString()),
new SqliteParameter("@VALUE", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
dataTable.Rows.Remove(removerow);
}
else
{
CutterConfigEntity entity = new CutterConfigEntity()
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? ""
};
sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ItemName", row["ItemName"].ToString()),
new SqliteParameter("@Key", row["Key"].ToString()),
new SqliteParameter("@Value", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
}
} }
else foreach (DataRow row in dataTable.Rows)
{ {
Guid.TryParse(row["GUID"].ToString(), out Guid result);
CutterConfigEntity entity = new CutterConfigEntity() CutterConfigEntity entity = new CutterConfigEntity()
{ {
ItemName = row["ItemName"].ToString() ?? "", ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "", Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? "" Value = row["Value"].ToString() ?? "",
}; GUID = result
sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ItemName", row["ItemName"].ToString()),
new SqliteParameter("@Key", row["Key"].ToString()),
new SqliteParameter("@Value", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
}; };
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters); sql = entity.GenerateDeleteSQL();
insertCount += DataBaseHelper.ExecuteNonQuery(sql);
} }
} if (insertCount>=0)
foreach (DataRow row in dataTable.Rows)
{
Guid.TryParse(row["GUID"].ToString(), out Guid result);
CutterConfigEntity entity = new CutterConfigEntity()
{ {
ItemName = row["ItemName"].ToString() ?? "", Growl.Info("保存成功");
Key = row["Key"].ToString() ?? "", }
Value = row["Value"].ToString() ?? "", else
GUID = result {
}; Growl.Error("保存失败");
sql = entity.GenerateDeleteSQL(); }
insertCount += DataBaseHelper.ExecuteNonQuery(sql);
}
if (insertCount>=0)
{
Growl.Info("保存成功");
} }
else catch (Exception ex)
{ {
Growl.Error("保存失败"); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
} }
} }
private void IsEnabledByRole() private void IsEnabledByRole()

@ -16,7 +16,7 @@ namespace SparkClient.ViewModel.Configuration;
public class LevelConfigVM : BaseViewModel public class LevelConfigVM : BaseViewModel
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM)); private static readonly ILog Logger = LogManager.GetLogger(typeof(LevelConfigVM));
public ICommand ChangeShapeModelCommand { get; } public ICommand ChangeShapeModelCommand { get; }
public ICommand ChangeInstituteModelCommand { get; } public ICommand ChangeInstituteModelCommand { get; }
public ICommand LoadLevelConfigCommand { get; } public ICommand LoadLevelConfigCommand { get; }
@ -54,16 +54,24 @@ public class LevelConfigVM : BaseViewModel
private string STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME"); private string STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
public LevelConfigVM(DataGrid dataGrid) public LevelConfigVM(DataGrid dataGrid)
{ {
if (dataGrid == null) return; try
this.dataGrid = dataGrid; {
ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel); if (dataGrid == null) return;
ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel); this.dataGrid = dataGrid;
LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig); ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel);
DelLevelConfigCommand = new RelayCommand(DelLevelConfig); ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel);
SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig); LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig);
InitLevelConfig(null); DelLevelConfigCommand = new RelayCommand(DelLevelConfig);
InitData(); SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig);
IsUpdateButtonEnabled = false; InitLevelConfig(null);
InitData();
IsUpdateButtonEnabled = false;
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
} }
/// <summary> /// <summary>
@ -72,13 +80,24 @@ public class LevelConfigVM : BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void InitLevelConfig(object param) public void InitLevelConfig(object param)
{ {
Save_successful_message = MultilingualHelper.getString("Save_successful_message"); try
save_fail_message = MultilingualHelper.getString("save_fail_message"); {
no_data_message = MultilingualHelper.getString("no_data_message"); Save_successful_message = MultilingualHelper.getString("Save_successful_message");
grade_config_left_top = MultilingualHelper.getString("grade_config_left_top"); save_fail_message = MultilingualHelper.getString("save_fail_message");
GRADE_NAME = MultilingualHelper.getString("GRADE_NAME"); no_data_message = MultilingualHelper.getString("no_data_message");
STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME"); grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
} }
/// <summary>
/// 初始化数据(形状列表检索)
/// </summary>
private void InitData() private void InitData()
{ {
dataGrid.Columns.Clear(); dataGrid.Columns.Clear();
@ -89,13 +108,20 @@ public class LevelConfigVM : BaseViewModel
ShapeId = Shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString(); ShapeId = Shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
} }
} }
/// <summary>
/// 初始化数据(规则列表检索)
/// </summary>
private string setInstitutes(string id) private string setInstitutes(string id)
{ {
string insituteSql = $"SELECT RULE_ID,RULE_NAME,RULE_EN_NAME FROM RULE WHERE RULE_ID NOT LIKE '%_TA_%';"; string insituteSql = $"SELECT RULE_ID,RULE_NAME,RULE_EN_NAME FROM RULE WHERE RULE_ID NOT LIKE '%_TA_%';";
Institutes = DataBaseHelper.ExecuteQuery(insituteSql); Institutes = DataBaseHelper.ExecuteQuery(insituteSql);
return Institutes.AsEnumerable().FirstOrDefault()["RULE_ID"].ToString(); return Institutes.AsEnumerable().FirstOrDefault()["RULE_ID"].ToString();
} }
/// <summary>
/// 页面数据初始化(检索)
/// </summary>
/// <param name="shapeId"></param>
/// <param name="ruleId"></param>
private void setDataGrid(string shapeId, string ruleId) private void setDataGrid(string shapeId, string ruleId)
{ {
string gradeSql = $"SELECT GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER FROM GRADE WHERE SHAPE_ID = '{shapeId}' AND RULE_ID LIKE '{ruleId}%' GROUP BY GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER ORDER BY GRADE_ORDER;"; string gradeSql = $"SELECT GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER FROM GRADE WHERE SHAPE_ID = '{shapeId}' AND RULE_ID LIKE '{ruleId}%' GROUP BY GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER ORDER BY GRADE_ORDER;";
@ -105,23 +131,32 @@ public class LevelConfigVM : BaseViewModel
DataTable rowInfos = DataBaseHelper.ExecuteQuery(standardSql); DataTable rowInfos = DataBaseHelper.ExecuteQuery(standardSql);
setStandardList(columnInfos, rowInfos); setStandardList(columnInfos, rowInfos);
} }
/// <summary>
/// 页面数据初始化(页面值设定)
/// </summary>
/// <param name="gradeList"></param>
/// <param name="standardList"></param>
private void setStandardList(DataTable gradeList, DataTable standardList) private void setStandardList(DataTable gradeList, DataTable standardList)
{ {
try try
{ {
// 定义单元格样式
Style cellStyle = new Style(typeof(TextBlock)); Style cellStyle = new Style(typeof(TextBlock));
Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center); Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
cellStyle.Setters.Add(setSellStyle); cellStyle.Setters.Add(setSellStyle);
Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
cellStyle.Setters.Add(setSellStyle1); cellStyle.Setters.Add(setSellStyle1);
// 清空datagrid中的数据
dataGrid.Columns.Clear(); dataGrid.Columns.Clear();
if (gradeList != null) if (gradeList != null)
{ {
StandardList = new DataTable(); StandardList = new DataTable();
List<DataColumn> columns = new List<DataColumn>(); List<DataColumn> columns = new List<DataColumn>();
// 循环等级列表,设定datagrid中的列
foreach (DataRow columnInfo in gradeList.Rows) foreach (DataRow columnInfo in gradeList.Rows)
{ {
// 最高等的情况列放置于中间
if ("1".Equals(columnInfo["GRADE_ORDER"].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()));
@ -129,6 +164,7 @@ public class LevelConfigVM : BaseViewModel
//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(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() ?? "")); this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", columnInfo["GRADE_EN_NAME"].ToString() ?? ""));
} }
// 最高等级以外情况的列放置于两侧
else 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.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle });
@ -141,15 +177,18 @@ public class LevelConfigVM : BaseViewModel
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX" + "_" + 1)); columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX" + "_" + 1));
} }
} }
// 在最左侧放置测试项目列
columns.Insert(0, new DataColumn("title")); columns.Insert(0, new DataColumn("title"));
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle }); this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle });
StandardList.Columns.AddRange(columns.ToArray()); StandardList.Columns.AddRange(columns.ToArray());
// 以标准名分组表示每一行
if (standardList != null) if (standardList != null)
{ {
// 以规则id分组(国标时会有多中规则id的情况)
var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString()); var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString());
foreach (var ruleStandardList in standardRules) foreach (var ruleStandardList in standardRules)
{ {
// 以测试项目名分组表示每一行
var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString()); var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString());
foreach (var standard in standards) foreach (var standard in standards)
{ {
@ -159,6 +198,7 @@ public class LevelConfigVM : BaseViewModel
// 每一行单元格内数据 // 每一行单元格内数据
var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault(); var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault();
string value = ""; string value = "";
// 国标时有空场合,为空时做以下处理
if (row == null) if (row == null)
{ {
if ("1".Equals(columnInfo["GRADE_ORDER"].ToString())) if ("1".Equals(columnInfo["GRADE_ORDER"].ToString()))
@ -175,10 +215,14 @@ public class LevelConfigVM : BaseViewModel
} }
continue; continue;
} }
// 把获取的数据按照定级排序放置与单元格中
// 最高等级放中间,其他的依次往两侧排列
// 最高等级
if ("1".Equals(row["GRADE_ORDER"].ToString())) if ("1".Equals(row["GRADE_ORDER"].ToString()))
{ {
string Min = row["STANDARD_MIN"].ToString(); string Min = row["STANDARD_MIN"].ToString();
string Max = row["STANDARD_MAX"].ToString(); string Max = row["STANDARD_MAX"].ToString();
// 最大值并且最小值不为空时 以最小值-最大值显示
if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max)) if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max))
{ {
value = getFix(row, "MIN_PREFIX") + value = getFix(row, "MIN_PREFIX") +
@ -187,6 +231,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX") + getFix(row, "MIN_SUFFIX")
; ;
} }
// 最小值不为空,最大值为空时 显示最小值
else if (!string.IsNullOrEmpty(Min)) else if (!string.IsNullOrEmpty(Min))
{ {
value = getFix(row, "MIN_PREFIX") + value = getFix(row, "MIN_PREFIX") +
@ -194,6 +239,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX") + getFix(row, "MIN_SUFFIX")
; ;
} }
// 最大值不为空,最小值为空时 显示最大值
else if (!string.IsNullOrEmpty(Max)) else if (!string.IsNullOrEmpty(Max))
{ {
value = getFix(row, "MIN_PREFIX") + value = getFix(row, "MIN_PREFIX") +
@ -201,7 +247,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX") + getFix(row, "MIN_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)
@ -213,6 +259,7 @@ public class LevelConfigVM : BaseViewModel
rowInfo.Add(""); rowInfo.Add("");
} }
} }
// 其他等级 依次放两边
else else
{ {
// 每一行单元格内数据 // 每一行单元格内数据
@ -290,6 +337,8 @@ public class LevelConfigVM : BaseViewModel
if (ruleId != null && !string.IsNullOrEmpty(ruleId)) if (ruleId != null && !string.IsNullOrEmpty(ruleId))
{ {
string ta = ruleId.Substring(ruleId.Length - 2); string ta = ruleId.Substring(ruleId.Length - 2);
// 国标场合 按照规则id中涵盖信息不同 对测试项目有不同描述
if (ruleId.StartsWith("GB")) if (ruleId.StartsWith("GB"))
{ {
if ("49".Equals(ta)) if ("49".Equals(ta))
@ -321,6 +370,13 @@ public class LevelConfigVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex); Logger.Error($"全局异常捕获:{ex.Message}", ex);
} }
} }
/// <summary>
/// 设置单元格内部元素(现在单元格内部元素为两个textblock)
/// </summary>
/// <param name="Header"></param>
/// <param name="Binding"></param>
/// <param name="lineCount"></param>
/// <returns></returns>
private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2) private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2)
{ {
//Style cellStyle = new Style(typeof(TextBlock)); //Style cellStyle = new Style(typeof(TextBlock));
@ -463,7 +519,7 @@ public class LevelConfigVM : BaseViewModel
catch (Exception ex) { catch (Exception ex) {
DataBaseHelper.rollback(); DataBaseHelper.rollback();
Logger.Error($"全局异常捕获:{ex.Message}", ex); Logger.Error($"全局异常捕获:{ex.Message}", ex);
Growl.Error(save_fail_message); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
} }
} }
/// <summary> /// <summary>
@ -483,9 +539,7 @@ public class LevelConfigVM : BaseViewModel
{ {
try try
{ {
InstitutesEnabled = false;
ShapesEnabled = false;
IsUpdateButtonEnabled = true;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*"; openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
jsonEntity = null; jsonEntity = null;
@ -495,8 +549,17 @@ public class LevelConfigVM : BaseViewModel
string content = ""; string content = "";
if (File.Exists(filename)) if (File.Exists(filename))
{ {
content = AESHelper.DecryptFile(filename, "000000"); try
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content); {
content = AESHelper.DecryptFile(filename, "000000");
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("LevelConfigFormatError")}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
return;
}
} }
} }
else else
@ -549,6 +612,17 @@ public class LevelConfigVM : BaseViewModel
string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos); string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos);
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson); DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos); setStandardList(gradeInfos, standardInfos);
InstitutesEnabled = false;
ShapesEnabled = false;
IsUpdateButtonEnabled = true;
}
else
{
new MessageBox().Show($"{MultilingualHelper.getString("LevelConfigFormatError")}");
InstitutesEnabled = true;
ShapesEnabled = true;
IsUpdateButtonEnabled = false;
return;
} }
} }
catch (Exception ex) catch (Exception ex)

@ -1,11 +1,15 @@
using log4net;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.BaseWindow; using SparkClient.ViewModel.BaseWindow;
using SparkClient.ViewModel.Configuration.SettingsPages; using SparkClient.ViewModel.Configuration.SettingsPages;
using System.Windows.Input; using System.Windows.Input;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Configuration; namespace SparkClient.ViewModel.Configuration;
public class SettingBaseVM : BaseViewModel public class SettingBaseVM : BaseViewModel
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(SettingBaseVM));
public SettingsVM CustomSetContent { get; } public SettingsVM CustomSetContent { get; }
public ModelColorSetPageVM ModelColorSetContent { get; } public ModelColorSetPageVM ModelColorSetContent { get; }
@ -13,17 +17,33 @@ public class SettingBaseVM : BaseViewModel
public SettingBaseVM() public SettingBaseVM()
{ {
CustomSetContent = new SettingsVM(); try
ModelColorSetContent = new ModelColorSetPageVM(); {
SaveCommand = new RelayCommand(Save); CustomSetContent = new SettingsVM();
ModelColorSetContent = new ModelColorSetPageVM();
SaveCommand = new RelayCommand(Save);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
} }
public void Save(object param) public void Save(object param)
{ {
if(CustomSetContent.SaveUpdate(param)&& try
ModelColorSetContent.SaveUpdate(param)) {
if (CustomSetContent.SaveUpdate(param)&&
ModelColorSetContent.SaveUpdate(param))
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
}
}
catch (Exception ex)
{ {
WindowManager.mainViewModel.Content = WindowManager.PreviousVM(); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
} }
} }
} }

@ -11,6 +11,9 @@ using System.Windows.Input;
namespace SparkClient.ViewModel.Dialog namespace SparkClient.ViewModel.Dialog
{ {
/// <summary>
/// 开始检测dialog 已作废
/// </summary>
internal class StartDialogVM : BaseViewModel internal class StartDialogVM : BaseViewModel
{ {
public ICommand SkipCommand { get; } public ICommand SkipCommand { get; }

@ -24,6 +24,9 @@ using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Grading; namespace SparkClient.ViewModel.Grading;
/// <summary>
/// 钻石选择画面VM
/// </summary>
public class DiamondSelectVM : BaseViewModel public class DiamondSelectVM : BaseViewModel
{ {
@ -68,8 +71,13 @@ public class DiamondSelectVM : BaseViewModel
Buttons = tempButtons; Buttons = tempButtons;
} }
/// <summary>
/// 画面按钮添加
/// </summary>
/// <returns></returns>
private List<ButtonInfo> GetButtonInfos() private List<ButtonInfo> GetButtonInfos()
{ {
List<ButtonInfo> buttonInfos = new List<ButtonInfo>(); List<ButtonInfo> buttonInfos = new List<ButtonInfo>();
buttonInfos.Add(new ButtonInfo() { Type = "round", IsEnabled = true, ImageName = "round.png", ButtonName = MultilingualHelper.getString("圆形") }); buttonInfos.Add(new ButtonInfo() { Type = "round", IsEnabled = true, ImageName = "round.png", ButtonName = MultilingualHelper.getString("圆形") });
buttonInfos.Add(new ButtonInfo() { Type = "Hexagon", IsEnabled = false, ImageName = "Hexagon.png", ButtonName = MultilingualHelper.getString("六边形") }); buttonInfos.Add(new ButtonInfo() { Type = "Hexagon", IsEnabled = false, ImageName = "Hexagon.png", ButtonName = MultilingualHelper.getString("六边形") });

@ -25,10 +25,15 @@ using log4net;
using SparkClient.ViewModel.Configuration; using SparkClient.ViewModel.Configuration;
namespace SparkClient.ViewModel.Grading; namespace SparkClient.ViewModel.Grading;
/// <summary>
/// 检测结果画面VM
/// </summary>
public class GradingResultVM : BaseViewModel public class GradingResultVM : BaseViewModel
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM)); private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM));
/// <summary>
/// 钻石编码
/// </summary>
private string DiamondCode { get; set; } private string DiamondCode { get; set; }
private List<DataInfo> _dtResults; private List<DataInfo> _dtResults;
// ViewportData // ViewportData
@ -46,23 +51,68 @@ public class GradingResultVM : BaseViewModel
private string _ds; private string _ds;
private RowDetail _selRowDataDetail; private RowDetail _selRowDataDetail;
private bool _isEnabled; private bool _isEnabled;
/// <summary>
/// 保存按钮状态
/// </summary>
public bool isSaved = false; public bool isSaved = false;
public ICommand SaveFileCommand { get; } public ICommand SaveFileCommand { get; }
public ICommand SaveAsCommand { get; } public ICommand SaveAsCommand { get; }
/// <summary>
/// 左侧计算结果展示数据
/// </summary>
public List<DataInfo> DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } } public List<DataInfo> DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } }
/// <summary>
/// 右侧钻石3D模型展示控件
/// </summary>
public ViewportData ViewportData { get { return _viewportData; } set { _viewportData = value; OnPropertyChanged(nameof(ViewportData)); } } public ViewportData ViewportData { get { return _viewportData; } set { _viewportData = value; OnPropertyChanged(nameof(ViewportData)); } }
/// <summary>
/// 画面上方定级标准
/// </summary>
public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } } public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } }
/// <summary>
/// 形状
/// </summary>
public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } } public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } }
/// <summary>
/// 冠面类型
/// </summary>
public string CrownType { get { return _crownType; } set { _crownType = value; OnPropertyChanged(nameof(CrownType)); } } public string CrownType { get { return _crownType; } set { _crownType = value; OnPropertyChanged(nameof(CrownType)); } }
/// <summary>
/// 亭面类型
/// </summary>
public string PavType { get { return _pavType; } set { _pavType = value; OnPropertyChanged(nameof(PavType)); } } public string PavType { get { return _pavType; } set { _pavType = value; OnPropertyChanged(nameof(PavType)); } }
/// <summary>
/// 画面明细展示数据
/// </summary>
public RowDetail SelRowDataDetail { get { return _selRowDataDetail; } set { _selRowDataDetail = value; OnPropertyChanged(nameof(SelRowDataDetail)); } } public RowDetail SelRowDataDetail { get { return _selRowDataDetail; } set { _selRowDataDetail = value; OnPropertyChanged(nameof(SelRowDataDetail)); } }
/// <summary>
/// 重量
/// </summary>
public string Wight { get { return _wight; } set { _wight = value; OnPropertyChanged(nameof(Wight)); } } public string Wight { get { return _wight; } set { _wight = value; OnPropertyChanged(nameof(Wight)); } }
/// <summary>
/// 切工等级(整体 画面上部显示)
/// </summary>
public string CutLevelTotal { get { return _cutLevelTotal; } set { _cutLevelTotal = value; OnPropertyChanged(nameof(CutLevelTotal)); } } public string CutLevelTotal { get { return _cutLevelTotal; } set { _cutLevelTotal = value; OnPropertyChanged(nameof(CutLevelTotal)); } }
/// <summary>
/// 对称性等级(整体 画面上部显示)
/// </summary>
public string SymLevelTotal { get { return _symLevelTotal; } set { _symLevelTotal = value; OnPropertyChanged(nameof(SymLevelTotal)); } } public string SymLevelTotal { get { return _symLevelTotal; } set { _symLevelTotal = value; OnPropertyChanged(nameof(SymLevelTotal)); } }
/// <summary>
/// 下拉列表DS
/// </summary>
public DataTable DSList { get { return _dsList; } set { _dsList = value; OnPropertyChanged(nameof(DSList)); } } public DataTable DSList { get { return _dsList; } set { _dsList = value; OnPropertyChanged(nameof(DSList)); } }
/// <summary>
/// 下拉列表DS 选择的值
/// </summary>
public string DS { get { return _ds; } set { _ds = value; OnPropertyChanged(nameof(DS)); } } public string DS { get { return _ds; } set { _ds = value; OnPropertyChanged(nameof(DS)); } }
/// <summary>
/// 定级下拉列表
/// </summary>
public DataTable GradeList { get { return _gradeList; } set { _gradeList = value; OnPropertyChanged(nameof(GradeList)); } } public DataTable GradeList { get { return _gradeList; } set { _gradeList = value; OnPropertyChanged(nameof(GradeList)); } }
/// <summary>
/// 活性
/// </summary>
public bool IsEnabled { get{ return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } } public bool IsEnabled { get{ return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } }
private readonly static string digitsFormat = "f1"; private readonly static string digitsFormat = "f1";

@ -170,7 +170,7 @@
<!-- </DataGrid.RowStyle> --> <!-- </DataGrid.RowStyle> -->
<!-- </DataGrid> --> <!-- </DataGrid> -->
<DataGrid Style="{StaticResource CustomDataGridStyle}" <DataGrid Style="{StaticResource CustomDataGridStyle}"
ItemsSource="{Binding StandardList}" x:Name="DataGrid1" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False"> ItemsSource="{Binding StandardList}" x:Name="DataGrid1" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False">
<!-- 自定义列示例(AutoGenerateColumns=false 时需要手动定义) --> <!-- 自定义列示例(AutoGenerateColumns=false 时需要手动定义) -->
<!-- <DataGrid.Columns> --> <!-- <DataGrid.Columns> -->
<!-- <DataGridTextColumn Header="列一" Binding="{Binding Prop1}" /> --> <!-- <DataGridTextColumn Header="列一" Binding="{Binding Prop1}" /> -->

Loading…
Cancel
Save