This commit is contained in:
tanglong 2026-01-08 07:28:10 +08:00
parent a7218c636c
commit a72a721438
25 changed files with 64 additions and 41 deletions

View File

@ -21,7 +21,7 @@ namespace YD_XinWei.Commons.Dto.Open
/// <summary>
/// 项目模式
/// </summary>
public byte ModelType { get; set; }
public int ModelType { get; set; }
/// <summary>
/// 学生ID

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+ad851517bf24d8a47bb71b913f887289c2f63581")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a7218c636cd2e1c31ee2e114791c415b7b4a4281")]
[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 @@
b617f52ce2f462825672c690f091971eb320a9438856be83eb1404cf5353235b
4db0140d64b9d6074d6ffb1d3f8beb7536d9d4c6cbc7d538b90977510ec90a32

View File

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>C:\Users\tangl\Desktop\web</_PublishTargetUrl>
<History>True|2026-01-07T10:25:08.0906165Z||;True|2026-01-07T18:24:54.3973422+08:00||;True|2026-01-07T17:31:39.5873521+08:00||;True|2026-01-07T17:26:57.1353433+08:00||;True|2026-01-07T17:17:01.3820547+08:00||;True|2026-01-07T16:55:51.1046754+08:00||;True|2026-01-07T16:48:30.7855668+08:00||;True|2026-01-07T16:37:17.5809765+08:00||;False|2026-01-07T16:35:45.5939040+08:00||;False|2026-01-07T16:30:28.3549091+08:00||;True|2025-04-03T15:07:55.2812036+08:00||;True|2025-03-18T10:41:46.9539024+08:00||;True|2025-03-18T09:03:55.5838708+08:00||;True|2025-03-17T12:30:21.5399192+08:00||;True|2025-03-17T11:54:27.3261861+08:00||;True|2025-03-17T11:20:23.7942104+08:00||;True|2025-03-11T17:48:55.2957005+08:00||;False|2025-03-11T17:48:38.1452073+08:00||;True|2025-03-07T16:31:26.6256757+08:00||;True|2025-03-07T15:14:30.2549136+08:00||;True|2025-03-07T14:57:41.5400532+08:00||;True|2025-03-07T14:53:16.1364435+08:00||;False|2025-03-07T14:52:47.3342548+08:00||;False|2025-03-07T14:52:10.7452463+08:00||;False|2025-03-07T14:51:33.5424415+08:00||;True|2025-03-07T14:46:55.5807563+08:00||;True|2025-03-07T14:33:04.1266862+08:00||;True|2025-03-07T14:13:22.6999976+08:00||;True|2025-03-07T14:05:09.5133651+08:00||;False|2025-03-07T14:02:23.5093029+08:00||;False|2025-03-07T13:58:37.4496383+08:00||;True|2025-03-07T11:52:20.4578386+08:00||;True|2025-03-07T11:31:43.1972462+08:00||;True|2025-03-07T10:11:26.1562979+08:00||;True|2025-03-07T10:10:59.9440630+08:00||;True|2025-03-07T09:24:15.8595227+08:00||;True|2025-03-06T17:52:31.4924325+08:00||;True|2025-03-06T17:52:19.1631772+08:00||;True|2025-03-06T17:32:57.7195879+08:00||;True|2025-03-06T17:09:15.6877706+08:00||;True|2025-03-06T16:59:48.0866771+08:00||;True|2025-03-06T16:49:15.3348344+08:00||;True|2025-03-06T15:51:10.7923322+08:00||;True|2025-03-06T15:46:02.5442595+08:00||;True|2025-03-06T14:32:36.1899505+08:00||;True|2025-03-06T14:04:43.6692503+08:00||;True|2025-03-06T10:00:58.4898730+08:00||;True|2025-03-06T09:59:50.3712985+08:00||;True|2025-03-06T09:03:59.1856247+08:00||;True|2025-03-04T17:35:37.1204893+08:00||;True|2025-03-04T17:18:56.4230027+08:00||;True|2025-03-04T16:59:02.6637491+08:00||;True|2025-03-04T15:21:05.4912749+08:00||;True|2025-03-04T15:08:42.5490957+08:00||;True|2025-03-04T15:01:08.8651148+08:00||;True|2025-03-03T17:31:47.5325183+08:00||;True|2025-03-03T17:09:05.8362354+08:00||;True|2025-03-03T16:41:37.7278763+08:00||;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||;</History>
<History>True|2026-01-07T23:24:14.4026431Z||;True|2026-01-07T18:25:08.0906165+08:00||;True|2026-01-07T18:24:54.3973422+08:00||;True|2026-01-07T17:31:39.5873521+08:00||;True|2026-01-07T17:26:57.1353433+08:00||;True|2026-01-07T17:17:01.3820547+08:00||;True|2026-01-07T16:55:51.1046754+08:00||;True|2026-01-07T16:48:30.7855668+08:00||;True|2026-01-07T16:37:17.5809765+08:00||;False|2026-01-07T16:35:45.5939040+08:00||;False|2026-01-07T16:30:28.3549091+08:00||;True|2025-04-03T15:07:55.2812036+08:00||;True|2025-03-18T10:41:46.9539024+08:00||;True|2025-03-18T09:03:55.5838708+08:00||;True|2025-03-17T12:30:21.5399192+08:00||;True|2025-03-17T11:54:27.3261861+08:00||;True|2025-03-17T11:20:23.7942104+08:00||;True|2025-03-11T17:48:55.2957005+08:00||;False|2025-03-11T17:48:38.1452073+08:00||;True|2025-03-07T16:31:26.6256757+08:00||;True|2025-03-07T15:14:30.2549136+08:00||;True|2025-03-07T14:57:41.5400532+08:00||;True|2025-03-07T14:53:16.1364435+08:00||;False|2025-03-07T14:52:47.3342548+08:00||;False|2025-03-07T14:52:10.7452463+08:00||;False|2025-03-07T14:51:33.5424415+08:00||;True|2025-03-07T14:46:55.5807563+08:00||;True|2025-03-07T14:33:04.1266862+08:00||;True|2025-03-07T14:13:22.6999976+08:00||;True|2025-03-07T14:05:09.5133651+08:00||;False|2025-03-07T14:02:23.5093029+08:00||;False|2025-03-07T13:58:37.4496383+08:00||;True|2025-03-07T11:52:20.4578386+08:00||;True|2025-03-07T11:31:43.1972462+08:00||;True|2025-03-07T10:11:26.1562979+08:00||;True|2025-03-07T10:10:59.9440630+08:00||;True|2025-03-07T09:24:15.8595227+08:00||;True|2025-03-06T17:52:31.4924325+08:00||;True|2025-03-06T17:52:19.1631772+08:00||;True|2025-03-06T17:32:57.7195879+08:00||;True|2025-03-06T17:09:15.6877706+08:00||;True|2025-03-06T16:59:48.0866771+08:00||;True|2025-03-06T16:49:15.3348344+08:00||;True|2025-03-06T15:51:10.7923322+08:00||;True|2025-03-06T15:46:02.5442595+08:00||;True|2025-03-06T14:32:36.1899505+08:00||;True|2025-03-06T14:04:43.6692503+08:00||;True|2025-03-06T10:00:58.4898730+08:00||;True|2025-03-06T09:59:50.3712985+08:00||;True|2025-03-06T09:03:59.1856247+08:00||;True|2025-03-04T17:35:37.1204893+08:00||;True|2025-03-04T17:18:56.4230027+08:00||;True|2025-03-04T16:59:02.6637491+08:00||;True|2025-03-04T15:21:05.4912749+08:00||;True|2025-03-04T15:08:42.5490957+08:00||;True|2025-03-04T15:01:08.8651148+08:00||;True|2025-03-03T17:31:47.5325183+08:00||;True|2025-03-03T17:09:05.8362354+08:00||;True|2025-03-03T16:41:37.7278763+08:00||;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||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -757,8 +757,19 @@ namespace YD_XinWei.Api.Services.Impl
})
.ToListAsync();
// 3️⃣ 获取指定学生
var student = studentResults
if (!studentResults.Any())
return new TrainHistoryPersonVo();
// ⭐ 是否按升序(ModelType = 7)
bool isAsc = dto.ModelType == 7;
// 3️⃣ 获取指定学生(按成绩最优的一次)
var student = isAsc
? studentResults
.Where(x => x.StudentId == dto.StudentId)
.OrderBy(x => x.Achievement)
.FirstOrDefault()
: studentResults
.Where(x => x.StudentId == dto.StudentId)
.OrderByDescending(x => x.Achievement)
.FirstOrDefault();
@ -766,66 +777,78 @@ namespace YD_XinWei.Api.Services.Impl
if (student == null)
return new TrainHistoryPersonVo();
// 4️⃣ 历史排名(按 Score 排序)
var rankedResults = studentResults
// 4️⃣ 历史排名
var rankedResults = (isAsc
? studentResults
.Where(x => x.GradeId == student.GradeId)
.OrderByDescending(x => x.Score)
.OrderBy(x => x.Achievement)
: studentResults
.Where(x => x.GradeId == student.GradeId)
.OrderByDescending(x => x.Achievement)
)
.Select((x, index) => new { x, Rank = index + 1 })
.ToList();
// 5️⃣ 当月数据及当月排名(按 Score 排序)
// 5️⃣ 当月数据
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
// 6️⃣ 当月排名
var monthRankedResults = (isAsc
? monthList
.Where(x => x.GradeId == student.GradeId)
.OrderByDescending(x => x.Score) // 按 Score 排名
.OrderBy(x => x.Achievement)
: monthList
.Where(x => x.GradeId == student.GradeId)
.OrderByDescending(x => x.Achievement)
)
.Select((x, index) => new { x, Rank = index + 1 })
.ToList();
// 6️⃣ 获取学生头像
// 7️⃣ 获取学生头像
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️⃣ 历史最佳成绩
var bestStudentOverall = isAsc
? studentResults.OrderBy(x => x.Achievement).FirstOrDefault()
: studentResults.OrderByDescending(x => x.Achievement).FirstOrDefault();
// 8️⃣ 找本月最高分对应的 Achievement(Score 最大)
var bestStudentMonth = monthList
.OrderByDescending(x => x.Score)
.FirstOrDefault();
// 9️⃣ 当月最佳成绩
var bestStudentMonth = isAsc
? monthList.OrderBy(x => x.Achievement).FirstOrDefault()
: monthList.OrderByDescending(x => x.Achievement).FirstOrDefault();
// 9️⃣ 构建返回对象
var res = new TrainHistoryPersonVo()
// 🔟 构建返回对象
return new TrainHistoryPersonVo
{
ClassName = student.ClassName,
HeadImgUrl = stuHeadUrl,
Sex = student.Sex == 1 ? "男" : "女",
StudentName = student.StudentName,
// 总历史最高成绩对应 Achievement
// 历史最佳成绩
HistoryBestScore = bestStudentOverall?.Achievement?.ToString("0.###") ?? "无数据",
// 历史排名(按 Score)
HistoryRanking = rankedResults.FirstOrDefault(x => x.x.Id == student.Id)?.Rank.ToString() ?? "-1",
// 历史排名
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"
// 当月排名
MonthRanking = monthRankedResults
.FirstOrDefault(x => x.x.Id == student.Id)?.Rank.ToString() ?? "1"
};
return res;
}
/// <summary>
/// 个人历史记录-记录列表
/// </summary>

View File

@ -631,7 +631,7 @@
},
{
"Name": "ModelType",
"Type": "System.Byte",
"Type": "System.Int32",
"IsRequired": false
},
{

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+ad851517bf24d8a47bb71b913f887289c2f63581")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a7218c636cd2e1c31ee2e114791c415b7b4a4281")]
[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 @@
6004218f38f54732cab65609a77db1d74b7e99db1e3be7348636de0508d49af3
7ac6f6814843d4a4785f8e0a5ee3a658e188961538efe7ca66094b1a8f7da63b

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+ad851517bf24d8a47bb71b913f887289c2f63581")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a7218c636cd2e1c31ee2e114791c415b7b4a4281")]
[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 @@
6004218f38f54732cab65609a77db1d74b7e99db1e3be7348636de0508d49af3
7ac6f6814843d4a4785f8e0a5ee3a658e188961538efe7ca66094b1a8f7da63b