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