裁判场次分配顺序展示项目

This commit is contained in:
马梓彭 2026-10-10 15:59:21 +08:00
parent 141e5caffb
commit 5baec1c4b9
3 changed files with 10 additions and 5 deletions

View File

@ -77,15 +77,20 @@ public class JudgeAssignmentService : IDynamicApiController, ITransient
var referees = await _refereeRepository.AsQueryable().Where(x => assignments.Select(a => a.RefereeId).Contains(x.Id)).ToListAsync();
var result = new JudgeAssignmentBoardOutput { ArrangementConfirmed = true, Submitted = assignments.Count > 0 && assignments.All(x => x.AssignmentStatus == 1) };
var projectMap = projects.ToDictionary(x => x.Id);
var sessionsByEventProject = sessions
.GroupBy(x => x.EventProjectId)
.ToDictionary(x => x.Key, x => x.OrderBy(session => session.Id).ToList());
foreach (var ep in eventProjects
.OrderBy(x => projectMap.GetValueOrDefault(x.ProjectId)?.SortIndex ?? int.MaxValue)
// 秩序册覆盖导入会按 Excel 中项目首次出现的顺序生成场次;
// 普通赛事编排同样按项目 SortIndex 依次生成场次,因此以首个有效场次保持两条业务路径的原始顺序。
.OrderBy(x => sessionsByEventProject.GetValueOrDefault(x.Id)?.FirstOrDefault()?.Id ?? long.MaxValue)
.ThenBy(x => projectMap.GetValueOrDefault(x.ProjectId)?.SortIndex ?? int.MaxValue)
.ThenBy(x => x.ProjectId)
.ThenBy(x => x.Id))
{
var project = projectMap.GetValueOrDefault(ep.ProjectId);
if (project == null) continue;
var actualSessions = sessions.Where(x => x.EventProjectId == ep.Id).ToList();
if (actualSessions.Count == 0) continue;
if (!sessionsByEventProject.TryGetValue(ep.Id, out var actualSessions)) continue;
if (!TryGetSessionRuleId(actualSessions, out var ruleId))
throw Oops.Bah($"项目【{project.Name}】的场次计分规则不一致或无效,请先核查历史编排");
var rule = rules.FirstOrDefault(x => x.Id == ruleId)

View File

@ -771,7 +771,7 @@ BEGIN TRY
SET RuleConfigJson=JSON_MODIFY(
RuleConfigJson,
N'append $.roleAggregations',
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025}'))
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","sign":1,"factor":"Q","factorWeight":0.025}'))
WHERE RuleCode IN (N'ROPE_FREESTYLE_DOUBLE_SYNC',N'ROPE_FREESTYLE_QUAD_SYNC');
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,

View File

@ -29,7 +29,7 @@ BEGIN TRY
SET RuleConfigJson=JSON_MODIFY(
RuleConfigJson,
N'append $.roleAggregations',
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025}'))
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","sign":1,"factor":"Q","factorWeight":0.025}'))
WHERE RuleCode IN (N'ROPE_FREESTYLE_DOUBLE_SYNC',N'ROPE_FREESTYLE_QUAD_SYNC');
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,