投出排行排序问题

This commit is contained in:
马梓彭 2026-09-09 15:37:49 +08:00
parent 4ef9468b77
commit b621350f6b

View File

@ -670,9 +670,11 @@ public class WorkbenchController : IDynamicApiController
ep.Id == input.EventProjectId.Value && ep.EventId == input.EventId && !ep.DeleteMark) ep.Id == input.EventProjectId.Value && ep.EventId == input.EventId && !ep.DeleteMark)
?? throw Oops.Bah("所选项目不属于当前赛事"); ?? throw Oops.Bah("所选项目不属于当前赛事");
_ = eventProject; _ = eventProject;
if (!await _groupRepository.IsAnyAsync(g => g.Id == input.EventProjectGroupId.Value && var eventProjectGroup = await _groupRepository.GetFirstAsync(g =>
g.EventProjectId == input.EventProjectId.Value && !g.DeleteMark)) g.Id == input.EventProjectGroupId.Value &&
throw Oops.Bah("所选组别不属于当前赛事项目"); g.EventProjectId == input.EventProjectId.Value && !g.DeleteMark)
?? throw Oops.Bah("所选组别不属于当前赛事项目");
var groupName = eventProjectGroup.GroupName;
var results = await _resultRepository.AsQueryable() var results = await _resultRepository.AsQueryable()
.InnerJoin<EventSessionEntry>((r, e) => r.SessionEntryId == e.Id) .InnerJoin<EventSessionEntry>((r, e) => r.SessionEntryId == e.Id)
@ -681,9 +683,7 @@ public class WorkbenchController : IDynamicApiController
r.EventId == input.EventId && r.EventId == input.EventId &&
s.EventProjectId == input.EventProjectId.Value && s.EventProjectId == input.EventProjectId.Value &&
(s.EventProjectGroupId == input.EventProjectGroupId.Value || (s.EventProjectGroupId == input.EventProjectGroupId.Value ||
e.GroupName == SqlFunc.Subqueryable<EventProjectGroup>() e.GroupName == groupName) &&
.Where(g => g.Id == input.EventProjectGroupId.Value)
.Select(g => g.GroupName)) &&
// 只投屏有效成绩(已确认20/已投屏30/已更正40),排除DQ成绩 // 只投屏有效成绩(已确认20/已投屏30/已更正40),排除DQ成绩
(r.ResultStatus == 20 || r.ResultStatus == 30 || r.ResultStatus == 40) && (r.ResultStatus == 20 || r.ResultStatus == 30 || r.ResultStatus == 40) &&
!r.IsDisqualified) !r.IsDisqualified)
@ -763,17 +763,20 @@ public class WorkbenchController : IDynamicApiController
.Where(v => !v.DeleteMark && rankedResultIds.Contains(v.EventResultId)) .Where(v => !v.DeleteMark && rankedResultIds.Contains(v.EventResultId))
.ToListAsync(); .ToListAsync();
// 只同步各成绩的当前版本,历史版本保留原状态留痕 // 只同步各成绩的当前版本,历史版本保留原状态留痕
var currentRankedVersions = rankedVersions var currentRankedVersionIds = rankedVersions
.Where(v => results.Any(r => r.Id == v.EventResultId && r.ResultVersion == v.ResultVersion)) .Where(v => results.Any(r => r.Id == v.EventResultId && r.ResultVersion == v.ResultVersion))
.Select(v => v.Id)
.ToList(); .ToList();
foreach (var version in currentRankedVersions) if (currentRankedVersionIds.Count > 0)
{ await _resultVersionRepository.AsUpdateable()
version.ResultStatus = 30; .SetColumns(v => new EventResultVersion
version.UpdatedUserId = currentUserId; {
version.UpdatedTime = now; ResultStatus = 30,
} UpdatedUserId = currentUserId,
if (currentRankedVersions.Count > 0) UpdatedTime = now
await _resultVersionRepository.UpdateRangeAsync(currentRankedVersions); }, appendColumnsByDataFilter: true)
.Where(v => currentRankedVersionIds.Contains(v.Id))
.ExecuteCommandAsync();
await WriteAuditAsync("投出组别排名", input.EventId, input.EventProjectGroupId.Value, null, 30); await WriteAuditAsync("投出组别排名", input.EventId, input.EventProjectGroupId.Value, null, 30);
return new ResultScreenCastOutput return new ResultScreenCastOutput