diff --git a/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfo.cs b/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfo.cs index ddc9d82..c8d8b02 100644 --- a/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfo.cs +++ b/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("YD_XinWei.Commons")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+782af8743bef71ca7e5f90325feac2f11e237ba5")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a425fcc1a41944f64a69d9b5ababdd07169c6a0d")] [assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Commons")] [assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Commons")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfoInputs.cache b/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfoInputs.cache index 47af991..bf2b749 100644 --- a/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfoInputs.cache +++ b/Server/YD_XinWei.Commons/obj/Debug/net6.0/YD_XinWei.Commons.AssemblyInfoInputs.cache @@ -1 +1 @@ -447043ac812b4df2d70deda46e4a67dbde0640288a02436e158cbdcbef673673 +ccb578c866c97170d1abbe168fb35ec821458a73a52b86c4e9d961def395e327 diff --git a/Server/YD_XinWei/Services/Impl/XinWeiService.cs b/Server/YD_XinWei/Services/Impl/XinWeiService.cs index 3263ab9..60093cd 100644 --- a/Server/YD_XinWei/Services/Impl/XinWeiService.cs +++ b/Server/YD_XinWei/Services/Impl/XinWeiService.cs @@ -353,6 +353,11 @@ namespace YD_XinWei.Api.Services.Impl stu.Achievement2 = stu.Achievement2 / 10; } + if (dto.ProjectId == 3) + { + stu.Achievement = (stu.Achievement ?? 0) / 1000; + } + if (dto.ProjectId == 21) { var value = stu.Achievement2; @@ -478,7 +483,7 @@ namespace YD_XinWei.Api.Services.Impl sportsTestValueEntity.Value = value; sportsTestValueEntity.Creator = dto.OrgId ?? 0; sportsTestValueEntity.CreateDate = nowTime; - sportsTestValueEntity.ScoreTime = Convert.ToDateTime(dto.StartTime); + sportsTestValueEntity.ScoreTime = Convert.ToDateTime(dto.EndTime); sportsTestValueEntity.AdditionalScore = (float)(data.PlusesScore ?? 0); SemesterDto semesterDto = new SemesterDto(); @@ -639,7 +644,7 @@ namespace YD_XinWei.Api.Services.Impl x.Achievement }).ToListAsync(); - var student = studentResults.Where(x => x.Id == dto.TrainStudentId).OrderByDescending(x => x.Achievement).FirstOrDefault(); + var student = studentResults.Where(x => x.Id == dto.TrainStudentId).OrderByDescending(x => x.Score).FirstOrDefault(); if (student == null) { @@ -691,6 +696,7 @@ namespace YD_XinWei.Api.Services.Impl /// public async Task HistoryPersonGet(HistoryPersonGetDto dto) { + // 1️⃣ 获取该机构、项目、模型类型的训练数据 var trainList = await _sportsContext.XW_SportsTestData .Where(x => x.OrgId == dto.OrgId && @@ -698,9 +704,14 @@ namespace YD_XinWei.Api.Services.Impl x.ModelType == dto.ModelType) .ToListAsync(); + if (!trainList.Any()) + return new TrainHistoryPersonVo(); + var trainIds = trainList.Select(t => t.Id).ToList(); - var studentResults = await _sportsContext.XW_TrainStudents.Where(x => trainIds.Contains(x.XW_SportsTestDataId)) + // 2️⃣ 获取学生成绩数据 + var studentResults = await _sportsContext.XW_TrainStudents + .Where(x => trainIds.Contains(x.XW_SportsTestDataId)) .Select(x => new { x.Id, @@ -712,38 +723,73 @@ namespace YD_XinWei.Api.Services.Impl x.Score, x.Achievement, x.CreateTime - }).ToListAsync(); + }) + .ToListAsync(); - var student = studentResults.Where(x => x.StudentId == dto.StudentId).OrderByDescending(x => x.Achievement).FirstOrDefault(); + // 3️⃣ 获取指定学生 + var student = studentResults + .Where(x => x.StudentId == dto.StudentId) + .OrderByDescending(x => x.Achievement) + .FirstOrDefault(); if (student == null) - { return new TrainHistoryPersonVo(); - } - var rankedResults = studentResults.Where(x => x.GradeId == student.GradeId) - .OrderByDescending(x => x.Achievement) - .Select((x, index) => new { x, Rank = index + 1 }) - .ToList(); - - var monthList = studentResults.Where(x => DateTime.TryParse(x.CreateTime, out var date) && date.Year == DateTime.Now.Year && date.Month == DateTime.Now.Month).ToList(); - var monthRankedResults = studentResults.Where(x => x.GradeId == student.GradeId) - .OrderByDescending(x => x.Achievement) + // 4️⃣ 历史排名(按 Score 排序) + var rankedResults = studentResults + .Where(x => x.GradeId == student.GradeId) + .OrderByDescending(x => x.Score) .Select((x, index) => new { x, Rank = index + 1 }) .ToList(); - var stuHeadUrl = await _sportsContext.Student.Where(x => x.Id == student.StudentId).Select(x => x.Photo).FirstOrDefaultAsync(); + // 5️⃣ 当月数据及当月排名(按 Score 排序) + var monthList = studentResults + .Where(x => DateTime.TryParse(x.CreateTime, out var date) + && date.Year == DateTime.Now.Year + && date.Month == DateTime.Now.Month) + .ToList(); + var monthRankedResults = monthList + .Where(x => x.GradeId == student.GradeId) + .OrderByDescending(x => x.Score) // 按 Score 排名 + .Select((x, index) => new { x, Rank = index + 1 }) + .ToList(); + + // 6️⃣ 获取学生头像 + var stuHeadUrl = await _sportsContext.Student + .Where(x => x.Id == student.StudentId) + .Select(x => x.Photo) + .FirstOrDefaultAsync(); + + // 7️⃣ 找总历史最高分对应的 Achievement(Score 最大) + var bestStudentOverall = studentResults + .OrderByDescending(x => x.Score) + .FirstOrDefault(); + + // 8️⃣ 找本月最高分对应的 Achievement(Score 最大) + var bestStudentMonth = monthList + .OrderByDescending(x => x.Score) + .FirstOrDefault(); + + // 9️⃣ 构建返回对象 var res = new TrainHistoryPersonVo() { ClassName = student.ClassName, HeadImgUrl = stuHeadUrl, Sex = student.Sex == 1 ? "男" : "女", StudentName = student.StudentName, - HistoryBestScore = studentResults.Max(x => x.Achievement).ToString() ?? "无数据", - HistoryRanking = rankedResults.FirstOrDefault(x => x.x.Achievement == student.Achievement)?.Rank.ToString() ?? "-1", - MonthBestScore = monthList.Max(x => x.Achievement).ToString() ?? "无数据", - MonthRanking = monthRankedResults.FirstOrDefault(x => x.x.Achievement == student.Achievement)?.Rank.ToString() ?? "-1" + + // 总历史最高成绩对应 Achievement + HistoryBestScore = bestStudentOverall?.Achievement?.ToString("0.###") ?? "无数据", + + // 历史排名(按 Score) + HistoryRanking = rankedResults.FirstOrDefault(x => x.x.Id == student.Id)?.Rank.ToString() ?? "-1", + + // 本月最高成绩对应 Achievement + MonthBestScore = bestStudentMonth?.Achievement?.ToString("0.###") ?? "无数据", + + // 当月排名(按 Score) + MonthRanking = monthRankedResults.FirstOrDefault(x => x.x.Id == student.Id)?.Rank.ToString() ?? "-1" }; return res; @@ -797,7 +843,8 @@ namespace YD_XinWei.Api.Services.Impl TrainStudentId = x.Id, ClassName = x.ClassName, CreateTime = x.CreateTime ?? "无数据", - Achievement = dto.ModelType == 7 ? (x.Achievement.HasValue ? $"{x.Achievement.Value / 1000}.{x.Achievement.Value % 1000}" : "无数据") : (x.Achievement.HasValue ? x.Achievement.Value.ToString() : "无数据"), + //Achievement = dto.ModelType == 7 ? (x.Achievement.HasValue ? $"{x.Achievement.Value / 1000}.{x.Achievement.Value % 1000}" : "无数据") : (x.Achievement.HasValue ? x.Achievement.Value.ToString() : "无数据"), + Achievement = x.Achievement.HasValue ? x.Achievement.Value.ToString("0.###") : "无数据", Rating = x.Score.GetRankStr(), Score = x.Score.ToString() ?? "无数据", Sex = x.Sex == 1 ? "男" : "女", @@ -910,7 +957,6 @@ namespace YD_XinWei.Api.Services.Impl return res; } - /// /// 获取成绩榜中显示的体育项目 /// diff --git a/Server/YD_XinWei/SmartSportsEntitys/XW_TrainStudents.cs b/Server/YD_XinWei/SmartSportsEntitys/XW_TrainStudents.cs index ff7ed00..d5217ca 100644 --- a/Server/YD_XinWei/SmartSportsEntitys/XW_TrainStudents.cs +++ b/Server/YD_XinWei/SmartSportsEntitys/XW_TrainStudents.cs @@ -37,7 +37,7 @@ namespace VOL.Entity.DomainModels.XinWei /// [Display(Name = "ProjectKind")] [Comment("项目类型(1跳绳2跑步)")] - public double? ProjectKind { get; set; } + public int? ProjectKind { get; set; } /// /// 学校ID @@ -121,7 +121,7 @@ namespace VOL.Entity.DomainModels.XinWei /// [Display(Name = "Sex")] [Comment("性别(1男2女)")] - public double? Sex { get; set; } + public int? Sex { get; set; } /// /// 学号 @@ -135,7 +135,7 @@ namespace VOL.Entity.DomainModels.XinWei /// [Display(Name = "Achievement")] [Comment("标准成绩")] - public int? Achievement { get; set; } + public double? Achievement { get; set; } /// /// 原始标准成绩(被格式化小数点之前的) diff --git a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfo.cs b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfo.cs index 9d39a7f..712489e 100644 --- a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfo.cs +++ b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("YD_XinWei.Api")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+782af8743bef71ca7e5f90325feac2f11e237ba5")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a425fcc1a41944f64a69d9b5ababdd07169c6a0d")] [assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Api")] [assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Api")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfoInputs.cache b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfoInputs.cache index b283f4b..945e6a7 100644 --- a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfoInputs.cache +++ b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.AssemblyInfoInputs.cache @@ -1 +1 @@ -6717e2e379a38b048ebb8caed4fe5b735e1362513cda51c914771a1e1cf058f6 +6e80e67035635d6beb9cea7c8e7e6068f63834e334f37871982a30f1e60e5a4c diff --git a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.csproj.AssemblyReference.cache b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.csproj.AssemblyReference.cache index cd24dbc..1dc6f7f 100644 Binary files a/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.csproj.AssemblyReference.cache and b/Server/YD_XinWei/obj/Debug/net6.0/YD_XinWei.Api.csproj.AssemblyReference.cache differ diff --git a/Server/YD_XinWei/obj/Debug/net6.0/apphost.exe b/Server/YD_XinWei/obj/Debug/net6.0/apphost.exe index 25b0dab..c041074 100644 Binary files a/Server/YD_XinWei/obj/Debug/net6.0/apphost.exe and b/Server/YD_XinWei/obj/Debug/net6.0/apphost.exe differ