对称等级修改

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_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_EN_NAME { get; set; }
public List<GradeInfo> gradeInfos { get; set; } = new List<GradeInfo>();
public List<StandardInfo> standardInfos { get; set; } = new List<StandardInfo>();
public List<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo>();
public List<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail>();
public List<GradeConfigParameter> GradeConfigParameters { get; set; } = new List<GradeConfigParameter>();
public virtual IEnumerable<GradeConfigInfo> GradeConfigs { get; set; } = new List<GradeConfigInfo>();
public virtual IEnumerable<GradeConfigDetail> GradeConfigDetails { get; set; } = new List<GradeConfigDetail>();
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 string SHAPE_ID { get; set; }
@ -41,38 +59,20 @@ namespace EncryptFileTool.Entity
public string GRADE_EN_S_NAME { get; set; }
public int GRADE_ORDER { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
string insertSql = "INSERT INTO GRADE(";
insertSql = insertSql +
"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;
return JsonEntity.GenerateInsertSql("GRADE", new[] { "SHAPE_ID", "RULE_ID", "GRADE_ID", "GRADE_NAME", "GRADE_EN_NAME", "GRADE_EN_S_NAME", "GRADE_ORDER", "GUID" },
new[] { SHAPE_ID, RULE_ID, GRADE_ID, GRADE_NAME, GRADE_EN_NAME, GRADE_EN_S_NAME, GRADE_ORDER.ToString(), Guid.NewGuid().ToString() });
}
public string getDeleteSql()
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql()
{
string deleteSql = $"DELETE FROM GRADE WHERE SHAPE_ID='{SHAPE_ID}' AND RULE_ID='{RULE_ID}';";
return deleteSql;
return JsonEntity.GenerateDeleteSql("GRADE", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
}
}
public class StandardInfo
{
public string RULE_ID { get; set; } = "";
@ -81,7 +81,7 @@ namespace EncryptFileTool.Entity
public string TEST_ITEM_ID { get; set; }
public string STANDARD_ID { 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_MAX { get; set; }
public string IS_MIN_EXIST { get; set; } = "0";
@ -94,12 +94,13 @@ namespace EncryptFileTool.Entity
public string MIN_NULL_REPALCE { get; set; } = "←";
public string MAX_NULL_REPALCE { get; set; } = "→";
public int SORT { get; set; }
private string getStandEnName()
{
return Name.getNameById(TEST_ITEM_ID).Trim();
return Name.getNameById(TEST_ITEM_ID).Trim();
}
}
public class GradeConfigInfo
{
public string GRADE_CONFIG_ID { get; set; }
@ -107,64 +108,41 @@ namespace EncryptFileTool.Entity
public string RULE_ID { get; set; }
public string TEST_ITEM_ID { get; set; }
public int GRADE_CONFIG_ORDER { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
string insertSql = "INSERT INTO GRADE_CONFIG(";
insertSql = insertSql +
"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;
return JsonEntity.GenerateInsertSql("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() });
}
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 deleteSql;
return JsonEntity.GenerateDeleteSql("GRADE_CONFIG", $"SHAPE_ID='{JsonEntity.EscapeSql(SHAPE_ID)}' AND RULE_ID='{JsonEntity.EscapeSql(RULE_ID)}'");
}
}
public class GradeConfigDetail
{
public string GRADE_CONFIG_ID { get; set; }
public int GRADE_CONFIG_DETAIL_ID { get; set; }
public string GRADE_ID { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
string insertSql = "INSERT INTO GRADE_CONFIG_DETAIL(";
insertSql = insertSql +
"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;
return JsonEntity.GenerateInsertSql("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() });
}
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 deleteSql;
return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
public class GradeConfigParameter
{
public string GRADE_CONFIG_ID { get; set; }
@ -172,32 +150,18 @@ namespace EncryptFileTool.Entity
public string PARAMETER_KEY { get; set; }
public string PARAMETER_VALUE { get; set; }
public string PARAMETER_TYPE { get; set; }
public string getInsertSql()
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
string insertSql = "INSERT INTO GRADE_CONFIG_DETAIL_PARAMETER(";
insertSql = insertSql +
"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;
return JsonEntity.GenerateInsertSql("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() });
}
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 deleteSql;
return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL_PARAMETER", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
}
}

@ -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>
JsonEntity jsonEntity = new JsonEntity();
JsonEntity_SYM jsonEntity_SYM = new JsonEntity_SYM();
private string Save_successful_message = MultilingualHelper.getString("Save_successful_message");
private string save_fail_message = MultilingualHelper.getString("save_fail_message");
@ -462,10 +463,21 @@ public class LevelConfigVM : BaseViewModel
[Log]
public void SaveLevelConfig(object param)
{
try {
string shapeId = jsonEntity.SHAPE_ID;
string ruleId = jsonEntity.RULE_ID;
if (jsonEntity != null)
JsonEntity initJsonEntity = new JsonEntity();
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}';";
@ -476,21 +488,21 @@ public class LevelConfigVM : BaseViewModel
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);
}
string ruleSql = $"SELECT * FROM RULE WHERE RULE_ID = '{ruleId}';";
DataTable rule = DataBaseHelper.ExecuteQuery(ruleSql);
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);
}
// 定级数据登录
string gradeInsSql = "";
foreach (var gradeInfo in jsonEntity.gradeInfos)
foreach (var gradeInfo in initJsonEntity.gradeInfos)
{
if (gradeInsSql.Length == 0)
{
@ -499,7 +511,7 @@ public class LevelConfigVM : BaseViewModel
gradeInsSql += gradeInfo.getInsertSql();
}
int count = DataBaseHelper.ExecuteNonQuery(gradeInsSql);
if (count<0)
if (count < 0)
{
DataBaseHelper.rollback();
Growl.Error(save_fail_message);
@ -508,7 +520,7 @@ public class LevelConfigVM : BaseViewModel
// 标准数据登录
string gradeConfigSql = "";
int index = 0;
foreach (var gradeConfig in jsonEntity.GradeConfigs)
foreach (var gradeConfig in initJsonEntity.GradeConfigs)
{
if (index == 0)
{
@ -518,17 +530,17 @@ public class LevelConfigVM : BaseViewModel
index++;
}
index = 0;
foreach (var gradeConfigDetail in jsonEntity.GradeConfigDetails)
foreach (var gradeConfigDetail in initJsonEntity.GradeConfigDetails)
{
if (index == 0)
{
gradeConfigSql += gradeConfigDetail.getDeleteSql(shapeId,ruleId);
gradeConfigSql += gradeConfigDetail.getDeleteSql(shapeId, ruleId);
}
gradeConfigSql += gradeConfigDetail.getInsertSql();
index++;
}
index = 0;
foreach (var gradeConfigParameter in jsonEntity.GradeConfigParameters)
foreach (var gradeConfigParameter in initJsonEntity.GradeConfigParameters)
{
if (index == 0)
{
@ -555,7 +567,8 @@ public class LevelConfigVM : BaseViewModel
Growl.ErrorGlobal(no_data_message);
}
}
catch (Exception ex) {
catch (Exception ex)
{
DataBaseHelper.rollback();
Logger.Error($"全局异常捕获:{ex.Message}", ex);
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
@ -584,6 +597,7 @@ public class LevelConfigVM : BaseViewModel
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
jsonEntity = null;
jsonEntity_SYM = null;
if (openFileDialog.ShowDialog() == true)
{
string filename = openFileDialog.FileName;
@ -593,7 +607,15 @@ public class LevelConfigVM : BaseViewModel
try
{
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)
{
@ -612,19 +634,28 @@ public class LevelConfigVM : BaseViewModel
//ChangeShapeModel("");
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);
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;
row["SHAPE_ID"] = initJsonEntity.SHAPE_ID;
row["SHAPE_NAME"] = initJsonEntity.SHAPE_NAME;
row["SHAPE_EN_NAME"] = initJsonEntity.SHAPE_EN_NAME;
Shapes.Rows.Add(row);
ShapeId = jsonEntity.SHAPE_ID;
ShapeId = initJsonEntity.SHAPE_ID;
}
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);
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;
row["RULE_ID"] = initJsonEntity.RULE_ID;
row["RULE_NAME"] = initJsonEntity.RULE_NAME;
row["RULE_EN_NAME"] = initJsonEntity.RULE_EN_NAME;
Institutes.Rows.Add(row);
InstituteId = jsonEntity.RULE_ID;
InstituteId = initJsonEntity.RULE_ID;
}
else
{
InstituteId = institute.Rows[0]["RULE_ID"].ToString() ?? "";
}
// 表格内容重新生成
string gradeInfosJson = JsonConvert.SerializeObject(jsonEntity.gradeInfos);
string gradeInfosJson = JsonConvert.SerializeObject(initJsonEntity.gradeInfos);
DataTable gradeInfos = Common.JsonToDataTable(gradeInfosJson);
string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos);
string standardInfosJson = JsonConvert.SerializeObject(initJsonEntity.standardInfos);
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos);
InstitutesEnabled = false;

@ -425,14 +425,91 @@ public class GradingResultVM : BaseViewModel
List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql);
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]
private int calGrade(string item ,double value)
private int calGradeSym(string item, double value)
{
int order = 1;
try
{
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)
{
return 0;
@ -591,7 +668,15 @@ public class GradingResultVM : BaseViewModel
decimal.TryParse(min, out Min);
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]
private DataInfo getDIAMETER(AlgorithmResultEntity result)
{
@ -603,6 +688,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_D(result.measurements.M1);
info.Max = FormatDouble_D(result.measurements.M2);
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;
}
[Log]
@ -643,6 +730,8 @@ public class GradingResultVM : BaseViewModel
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.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;
}
@ -658,6 +747,8 @@ public class GradingResultVM : BaseViewModel
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.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;
}
@ -672,6 +763,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MIN);
info.Max = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MAX);
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;
}
@ -700,6 +793,8 @@ public class GradingResultVM : BaseViewModel
info.Max = FormatDouble_P(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);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.GIRDLE_VALLEY_MIN, data.GIRDLE_VALLEY_MAX, data.GIRDLE_VALLEY));
return info;
}
@ -715,6 +810,8 @@ public class GradingResultVM : BaseViewModel
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.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;
}
@ -730,6 +827,8 @@ public class GradingResultVM : BaseViewModel
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.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;
}
@ -780,6 +879,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "TOC";
info.TestItemName = GetName("TOC");
info.Avg = FormatDouble_Avg(result.measurements.TOC * 100, Accuracy.ZD1);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, data.TOC * 100);
return info;
}
@ -790,6 +891,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "COC";
info.TestItemName = GetName("COC");
info.Avg = FormatDouble_Avg(result.measurements.COC*100, Accuracy.ZD1);
var data = result.measurements;
info.SymLevel = calGradeSym(info.TestItemId, data.COC * 100);
return info;
}
@ -804,6 +907,8 @@ public class GradingResultVM : BaseViewModel
info.Min = FormatDouble_A(result.measurements.TWIST_MIN);
info.Max = FormatDouble_A(result.measurements.TWIST_MAX);
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;
}
@ -814,6 +919,8 @@ public class GradingResultVM : BaseViewModel
info.TestItemId = "CULET_TO_TABLE";
info.TestItemName = GetName("CULET_TO_TABLE");
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;
}
#endregion

Loading…
Cancel
Save