裁判场次分配顺序展示项目
This commit is contained in:
parent
141e5caffb
commit
5baec1c4b9
@ -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 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 result = new JudgeAssignmentBoardOutput { ArrangementConfirmed = true, Submitted = assignments.Count > 0 && assignments.All(x => x.AssignmentStatus == 1) };
|
||||||
var projectMap = projects.ToDictionary(x => x.Id);
|
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
|
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.ProjectId)
|
||||||
.ThenBy(x => x.Id))
|
.ThenBy(x => x.Id))
|
||||||
{
|
{
|
||||||
var project = projectMap.GetValueOrDefault(ep.ProjectId);
|
var project = projectMap.GetValueOrDefault(ep.ProjectId);
|
||||||
if (project == null) continue;
|
if (project == null) continue;
|
||||||
var actualSessions = sessions.Where(x => x.EventProjectId == ep.Id).ToList();
|
if (!sessionsByEventProject.TryGetValue(ep.Id, out var actualSessions)) continue;
|
||||||
if (actualSessions.Count == 0) continue;
|
|
||||||
if (!TryGetSessionRuleId(actualSessions, out var ruleId))
|
if (!TryGetSessionRuleId(actualSessions, out var ruleId))
|
||||||
throw Oops.Bah($"项目【{project.Name}】的场次计分规则不一致或无效,请先核查历史编排");
|
throw Oops.Bah($"项目【{project.Name}】的场次计分规则不一致或无效,请先核查历史编排");
|
||||||
var rule = rules.FirstOrDefault(x => x.Id == ruleId)
|
var rule = rules.FirstOrDefault(x => x.Id == ruleId)
|
||||||
|
|||||||
@ -771,7 +771,7 @@ BEGIN TRY
|
|||||||
SET RuleConfigJson=JSON_MODIFY(
|
SET RuleConfigJson=JSON_MODIFY(
|
||||||
RuleConfigJson,
|
RuleConfigJson,
|
||||||
N'append $.roleAggregations',
|
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');
|
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,
|
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,
|
||||||
|
|||||||
@ -29,7 +29,7 @@ BEGIN TRY
|
|||||||
SET RuleConfigJson=JSON_MODIFY(
|
SET RuleConfigJson=JSON_MODIFY(
|
||||||
RuleConfigJson,
|
RuleConfigJson,
|
||||||
N'append $.roleAggregations',
|
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');
|
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,
|
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user