This commit is contained in:
tanglong 2026-07-17 14:07:58 +08:00
parent 4627cf9bb5
commit c65fd9d3c2

View File

@ -1118,6 +1118,20 @@ namespace YD_YiLu.Api.Services.Impl
if (!trains.Any())
{
if (IsYtpSummaryDateType(dto.DateType))
{
result.GradeList = new List<YtpGradeListItem>
{
new YtpGradeListItem
{
Time = GetYtpSummaryTime(dto.DateType),
Duration = "0",
Count = "0"
}
};
return result;
}
var today = DateTime.Now.Date;
result.GradeList = Enumerable.Range(0, 7)
.Select(i => today.AddDays(i - 6))
@ -1137,22 +1151,37 @@ namespace YD_YiLu.Api.Services.Impl
result.TrainHours = (totalSeconds / 3600.0).ToString("0.00");
result.TrainCounts = trains.Count;
var graphEnd = end?.Date ?? DateTime.Now.Date;
var graphStart = graphEnd.AddDays(-6);
result.GradeList = Enumerable.Range(0, 7)
.Select(i => graphStart.AddDays(i))
.Select(day =>
if (IsYtpSummaryDateType(dto.DateType))
{
result.GradeList = new List<YtpGradeListItem>
{
var dayTrains = trains.Where(x => x.StartTime.Date == day).ToList();
var daySeconds = dayTrains.Sum(x => x.Duration);
return new YtpGradeListItem
new YtpGradeListItem
{
Time = day.ToString("MM-dd"),
Duration = SecondsToHours(daySeconds),
Count = dayTrains.Count.ToString()
};
})
.ToList();
Time = GetYtpSummaryTime(dto.DateType),
Duration = SecondsToHours(totalSeconds),
Count = trains.Count.ToString()
}
};
}
else
{
var graphEnd = end?.Date ?? DateTime.Now.Date;
var graphStart = graphEnd.AddDays(-6);
result.GradeList = Enumerable.Range(0, 7)
.Select(i => graphStart.AddDays(i))
.Select(day =>
{
var dayTrains = trains.Where(x => x.StartTime.Date == day).ToList();
var daySeconds = dayTrains.Sum(x => x.Duration);
return new YtpGradeListItem
{
Time = day.ToString("MM-dd"),
Duration = SecondsToHours(daySeconds),
Count = dayTrains.Count.ToString()
};
})
.ToList();
}
result.GraphTrainList = trains
.GroupBy(x => x.CourseId)
@ -1412,6 +1441,31 @@ namespace YD_YiLu.Api.Services.Impl
return (seconds / 3600.0).ToString("0.####");
}
private static bool IsYtpSummaryDateType(int dateType)
{
return dateType == 4 || dateType == 9;
}
private static string GetYtpSummaryTime(int dateType)
{
if (dateType == 9)
return DateTime.Now.Year.ToString();
var (start, end) = GetCurrentSemesterRange(DateTime.Now.Date);
return $"{start:MM-dd}~{end:MM-dd}";
}
private static (DateTime start, DateTime end) GetCurrentSemesterRange(DateTime today)
{
if (today.Month >= 2 && today.Month <= 8)
return (new DateTime(today.Year, 2, 1), new DateTime(today.Year, 8, 31));
if (today.Month >= 9)
return (new DateTime(today.Year, 9, 1), new DateTime(today.Year + 1, 1, 31));
return (new DateTime(today.Year - 1, 9, 1), new DateTime(today.Year, 1, 31));
}
private static (DateTime? start, DateTime? end) GetDateRange(int dateType, string queryStart, string queryEnd)
{
var today = DateTime.Now.Date;
@ -1423,7 +1477,7 @@ namespace YD_YiLu.Api.Services.Impl
1 => (today, today),
2 => (weekStart, today),
3 => (monthStart, today),
4 => (today.Month >= 9 ? new DateTime(today.Year, 9, 1) : new DateTime(today.Year - 1, 9, 1), today),
4 => GetCurrentSemesterRange(today),
5 => (DateTime.TryParse(queryStart, out var s) ? s : (DateTime?)null, DateTime.TryParse(queryEnd, out var e) ? e : (DateTime?)null),
6 => (weekStart.AddDays(-7), weekStart.AddDays(-1)),
7 => (monthStart.AddMonths(-1), monthStart.AddDays(-1)),