diff --git a/Helpers/DatabaseService.cs b/Helpers/DatabaseService.cs index 26e3bae..81fc69c 100644 --- a/Helpers/DatabaseService.cs +++ b/Helpers/DatabaseService.cs @@ -84,5 +84,16 @@ namespace TabletTester2025.Services query = query.OrderByDescending(b => b.TestTime).Take(limit); return query.ToList(); } + + public void DeleteBatch(int id) + { + using var db = new AppDbContext(_connectionString); + var batch = db.TestBatches.Find(id); + if (batch != null) + { + db.TestBatches.Remove(batch); + db.SaveChanges(); + } + } } } diff --git a/Services/ExcelExportService.cs b/Services/ExcelExportService.cs index c13a32b..3936c61 100644 --- a/Services/ExcelExportService.cs +++ b/Services/ExcelExportService.cs @@ -60,7 +60,7 @@ namespace TabletTester2025.Services { var data = batches.ToList(); var sheet = package.Workbook.Worksheets.Add("硬度报表"); - WriteHeader(sheet, "检测时间", "样品名称", "平均值(N)", "平均偏差(N)", "RSD(%)", "最大值(N)", "最小值(N)", "测试次数", "单次数据(N)", "内控下限(N)", "内控上限(N)", "判定"); + WriteHeader(sheet, "检测时间", "样品名称", "平均值(N)", "平均偏差(N)", "RSD(%)", "最大值(N)", "最小值(N)", "测试次数", "单次数据(N)", "判定"); if (data.Count == 0) { @@ -81,9 +81,7 @@ namespace TabletTester2025.Services sheet.Cells[row, 7].Value = b.HardnessMin; sheet.Cells[row, 8].Value = b.HardnessTestCount; sheet.Cells[row, 9].Value = b.HardnessSampleSummary; - sheet.Cells[row, 10].Value = b.HardnessInternalMin; - sheet.Cells[row, 11].Value = b.HardnessInternalMax; - sheet.Cells[row, 12].Value = b.HardnessPassText; + sheet.Cells[row, 10].Value = b.HardnessPassText; row++; } @@ -150,7 +148,7 @@ namespace TabletTester2025.Services { var data = batches.ToList(); var sheet = package.Workbook.Worksheets.Add("崩解报表"); - WriteHeader(sheet, "检测时间", "样品名称", "剂型规格", "时限(秒)", "崩解时间(秒)", "剩余未崩解管", "水浴温度(℃)", "判定"); + WriteHeader(sheet, "检测时间", "样品名称", "崩解时间(秒)", "水浴温度(℃)", "判定"); if (data.Count == 0) { @@ -164,12 +162,9 @@ namespace TabletTester2025.Services { sheet.Cells[row, 1].Value = b.TestTime.ToString("yyyy-MM-dd HH:mm:ss"); sheet.Cells[row, 2].Value = b.SampleName; - sheet.Cells[row, 3].Value = b.DisintegrationDosageForm; - sheet.Cells[row, 4].Value = b.DisintegrationLimitSeconds; - sheet.Cells[row, 5].Value = b.DisintegrationTimeSec; - sheet.Cells[row, 6].Value = b.RemainingTubesAtEnd; - sheet.Cells[row, 7].Value = b.DisintegrationTemp; - sheet.Cells[row, 8].Value = b.DisintegrationPassText; + sheet.Cells[row, 3].Value = b.DisintegrationTimeSec; + sheet.Cells[row, 4].Value = b.DisintegrationTemp; + sheet.Cells[row, 5].Value = b.DisintegrationPassText; row++; } diff --git a/ViewModels/HardnessDisplaySamplePoint.cs b/ViewModels/HardnessDisplaySamplePoint.cs index 8d5ae75..96c7ca9 100644 --- a/ViewModels/HardnessDisplaySamplePoint.cs +++ b/ViewModels/HardnessDisplaySamplePoint.cs @@ -14,6 +14,13 @@ namespace TabletTester2025.ViewModels private double _groupAverageDeviation; private double _groupRSD; private DateTime _recordedAt; + private bool _isSummaryRow; + + public bool IsSummaryRow + { + get => _isSummaryRow; + set => SetProperty(ref _isSummaryRow, value); + } public int GroupNo { diff --git a/ViewModels/StationViewModel.cs b/ViewModels/StationViewModel.cs index f71d4a2..4cc4b1f 100644 --- a/ViewModels/StationViewModel.cs +++ b/ViewModels/StationViewModel.cs @@ -1625,6 +1625,7 @@ namespace TabletTester2025.ViewModels throw new InvalidOperationException("硬度测试已停止,未保存结果"); ApplyHardnessStatistics(count); + AddHardnessGroupSummaryRow(); resultReady = true; } catch (Exception ex) @@ -1775,6 +1776,29 @@ namespace TabletTester2025.ViewModels } } + private void AddHardnessGroupSummaryRow() + { + var stats = TestCalculationService.CalculateHardness( + _hardnessResults, + HardnessInternalMin, + HardnessInternalMax, + _hardnessResults.Count); + + HardnessDisplaySamplePoints.Add(new HardnessDisplaySamplePoint + { + IsSummaryRow = true, + GroupNo = _currentHardnessGroupNo, + CumulativeNo = 0, + SequenceNo = 0, + Value = 0, + DeviationFromAverage = 0, + GroupAverage = stats.Average, + GroupAverageDeviation = stats.AverageDeviation, + GroupRSD = stats.RsdPercent, + RecordedAt = DateTime.MinValue + }); + } + /// 脆碎度测试主逻辑(实时状态显示) private async Task RunFriabilityAsync() diff --git a/Views/HistoryWindow.xaml b/Views/HistoryWindow.xaml index b172c21..e41a920 100644 --- a/Views/HistoryWindow.xaml +++ b/Views/HistoryWindow.xaml @@ -79,7 +79,7 @@ - @@ -94,6 +94,28 @@ + + + - + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + +