对称等级修改

master
sunhonglei 4 months ago
parent 2028e9fccb
commit a4dbfe8216
  1. 172
      Model/Entity/JsonEntity.cs
  2. 72
      Model/Entity/JsonEntity_SYM.cs
  3. BIN
      SparkDB.db
  4. 89
      ViewModel/Configuration/LevelConfigVM.cs
  5. 113
      ViewModel/Grading/GradingResultVM.cs

@ -18,19 +18,37 @@ namespace EncryptFileTool.Entity
{ {
public string SHAPE_ID { get; set; } public string SHAPE_ID { get; set; }
public string SHAPE_NAME { get; set; } public string SHAPE_NAME { get; set; }
public string SHAPE_EN_NAME { get; set; } public string SHAPE_EN_NAME { get; set; }
public string RULE_ID { get; set; } public string RULE_ID { get; set; }
public string RULE_NAME { get; set; } public string RULE_NAME { get; set; }
public string RULE_EN_NAME { get; set; } public string RULE_EN_NAME { get; set; }
public List<GradeInfo> gradeInfos { get; set; } = new List<GradeInfo>(); public List<GradeInfo> gradeInfos { get; set; } = new List<GradeInfo>();
public List<StandardInfo> standardInfos { get; set; } = new List<StandardInfo>(); public List<StandardInfo> standardInfos { get; set; } = new List<StandardInfo>();
public List<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo>(); public virtual IEnumerable<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo>();
public List<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail>(); public virtual IEnumerable<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail>();
public List<GradeConfigParameter> GradeConfigParameters { get; set; } = new List<GradeConfigParameter>(); public virtual IEnumerable<GradeConfigParameter> GradeConfigParameters { get; set; } = new List<GradeConfigParameter>();
// 辅助方法:生成插入 SQL 语句
internal static string GenerateInsertSql(string tableName, string[] columns, string[] values)
{
var columnList = string.Join(",", columns);
var valueList = string.Join(",", values.Select(v => $"'{EscapeSql(v)}'"));
return $"INSERT INTO {tableName}({columnList}) VALUES({valueList});";
}
// 辅助方法:生成删除 SQL 语句
internal static string GenerateDeleteSql(string tableName, string condition)
{
return $"DELETE FROM {tableName} WHERE {condition};";
}
// 辅助方法:转义 SQL 特殊字符
internal static string EscapeSql(string input)
{
return input?.Replace("'", "''") ?? null;
}
} }
public class GradeInfo public class GradeInfo
{ {
public string SHAPE_ID { get; set; } public string SHAPE_ID { get; set; }
@ -41,38 +59,20 @@ namespace EncryptFileTool.Entity
public string GRADE_EN_S_NAME { get; set; } public string GRADE_EN_S_NAME { get; set; }
public int GRADE_ORDER { get; set; } public int GRADE_ORDER { get; set; }
public string getInsertSql() // 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{ {
string insertSql = "INSERT INTO GRADE("; return JsonEntity.GenerateInsertSql("GRADE", new[] { "SHAPE_ID", "RULE_ID", "GRADE_ID", "GRADE_NAME", "GRADE_EN_NAME", "GRADE_EN_S_NAME", "GRADE_ORDER", "GUID" },
insertSql = insertSql + new[] { SHAPE_ID, RULE_ID, GRADE_ID, GRADE_NAME, GRADE_EN_NAME, GRADE_EN_S_NAME, GRADE_ORDER.ToString(), Guid.NewGuid().ToString() });
"SHAPE_ID" +
",RULE_ID" +
",GRADE_ID" +
",GRADE_NAME" +
",GRADE_EN_NAME" +
",GRADE_EN_S_NAME" +
",GRADE_ORDER" +
",GUID";
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{SHAPE_ID}'" +
$",'{RULE_ID}'" +
$",'{GRADE_ID}'" +
$",'{GRADE_NAME}'" +
$",'{GRADE_EN_NAME}'" +
$",'{GRADE_EN_S_NAME}'" +
$",'{GRADE_ORDER}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
} }
public string getDeleteSql()
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql()
{ {
string deleteSql = $"DELETE FROM GRADE WHERE SHAPE_ID='{SHAPE_ID}' AND RULE_ID='{RULE_ID}';"; return JsonEntity.GenerateDeleteSql("GRADE", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
return deleteSql;
} }
} }
public class StandardInfo public class StandardInfo
{ {
public string RULE_ID { get; set; } = ""; public string RULE_ID { get; set; } = "";
@ -81,7 +81,7 @@ namespace EncryptFileTool.Entity
public string TEST_ITEM_ID { get; set; } public string TEST_ITEM_ID { get; set; }
public string STANDARD_ID { get; set; } public string STANDARD_ID { get; set; }
public string STANDARD_NAME { get; set; } public string STANDARD_NAME { get; set; }
public string STANDARD_EN_NAME { get{ return getStandEnName(); } set { } } public string STANDARD_EN_NAME { get { return getStandEnName(); } set { } }
public string STANDARD_MIN { get; set; } public string STANDARD_MIN { get; set; }
public string STANDARD_MAX { get; set; } public string STANDARD_MAX { get; set; }
public string IS_MIN_EXIST { get; set; } = "0"; public string IS_MIN_EXIST { get; set; } = "0";
@ -94,12 +94,13 @@ namespace EncryptFileTool.Entity
public string MIN_NULL_REPALCE { get; set; } = "←"; public string MIN_NULL_REPALCE { get; set; } = "←";
public string MAX_NULL_REPALCE { get; set; } = "→"; public string MAX_NULL_REPALCE { get; set; } = "→";
public int SORT { get; set; } public int SORT { get; set; }
private string getStandEnName() private string getStandEnName()
{ {
return Name.getNameById(TEST_ITEM_ID).Trim(); return Name.getNameById(TEST_ITEM_ID).Trim();
} }
} }
public class GradeConfigInfo public class GradeConfigInfo
{ {
public string GRADE_CONFIG_ID { get; set; } public string GRADE_CONFIG_ID { get; set; }
@ -107,64 +108,41 @@ namespace EncryptFileTool.Entity
public string RULE_ID { get; set; } public string RULE_ID { get; set; }
public string TEST_ITEM_ID { get; set; } public string TEST_ITEM_ID { get; set; }
public int GRADE_CONFIG_ORDER { get; set; } public int GRADE_CONFIG_ORDER { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{ {
string insertSql = "INSERT INTO GRADE_CONFIG("; return JsonEntity.GenerateInsertSql("GRADE_CONFIG", new[] { "GRADE_CONFIG_ID", "SHAPE_ID", "RULE_ID", "TEST_ITEM_ID", "GRADE_CONFIG_ORDER", "GUID" },
insertSql = insertSql + new[] { GRADE_CONFIG_ID, SHAPE_ID, RULE_ID, TEST_ITEM_ID, GRADE_CONFIG_ORDER.ToString(), Guid.NewGuid().ToString() });
"GRADE_CONFIG_ID" +
",SHAPE_ID" +
",RULE_ID" +
",TEST_ITEM_ID" +
",GRADE_CONFIG_ORDER" +
",GUID";
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{GRADE_CONFIG_ID}'" +
$",'{SHAPE_ID}'" +
$",'{RULE_ID}'" +
$",'{TEST_ITEM_ID}'" +
$",'{GRADE_CONFIG_ORDER}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
} }
public string getDeleteSql()
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql()
{ {
string deleteSql = $"DELETE FROM GRADE_CONFIG WHERE SHAPE_ID='{SHAPE_ID}' AND RULE_ID='{RULE_ID}';"; return JsonEntity.GenerateDeleteSql("GRADE_CONFIG", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
return deleteSql;
} }
} }
public class GradeConfigDetail public class GradeConfigDetail
{ {
public string GRADE_CONFIG_ID { get; set; } public string GRADE_CONFIG_ID { get; set; }
public int GRADE_CONFIG_DETAIL_ID { get; set; } public int GRADE_CONFIG_DETAIL_ID { get; set; }
public string GRADE_ID { get; set; } public string GRADE_ID { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{ {
string insertSql = "INSERT INTO GRADE_CONFIG_DETAIL("; return JsonEntity.GenerateInsertSql("GRADE_CONFIG_DETAIL", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "GRADE_ID", "GUID" },
insertSql = insertSql + new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), GRADE_ID, Guid.NewGuid().ToString() });
"GRADE_CONFIG_ID" +
",GRADE_CONFIG_DETAIL_ID" +
",GRADE_ID" +
",GUID";
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{GRADE_CONFIG_ID}'" +
$",'{GRADE_CONFIG_DETAIL_ID}'" +
$",'{GRADE_ID}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
} }
public string getDeleteSql(string shapeId,string ruleId)
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql(string shapeId, string ruleId)
{ {
string deleteSql = $"DELETE FROM GRADE_CONFIG_DETAIL WHERE GRADE_CONFIG_ID LIKE '{shapeId+ruleId}%';"; return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
return deleteSql;
} }
} }
public class GradeConfigParameter public class GradeConfigParameter
{ {
public string GRADE_CONFIG_ID { get; set; } public string GRADE_CONFIG_ID { get; set; }
@ -172,32 +150,18 @@ namespace EncryptFileTool.Entity
public string PARAMETER_KEY { get; set; } public string PARAMETER_KEY { get; set; }
public string PARAMETER_VALUE { get; set; } public string PARAMETER_VALUE { get; set; }
public string PARAMETER_TYPE { get; set; } public string PARAMETER_TYPE { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{ {
string insertSql = "INSERT INTO GRADE_CONFIG_DETAIL_PARAMETER("; return JsonEntity.GenerateInsertSql("GRADE_CONFIG_DETAIL_PARAMETER", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "PARAMETER_KEY", "PARAMETER_VALUE", "PARAMETER_TYPE", "GUID" },
insertSql = insertSql + new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), PARAMETER_KEY, PARAMETER_VALUE, PARAMETER_TYPE, Guid.NewGuid().ToString() });
"GRADE_CONFIG_ID" +
",GRADE_CONFIG_DETAIL_ID" +
",PARAMETER_KEY" +
",PARAMETER_VALUE" +
",PARAMETER_TYPE" +
",GUID";
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{GRADE_CONFIG_ID}'" +
$",'{GRADE_CONFIG_DETAIL_ID}'" +
$",'{PARAMETER_KEY}'" +
$",'{PARAMETER_VALUE}'" +
$",'{PARAMETER_TYPE}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
} }
public string getDeleteSql(string shapeId, string ruleId)
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql(string shapeId, string ruleId)
{ {
string deleteSql = $"DELETE FROM GRADE_CONFIG_DETAIL_PARAMETER WHERE GRADE_CONFIG_ID LIKE '{shapeId + ruleId}%';"; return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL_PARAMETER", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
return deleteSql;
} }
} }
} }

@ -0,0 +1,72 @@
using SparkClient.ViewModel.Grading;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
using System.Windows.Shapes;
namespace EncryptFileTool.Entity
{
/// <summary>
/// 定级配置导入数据
/// </summary>
public class JsonEntity_SYM : JsonEntity
{
// 修改属性类型为基类类型
public override IEnumerable<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo_SYM>();
public override IEnumerable<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail_SYM>();
public override IEnumerable<GradeConfigParameter> GradeConfigParameters { get; set; } = new List<GradeConfigParameter_SYM>();
}
public class GradeConfigInfo_SYM : GradeConfigInfo
{
// 使用 override 关键字重写方法
public override string getInsertSql()
{
return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG", new[] { "GRADE_CONFIG_ID", "SHAPE_ID", "RULE_ID", "TEST_ITEM_ID", "GRADE_CONFIG_ORDER", "GUID" },
new[] { GRADE_CONFIG_ID, SHAPE_ID, RULE_ID, TEST_ITEM_ID, GRADE_CONFIG_ORDER.ToString(), Guid.NewGuid().ToString() });
}
// 使用 override 关键字重写方法
public override string getDeleteSql()
{
return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
}
}
public class GradeConfigDetail_SYM : GradeConfigDetail
{
// 使用 override 关键字重写方法
public override string getInsertSql()
{
return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG_DETAIL", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "GRADE_ID", "GUID" },
new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), GRADE_ID, Guid.NewGuid().ToString() });
}
// 使用 override 关键字重写方法
public override string getDeleteSql(string shapeId, string ruleId)
{
return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG_DETAIL", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
public class GradeConfigParameter_SYM : GradeConfigParameter
{
// 使用 override 关键字重写方法
public override string getInsertSql()
{
return JsonEntity.GenerateInsertSql("SYM_GRADE_CONFIG_DETAIL_PARAMETER", new[] { "GRADE_CONFIG_ID", "GRADE_CONFIG_DETAIL_ID", "PARAMETER_KEY", "PARAMETER_VALUE", "PARAMETER_TYPE", "GUID" },
new[] { GRADE_CONFIG_ID, GRADE_CONFIG_DETAIL_ID.ToString(), PARAMETER_KEY, PARAMETER_VALUE, PARAMETER_TYPE, Guid.NewGuid().ToString() });
}
// 使用 override 关键字重写方法
public override string getDeleteSql(string shapeId, string ruleId)
{
return JsonEntity.GenerateDeleteSql("SYM_GRADE_CONFIG_DETAIL_PARAMETER", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
}

Binary file not shown.

@ -75,6 +75,7 @@ public class LevelConfigVM : BaseViewModel
/// 导入文件数据 /// 导入文件数据
/// </summary> /// </summary>
JsonEntity jsonEntity = new JsonEntity(); JsonEntity jsonEntity = new JsonEntity();
JsonEntity_SYM jsonEntity_SYM = new JsonEntity_SYM();
private string Save_successful_message = MultilingualHelper.getString("Save_successful_message"); private string Save_successful_message = MultilingualHelper.getString("Save_successful_message");
private string save_fail_message = MultilingualHelper.getString("save_fail_message"); private string save_fail_message = MultilingualHelper.getString("save_fail_message");
@ -462,10 +463,21 @@ public class LevelConfigVM : BaseViewModel
[Log] [Log]
public void SaveLevelConfig(object param) public void SaveLevelConfig(object param)
{ {
try { JsonEntity initJsonEntity = new JsonEntity();
string shapeId = jsonEntity.SHAPE_ID; if (jsonEntity == null)
string ruleId = jsonEntity.RULE_ID; {
if (jsonEntity != null) initJsonEntity = jsonEntity_SYM;
}
else
{
initJsonEntity = jsonEntity;
}
try
{
string shapeId = initJsonEntity.SHAPE_ID;
string ruleId = initJsonEntity.RULE_ID;
if (initJsonEntity != null)
{ {
// 按照形状名查询形状数据,判断是否有该数据 // 按照形状名查询形状数据,判断是否有该数据
string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{shapeId}';"; string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{shapeId}';";
@ -476,21 +488,21 @@ public class LevelConfigVM : BaseViewModel
if (shapes == null || shapes.Rows.Count == 0) if (shapes == null || shapes.Rows.Count == 0)
{ {
// 数据登录 // 数据登录
string shapeInsertSql = $"INSERT INTO SHAPE (SHAPE_ID,SHAPE_NAME,SHAPE_EN_NAME,GUID)VALUES('{shapeId}','{jsonEntity.SHAPE_NAME}','{jsonEntity.SHAPE_EN_NAME}','{Guid.NewGuid().ToString()}');"; string shapeInsertSql = $"INSERT INTO SHAPE (SHAPE_ID,SHAPE_NAME,SHAPE_EN_NAME,GUID)VALUES('{shapeId}','{initJsonEntity.SHAPE_NAME}','{initJsonEntity.SHAPE_EN_NAME}','{Guid.NewGuid().ToString()}');";
DataBaseHelper.ExecuteNonQuery(shapeInsertSql); DataBaseHelper.ExecuteNonQuery(shapeInsertSql);
} }
string ruleSql = $"SELECT * FROM RULE WHERE RULE_ID = '{ruleId}';"; string ruleSql = $"SELECT * FROM RULE WHERE RULE_ID = '{ruleId}';";
DataTable rule = DataBaseHelper.ExecuteQuery(ruleSql); DataTable rule = DataBaseHelper.ExecuteQuery(ruleSql);
if (rule == null || rule.Rows.Count == 0) if (rule == null || rule.Rows.Count == 0)
{ {
string ruleInsertSql = $"INSERT INTO RULE (RULE_ID,RULE_NAME,RULE_EN_NAME,GUID)VALUES('{ruleId}','{jsonEntity.RULE_NAME}','{jsonEntity.RULE_EN_NAME}','{Guid.NewGuid().ToString()}');"; string ruleInsertSql = $"INSERT INTO RULE (RULE_ID,RULE_NAME,RULE_EN_NAME,GUID)VALUES('{ruleId}','{initJsonEntity.RULE_NAME}','{initJsonEntity.RULE_EN_NAME}','{Guid.NewGuid().ToString()}');";
DataBaseHelper.ExecuteNonQuery(ruleInsertSql); DataBaseHelper.ExecuteNonQuery(ruleInsertSql);
} }
// 定级数据登录 // 定级数据登录
string gradeInsSql = ""; string gradeInsSql = "";
foreach (var gradeInfo in jsonEntity.gradeInfos) foreach (var gradeInfo in initJsonEntity.gradeInfos)
{ {
if (gradeInsSql.Length == 0) if (gradeInsSql.Length == 0)
{ {
@ -499,7 +511,7 @@ public class LevelConfigVM : BaseViewModel
gradeInsSql += gradeInfo.getInsertSql(); gradeInsSql += gradeInfo.getInsertSql();
} }
int count = DataBaseHelper.ExecuteNonQuery(gradeInsSql); int count = DataBaseHelper.ExecuteNonQuery(gradeInsSql);
if (count<0) if (count < 0)
{ {
DataBaseHelper.rollback(); DataBaseHelper.rollback();
Growl.Error(save_fail_message); Growl.Error(save_fail_message);
@ -508,7 +520,7 @@ public class LevelConfigVM : BaseViewModel
// 标准数据登录 // 标准数据登录
string gradeConfigSql = ""; string gradeConfigSql = "";
int index = 0; int index = 0;
foreach (var gradeConfig in jsonEntity.GradeConfigs) foreach (var gradeConfig in initJsonEntity.GradeConfigs)
{ {
if (index == 0) if (index == 0)
{ {
@ -518,17 +530,17 @@ public class LevelConfigVM : BaseViewModel
index++; index++;
} }
index = 0; index = 0;
foreach (var gradeConfigDetail in jsonEntity.GradeConfigDetails) foreach (var gradeConfigDetail in initJsonEntity.GradeConfigDetails)
{ {
if (index == 0) if (index == 0)
{ {
gradeConfigSql += gradeConfigDetail.getDeleteSql(shapeId,ruleId); gradeConfigSql += gradeConfigDetail.getDeleteSql(shapeId, ruleId);
} }
gradeConfigSql += gradeConfigDetail.getInsertSql(); gradeConfigSql += gradeConfigDetail.getInsertSql();
index++; index++;
} }
index = 0; index = 0;
foreach (var gradeConfigParameter in jsonEntity.GradeConfigParameters) foreach (var gradeConfigParameter in initJsonEntity.GradeConfigParameters)
{ {
if (index == 0) if (index == 0)
{ {
@ -555,7 +567,8 @@ public class LevelConfigVM : BaseViewModel
Growl.ErrorGlobal(no_data_message); Growl.ErrorGlobal(no_data_message);
} }
} }
catch (Exception ex) { catch (Exception ex)
{
DataBaseHelper.rollback(); DataBaseHelper.rollback();
Logger.Error($"全局异常捕获:{ex.Message}", ex); Logger.Error($"全局异常捕获:{ex.Message}", ex);
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}"); new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
@ -584,6 +597,7 @@ public class LevelConfigVM : BaseViewModel
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;
jsonEntity_SYM = null;
if (openFileDialog.ShowDialog() == true) if (openFileDialog.ShowDialog() == true)
{ {
string filename = openFileDialog.FileName; string filename = openFileDialog.FileName;
@ -593,7 +607,15 @@ public class LevelConfigVM : BaseViewModel
try try
{ {
content = AESHelper.DecryptFile(filename, "000000"); content = AESHelper.DecryptFile(filename, "000000");
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content); if (filename.EndsWith("_SYM.enc"))
{
jsonEntity_SYM = JsonConvert.DeserializeObject<JsonEntity_SYM>(content);
}
else
{
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content);
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -612,19 +634,28 @@ public class LevelConfigVM : BaseViewModel
//ChangeShapeModel(""); //ChangeShapeModel("");
return; return;
} }
if (jsonEntity != null) var initJsonEntity = new JsonEntity();
if (jsonEntity != null) {
initJsonEntity = jsonEntity;
}
else
{
initJsonEntity = jsonEntity_SYM;
}
if (initJsonEntity != null)
{ {
// 形状列表重新生成 // 形状列表重新生成
string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{jsonEntity.SHAPE_ID}';"; string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_ID = '{initJsonEntity.SHAPE_ID}';";
DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql); DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql);
if (shapes == null || shapes.Rows.Count == 0) if (shapes == null || shapes.Rows.Count == 0)
{ {
var row = Shapes.NewRow(); var row = Shapes.NewRow();
row["SHAPE_ID"] = jsonEntity.SHAPE_ID; row["SHAPE_ID"] = initJsonEntity.SHAPE_ID;
row["SHAPE_NAME"] = jsonEntity.SHAPE_NAME; row["SHAPE_NAME"] = initJsonEntity.SHAPE_NAME;
row["SHAPE_EN_NAME"] = jsonEntity.SHAPE_EN_NAME; row["SHAPE_EN_NAME"] = initJsonEntity.SHAPE_EN_NAME;
Shapes.Rows.Add(row); Shapes.Rows.Add(row);
ShapeId = jsonEntity.SHAPE_ID; ShapeId = initJsonEntity.SHAPE_ID;
} }
else else
{ {
@ -632,25 +663,25 @@ public class LevelConfigVM : BaseViewModel
} }
// 机构列表重新生成 // 机构列表重新生成
string instituteSql = $"SELECT * FROM RULE WHERE RULE_ID = '{jsonEntity.RULE_ID}';"; string instituteSql = $"SELECT * FROM RULE WHERE RULE_ID = '{initJsonEntity.RULE_ID}';";
DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql); DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql);
if (institute == null || institute.Rows.Count == 0) if (institute == null || institute.Rows.Count == 0)
{ {
var row = Institutes.NewRow(); var row = Institutes.NewRow();
row["RULE_ID"] = jsonEntity.RULE_ID; row["RULE_ID"] = initJsonEntity.RULE_ID;
row["RULE_NAME"] = jsonEntity.RULE_NAME; row["RULE_NAME"] = initJsonEntity.RULE_NAME;
row["RULE_EN_NAME"] = jsonEntity.RULE_EN_NAME; row["RULE_EN_NAME"] = initJsonEntity.RULE_EN_NAME;
Institutes.Rows.Add(row); Institutes.Rows.Add(row);
InstituteId = jsonEntity.RULE_ID; InstituteId = initJsonEntity.RULE_ID;
} }
else else
{ {
InstituteId = institute.Rows[0]["RULE_ID"].ToString() ?? ""; InstituteId = institute.Rows[0]["RULE_ID"].ToString() ?? "";
} }
// 表格内容重新生成 // 表格内容重新生成
string gradeInfosJson = JsonConvert.SerializeObject(jsonEntity.gradeInfos); string gradeInfosJson = JsonConvert.SerializeObject(initJsonEntity.gradeInfos);
DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson); DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson);
string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos); string standardInfosJson = JsonConvert.SerializeObject(initJsonEntity.standardInfos);
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson); DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos); setStandardList(gradeInfos, standardInfos);
InstitutesEnabled = false; InstitutesEnabled = false;

@ -425,14 +425,91 @@ public class GradingResultVM : BaseViewModel
List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql); List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql);
return calGrades; return calGrades;
} }
private List<CalGradeInfo> GetCalGradeInfos_SYM(string item)
{
string ruleIdForSelect = getActualRuleId();
string sql = $"Select GRADE_ORDER as gradeOrder,CAST(STANDARD_MIN AS NUMERIC) Min, CAST(STANDARD_MAX AS NUMERIC) Max,IS_MAX_EXIST as isMaxExist,IS_MIN_EXIST as isMinExist from SYM_STANDARD where TEST_ITEM_ID = '{item}' AND SHAPE_ID = UPPER('{shapeId}') AND RULE_ID = '{ruleIdForSelect}' ";
List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql);
return calGrades;
}
[Log] [Log]
private int calGrade(string item ,double value) private int calGradeSym(string item, double value)
{ {
int order = 1; int order = 1;
try try
{ {
decimal cValue = Convert.ToDecimal(value); decimal cValue = Convert.ToDecimal(value);
List<CalGradeInfo> calGrades = GetCalGradeInfos(item); List<CalGradeInfo> calGrades = GetCalGradeInfos_SYM(item);
if (calGrades == null || calGrades.Count == 0)
{
return 0;
}
foreach (CalGradeInfo gradeInfo in calGrades)
{
bool isThisGrade = true;
if (gradeInfo.Max != null)
{
if (gradeInfo.isMaxExist == 1 && cValue.CompareTo(gradeInfo.Max) <= 0)
{
}
else if (gradeInfo.isMaxExist == 0 && cValue.CompareTo(gradeInfo.Max) < 0)
{
}
else
{
isThisGrade = false;
}
}
if (gradeInfo.Min != null)
{
if (gradeInfo.isMinExist == 1 && cValue.CompareTo(gradeInfo.Min) >= 0)
{
}
else if (gradeInfo.isMinExist == 0 && cValue.CompareTo(gradeInfo.Min) > 0)
{
}
else
{
isThisGrade = false;
}
}
if (isThisGrade)
{
order = gradeInfo.gradeOrder;
break;
}
else
{
order = gradeInfo.gradeOrder;
}
}
totalSymGrade = Math.Max(order, totalSymGrade);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
return order;
}
[Log]
private int calGrade(string item ,double value,bool isCut=true)
{
int order = 1;
try
{
decimal cValue = Convert.ToDecimal(value);
List<CalGradeInfo> calGrades = new();
if (isCut)
{
calGrades = GetCalGradeInfos(item);
}
else
{
calGrades = GetCalGradeInfos_SYM(item);
}
if (calGrades == null || calGrades.Count == 0) if (calGrades == null || calGrades.Count == 0)
{ {
return 0; return 0;
@ -591,7 +668,15 @@ public class GradingResultVM : BaseViewModel
decimal.TryParse(min, out Min); decimal.TryParse(min, out Min);
return (Max-Min).ToString(); return (Max-Min).ToString();
} }
private double calSymValue(double Min, double Max, double Avg,bool isPercentage = true)
{
int c = 100;
if (isPercentage)
{
c = 10000;
}
return (Max - Min) / Avg * c;
}
[Log] [Log]
private DataInfo getDIAMETER(AlgorithmResultEntity result) private DataInfo getDIAMETER(AlgorithmResultEntity result)
{ {
@ -603,6 +688,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_D(result.measurements.M1); info.Min = FormatDouble_D(result.measurements.M1);
info.Max = FormatDouble_D(result.measurements.M2); info.Max = FormatDouble_D(result.measurements.M2);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym("DIAMETER", calSymValue(data.M1, data.M2, data.DIAMETER,false));
return info; return info;
} }
[Log] [Log]
@ -643,6 +730,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_A(result.measurements.CROWN_ANGLE_MAX); info.Max = FormatDouble_A(result.measurements.CROWN_ANGLE_MAX);
info.CutLevel = calGrade_CROWN_ANGLE(result.measurements.CROWN_ANGLE_MIN, result.measurements.CROWN_ANGLE_MAX); info.CutLevel = calGrade_CROWN_ANGLE(result.measurements.CROWN_ANGLE_MIN, result.measurements.CROWN_ANGLE_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.CROWN_ANGLE_MIN, data.CROWN_ANGLE_MAX, data.CROWN_ANGLE,false));
return info; return info;
} }
@ -658,6 +747,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_P(result.measurements.CROWN_H_MAX); info.Max = FormatDouble_P(result.measurements.CROWN_H_MAX);
info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN, result.measurements.CROWN_H_MAX); info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN, result.measurements.CROWN_H_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.CROWN_H_MIN, data.CROWN_H_MAX, data.CROWN_HEIGHT));
return info; return info;
} }
@ -672,6 +763,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MIN); info.Min = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MIN);
info.Max = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MAX); info.Max = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.GIRDLE_BEZEL_MIN, data.GIRDLE_BEZEL_MAX, data.GIRDLE_BEZEL));
return info; return info;
} }
@ -700,6 +793,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_P(result.measurements.GIRDLE_VALLEY_MAX); info.Max = FormatDouble_P(result.measurements.GIRDLE_VALLEY_MAX);
info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_VALLEY_MIN, result.measurements.GIRDLE_VALLEY_MAX); info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_VALLEY_MIN, result.measurements.GIRDLE_VALLEY_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.GIRDLE_VALLEY_MIN, data.GIRDLE_VALLEY_MAX, data.GIRDLE_VALLEY));
return info; return info;
} }
@ -715,6 +810,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_A(result.measurements.PAV_ANGLE_MAX); info.Max = FormatDouble_A(result.measurements.PAV_ANGLE_MAX);
info.CutLevel = calGrade_PAV_ANGLE(result.measurements.PAV_ANGLE_MIN, result.measurements.PAV_ANGLE_MAX); info.CutLevel = calGrade_PAV_ANGLE(result.measurements.PAV_ANGLE_MIN, result.measurements.PAV_ANGLE_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.PAV_ANGLE_MIN, data.PAV_ANGLE_MAX, data.PAV_ANGLE, false));
return info; return info;
} }
@ -730,6 +827,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_P(result.measurements.PAV_DEPTH_MAX); info.Max = FormatDouble_P(result.measurements.PAV_DEPTH_MAX);
info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN, result.measurements.PAV_DEPTH_MAX); info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN, result.measurements.PAV_DEPTH_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.PAV_DEPTH_MIN, data.PAV_DEPTH_MAX, data.PAV_DEPTH));
return info; return info;
} }
@ -780,6 +879,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "TOC"; info.TestItemId = "TOC";
info.TestItemName = GetName("TOC"); info.TestItemName = GetName("TOC");
info.Avg = FormatDouble_Avg(result.measurements.TOC * 100, Accuracy.ZD1); info.Avg = FormatDouble_Avg(result.measurements.TOC * 100, Accuracy.ZD1);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, data.TOC * 100);
return info; return info;
} }
@ -790,6 +891,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "COC"; info.TestItemId = "COC";
info.TestItemName = GetName("COC"); info.TestItemName = GetName("COC");
info.Avg = FormatDouble_Avg(result.measurements.COC*100, Accuracy.ZD1); info.Avg = FormatDouble_Avg(result.measurements.COC*100, Accuracy.ZD1);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, data.COC * 100);
return info; return info;
} }
@ -804,6 +907,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_A(result.measurements.TWIST_MIN); info.Min = FormatDouble_A(result.measurements.TWIST_MIN);
info.Max = FormatDouble_A(result.measurements.TWIST_MAX); info.Max = FormatDouble_A(result.measurements.TWIST_MAX);
info.Dev = calDev(info.Max, info.Min); info.Dev = calDev(info.Max, info.Min);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.TWIST_MIN, data.TWIST_MAX, data.TWIST));
return info; return info;
} }
@ -814,6 +919,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "CULET_TO_TABLE"; info.TestItemId = "CULET_TO_TABLE";
info.TestItemName = GetName("CULET_TO_TABLE"); info.TestItemName = GetName("CULET_TO_TABLE");
info.Avg = FormatDouble_Avg(result.measurements.CULET_TO_TABLE*100,Accuracy.ZD1); info.Avg = FormatDouble_Avg(result.measurements.CULET_TO_TABLE*100,Accuracy.ZD1);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, data.CULET_TO_TABLE * 100);
return info; return info;
} }
#endregion #endregion

Loading…
Cancel
Save