diff --git a/ViewModel/Grading/DiamondSelectVM.cs b/ViewModel/Grading/DiamondSelectVM.cs index cf5a7c7..2d25edb 100644 --- a/ViewModel/Grading/DiamondSelectVM.cs +++ b/ViewModel/Grading/DiamondSelectVM.cs @@ -6,7 +6,9 @@ using SparkClient.Views.Dialog; using System; using System.Diagnostics.Metrics; using System.DirectoryServices.ActiveDirectory; +using System.IO; using System.Reflection.Metadata; +using System.Text; using System.Windows; using System.Windows.Input; using System.Windows.Media.Imaging; @@ -96,17 +98,45 @@ public class DiamondSelectVM : BaseViewModel Buttons2 = tempButtons2; } } + public void StartGrading(object param) + { + DoStartGrading(param); + } /// /// 开始检测(对soc和算法开始通讯) /// /// - public async void StartGrading(object param) + public async void DoStartGrading(object param) { if (param != null) { + AlgorithmResultEntity parameter = new AlgorithmResultEntity(); + JsonImport jsonImport = new JsonImport(); + bool? a = jsonImport.ShowDialog(); + if (a ?? false) + { + string fileName = jsonImport.FilePath.Text; + string[] lines = File.ReadAllLines(fileName); + StringBuilder stringBuilder = new StringBuilder(); + + foreach (var line in lines) + { + stringBuilder.Append(line); + } + parameter = JsonConvert.DeserializeObject(stringBuilder.ToString()); + } + else + { + return; + } LoadingDialog loading = new LoadingDialog(); - var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => loading.ShowDialog())); + var tcs = new TaskCompletionSource(); + var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => { + loading.Closed += (s, e) => tcs.SetResult(true); + loading.ShowDialog(); + } + )); await Task.Run(async () => { for (int i = 0; i <= 100; i++) @@ -121,12 +151,14 @@ public class DiamondSelectVM : BaseViewModel }); } - SocResultEntity socResolt = new SocResultEntity(); - AlgorithmResultEntity parameter = new AlgorithmResultEntity(); - // 启动soc - socResolt = DoSoc(); - // 启动算法 - parameter = DoAlgorithm(); + // SocResultEntity socResolt = new SocResultEntity(); + // AlgorithmResultEntity parameter = new AlgorithmResultEntity(); + // // 启动soc + // socResolt = DoSoc(); + // // 启动算法 + // parameter = DoAlgorithm(); + + //parameter = DoSoc(); parameter.Standard = "IGI 2024"; string value = param.ToString()??""; if (value!= null && value.Split(" ").Length==3) diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs index 9fda292..f57db76 100644 --- a/ViewModel/Grading/GradingResultVM.cs +++ b/ViewModel/Grading/GradingResultVM.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.Data; using System.IO; using System.Reflection; @@ -26,7 +27,7 @@ public class GradingResultVM : BaseViewModel private string _wight; private string _cutLevelTotal; private string _symLevelTotal; - public ICommand ChangeNormCommand { get; } + public ICommand ChangeSymCommand { get; } public List DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } } public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } } public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } } @@ -48,7 +49,7 @@ public class GradingResultVM : BaseViewModel /// 检测结果 public GradingResultVM(object result) { - ChangeNormCommand = new RelayCommand(ChangeNorm); + ChangeSymCommand = new RelayCommand(ChangeSym); if (result != null) { InitView(result as AlgorithmResultEntity); @@ -243,8 +244,8 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "TOTAL_DEPTH"; info.TestItemName = GetName("TOTAL_DEPTH"); - info.Avg = result.measurements.TOTAL_DEPTH.ToString(digitsFormat); - info.CutLevel = calGrade_TOTAL_DEPTH(result.measurements.TOTAL_DEPTH); + info.Avg = Math.Floor(result.measurements.TOTAL_DEPTH*100).ToString(digitsFormat); + info.CutLevel = calGrade_TOTAL_DEPTH(result.measurements.TOTAL_DEPTH * 100); return info; } @@ -253,9 +254,9 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "TABLE"; info.TestItemName = GetName("TABLE"); - info.Avg = result.measurements.TABLE.ToString(digitsFormat); - info.Min = result.measurements.TABLE_MIN.ToString(digitsFormat); - info.Max = result.measurements.TABLE_MAX.ToString(digitsFormat); + 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.CutLevel = calGrade_TABLE(result.measurements.TABLE_MIN, result.measurements.TABLE_MAX); return info; } @@ -278,10 +279,10 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "CROWN_HEIGHT"; info.TestItemName = GetName("CROWN_HEIGHT"); - info.Avg = result.measurements.CROWN_HEIGHT.ToString(digitsFormat); - info.Dev = result.measurements.CROWN_H_DEV.ToString(digitsFormat); - info.Min = result.measurements.CROWN_H_MIN.ToString(digitsFormat); - info.Max = result.measurements.CROWN_H_MAX.ToString(digitsFormat); + 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); return info; } @@ -291,10 +292,10 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "GIRDLE_BEZEL"; info.TestItemName = GetName("GIRDLE_BEZEL"); - info.Avg = result.measurements.GIRDLE_BEZEL.ToString(digitsFormat); - info.Dev = result.measurements.GIRDLE_BEZEL_DEV.ToString(digitsFormat); - info.Min = result.measurements.GIRDLE_BEZEL_MIN.ToString(digitsFormat); - info.Max = result.measurements.GIRDLE_BEZEL_MAX.ToString(digitsFormat); + 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); return info; } @@ -303,9 +304,9 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "GIRDLE_BONE"; info.TestItemName = GetName("GIRDLE_BONE"); - info.Avg = result.measurements.GIRDLE_BONE.ToString(digitsFormat); - info.Min = result.measurements.GIRDLE_BONE_MIN.ToString(digitsFormat); - info.Max = result.measurements.GIRDLE_BONE_MAX.ToString(digitsFormat); + 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); return info; } @@ -314,10 +315,10 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "GIRDLE"; info.TestItemName = GetName("GIRDLE"); - info.Avg = result.measurements.GIRDLE.ToString(digitsFormat); - info.Dev = result.measurements.GIRDLE_DEV.ToString(digitsFormat); - info.Min = result.measurements.GIRDLE_MIN.ToString(digitsFormat); - info.Max = result.measurements.GIRDLE_MAX.ToString(digitsFormat); + 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); return info; } @@ -340,10 +341,10 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "PAV_DEPTH"; info.TestItemName = GetName("PAV_DEPTH"); - info.Avg = result.measurements.PAV_DEPTH.ToString(digitsFormat); - info.Dev = result.measurements.PAV_DEPTH_DEV.ToString(digitsFormat); - info.Min = result.measurements.PAV_DEPTH_MIN.ToString(digitsFormat); - info.Max = result.measurements.PAV_DEPTH_MAX.ToString(digitsFormat); + 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); return info; } @@ -353,9 +354,9 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "STAR"; info.TestItemName = GetName("STAR"); - info.Avg = result.measurements.STAR.ToString(digitsFormat); - info.Min = result.measurements.STAR_MIN.ToString(digitsFormat); - info.Max = result.measurements.STAR_MAX.ToString(digitsFormat); + 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); return info; } @@ -364,9 +365,9 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "LOWER_HALVES_RATIO"; info.TestItemName = GetName("LOWER_HALVES_RATIO"); - info.Avg = result.measurements.LOWER_HALVES_RATIO.ToString(digitsFormat); - info.Min = result.measurements.LOWER_HALVES_RATIO_MIN.ToString(digitsFormat); - info.Max = result.measurements.LOWER_HALVES_RATIO_MAX.ToString(digitsFormat); + 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); return info; } @@ -375,7 +376,7 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "CULET"; info.TestItemName = GetName("CULET"); - info.Avg = result.measurements.CULET.ToString(digitsFormat); + info.Avg = Math.Floor(result.measurements.CULET * 100).ToString(digitsFormat); return info; } @@ -384,7 +385,7 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "TOC"; info.TestItemName = GetName("TOC"); - info.Avg = result.measurements.TOC.ToString(digitsFormat); + info.Avg = Math.Floor(result.measurements.TOC * 100).ToString(digitsFormat); return info; } @@ -393,7 +394,7 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "COC"; info.TestItemName = GetName("COC"); - info.Avg = result.measurements.COC.ToString(digitsFormat); + info.Avg = Math.Floor(result.measurements.COC * 100).ToString(digitsFormat); return info; } @@ -402,10 +403,10 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "TWIST"; info.TestItemName = GetName("TWIST"); - info.Avg = result.measurements.TWIST.ToString(digitsFormat); - info.Dev = result.measurements.TWIST_DEV.ToString(digitsFormat); - info.Min = result.measurements.TWIST_MIN.ToString(digitsFormat); - info.Max = result.measurements.TWIST_MAX.ToString(digitsFormat); + 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); return info; } @@ -414,7 +415,7 @@ public class GradingResultVM : BaseViewModel DataInfo info = new DataInfo(); info.TestItemId = "CULET_TO_TABLE"; info.TestItemName = GetName("CULET_TO_TABLE"); - info.Avg = result.measurements.CULET_TO_TABLE.ToString(digitsFormat); + info.Avg = Math.Floor(result.measurements.CULET_TO_TABLE * 100).ToString(digitsFormat); return info; } #endregion @@ -435,7 +436,25 @@ public class GradingResultVM : BaseViewModel private string GetName(string id) { // TODO DB没关联 - return id; + Dictionary dictionary = new(); + dictionary.Add("DIAMETER", "直径"); + dictionary.Add("TOTAL_DEPTH", "全深比"); + dictionary.Add("TABLE", "台宽比"); + dictionary.Add("CROWN_ANGLE", "冠角"); + dictionary.Add("CROWN_HEIGHT", "冠高比"); + dictionary.Add("GIRDLE_BEZEL", "波峰(风筝面)"); + dictionary.Add("GIRDLE_BONE", "波峰(上腰面)"); + dictionary.Add("GIRDLE", "腰厚比"); + dictionary.Add("PAV_ANGLE", "亭角"); + dictionary.Add("PAV_DEPTH", "亭深比"); + dictionary.Add("STAR", "星刻面长度比"); + dictionary.Add("LOWER_HALVES_RATIO", "下腰比"); + dictionary.Add("CULET", "底尖比"); + dictionary.Add("TOC", "台面偏心比"); + dictionary.Add("COC", "底尖偏心比"); + dictionary.Add("TWIST", "扭曲度"); + dictionary.Add("CULET_TO_TABLE", "底尖到台面偏心比"); + return dictionary[id]; } private string GetGradeName(int order) { @@ -449,12 +468,20 @@ public class GradingResultVM : BaseViewModel return dictionary[order]; } /// - /// 修改检测标准 + /// 修改对称性等级 /// /// - public void ChangeNorm(object norm) + public void ChangeSym(object norm) { - + int? order = this.DtResults.Select(x => x.SymLevel).Max(); + if (order.HasValue) + { + SymLevelTotal = GetGradeName((int)order.Value); + } + else + { + SymLevelTotal = string.Empty; + } } private void InitCombobox() @@ -496,7 +523,7 @@ public class CalGradeInfo{ public int isMaxExist { get; set; } public int isMinExist { get; set; } } -public class DataInfo() +public class DataInfo() : BaseViewModel { public string? TestItemId { get; set; } public string? TestItemName { get; set; } @@ -505,17 +532,18 @@ public class DataInfo() public string? Min { get; set; } public string? Max { get; set; } public string? CutLevel { get; set; } - public string? SymLevel { get; set; } + private int? _symLevel; + public int? SymLevel { get { return _symLevel; } set { _symLevel = value; OnPropertyChanged(nameof(SymLevel)); }} public DataTable GradeList { get { // TODO DB没关联 DataTable GradeList = new DataTable(); GradeList.Columns.Add("Key"); GradeList.Columns.Add("Value"); - GradeList.Rows.Add("极好", "1"); - GradeList.Rows.Add("很好", "2"); - GradeList.Rows.Add("好", "3"); - GradeList.Rows.Add("一般", "4"); - GradeList.Rows.Add("差", "5"); + GradeList.Rows.Add("极好", 1); + GradeList.Rows.Add("很好", 2); + GradeList.Rows.Add("好", 3); + GradeList.Rows.Add("一般", 4); + GradeList.Rows.Add("差", 5); return GradeList; } } diff --git a/Views/Dialog/JsonImport.xaml b/Views/Dialog/JsonImport.xaml new file mode 100644 index 0000000..27dbf80 --- /dev/null +++ b/Views/Dialog/JsonImport.xaml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +