diff --git a/YD_Event.Application/Event/JudgeAssignmentService.cs b/YD_Event.Application/Event/JudgeAssignmentService.cs index 67a97a7..5cdf0fa 100644 --- a/YD_Event.Application/Event/JudgeAssignmentService.cs +++ b/YD_Event.Application/Event/JudgeAssignmentService.cs @@ -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) diff --git a/二期需求/dbo.sql b/二期需求/dbo.sql index 8252e6b..8effb2d 100644 --- a/二期需求/dbo.sql +++ b/二期需求/dbo.sql @@ -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, diff --git a/二期需求/上线/dbo_insert.sql b/二期需求/上线/dbo_insert.sql index b43108d..30e00e2 100644 --- a/二期需求/上线/dbo_insert.sql +++ b/二期需求/上线/dbo_insert.sql @@ -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,