投出排行排序问题

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