diff --git a/Language/en_US.xaml b/Language/en_US.xaml
index 710dc07..04e1ddd 100644
--- a/Language/en_US.xaml
+++ b/Language/en_US.xaml
@@ -22,7 +22,11 @@
Do you want to exit the application?
Exit Confirmation
-
+ GRADE_EN_NAME
+ STANDARD_EN_NAME
+ SHAPE_EN_NAME
+ INSTITUTE_EN_NAME
+
Average
diff --git a/Language/zh_CN.xaml b/Language/zh_CN.xaml
index 8a69a87..e608003 100644
--- a/Language/zh_CN.xaml
+++ b/Language/zh_CN.xaml
@@ -40,7 +40,14 @@
否
取消
确认
-
+ 数据保存成功
+ 数据保存失败
+ 没有导入数据
+ 参数 \\ 切工等级
+ GRADE_NAME
+ STANDARD_NAME
+ SHAPE_NAME
+ INSTITUTE_NAME
平均
diff --git a/Model/Helper/DataBaseHelper.cs b/Model/Helper/DataBaseHelper.cs
index 8324d62..e68c52f 100644
--- a/Model/Helper/DataBaseHelper.cs
+++ b/Model/Helper/DataBaseHelper.cs
@@ -120,6 +120,10 @@ public class DataBaseHelper
SqliteCommand cmd = new SqliteCommand();
cmd.Connection = connection;
cmd.CommandText = sql;
+ if(sqliteTransaction != null)
+ {
+ cmd.Transaction = sqliteTransaction;
+ }
if (sqlParameters != null)
{
cmd.Parameters.AddRange(sqlParameters);
diff --git a/ViewModel/Configuration/LevelConfigVM.cs b/ViewModel/Configuration/LevelConfigVM.cs
index 5ec3eb3..c2cd9e8 100644
--- a/ViewModel/Configuration/LevelConfigVM.cs
+++ b/ViewModel/Configuration/LevelConfigVM.cs
@@ -1,9 +1,15 @@
-using Newtonsoft.Json;
+using HandyControl.Controls;
+using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
+using SharpDX;
using SparkClient.Model.Helper;
using System.Data;
+using System.Drawing;
using System.IO;
+using System.Linq.Expressions;
+using System.Windows;
using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Input;
@@ -31,26 +37,30 @@ public class LevelConfigVM : BaseViewModel
private DataTable _standardList;
public DataTable StandardList { get { return _standardList; } set { _standardList = value; OnPropertyChanged("StandardList"); } }
DataGrid dataGrid;
- private string GRADE_NAME = string.Empty;
-
- private string STANDARD_NAME = string.Empty;
-
private bool _institutesEnabled = true;
- public bool InstitutesEnabled { get { return _institutesEnabled; } set { _institutesEnabled = value; OnPropertyChanged("InstitutesEnabled"); } }
+ public bool InstitutesEnabled { get { return _institutesEnabled; } set { _institutesEnabled = value; OnPropertyChanged("InstitutesEnabled"); } }
private bool _shapesEnabled = true;
- public bool ShapesEnabled { get { return _shapesEnabled; } set { _shapesEnabled = value; OnPropertyChanged("ShapesEnabled"); } }
+ public bool ShapesEnabled { get { return _shapesEnabled; } set { _shapesEnabled = value; OnPropertyChanged("ShapesEnabled"); } }
+
+ Info info = new Info();
+
+ private string Save_successful_message = MultilingualHelper.getString("Save_successful_message");
+ private string save_fail_message = MultilingualHelper.getString("save_fail_message");
+ private string no_data_message = MultilingualHelper.getString("no_data_message");
+ private string grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
+ private string GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
+ private string STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
public LevelConfigVM(DataGrid dataGrid)
{
if (dataGrid == null) return;
this.dataGrid = dataGrid;
- GRADE_NAME = "GRADE_NAME";
- STANDARD_NAME = "STANDARD_NAME";
ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel);
ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel);
LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig);
DelLevelConfigCommand = new RelayCommand(DelLevelConfig);
SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig);
InitLevelConfig(null);
+ InitData();
}
///
@@ -58,21 +68,29 @@ public class LevelConfigVM : BaseViewModel
///
///
public void InitLevelConfig(object param)
+ {
+ Save_successful_message = MultilingualHelper.getString("Save_successful_message");
+ save_fail_message = MultilingualHelper.getString("save_fail_message");
+ no_data_message = MultilingualHelper.getString("no_data_message");
+ grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
+ GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
+ STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
+ }
+ private void InitData()
{
dataGrid.Columns.Clear();
string shapeSql = @"SELECT * FROM SHAPE;";
- _shapes = DataBaseHelper.ExecuteQuery(shapeSql);
- if (_shapes!= null) {
- _shapeId = _shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
- _instituteId = setInstitutes(_shapeId);
- setDataGrid(_shapeId, _instituteId);
+ Shapes = DataBaseHelper.ExecuteQuery(shapeSql);
+ if (Shapes != null)
+ {
+ ShapeId = Shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
}
}
private string setInstitutes(string id)
{
- string insituteSql = @"SELECT * FROM INSTITUTE WHERE SHAPE_ID = " + id+";";
- _institutes = DataBaseHelper.ExecuteQuery(insituteSql);
- return _institutes.AsEnumerable().FirstOrDefault()["INSTITUTE_ID"].ToString();
+ string insituteSql = @"SELECT * FROM INSTITUTE WHERE SHAPE_ID = " + id + ";";
+ Institutes = DataBaseHelper.ExecuteQuery(insituteSql);
+ return Institutes.AsEnumerable().FirstOrDefault()["INSTITUTE_ID"].ToString();
}
private void setDataGrid(string shapeId, string instituteId)
@@ -87,29 +105,33 @@ public class LevelConfigVM : BaseViewModel
private void setStandardList(DataTable gradeList, DataTable standardList)
{
+ Style cellStyle = new Style(typeof(TextBlock));
+ Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
+ cellStyle.Setters.Add(setSellStyle);
+ Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
+ cellStyle.Setters.Add(setSellStyle1);
dataGrid.Columns.Clear();
if (gradeList != null)
{
StandardList = new DataTable();
-
List columns = new List();
foreach (DataRow columnInfo in gradeList.Rows)
{
if (columns.Count == 0)
{
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString()));
- this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()) });
+ this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()),ElementStyle = cellStyle });
}
else
{
columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"));
- this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN") });
+ this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle });
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"));
- this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX") });
+ this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"), ElementStyle = cellStyle });
}
}
- columns.Insert(0, new DataColumn("title"));
- this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = "参数 \\ 切工等级", Binding = new Binding("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 });
StandardList.Columns.AddRange(columns.ToArray());
// 以标准名分组表示每一行
if (standardList != null)
@@ -125,10 +147,10 @@ public class LevelConfigVM : BaseViewModel
// 每一行单元格内数据
var row = standard.Where(s => s["GRADE_ID"].ToString() == columnInfo["GRADE_ID"].ToString()).FirstOrDefault();
rowInfo.Add(
- row["MIN_PREFIX"].ToString() +
+ getFix(row, "MIN_PREFIX") +
row["STANDARD_MIN"].ToString() + row["UNIT"].ToString() + "-"
+ row["STANDARD_MAX"].ToString() + row["UNIT"].ToString()
- + row["MIN_SUFFIX"].ToString()
+ + getFix(row, "MIN_SUFFIX")
);
}
else
@@ -137,23 +159,28 @@ public class LevelConfigVM : BaseViewModel
var row = standard.Where(s => s["GRADE_ID"].ToString() == columnInfo["GRADE_ID"].ToString()).FirstOrDefault();
if (row["STANDARD_MIN"] == null || row["STANDARD_MIN"].ToString() == "")
{
- rowInfo.Insert(0, row["MIN_PREFIX"].ToString() + row["MIN_NULL_REPALCE"].ToString() + row["MIN_SUFFIX"].ToString());
+ rowInfo.Insert(0, getFix(row, "MIN_PREFIX")
+ + row["MIN_NULL_REPALCE"].ToString()
+ + getFix(row, "MIN_SUFFIX"));
}
else
{
- rowInfo.Insert(0, row["MIN_PREFIX"].ToString() + row["STANDARD_MIN"].ToString() + row["UNIT"].ToString() + row["MIN_SUFFIX"].ToString());
+ rowInfo.Insert(0, getFix(row, "MIN_PREFIX")
+ + row["STANDARD_MIN"].ToString()
+ + row["UNIT"].ToString()
+ + getFix(row, "MIN_SUFFIX"));
}
if (row["STANDARD_MAX"] == null || row["STANDARD_MAX"].ToString() == "")
{
- rowInfo.Add(row["MAX_PREFIX"].ToString() +
+ rowInfo.Add(getFix(row, "MAX_PREFIX") +
row["MAX_NULL_REPALCE"].ToString()
- + row["MAX_SUFFIX"].ToString());
+ + getFix(row, "MAX_SUFFIX"));
}
else
{
- rowInfo.Add(row["MAX_PREFIX"].ToString() +
+ rowInfo.Add(getFix(row, "MAX_PREFIX") +
row["STANDARD_MAX"].ToString() + row["UNIT"].ToString()
- + row["MAX_SUFFIX"].ToString());
+ + getFix(row, "MAX_SUFFIX"));
}
}
}
@@ -165,13 +192,122 @@ public class LevelConfigVM : BaseViewModel
}
}
}
+ private string getFix(DataRow row,string fix){
+ string result = "";
+ result = row[fix].ToString().Replace("\\n","\r\n");
+ return result;
+ }
///
/// 更新保存响应
///
///
public void SaveLevelConfig(object param)
{
-
+ try {
+ string shapeId = "";
+ string instituteId = "";
+ if (info != null)
+ {
+ // 按照形状名查询形状数据,判断是否有该数据
+ string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_NAME = '{info.SHAPE_NAME}';";
+ DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql);
+
+ // 现存db最大形状id取得
+ string shapeAllSql = $"SELECT * FROM SHAPE;";
+ DataTable shapeAllInfo = DataBaseHelper.ExecuteQuery(shapeAllSql);
+ DataBaseHelper.BeginTransaction();
+ // 形状表判断是否有数据
+ if (shapes == null || shapes.Rows.Count == 0)
+ {
+ var id = shapeAllInfo.AsEnumerable().Max(r => r["SHAPE_ID"]);
+ string maxShapeId = "0";
+ // 数据登录
+ if (id != null)
+ {
+ maxShapeId = id.ToString();
+ }
+ // 数据登录
+ int.TryParse(maxShapeId, out int result);
+ shapeId = string.Concat(result + 1);
+ string shapeInsertSql = $"INSERT INTO SHAPE (SHAPE_ID,SHAPE_NAME,SHAPE_EN_NAME,GUID)VALUES('{shapeId}','{info.SHAPE_NAME}','{info.SHAPE_EN_NAME}','{Guid.NewGuid().ToString()}');";
+ DataBaseHelper.ExecuteNonQuery(shapeInsertSql);
+ }
+ else
+ {
+ // 形状id取得
+ shapeId = shapes.Rows[0]["SHAPE_ID"].ToString();
+ }
+ // 按照机构名名查询机构数据,判断是否有该数据
+ string instituteSql = $"SELECT * FROM INSTITUTE WHERE INSTITUTE_NAME = '{info.INSTITUTE_NAME}' AND SHAPE_ID = '{shapeId}';";
+ DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql);
+ // 现存db最大机构ID取得
+ string instituteAllSql = $"SELECT * FROM INSTITUTE WHERE SHAPE_ID = '{shapeId}';";
+ DataTable instituteAllInfo = DataBaseHelper.ExecuteQuery(instituteAllSql);
+ // 机构表判断是否有数据
+ if (institute == null || institute.Rows.Count == 0)
+ {
+ var id = instituteAllInfo.AsEnumerable().Max(r => r["INSTITUTE_ID"]);
+ string maxInstituteId = "0";
+ // 数据登录
+ if (id != null) {
+ maxInstituteId = id.ToString();
+ }
+ int.TryParse(maxInstituteId, out int result);
+ instituteId = string.Concat(result + 1);
+ string shapeInsertSql = $"INSERT INTO INSTITUTE (INSTITUTE_ID,SHAPE_ID,INSTITUTE_NAME,INSTITUTE_EN_NAME,GUID)VALUES('{instituteId}','{shapeId}','{info.INSTITUTE_NAME}','{info.INSTITUTE_EN_NAME}','{Guid.NewGuid().ToString()}');";
+ DataBaseHelper.ExecuteNonQuery(shapeInsertSql);
+ }
+ else
+ {
+ // 机构ID取得
+ instituteId = _instituteId;
+ }
+ // 定级数据登录
+ string gradeInsSql = "";
+ foreach (var gradeInfo in info.gradeInfos)
+ {
+ if (gradeInsSql.Length == 0)
+ {
+ gradeInsSql += gradeInfo.getDeleteSql(shapeId, instituteId);
+ }
+ gradeInsSql += gradeInfo.getInsertSql(shapeId, instituteId);
+ }
+ int count = DataBaseHelper.ExecuteNonQuery(gradeInsSql);
+ if (count<0)
+ {
+ DataBaseHelper.rollback();
+ Growl.Error(save_fail_message);
+ }
+
+ // 标准数据登录
+ string standardSql = "";
+ foreach (var standardInfo in info.standardInfos)
+ {
+ if (standardSql.Length == 0)
+ {
+ standardSql += standardInfo.getDeleteSql(shapeId, instituteId);
+ }
+ standardSql += standardInfo.getInsertSql(shapeId, instituteId);
+ }
+ count = DataBaseHelper.ExecuteNonQuery(standardSql);
+ if (count < 0)
+ {
+ DataBaseHelper.rollback();
+ Growl.Error(save_fail_message);
+ }
+ DataBaseHelper.commit();
+ Growl.Info(Save_successful_message);
+ }
+ else
+ {
+ Growl.Info(no_data_message);
+ }
+ }
+ catch (Exception ex) {
+ DataBaseHelper.rollback();
+ Console.WriteLine(ex.Message);
+ Growl.Error(save_fail_message);
+ }
}
///
/// 删除配置响应
@@ -190,7 +326,6 @@ public class LevelConfigVM : BaseViewModel
{
InstitutesEnabled = false;
ShapesEnabled = false;
- Info info = null;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
@@ -202,7 +337,6 @@ public class LevelConfigVM : BaseViewModel
content = AESHelper.DecryptFile(filename, "000000");
info = JsonConvert.DeserializeObject(content);
}
-
}
if (info != null)
{
@@ -248,8 +382,6 @@ public class LevelConfigVM : BaseViewModel
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos);
-
-
}
}
@@ -259,8 +391,11 @@ public class LevelConfigVM : BaseViewModel
///
public void ChangeInstituteModel(object param)
{
- dataGrid.Columns.Clear();
- setDataGrid(ShapeId, InstituteId);
+ if (InstituteId != null && InstituteId != string.Empty)
+ {
+ dataGrid.Columns.Clear();
+ setDataGrid(ShapeId, InstituteId);
+ }
}
///
@@ -269,7 +404,9 @@ public class LevelConfigVM : BaseViewModel
///
public void ChangeShapeModel(object param)
{
- setInstitutes(ShapeId);
+ if (ShapeId!= null && ShapeId != string.Empty) {
+ setInstitutes(ShapeId);
+ }
}
class Info
@@ -293,6 +430,39 @@ public class LevelConfigVM : BaseViewModel
public string GRADE_EN_NAME { get; set; }
public string GRADE_EN_S_NAME { get; set; }
public int GRADE_ORDER { get; set; }
+
+ public string getInsertSql(string shapeId,string instituteId)
+ {
+ string insertSql = "INSERT INTO GRADE(";
+ insertSql = insertSql +
+ "SHAPE_ID" +
+ ",INSTITUTE_ID" +
+ ",GRADE_ID" +
+ ",GRADE_NAME" +
+ ",GRADE_EN_NAME" +
+ ",GRADE_EN_S_NAME" +
+ ",GRADE_ORDER" +
+ ",GUID";
+ insertSql = insertSql + ")VALUES(";
+ insertSql = insertSql +
+ $"'{shapeId}'" +
+ $",'{instituteId}'" +
+ $",'{GRADE_ID}'" +
+ $",'{GRADE_NAME}'" +
+ $",'{GRADE_EN_NAME}'" +
+ $",'{GRADE_EN_S_NAME}'" +
+ $",'{GRADE_ORDER}'" +
+ $",'{Guid.NewGuid().ToString()}'";
+
+ insertSql = insertSql + ");";
+ return insertSql;
+ }
+ public string getDeleteSql(string shapeId, string instituteId)
+ {
+ string deleteSql = $"DELETE FROM GRADE WHERE SHAPE_ID='{shapeId}' AND INSTITUTE_ID='{instituteId}';";
+ return deleteSql;
+ }
+
}
class StandardInfo
@@ -301,8 +471,8 @@ public class LevelConfigVM : BaseViewModel
public int STANDARD_ID { get; set; }
public string STANDARD_NAME { get; set; }
public string STANDARD_EN_NAME { get; set; }
- public string STANDARD_MIN { get; set; }
- public string STANDARD_MAX { get; set; }
+ public decimal? STANDARD_MIN { get; set; }
+ public decimal? 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; }
@@ -313,5 +483,59 @@ public class LevelConfigVM : BaseViewModel
public string MIN_NULL_REPALCE { get; set; } = "←";
public string MAX_NULL_REPALCE { get; set; } = "→";
public int SORT { get; set; }
+ public string getInsertSql(string shapeId, string instituteId)
+ {
+ string insertSql = "INSERT INTO STANDARD(";
+ insertSql = insertSql +
+ "STANDARD_ID " +
+ ",SHAPE_ID " +
+ ",GRADE_ID " +
+ ",INSTITUTE_ID " +
+ ",STANDARD_NAME " +
+ ",STANDARD_EN_NAME " +
+ ",STANDARD_MIN " +
+ ",STANDARD_MAX " +
+ ",IS_MIN_EXIST " +
+ ",IS_MAX_EXIST " +
+ ",SORT " +
+ ",UNIT " +
+ ",MAX_NULL_REPALCE " +
+ ",MIN_PREFIX " +
+ ",MIN_SUFFIX " +
+ ",MAX_PREFIX " +
+ ",MAX_SUFFIX " +
+ ",MIN_NULL_REPALCE " +
+ ",GUID " ;
+ insertSql = insertSql + ")VALUES(";
+ insertSql = insertSql +
+ $"'{STANDARD_ID}'" +
+ $",'{shapeId}'" +
+ $",'{GRADE_ID}'" +
+ $",'{instituteId}'" +
+ $",'{STANDARD_NAME}'" +
+ $",'{STANDARD_EN_NAME}'" +
+ $",{(STANDARD_MIN != null ? STANDARD_MIN.ToString() : "null")}" +
+ $",{(STANDARD_MAX != null ? STANDARD_MAX.ToString() : "null")}" +
+ $",'{IS_MIN_EXIST}'" +
+ $",'{IS_MAX_EXIST}'" +
+ $",'{SORT}'" +
+ $",'{UNIT}'" +
+ $",'{MAX_NULL_REPALCE}'" +
+ $",'{MIN_PREFIX}'" +
+ $",'{MIN_SUFFIX}'" +
+ $",'{MAX_PREFIX}'" +
+ $",'{MAX_SUFFIX}'" +
+ $",'{MIN_NULL_REPALCE}'" +
+ $",'{Guid.NewGuid().ToString()}'";
+
+ insertSql = insertSql + ");";
+ return insertSql;
+ }
+
+ public string getDeleteSql(string shapeId, string instituteId)
+ {
+ string deleteSql = $"DELETE FROM STANDARD WHERE SHAPE_ID='{shapeId}' AND INSTITUTE_ID='{instituteId}';";
+ return deleteSql;
+ }
}
}
\ No newline at end of file
diff --git a/Views/Configuration/LevelConfigPage.xaml b/Views/Configuration/LevelConfigPage.xaml
index 41b6649..4b77e2b 100644
--- a/Views/Configuration/LevelConfigPage.xaml
+++ b/Views/Configuration/LevelConfigPage.xaml
@@ -22,24 +22,42 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file