@ -16,7 +16,7 @@ namespace SparkClient.ViewModel.Configuration;
public class LevelConfigVM : BaseViewModel
public class LevelConfigVM : BaseViewModel
{
{
private static readonly ILog Logger = LogManager . GetLogger ( typeof ( GradingResult VM) ) ;
private static readonly ILog Logger = LogManager . GetLogger ( typeof ( LevelConfig VM) ) ;
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 )