diff --git a/SparkClient.csproj b/SparkClient.csproj
index 1334678..5f1fd7f 100644
--- a/SparkClient.csproj
+++ b/SparkClient.csproj
@@ -19,6 +19,7 @@
+
@@ -140,4 +141,10 @@
+
+
+ Code
+
+
+
diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs
index d76d9e7..3d6664c 100644
--- a/ViewModel/Grading/GradingResultVM.cs
+++ b/ViewModel/Grading/GradingResultVM.cs
@@ -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 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";
///
/// 构造
///
/// 检测结果
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
///
/// 参数列表测试内容获取
///
@@ -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 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 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
+
///
/// 修改对称性等级
///
@@ -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
diff --git a/Views/Dialog/SaveDialog.xaml b/Views/Dialog/SaveDialog.xaml
new file mode 100644
index 0000000..4f8a1e5
--- /dev/null
+++ b/Views/Dialog/SaveDialog.xaml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Views/Dialog/SaveDialog.xaml.cs b/Views/Dialog/SaveDialog.xaml.cs
new file mode 100644
index 0000000..899e71d
--- /dev/null
+++ b/Views/Dialog/SaveDialog.xaml.cs
@@ -0,0 +1,90 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+
+
+namespace SparkClient.Views.Dialog
+{
+ ///
+ /// StartDialog.xaml 的交互逻辑
+ ///
+ public partial class SaveDialog
+ {
+ public SaveDialog()
+ {
+ WindowStartupLocation = WindowStartupLocation.CenterScreen;
+ InitializeComponent();
+ // 动态设置圆角裁剪
+ this.Loaded += (s, e) => ApplyCornerRadiusClip();
+ this.SizeChanged += (s, e) => ApplyCornerRadiusClip(); // 保证在大小改变时也裁剪
+ this.Width = 562;
+ this.Height = 222;
+ }
+ #region 重写窗体操作按钮
+ private void Border_Minimize_MouseEnter(object sender, MouseEventArgs e)
+ {
+ // 鼠标进入时更改背景色
+ if (sender is Border border)
+ {
+ border.Background = new SolidColorBrush(Color.FromArgb(50, 255, 255, 255));
+ }
+ }
+ private void Border_Close_MouseEnter(object sender, MouseEventArgs e)
+ {
+ // 鼠标进入时更改背景色
+ if (sender is Border border)
+ {
+ border.Background = new SolidColorBrush(Color.FromArgb(50, 255, 0, 0));
+ }
+ }
+ private void Border_MouseLeave(object sender, MouseEventArgs e)
+ {
+ // 鼠标离开时恢复背景色
+ if (sender is Border border)
+ {
+ border.Background = new SolidColorBrush(Colors.Transparent);
+ }
+ }
+
+ private void Minimize_Click(object sender, MouseButtonEventArgs e)
+ {
+ this.WindowState = WindowState.Minimized;
+ }
+
+ private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+ {
+ if (e.LeftButton == MouseButtonState.Pressed)
+ {
+ try
+ {
+ this.DragMove();
+ }
+ catch (InvalidOperationException ex)
+ {
+
+ }
+ }
+ }
+ #endregion
+
+ private void Close_Click(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+ private void Ok_Click(object sender, RoutedEventArgs e)
+ {
+ if(DiamondCode.Text.Trim().Length>0) { this.Close(); }
+ }
+ private void ApplyCornerRadiusClip()
+ {
+ // 使用矩形几何生成圆角裁剪
+ this.Border.Clip = new RectangleGeometry
+ {
+ Rect = new Rect(0, 0, this.Border.ActualWidth, this.Border.ActualHeight),
+ RadiusX = this.Border.CornerRadius.TopLeft, // 使用 Border 的 CornerRadius
+ RadiusY = this.Border.CornerRadius.TopLeft
+ };
+ }
+ }
+}
diff --git a/Views/Grading/GradingResult.xaml b/Views/Grading/GradingResult.xaml
index cfcad93..ea13905 100644
--- a/Views/Grading/GradingResult.xaml
+++ b/Views/Grading/GradingResult.xaml
@@ -35,9 +35,9 @@
-
-
-
+
+
+
@@ -45,7 +45,7 @@
+ DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding DS, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
@@ -120,6 +120,11 @@
+
+
+
-
+
+
+
+
+
@@ -137,7 +150,7 @@
-