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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +