From c65fd9d3c24e3993c257f391e280059f7b28d1fc Mon Sep 17 00:00:00 2001 From: tanglong <842690096@qq.com> Date: Fri, 17 Jul 2026 14:07:58 +0800 Subject: [PATCH] time --- YD_YiLu/Services/Impl/DeviceSyncService.cs | 84 ++++++++++++++++++---- 1 file changed, 69 insertions(+), 15 deletions(-) diff --git a/YD_YiLu/Services/Impl/DeviceSyncService.cs b/YD_YiLu/Services/Impl/DeviceSyncService.cs index 2d1a3c1..ab16336 100644 --- a/YD_YiLu/Services/Impl/DeviceSyncService.cs +++ b/YD_YiLu/Services/Impl/DeviceSyncService.cs @@ -1118,6 +1118,20 @@ namespace YD_YiLu.Api.Services.Impl if (!trains.Any()) { + if (IsYtpSummaryDateType(dto.DateType)) + { + result.GradeList = new List + { + 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 { - 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)),