|
|
|
@ -1,19 +1,21 @@ |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.ComponentModel; |
|
|
|
|
using System.Data; |
|
|
|
|
using System.IO; |
|
|
|
|
using System.Reflection; |
|
|
|
|
using System.Windows; |
|
|
|
|
using System.Windows.Forms; |
|
|
|
|
using System.Windows.Input; |
|
|
|
|
using System.Windows.Shapes; |
|
|
|
|
using HandyControl.Controls; |
|
|
|
|
using log4net.Appender; |
|
|
|
|
using Newtonsoft.Json; |
|
|
|
|
using SparkClient.Model.Entity.ApiEntity; |
|
|
|
|
using SparkClient.Model.Helper; |
|
|
|
|
using SparkClient.Views.UserControl.ViewportData; |
|
|
|
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip; |
|
|
|
|
|
|
|
|
|
using Microsoft.Win32; |
|
|
|
|
using SaveFileDialog = Microsoft.Win32.SaveFileDialog; |
|
|
|
|
using NPOI.SS.UserModel; |
|
|
|
|
using NPOI.XSSF.UserModel; |
|
|
|
|
using SparkClient.Views.Dialog; |
|
|
|
|
using NPOI.HPSF; |
|
|
|
|
namespace SparkClient.ViewModel.Grading; |
|
|
|
|
|
|
|
|
|
public class GradingResultVM : BaseViewModel |
|
|
|
@ -32,8 +34,8 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
private string _wight; |
|
|
|
|
private string _cutLevelTotal; |
|
|
|
|
private string _symLevelTotal; |
|
|
|
|
public ICommand ChangeSymCommand { get; } |
|
|
|
|
|
|
|
|
|
private string _ds; |
|
|
|
|
public ICommand SaveFileCommand { get; } |
|
|
|
|
public ICommand SaveAsCommand { get; } |
|
|
|
|
public List<DataInfo> DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } } |
|
|
|
|
public ViewportData ViewportData { get { return _viewportData; } set { _viewportData = value; OnPropertyChanged(nameof(ViewportData)); } } |
|
|
|
@ -45,27 +47,64 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
public string CutLevelTotal { get { return _cutLevelTotal; } set { _cutLevelTotal = value; OnPropertyChanged(nameof(CutLevelTotal)); } } |
|
|
|
|
public string SymLevelTotal { get { return _symLevelTotal; } set { _symLevelTotal = value; OnPropertyChanged(nameof(SymLevelTotal)); } } |
|
|
|
|
public DataTable DSList { get { return _dsList; } set { _dsList = value; OnPropertyChanged(nameof(DSList)); } } |
|
|
|
|
public string DS { get { return _ds; } set { _ds = value; OnPropertyChanged(nameof(DS)); } } |
|
|
|
|
public DataTable GradeList { get { return _gradeList; } set { _gradeList = value; OnPropertyChanged(nameof(GradeList)); } } |
|
|
|
|
|
|
|
|
|
private readonly static string digitsFormat = "f1"; |
|
|
|
|
|
|
|
|
|
private int totalCutGrade = 0; |
|
|
|
|
private int totalSymGrade = 0; |
|
|
|
|
private AlgorithmResultEntity algorithmResult; |
|
|
|
|
private string username = "Lavanda"; |
|
|
|
|
private string machine = "71953"; |
|
|
|
|
/// <summary> |
|
|
|
|
/// 构造 |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="result">检测结果</param> |
|
|
|
|
public GradingResultVM(object result) |
|
|
|
|
{ |
|
|
|
|
SaveAsCommand = new RelayCommand(SaveAs); |
|
|
|
|
SaveFileCommand = new RelayCommand(SaveFile); |
|
|
|
|
if (result != null) |
|
|
|
|
{ |
|
|
|
|
InitView(result as AlgorithmResultEntity); |
|
|
|
|
algorithmResult = result as AlgorithmResultEntity?? new AlgorithmResultEntity(); |
|
|
|
|
InitView(algorithmResult); |
|
|
|
|
machine = "71953"; |
|
|
|
|
} |
|
|
|
|
InitCombobox(); |
|
|
|
|
AutoSave(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#region 画面初始化相关操作 |
|
|
|
|
private void InitCombobox() |
|
|
|
|
{ |
|
|
|
|
// DS下拉列表初始化 |
|
|
|
|
InitDSlist(); |
|
|
|
|
// 等级下拉列表初始化 |
|
|
|
|
InitGradeList(); |
|
|
|
|
} |
|
|
|
|
private void InitDSlist() |
|
|
|
|
{ |
|
|
|
|
DSList = new DataTable(); |
|
|
|
|
DSList.Columns.Add("Key"); |
|
|
|
|
DSList.Columns.Add("Value"); |
|
|
|
|
DSList.Rows.Add("NA", "NA"); |
|
|
|
|
DSList.Rows.Add("pass", "pass"); |
|
|
|
|
DSList.Rows.Add("refer", "refer"); |
|
|
|
|
} |
|
|
|
|
private void InitGradeList() |
|
|
|
|
{ |
|
|
|
|
GradeList = new DataTable(); |
|
|
|
|
GradeList.Columns.Add("Key"); |
|
|
|
|
GradeList.Columns.Add("Value"); |
|
|
|
|
GradeList.Rows.Add("极好", "Exc"); |
|
|
|
|
GradeList.Rows.Add("很好", "VG"); |
|
|
|
|
GradeList.Rows.Add("好", "G"); |
|
|
|
|
GradeList.Rows.Add("一般", "F"); |
|
|
|
|
GradeList.Rows.Add("差", "P"); |
|
|
|
|
} |
|
|
|
|
private void InitView(AlgorithmResultEntity result) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
string data = JsonConvert.SerializeObject(result); |
|
|
|
|
ViewportData = new ViewportData(result.DiamondCode, data); |
|
|
|
|
ViewportData.LoadData(); |
|
|
|
@ -96,6 +135,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
} |
|
|
|
|
CutLevelTotal = GetGradeName(totalCutGrade); |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
/// <summary> |
|
|
|
|
/// 参数列表测试内容获取 |
|
|
|
|
/// </summary> |
|
|
|
@ -255,8 +295,9 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "TOTAL_DEPTH"; |
|
|
|
|
info.TestItemName = GetName("TOTAL_DEPTH"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.TOTAL_DEPTH*100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.TOTAL_DEPTH*1000)/100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_TOTAL_DEPTH(result.measurements.TOTAL_DEPTH * 100); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -265,10 +306,11 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "TABLE"; |
|
|
|
|
info.TestItemName = GetName("TABLE"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.TABLE * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.TABLE_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.TABLE_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.TABLE * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.TABLE_MIN * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.TABLE_MAX * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_TABLE(result.measurements.TABLE_MIN, result.measurements.TABLE_MAX); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -290,11 +332,11 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "CROWN_HEIGHT"; |
|
|
|
|
info.TestItemName = GetName("CROWN_HEIGHT"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.CROWN_HEIGHT * 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = Math.Floor(result.measurements.CROWN_H_DEV * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.CROWN_H_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.CROWN_H_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN, result.measurements.CROWN_H_MAX); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.CROWN_HEIGHT * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = (Math.Floor(result.measurements.CROWN_H_DEV * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.CROWN_H_MIN * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.CROWN_H_MAX * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN * 100, result.measurements.CROWN_H_MAX * 100); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -303,10 +345,10 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "GIRDLE_BEZEL"; |
|
|
|
|
info.TestItemName = GetName("GIRDLE_BEZEL"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.GIRDLE_BEZEL * 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = Math.Floor(result.measurements.GIRDLE_BEZEL_DEV * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.GIRDLE_BEZEL_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.GIRDLE_BEZEL_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.GIRDLE_BEZEL * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = (Math.Floor(result.measurements.GIRDLE_BEZEL_DEV * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.GIRDLE_BEZEL_MIN * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.GIRDLE_BEZEL_MAX * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -315,9 +357,10 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "GIRDLE_BONE"; |
|
|
|
|
info.TestItemName = GetName("GIRDLE_BONE"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.GIRDLE_BONE * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.GIRDLE_BONE_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.GIRDLE_BONE_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.GIRDLE_BONE * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.GIRDLE_BONE_MIN * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.GIRDLE_BONE_MAX * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -326,11 +369,11 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "GIRDLE"; |
|
|
|
|
info.TestItemName = GetName("GIRDLE"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.GIRDLE * 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = Math.Floor(result.measurements.GIRDLE_DEV * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.GIRDLE_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.GIRDLE_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_MIN, result.measurements.GIRDLE_MAX); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.GIRDLE * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = (Math.Floor(result.measurements.GIRDLE_DEV * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.GIRDLE_MIN * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.GIRDLE_MAX * 1000) / 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_MIN*100, result.measurements.GIRDLE_MAX * 100); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -343,7 +386,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
info.Dev = result.measurements.PAV_ANGLE_DEV.ToString(digitsFormat); |
|
|
|
|
info.Min = result.measurements.PAV_ANGLE_MIN.ToString(digitsFormat); |
|
|
|
|
info.Max = result.measurements.PAV_ANGLE_MAX.ToString(digitsFormat); |
|
|
|
|
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 * 100); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -352,11 +395,11 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "PAV_DEPTH"; |
|
|
|
|
info.TestItemName = GetName("PAV_DEPTH"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.PAV_DEPTH * 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = Math.Floor(result.measurements.PAV_DEPTH_DEV * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.PAV_DEPTH_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.PAV_DEPTH_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN, result.measurements.PAV_DEPTH_MAX); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.PAV_DEPTH * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Dev = (Math.Floor(result.measurements.PAV_DEPTH_DEV * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.PAV_DEPTH_MIN * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.PAV_DEPTH_MAX * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN*100, result.measurements.PAV_DEPTH_MAX * 100); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -365,9 +408,10 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "STAR"; |
|
|
|
|
info.TestItemName = GetName("STAR"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.STAR * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.STAR_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.STAR_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.STAR * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.STAR_MIN * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.STAR_MAX * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -376,9 +420,10 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "LOWER_HALVES_RATIO"; |
|
|
|
|
info.TestItemName = GetName("LOWER_HALVES_RATIO"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.LOWER_HALVES_RATIO * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.LOWER_HALVES_RATIO_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.LOWER_HALVES_RATIO_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.LOWER_HALVES_RATIO * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.LOWER_HALVES_RATIO_MIN * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.LOWER_HALVES_RATIO_MAX * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -387,7 +432,8 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "CULET"; |
|
|
|
|
info.TestItemName = GetName("CULET"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.CULET * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.CULET * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
info.isEnabled = false; |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -396,7 +442,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "TOC"; |
|
|
|
|
info.TestItemName = GetName("TOC"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.TOC * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.TOC * 1000) / 10).ToString(digitsFormat); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -405,7 +451,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "COC"; |
|
|
|
|
info.TestItemName = GetName("COC"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.COC * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.COC * 1000)/10).ToString(digitsFormat); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -414,10 +460,10 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "TWIST"; |
|
|
|
|
info.TestItemName = GetName("TWIST"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.TWIST * 100).ToString(digitsFormat); |
|
|
|
|
info.Dev = Math.Floor(result.measurements.TWIST_DEV * 100).ToString(digitsFormat); |
|
|
|
|
info.Min = Math.Floor(result.measurements.TWIST_MIN * 100).ToString(digitsFormat); |
|
|
|
|
info.Max = Math.Floor(result.measurements.TWIST_MAX * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.TWIST*100)/100).ToString(digitsFormat); |
|
|
|
|
info.Dev = (Math.Floor(result.measurements.TWIST_DEV * 100) / 100).ToString(digitsFormat); |
|
|
|
|
info.Min = (Math.Floor(result.measurements.TWIST_MIN * 100) / 100).ToString(digitsFormat); |
|
|
|
|
info.Max = (Math.Floor(result.measurements.TWIST_MAX * 100) / 100).ToString(digitsFormat); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -426,7 +472,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
DataInfo info = new DataInfo(); |
|
|
|
|
info.TestItemId = "CULET_TO_TABLE"; |
|
|
|
|
info.TestItemName = GetName("CULET_TO_TABLE"); |
|
|
|
|
info.Avg = Math.Floor(result.measurements.CULET_TO_TABLE * 100).ToString(digitsFormat); |
|
|
|
|
info.Avg = (Math.Floor(result.measurements.CULET_TO_TABLE * 1000)/10).ToString(digitsFormat); |
|
|
|
|
return info; |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
@ -444,16 +490,82 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
{ |
|
|
|
|
return m*m; |
|
|
|
|
} |
|
|
|
|
public void SaveAs() |
|
|
|
|
private void AutoSave() |
|
|
|
|
{ |
|
|
|
|
if (string.IsNullOrEmpty(DiamondCode)) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
string ts = DateTime.Now.ToString("yyyyMMddHHmmss"); |
|
|
|
|
string fullPath = Path.Combine(getFilePath(), ts + "_" + this.DiamondCode); |
|
|
|
|
ExportFile(fullPath); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
public void SaveFile(object param) |
|
|
|
|
{ |
|
|
|
|
string filePath = ""; |
|
|
|
|
if (string.IsNullOrEmpty(DiamondCode)) |
|
|
|
|
{ |
|
|
|
|
SaveDialog startDialog = new SaveDialog(); |
|
|
|
|
bool? a = startDialog.ShowDialog(); |
|
|
|
|
if (startDialog.DiamondCode.Text.Length > 0) |
|
|
|
|
{ |
|
|
|
|
this.DiamondCode = startDialog.DiamondCode.Text; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
string ts = DateTime.Now.ToString("yyyyMMddHHmmss"); |
|
|
|
|
string fullPath = Path.Combine(getFilePath(), ts+ "_" + this.DiamondCode); |
|
|
|
|
ExportFile(fullPath); |
|
|
|
|
} |
|
|
|
|
private string getFilePath() |
|
|
|
|
{ |
|
|
|
|
string defultFilePath = "D://DTest//"; |
|
|
|
|
if( File.Exists(defultFilePath)){ |
|
|
|
|
return defultFilePath; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
Directory.CreateDirectory(defultFilePath); |
|
|
|
|
return defultFilePath; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#region 文件导出相关 |
|
|
|
|
public void SaveAs(object param) |
|
|
|
|
{ |
|
|
|
|
if (string.IsNullOrEmpty(DiamondCode)) |
|
|
|
|
{ |
|
|
|
|
SaveDialog startDialog = new SaveDialog(); |
|
|
|
|
bool? a = startDialog.ShowDialog(); |
|
|
|
|
|
|
|
|
|
if (startDialog.DiamondCode.Text.Length > 0) |
|
|
|
|
{ |
|
|
|
|
this.DiamondCode = startDialog.DiamondCode.Text; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
using (var folderBrowserDlg = new FolderBrowserDialog()) |
|
|
|
|
{ |
|
|
|
|
DialogResult result = folderBrowserDlg.ShowDialog(); |
|
|
|
|
// 创建SaveFileDialog实例 |
|
|
|
|
SaveFileDialog saveFileDialog = new() |
|
|
|
|
{ |
|
|
|
|
Filter = "所有文件 (*.*)|*.*", // 文件类型过滤器 |
|
|
|
|
FileName = this.DiamondCode // 默认文件名 |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
if (result == DialogResult.OK) |
|
|
|
|
// 显示对话框并检查结果 |
|
|
|
|
bool? result = saveFileDialog.ShowDialog(); |
|
|
|
|
if (result == true) |
|
|
|
|
{ |
|
|
|
|
filePath = folderBrowserDlg.SelectedPath; |
|
|
|
|
// 获取用户选择的文件路径 |
|
|
|
|
string filePath = saveFileDialog.FileName; |
|
|
|
|
ExportFile(filePath); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -468,21 +580,126 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
|
|
|
|
|
private void TxtFile(string filePath) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
string fileName = filePath + ".txt"; |
|
|
|
|
using (var file = File.Create(fileName)) |
|
|
|
|
{ |
|
|
|
|
Measurements info = algorithmResult.measurements; |
|
|
|
|
StreamWriter stream = new StreamWriter(file); |
|
|
|
|
stream.WriteLine($"IGI REPORT NUMBER={DiamondCode}"); |
|
|
|
|
stream.WriteLine($"SARIN WEIGHT={Wight}"); |
|
|
|
|
stream.WriteLine($"M1={info.M1}"); |
|
|
|
|
stream.WriteLine($"M2={info.M2}"); |
|
|
|
|
stream.WriteLine($"M3={info.M3}"); |
|
|
|
|
stream.WriteLine($"TABLE={info.TABLE*100}"); |
|
|
|
|
stream.WriteLine($"TABLE MIN={info.TABLE_MIN * 100}"); |
|
|
|
|
stream.WriteLine($"TABLE MAX={info.TABLE_MAX * 100}"); |
|
|
|
|
stream.WriteLine($"CROWN HEIGHT={info.CROWN_HEIGHT * 100}"); |
|
|
|
|
stream.WriteLine($"CROWN H MIN={info.CROWN_H_MIN * 100}"); |
|
|
|
|
stream.WriteLine($"CROWN H MAX={info.CROWN_H_MAX * 100}"); |
|
|
|
|
stream.WriteLine($"CROWN ANGLE={info.CROWN_ANGLE}"); |
|
|
|
|
stream.WriteLine($"CROWN ANGLE MIN={info.CROWN_ANGLE_MIN}"); |
|
|
|
|
stream.WriteLine($"CROWN ANGLE MAX={info.CROWN_ANGLE_MAX}"); |
|
|
|
|
stream.WriteLine($"PAV DEPTH={info.PAV_DEPTH * 100}"); |
|
|
|
|
stream.WriteLine($"PAV DEPTH MIN={info.PAV_DEPTH_MIN * 100}"); |
|
|
|
|
stream.WriteLine($"PAV DEPTH MAX={info.PAV_DEPTH_MAX * 100}"); |
|
|
|
|
stream.WriteLine($"PAV ANGLE={info.PAV_ANGLE}"); |
|
|
|
|
stream.WriteLine($"PAV ANGLE MIN={info.PAV_ANGLE_MIN}"); |
|
|
|
|
stream.WriteLine($"PAV ANGLE MAX={info.PAV_ANGLE_MAX}"); |
|
|
|
|
stream.WriteLine($"GIRDLE={info.GIRDLE * 100}"); |
|
|
|
|
stream.WriteLine($"GIRDLE MIN={info.GIRDLE_MIN * 100}"); |
|
|
|
|
stream.WriteLine($"GIRDLE MAX={info.GIRDLE_MAX * 100}"); |
|
|
|
|
stream.WriteLine($"TOTAL DEPTH={info.TOTAL_DEPTH * 100}"); |
|
|
|
|
stream.WriteLine($"CULET={info.CULET*100}"); |
|
|
|
|
stream.WriteLine($"MACHINE={machine}"); |
|
|
|
|
stream.WriteLine($"CUTGRADE={GetGradeEnName(totalCutGrade)}"); |
|
|
|
|
stream.WriteLine($"LW RATIO={info.LW_RATIO}"); |
|
|
|
|
stream.WriteLine($"DS={DS}"); |
|
|
|
|
stream.WriteLine($"COC={info.COC * 100}"); |
|
|
|
|
stream.WriteLine($"USER={username}"); |
|
|
|
|
string TABLE_GRADE = DtResults.Where(x => "TABLE".Equals(x.TestItemId)).Select(x=>x.CutLevel).First()??""; |
|
|
|
|
stream.WriteLine($"TABLE GRADE={GetGradeEnName(GetGradeOrder(TABLE_GRADE))}"); |
|
|
|
|
string CROWN_H_GRADE = DtResults.Where(x => "CROWN_HEIGHT".Equals(x.TestItemId)).Select(x => x.CutLevel).First() ?? ""; |
|
|
|
|
stream.WriteLine($"CROWN H GRADE={GetGradeEnName(GetGradeOrder(CROWN_H_GRADE))}"); |
|
|
|
|
string CROWN_ANGLE_GRADE = DtResults.Where(x => "CROWN_ANGLE".Equals(x.TestItemId)).Select(x => x.CutLevel).First() ?? ""; |
|
|
|
|
stream.WriteLine($"CROWN ANGLE GRADE={GetGradeEnName(GetGradeOrder(CROWN_ANGLE_GRADE))}"); |
|
|
|
|
string PAV_DEPTH_GRADE = DtResults.Where(x => "PAV_DEPTH".Equals(x.TestItemId)).Select(x => x.CutLevel).First() ?? ""; |
|
|
|
|
stream.WriteLine($"PAV DEPTH GRADE={GetGradeEnName(GetGradeOrder(PAV_DEPTH_GRADE))}"); |
|
|
|
|
string PAV_ANGLE_GRADE = DtResults.Where(x => "PAV_ANGLE".Equals(x.TestItemId)).Select(x => x.CutLevel).First() ?? ""; |
|
|
|
|
stream.WriteLine($"PAV ANGLE GRADE={GetGradeEnName(GetGradeOrder(PAV_ANGLE_GRADE))}"); |
|
|
|
|
string TD_GRADE = DtResults.Where(x => "TOTAL_DEPTH".Equals(x.TestItemId)).Select(x => x.CutLevel).First() ?? ""; |
|
|
|
|
stream.WriteLine($"TD GRADE={GetGradeEnName(GetGradeOrder(TD_GRADE))}"); |
|
|
|
|
stream.WriteLine($"TA={info.TA}"); |
|
|
|
|
stream.WriteLine($"LGF={info.LGF * 100}"); |
|
|
|
|
stream.WriteLine($"STAR={info.STAR * 100}"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
private void ExcelFile(string filePath) |
|
|
|
|
{ |
|
|
|
|
string fileName = filePath + ".xlsx"; |
|
|
|
|
IWorkbook workbook = new XSSFWorkbook(); |
|
|
|
|
ISheet sheet = workbook.CreateSheet("Sheet1"); |
|
|
|
|
|
|
|
|
|
int col = 0; |
|
|
|
|
int row = 0; |
|
|
|
|
var dataRow = sheet.CreateRow(row); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Measurement1"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Measurement2"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Measurement3"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Table"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Crown Height"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Pavilion Depth"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Total Depth"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Crown Angle"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Pavilion Angle"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Culet Size"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Girdle Percent"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("Girdle Name"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("POL or Pol/Sym"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("SYM"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue("CUT-PROP"); |
|
|
|
|
row++; |
|
|
|
|
col = 0; |
|
|
|
|
dataRow = sheet.CreateRow(row); |
|
|
|
|
Measurements info = algorithmResult.measurements; |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.M1}(mm)"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.M2}(mm)"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.M3}(mm)"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.TABLE*100}%"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.CROWN_HEIGHT * 100}%"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.PAV_DEPTH * 100}%"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.TOTAL_DEPTH * 100}%"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.CROWN_ANGLE}°"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.PAV_ANGLE}°"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.CULET}(mm)"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.GIRDLE * 100}%"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{info.M1}"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($""); |
|
|
|
|
string sysmlevel = ""; |
|
|
|
|
if (!string.IsNullOrEmpty(SymLevelTotal)) |
|
|
|
|
{ |
|
|
|
|
sysmlevel = GetGradeEnName(GetGradeOrder(SymLevelTotal ?? "")); |
|
|
|
|
} |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{sysmlevel}"); |
|
|
|
|
dataRow.CreateCell(col++).SetCellValue($"{GetGradeEnName(GetGradeOrder(CutLevelTotal))}"); |
|
|
|
|
|
|
|
|
|
// 保存Excel文件 |
|
|
|
|
using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) |
|
|
|
|
{ |
|
|
|
|
workbook.Write(stream); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
private void DatFile(string filePath) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
File.Create(filePath + ".dat").Close(); |
|
|
|
|
} |
|
|
|
|
private void STLFile(string filePath) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
File.Create(filePath + ".stl").Close(); |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region 各类名称取得 |
|
|
|
|
private string GetName(string id) |
|
|
|
|
{ |
|
|
|
|
// TODO DB没关联 |
|
|
|
@ -504,6 +721,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
dictionary.Add("COC", "底尖偏心比"); |
|
|
|
|
dictionary.Add("TWIST", "扭曲度"); |
|
|
|
|
dictionary.Add("CULET_TO_TABLE", "底尖到台面偏心比"); |
|
|
|
|
dictionary.Add("round", "圆形"); |
|
|
|
|
return dictionary[id]; |
|
|
|
|
} |
|
|
|
|
private string GetGradeName(int order) |
|
|
|
@ -517,6 +735,30 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
dictionary.Add(5, "差"); |
|
|
|
|
return dictionary[order]; |
|
|
|
|
} |
|
|
|
|
private int GetGradeOrder(string Grade) |
|
|
|
|
{ |
|
|
|
|
// TODO DB没关联 |
|
|
|
|
Dictionary<string, int> dictionary = new(); |
|
|
|
|
dictionary.Add("极好", 1); |
|
|
|
|
dictionary.Add("很好", 2); |
|
|
|
|
dictionary.Add("好", 3); |
|
|
|
|
dictionary.Add("一般", 4); |
|
|
|
|
dictionary.Add("差", 5); |
|
|
|
|
return dictionary[Grade]; |
|
|
|
|
} |
|
|
|
|
private string GetGradeEnName(int order) |
|
|
|
|
{ |
|
|
|
|
// TODO DB没关联 |
|
|
|
|
Dictionary<int, string> dictionary = new(); |
|
|
|
|
dictionary.Add(1, "EXCELLENT-Ideal"); |
|
|
|
|
dictionary.Add(2, "EXCELLENT"); |
|
|
|
|
dictionary.Add(3, "VERY GOOD"); |
|
|
|
|
dictionary.Add(4, "GOOD"); |
|
|
|
|
dictionary.Add(5, "FAIR-POOR"); |
|
|
|
|
return dictionary[order]; |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// 修改对称性等级 |
|
|
|
|
/// </summary> |
|
|
|
@ -526,6 +768,7 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
int? order = this.DtResults.Select(x => x.SymLevel).Max(); |
|
|
|
|
if (order.HasValue) |
|
|
|
|
{ |
|
|
|
|
totalSymGrade = order.Value; |
|
|
|
|
SymLevelTotal = GetGradeName((int)order.Value); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -534,32 +777,6 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void InitCombobox() |
|
|
|
|
{ |
|
|
|
|
// DS下拉列表初始化 |
|
|
|
|
InitDSlist(); |
|
|
|
|
// 等级下拉列表初始化 |
|
|
|
|
InitGradeList(); |
|
|
|
|
} |
|
|
|
|
private void InitDSlist() |
|
|
|
|
{ |
|
|
|
|
DSList = new DataTable(); |
|
|
|
|
DSList.Columns.Add("Key"); |
|
|
|
|
DSList.Columns.Add("Value"); |
|
|
|
|
DSList.Rows.Add("pass", "pass"); |
|
|
|
|
DSList.Rows.Add("refer", "refer"); |
|
|
|
|
} |
|
|
|
|
private void InitGradeList() |
|
|
|
|
{ |
|
|
|
|
GradeList = new DataTable(); |
|
|
|
|
GradeList.Columns.Add("Key"); |
|
|
|
|
GradeList.Columns.Add("Value"); |
|
|
|
|
GradeList.Rows.Add("极好", "Exc"); |
|
|
|
|
GradeList.Rows.Add("很好", "VG"); |
|
|
|
|
GradeList.Rows.Add("好", "G"); |
|
|
|
|
GradeList.Rows.Add("一般", "F"); |
|
|
|
|
GradeList.Rows.Add("差", "P"); |
|
|
|
|
} |
|
|
|
|
#region 钻石操作相关 |
|
|
|
|
//暂略 |
|
|
|
|
//部分代码(直接操作控件)需要在xaml.cs里边写 |
|
|
|
@ -596,6 +813,7 @@ public class DataInfo |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
public bool isEnabled { get; set; } = true; |
|
|
|
|
private DataTable? _gradeList; |
|
|
|
|
public DataTable GradeList { |
|
|
|
|
get |
|
|
|
|