diff --git a/YD_Event.Application/Workbench/WorkbenchController.cs b/YD_Event.Application/Workbench/WorkbenchController.cs index 88390fb..47aff7b 100644 --- a/YD_Event.Application/Workbench/WorkbenchController.cs +++ b/YD_Event.Application/Workbench/WorkbenchController.cs @@ -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((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() - .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