fix: 修复成绩工作台运行与编排顺序
This commit is contained in:
parent
48ae547de9
commit
482e2341c9
@ -763,7 +763,7 @@ public class JudgeScoringController : IDynamicApiController
|
|||||||
{
|
{
|
||||||
var referee = await EnsureRefereeAsync();
|
var referee = await EnsureRefereeAsync();
|
||||||
var userId = _authManager.UserId;
|
var userId = _authManager.UserId;
|
||||||
var messages = await _messageRepository.AsQueryable()
|
var messages = (await _messageRepository.AsQueryable()
|
||||||
.Where(x => x.RefereeId == referee.Id || x.ReceiverUserId == userId)
|
.Where(x => x.RefereeId == referee.Id || x.ReceiverUserId == userId)
|
||||||
.WhereIF(onlyUnread == true, x => !x.IsRead)
|
.WhereIF(onlyUnread == true, x => !x.IsRead)
|
||||||
.ToListAsync())
|
.ToListAsync())
|
||||||
|
|||||||
@ -230,6 +230,16 @@ public class WorkbenchEntryDetailDto
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int PlayOrder { get; set; }
|
public int PlayOrder { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 该运动员在秩序册预览中的实际场次号
|
||||||
|
/// </summary>
|
||||||
|
public int SessionOrder { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 秩序册预览/赛事编排中的全局出场顺序
|
||||||
|
/// </summary>
|
||||||
|
public long ScheduleOrder { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 参赛者姓名
|
/// 参赛者姓名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -290,6 +290,9 @@ public class WorkbenchController : IDynamicApiController
|
|||||||
?? throw Oops.Bah("场次不存在");
|
?? throw Oops.Bah("场次不存在");
|
||||||
var scoreRule = await _scoreRuleRepository.GetByIdAsync(session.ScoreRuleId);
|
var scoreRule = await _scoreRuleRepository.GetByIdAsync(session.ScoreRuleId);
|
||||||
var roleSlots = JudgeRoleSchemaService.ParseSlots(scoreRule?.JudgeRoleSchemaJson);
|
var roleSlots = JudgeRoleSchemaService.ParseSlots(scoreRule?.JudgeRoleSchemaJson);
|
||||||
|
var venue = await _venueRepository.GetByIdAsync(session.VenueId);
|
||||||
|
var venueOrder = venue?.Sort > 0 ? venue.Sort : 1;
|
||||||
|
var sessionArrangementOrder = GetArrangementSequence(session.SessionNo);
|
||||||
|
|
||||||
var query = _entryRepository.AsQueryable()
|
var query = _entryRepository.AsQueryable()
|
||||||
.Where(e => !e.DeleteMark && e.SessionId == sessionId);
|
.Where(e => !e.DeleteMark && e.SessionId == sessionId);
|
||||||
@ -311,6 +314,7 @@ public class WorkbenchController : IDynamicApiController
|
|||||||
e.Id,
|
e.Id,
|
||||||
e.EntryNo,
|
e.EntryNo,
|
||||||
e.PlayOrder,
|
e.PlayOrder,
|
||||||
|
e.SourceType,
|
||||||
e.ParticipantName,
|
e.ParticipantName,
|
||||||
e.TeamName,
|
e.TeamName,
|
||||||
e.GroupName,
|
e.GroupName,
|
||||||
@ -474,6 +478,11 @@ public class WorkbenchController : IDynamicApiController
|
|||||||
SessionEntryId = e.Id,
|
SessionEntryId = e.Id,
|
||||||
EntryNo = e.EntryNo,
|
EntryNo = e.EntryNo,
|
||||||
PlayOrder = e.PlayOrder,
|
PlayOrder = e.PlayOrder,
|
||||||
|
SessionOrder = BuildEntrySessionOrder(sessionArrangementOrder, e.PlayOrder),
|
||||||
|
// 导入数据按预览行生成雪花 ID;自动编排数据按场次起始序号、出场序号和场地序号还原。
|
||||||
|
ScheduleOrder = e.SourceType == 1
|
||||||
|
? e.Id
|
||||||
|
: BuildEntryScheduleOrder(sessionArrangementOrder, venueOrder, e.PlayOrder),
|
||||||
ParticipantName = e.ParticipantName,
|
ParticipantName = e.ParticipantName,
|
||||||
TeamName = e.TeamName,
|
TeamName = e.TeamName,
|
||||||
UnitName = result?.MerchantCertificationId is long merchantId
|
UnitName = result?.MerchantCertificationId is long merchantId
|
||||||
@ -2025,6 +2034,29 @@ public class WorkbenchController : IDynamicApiController
|
|||||||
: int.MaxValue;
|
: int.MaxValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 将自动编排场次中的出场记录还原为秩序册预览的全局顺序。
|
||||||
|
/// 同一组别、同一场地的多条记录共用一个场次,因此需要在场次起始序号上叠加出场序号。
|
||||||
|
/// </summary>
|
||||||
|
private static long BuildEntryScheduleOrder(int sessionArrangementOrder, int venueOrder, int playOrder)
|
||||||
|
{
|
||||||
|
var taskSessionOrder = BuildEntrySessionOrder(sessionArrangementOrder, playOrder);
|
||||||
|
|
||||||
|
return (long)taskSessionOrder * 1_000_000L + Math.Max(venueOrder, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单条出场记录在秩序册中的实际场次号。
|
||||||
|
/// 花样项目的场次号保存的是本场起始序号;速度项目没有起始序号时按出场顺序计算。
|
||||||
|
/// </summary>
|
||||||
|
private static int BuildEntrySessionOrder(int sessionArrangementOrder, int playOrder)
|
||||||
|
{
|
||||||
|
var safePlayOrder = Math.Max(playOrder, 1);
|
||||||
|
return sessionArrangementOrder > 0 && sessionArrangementOrder < int.MaxValue
|
||||||
|
? sessionArrangementOrder + safePlayOrder - 1
|
||||||
|
: safePlayOrder;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetSessionStatusName(int status)
|
private static string GetSessionStatusName(int status)
|
||||||
{
|
{
|
||||||
return status switch
|
return status switch
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user