You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
7.1 KiB

using BrilliantSightClient.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;
using BrilliantSightClient.Model.GradeResult.Entity;
namespace BrilliantSightClient.Model.Entity
{
/// <summary>
/// 定级配置导入数据
/// </summary>
public class JsonEntity
{
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_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 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; }
public string RULE_ID { get; set; }
public string GRADE_ID { get; set; }
public string GRADE_NAME { get; set; }
public string GRADE_EN_NAME { get; set; }
public string GRADE_EN_S_NAME { get; set; }
public int GRADE_ORDER { get; set; }
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
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() });
}
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql()
{
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; } = "";
public string GRADE_ID { get; set; }
public string GRADE_ORDER { get { return GRADE_ID.Substring(GRADE_ID.Length - 1); } set { } }
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_MIN { get; set; }
public string STANDARD_MAX { get; set; }
public string IS_MIN_EXIST { get; set; } = "0";
public string IS_MAX_EXIST { get; set; } = "0";
public string UNIT { get; set; }
public string MIN_PREFIX { get; set; }
public string MIN_SUFFIX { get; set; }
public string MAX_PREFIX { get; set; }
public string MAX_SUFFIX { get; set; }
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();
}
}
public class GradeConfigInfo
{
public string GRADE_CONFIG_ID { get; set; }
public string SHAPE_ID { get; set; }
public string RULE_ID { get; set; }
public string TEST_ITEM_ID { get; set; }
public int GRADE_CONFIG_ORDER { get; set; }
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
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() });
}
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql()
{
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; }
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
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() });
}
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql(string shapeId, string ruleId)
{
return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
public class GradeConfigParameter
{
public string GRADE_CONFIG_ID { get; set; }
public int GRADE_CONFIG_DETAIL_ID { get; set; }
public string PARAMETER_KEY { get; set; }
public string PARAMETER_VALUE { get; set; }
public string PARAMETER_TYPE { get; set; }
// 声明为 virtual 以便子类重写
public virtual string getInsertSql()
{
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() });
}
// 声明为 virtual 以便子类重写
public virtual string getDeleteSql(string shapeId, string ruleId)
{
return JsonEntity.GenerateDeleteSql("GRADE_CONFIG_DETAIL_PARAMETER", $"GRADE_CONFIG_ID LIKE '{JsonEntity.EscapeSql(shapeId + ruleId)}%'");
}
}
}