diff --git a/YD_AllHeartRates.Api/Services/Impl/HeartRateReportHelper.cs b/YD_AllHeartRates.Api/Services/Impl/HeartRateReportHelper.cs index 8777e94..39cc409 100644 --- a/YD_AllHeartRates.Api/Services/Impl/HeartRateReportHelper.cs +++ b/YD_AllHeartRates.Api/Services/Impl/HeartRateReportHelper.cs @@ -14,16 +14,23 @@ namespace YD_AllHeartRates.Api.Services.Impl public static ChartDataDto BuildHeartRateTrend(List data) { + if (data == null || data.Count == 0) + return new ChartDataDto(); + + // 按小时分组计算平均值(四舍五入) var hourlyAvg = data .GroupBy(x => x.ScoreTime.Hour) - .OrderBy(g => g.Key) .ToDictionary(g => g.Key, g => (int)Math.Round(g.Average(x => x.Value))); + // 获取最小和最大小时 + int minHour = data.Min(x => x.ScoreTime.Hour); + int maxHour = data.Max(x => x.ScoreTime.Hour); + var chart = new ChartDataDto(); - foreach (var hour in hourlyAvg.Keys) + for (int hour = minHour; hour <= maxHour; hour++) { chart.AxisX.Add($"{hour:00}:00"); - chart.AxisY.Add(hourlyAvg[hour]); + chart.AxisY.Add(hourlyAvg.TryGetValue(hour, out int val) ? val : 0); } return chart;