排行榜

This commit is contained in:
tl 2025-03-03 17:08:29 +08:00
parent 2b2125ad0e
commit a8f22950c2
44 changed files with 129 additions and 39 deletions

View File

@ -108,6 +108,13 @@ namespace YD_XinWei.Commons.Utils
return true;
return str.ToString() == "";
}
public static string ConvertSecondsToMinutes(this int? totalSeconds)
{
if (totalSeconds == null || totalSeconds < 0) return "0分0秒";
int minutes = totalSeconds.Value / 60;
int seconds = totalSeconds.Value % 60;
return $"{minutes}分{seconds}秒";
}
}
}

View File

@ -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+e81823ef15e02c113f3f600253339ecd8a261df3")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2b2125ad0e1121cb29ce52823500492b72804ef4")]
[assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Commons")]
[assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Commons")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
b903a1b136d5569b0948134d6f61053d4944399d42dfb7e425ea178fbb7f8900
1e484a3d27e1f74ec57800a8e338f80e589ab5dd7be8d21d9704353e315b0fd3

View File

@ -1 +1 @@
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=e81823ef15e02c113f3f600253339ecd8a261df3&path=/*"}}
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=2b2125ad0e1121cb29ce52823500492b72804ef4&path=/*"}}

View File

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>C:\Users\Administrator\Desktop\web</_PublishTargetUrl>
<History>True|2025-03-03T01:48:28.0446948Z||;True|2025-03-03T09:47:48.0506237+08:00||;True|2025-03-03T00:03:13.7940731+08:00||;True|2025-03-03T00:00:20.5217808+08:00||;True|2025-02-28T11:24:13.9529058+08:00||;True|2025-02-28T09:52:09.1224260+08:00||;True|2025-02-28T09:09:07.6159508+08:00||;True|2025-02-28T09:03:19.5987556+08:00||;True|2025-02-27T17:59:35.8321576+08:00||;True|2025-02-27T16:51:44.0193039+08:00||;True|2025-02-27T15:48:03.7178463+08:00||;True|2025-02-27T15:39:09.5704225+08:00||;True|2025-02-27T15:39:01.0906094+08:00||;True|2025-02-27T15:35:52.5141530+08:00||;True|2025-02-27T15:22:55.6480561+08:00||;True|2025-02-25T15:05:56.3704383+08:00||;True|2025-02-25T13:21:45.5812878+08:00||;True|2025-02-25T13:13:06.3991346+08:00||;True|2025-02-25T11:07:59.4322341+08:00||;True|2025-02-24T17:36:36.0385118+08:00||;True|2025-02-24T17:35:30.9660778+08:00||;True|2025-02-20T19:00:03.7732903+08:00||;True|2025-02-20T15:23:37.7886196+08:00||;False|2025-02-20T15:22:58.3942454+08:00||;True|2025-02-14T15:16:29.2049523+08:00||;True|2025-02-14T15:16:20.2358210+08:00||;True|2025-02-14T13:35:25.1397559+08:00||;True|2025-02-14T09:28:15.0882633+08:00||;True|2025-02-13T14:51:00.7069070+08:00||;True|2025-02-13T13:14:19.5524368+08:00||;True|2025-02-12T15:43:03.6376536+08:00||;True|2025-02-12T15:30:37.0534250+08:00||;True|2025-02-12T15:19:48.3629666+08:00||;True|2025-02-12T15:15:46.5702121+08:00||;True|2025-02-12T10:25:29.9566462+08:00||;True|2025-02-12T10:25:23.6583245+08:00||;False|2025-02-12T10:24:25.4235783+08:00||;True|2024-10-08T10:27:01.3672443+08:00||;True|2024-10-08T10:16:00.0834614+08:00||;</History>
<History>True|2025-03-03T08:41:37.7278763Z||;True|2025-03-03T16:34:04.0026009+08:00||;True|2025-03-03T16:24:01.4887542+08:00||;True|2025-03-03T15:24:09.5376627+08:00||;True|2025-03-03T14:32:46.5288364+08:00||;True|2025-03-03T14:18:41.8795454+08:00||;True|2025-03-03T13:39:33.1620349+08:00||;True|2025-03-03T13:13:48.7851364+08:00||;True|2025-03-03T09:48:28.0446948+08:00||;True|2025-03-03T09:47:48.0506237+08:00||;True|2025-03-03T00:03:13.7940731+08:00||;True|2025-03-03T00:00:20.5217808+08:00||;True|2025-02-28T11:24:13.9529058+08:00||;True|2025-02-28T09:52:09.1224260+08:00||;True|2025-02-28T09:09:07.6159508+08:00||;True|2025-02-28T09:03:19.5987556+08:00||;True|2025-02-27T17:59:35.8321576+08:00||;True|2025-02-27T16:51:44.0193039+08:00||;True|2025-02-27T15:48:03.7178463+08:00||;True|2025-02-27T15:39:09.5704225+08:00||;True|2025-02-27T15:39:01.0906094+08:00||;True|2025-02-27T15:35:52.5141530+08:00||;True|2025-02-27T15:22:55.6480561+08:00||;True|2025-02-25T15:05:56.3704383+08:00||;True|2025-02-25T13:21:45.5812878+08:00||;True|2025-02-25T13:13:06.3991346+08:00||;True|2025-02-25T11:07:59.4322341+08:00||;True|2025-02-24T17:36:36.0385118+08:00||;True|2025-02-24T17:35:30.9660778+08:00||;True|2025-02-20T19:00:03.7732903+08:00||;True|2025-02-20T15:23:37.7886196+08:00||;False|2025-02-20T15:22:58.3942454+08:00||;True|2025-02-14T15:16:29.2049523+08:00||;True|2025-02-14T15:16:20.2358210+08:00||;True|2025-02-14T13:35:25.1397559+08:00||;True|2025-02-14T09:28:15.0882633+08:00||;True|2025-02-13T14:51:00.7069070+08:00||;True|2025-02-13T13:14:19.5524368+08:00||;True|2025-02-12T15:43:03.6376536+08:00||;True|2025-02-12T15:30:37.0534250+08:00||;True|2025-02-12T15:19:48.3629666+08:00||;True|2025-02-12T15:15:46.5702121+08:00||;True|2025-02-12T10:25:29.9566462+08:00||;True|2025-02-12T10:25:23.6583245+08:00||;False|2025-02-12T10:24:25.4235783+08:00||;True|2024-10-08T10:27:01.3672443+08:00||;True|2024-10-08T10:16:00.0834614+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -12,6 +12,8 @@ using YD_XinWei.Commons.Dto.Common;
using YD_XinWei.Commons.Dto.HomeWork;
using YD_XinWei.Commons.Dto.Open;
using YD_XinWei.Commons.Dto.School;
using YD_XinWei.Commons;
using YD_XinWei.Commons.Utils;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace YD_XinWei.Api.Services.Impl
@ -78,7 +80,6 @@ namespace YD_XinWei.Api.Services.Impl
IsOpen = x.IsOpen,
IsShow = x.IsShow,
ProjectName = x.ProjectName
}).ToListAsync();
return res;
@ -361,9 +362,46 @@ namespace YD_XinWei.Api.Services.Impl
/// <param name="trainId"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public Task<GradeRankingVo> GradeRankingGet(int studentId, int trainId)
public async Task<GradeRankingVo> GradeRankingGet(int studentId, int trainId)
{
throw new NotImplementedException();
var res = new GradeRankingVo();
var now = DateTime.UtcNow;
var firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
var studentResults = await _sportsContext.XW_TrainStudents.Where(x => x.XW_SportsTestDataId == trainId)
.Select(x => new
{
x.GradeId,
x.StudentId,
x.StudentName,
x.Rating,
x.CreateTime,
x.Score
}).ToListAsync();
var student = studentResults.FirstOrDefault(x => x.StudentId == studentId);
if (student == null)
{
return res;
}
var rankedResults = studentResults
.Where(x => x.GradeId == student.GradeId &&
DateTime.TryParse(x.CreateTime, out var createTime) &&
createTime >= firstDayOfMonth && createTime <= lastDayOfMonth)
.OrderByDescending(x => x.Score)
.Select((x, index) => new { x.StudentId, Rank = index + 1 })
.ToList();
var studentRank = rankedResults.FirstOrDefault(x => x.StudentId == student.StudentId)?.Rank.ToString() ?? "无数据";
res.Rating = student.Rating.ToString() ?? "无数据";
res.MonthRanking = studentRank;
return res;
}
/// <summary>
@ -413,15 +451,15 @@ namespace YD_XinWei.Api.Services.Impl
{
TrainStudentId = x.Id,
ClassName = x.ClassName,
CreateTime = x.CreateTime,
Achievement = x.Achievement.ToString(),
Rating = x.Rating.ToString(),
Score = x.Score.ToString(),
Sex = x.Sex.ToString(),
CreateTime = x.CreateTime ?? "无数据",
Achievement = x.Achievement.ToString() ?? "无数据",
Rating = x.Rating.ToString() ?? "无数据",
Score = x.Score.ToString() ?? "无数据",
Sex = x.Sex == 1 ? "男" : "女",
StudentName = x.StudentName,
TouristFlag = false,
DoubleFlag = false,
})
}).OrderByDescending(x => x.CreateTime)
.ToListAsync();
res.Total = total;
@ -431,7 +469,6 @@ namespace YD_XinWei.Api.Services.Impl
}
/// <summary>
/// 历史记录详细
/// </summary>
@ -439,18 +476,57 @@ namespace YD_XinWei.Api.Services.Impl
/// <returns></returns>
public async Task<TrainAnalusisVo> TrainAnalysisHistoryDetail(HistoryDetailRequestDto dto)
{
var trainModel = await _sportsContext.XW_TrainStudents.Where(x => x.Id == dto.TrainStudentId).Select(x => new { x.XW_SportsTestDataId, x.StudentId }).FirstAsync();
var stuHeadUrl = await _sportsContext.Student.Where(x => x.Id == trainModel.StudentId).Select(x => x.Photo).FirstOrDefaultAsync();
var trainName = await _sportsContext.XW_SportsTestData.Where(x => x.Id == trainModel.XW_SportsTestDataId).Select(x => x.ProjectName).FirstOrDefaultAsync();
var now = DateTime.UtcNow;
var firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
var studentResults = await _sportsContext.XW_TrainStudents.Where(x => x.XW_SportsTestDataId == trainModel.XW_SportsTestDataId)
.Select(x => new
{
x.GradeId,
x.StudentId,
x.StudentName,
x.Rating,
x.CreateTime,
x.Score
}).ToListAsync();
var student = studentResults.FirstOrDefault(x => x.StudentId == trainModel.StudentId);
if (student == null)
{
return null;
}
var rankedResults = studentResults
.Where(x => x.GradeId == student.GradeId &&
DateTime.TryParse(x.CreateTime, out var createTime) &&
createTime >= firstDayOfMonth && createTime <= lastDayOfMonth)
.OrderByDescending(x => x.Score)
.Select((x, index) => new { x.StudentId, Rank = index + 1 })
.ToList();
var studentRank = rankedResults.FirstOrDefault(x => x.StudentId == student.StudentId)?.Rank.ToString() ?? "无数据";
var res = await _sportsContext.XW_TrainStudents.Where(x => x.Id == dto.TrainStudentId).Include(x => x.TrainViolationsBO).Select(x => new TrainAnalusisVo()
{
Achievement = x.Achievement.ToString(),
Achievement = x.Achievement.ToString() ?? "无数据",
ClassName = x.ClassName,
GradeRanking = x.Ranking.ToString(),
HeadImgUrl = "",
ProjectName = "",
Rating = x.Rating.ToString(),
Score = x.Score.ToString(),
Sex = x.Sex.ToString(),
GradeRanking = studentRank,
HeadImgUrl = stuHeadUrl,
ProjectName = trainName,
Rating = x.Rating.ToString() ?? "无数据",
Score = x.Score.ToString() ?? "无数据",
Sex = x.Sex == 1 ? "男" : "女",
StudentName = x.StudentName,
Times = x.ErrorCount.ToString(),
Times = $"{x.ErrorTime.ConvertSecondsToMinutes()}/{x.ErrorCount}",
ViolationsNumber = x.TrainViolationsBO.Count(),
TrainViolationsVo = x.TrainViolationsBO.Select(x => new TrainViolationsVo()
{
@ -463,6 +539,8 @@ namespace YD_XinWei.Api.Services.Impl
}).FirstOrDefaultAsync();
return res;
}
@ -485,6 +563,7 @@ namespace YD_XinWei.Api.Services.Impl
var studentResults = await _sportsContext.XW_TrainStudents.Where(x => trainIds.Contains(x.XW_SportsTestDataId))
.Select(x => new
{
x.Id,
x.ClassName,
x.StudentId,
x.StudentName,
@ -512,12 +591,13 @@ namespace YD_XinWei.Api.Services.Impl
.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();
var res = new TrainHistoryPersonVo()
{
ClassName = student.ClassName,
HeadImgUrl = "",
Sex = student.Sex?.ToString() ?? "无数据",
HeadImgUrl = stuHeadUrl,
Sex = student.Sex == 1 ? "男" : "女",
StudentName = student.StudentName,
HistoryBestScore = studentResults.Max(x => x.Score)?.ToString() ?? "无数据",
HistoryRanking = rankedResults.FirstOrDefault(x => x.x.Score == student.Score)?.Rank.ToString() ?? "-1",
@ -573,16 +653,16 @@ namespace YD_XinWei.Api.Services.Impl
.Take(dto.PageSize)
.Select(x => new PersonAnalysisVo()
{
TrainStudentId = x.StudentId,
TrainStudentId = x.Id,
ClassName = x.ClassName,
CreateTime = x.CreateTime,
Achievement = x.Achievement.ToString(),
Rating = x.Rating.ToString(),
Score = x.Score.ToString(),
Sex = x.Sex.ToString(),
CreateTime = x.CreateTime ?? "无数据",
Achievement = x.Achievement.ToString() ?? "无数据",
Rating = x.Rating.ToString() ?? "无数据",
Score = x.Score.ToString() ?? "无数据",
Sex = x.Sex == 1 ? "男" : "女",
StudentName = x.StudentName,
DoubleFlag = false,
})
}).OrderByDescending(x => x.CreateTime)
.ToListAsync();
res.Total = total;
@ -658,7 +738,7 @@ namespace YD_XinWei.Api.Services.Impl
{
Name = x.StudentName,
ClassName = x.ClassName,
Achievement = x.Achievement.ToString()
Achievement = x.Achievement.ToString() ?? "无数据"
}).OrderByDescending(x => x.Achievement)
.ToList();

View File

@ -122,5 +122,8 @@ namespace YD_XinWei.Api.Services.Interface
/// <returns></returns>
Task<ScoreRankingVo> ScoreRanking(ScoreRankingDto dto);
}
}

View File

@ -15,7 +15,7 @@ namespace VOL.Entity.DomainModels.XinWei
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Display(Description = "主键Id")]
[Comment("Id")]
public int? Id { get; set; }
public int Id { get; set; }
/// <summary>

View File

@ -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+e81823ef15e02c113f3f600253339ecd8a261df3")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2b2125ad0e1121cb29ce52823500492b72804ef4")]
[assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
48ae5cc3890150a99121b87b71767723628c58096e50d505c2f597352fab8fc2
b123c2daca944ac3b90ac51314702eef7a056e81b752746cf6e26e895fbd1a85

View File

@ -1 +1 @@
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=e81823ef15e02c113f3f600253339ecd8a261df3&path=/*"}}
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=2b2125ad0e1121cb29ce52823500492b72804ef4&path=/*"}}

View File

@ -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+e81823ef15e02c113f3f600253339ecd8a261df3")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2b2125ad0e1121cb29ce52823500492b72804ef4")]
[assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
48ae5cc3890150a99121b87b71767723628c58096e50d505c2f597352fab8fc2
b123c2daca944ac3b90ac51314702eef7a056e81b752746cf6e26e895fbd1a85

View File

@ -1 +1 @@
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=e81823ef15e02c113f3f600253339ecd8a261df3&path=/*"}}
{"documents":{"C:\\Users\\Administrator\\Desktop\\xwcode\\*":"https://dev.azure.com/tanglong10081/YD_XinWei/_apis/git/repositories/YD_XinWei/items?api-version=1.0&versionType=commit&version=2b2125ad0e1121cb29ce52823500492b72804ef4&path=/*"}}