裁判任务列表按照赛事编排的顺序进行排列
This commit is contained in:
parent
7a1b2ab46d
commit
4c87cf0ea2
@ -280,6 +280,26 @@ public class JudgeScoringController : IDynamicApiController
|
||||
.ToListAsync())
|
||||
.OrderBy(x => x.PlayOrder).ThenBy(x => x.Id).ToList();
|
||||
if (entries.Count == 0) return new List<JudgeEntryDto>();
|
||||
|
||||
var eventProjects = await _eventProjectRepository.AsQueryable()
|
||||
.Where(x => x.EventId == session.EventId && !x.DeleteMark)
|
||||
.ToListAsync();
|
||||
var projectIds = eventProjects.Select(x => x.ProjectId).Distinct().ToList();
|
||||
var orderedProjectIds = (await _projectRepository.AsQueryable()
|
||||
.Where(x => projectIds.Contains(x.Id) && !x.DeleteMark)
|
||||
.ToListAsync())
|
||||
.OrderBy(x => x.SortIndex)
|
||||
.ThenBy(x => x.Id)
|
||||
.Select(x => x.Id)
|
||||
.ToList();
|
||||
var currentProjectId = eventProjects
|
||||
.FirstOrDefault(x => x.Id == session.EventProjectId)?.ProjectId ?? 0;
|
||||
var projectOrderIndex = orderedProjectIds.IndexOf(currentProjectId);
|
||||
var projectOrder = projectOrderIndex >= 0 ? projectOrderIndex + 1 : orderedProjectIds.Count + 1;
|
||||
var venue = await _venueRepository.GetFirstAsync(x => x.Id == session.VenueId && !x.DeleteMark);
|
||||
var venueOrder = venue?.Sort > 0 ? venue.Sort : 1;
|
||||
var sessionArrangementOrder = GetArrangementSequence(session.SessionNo);
|
||||
|
||||
var entryIds = entries.Select(x => x.Id).ToList();
|
||||
var sheets = await _sheetRepository.AsQueryable()
|
||||
.Where(x => entryIds.Contains(x.SessionEntryId) && x.JudgeAssignmentId == assignment.Id).ToListAsync();
|
||||
@ -300,7 +320,13 @@ public class JudgeScoringController : IDynamicApiController
|
||||
SessionEntryId = entry.Id,
|
||||
EntryNo = entry.EntryNo,
|
||||
PlayOrder = entry.PlayOrder,
|
||||
ScheduleOrder = entry.SourceType == 1 ? entry.Id : 0,
|
||||
ScheduleOrder = entry.SourceType == 1
|
||||
? entry.Id
|
||||
: BuildArrangementScheduleOrder(
|
||||
projectOrder,
|
||||
sessionArrangementOrder,
|
||||
venueOrder,
|
||||
entry.PlayOrder),
|
||||
ParticipantName = DisplayParticipantName(entry, ctx.Scope),
|
||||
GroupName = entry.GroupName,
|
||||
EntryStatus = entry.EntryStatus,
|
||||
@ -1356,6 +1382,26 @@ public class JudgeScoringController : IDynamicApiController
|
||||
: 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将自动编排任务还原为“项目、场次、场地”的全局顺序。
|
||||
/// 同组同场地的多条记录在数据库中属于同一场次,因此需结合出场顺序恢复原始场次号。
|
||||
/// </summary>
|
||||
private static long BuildArrangementScheduleOrder(
|
||||
int projectOrder,
|
||||
int sessionArrangementOrder,
|
||||
int venueOrder,
|
||||
int playOrder)
|
||||
{
|
||||
var safePlayOrder = Math.Max(playOrder, 1);
|
||||
var taskSessionOrder = sessionArrangementOrder > 0 && sessionArrangementOrder < int.MaxValue
|
||||
? sessionArrangementOrder + safePlayOrder - 1
|
||||
: safePlayOrder;
|
||||
|
||||
return (long)Math.Max(projectOrder, 1) * 1_000_000_000_000L
|
||||
+ (long)taskSessionOrder * 1_000_000L
|
||||
+ Math.Max(venueOrder, 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建裁判端展示用的“场次-场地”,去除秩序册导入时写入场次名的项目和组别信息。
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user