551 lines
13 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace YD_Event.Application.Scoring.Dtos;
/// <summary>
/// 后台记分台:单个裁判类型的评分提交进度
/// </summary>
public class JudgeBoardRoleProgressOutput
{
/// <summary>
/// 裁判类型编码
/// </summary>
public string RoleType { get; set; } = string.Empty;
/// <summary>
/// 裁判类型名称
/// </summary>
public string RoleName { get; set; } = string.Empty;
/// <summary>
/// 计分符号,如 T1、T2、T3
/// </summary>
public string Symbol { get; set; } = string.Empty;
/// <summary>
/// 应提交人数
/// </summary>
public int ExpectedCount { get; set; }
/// <summary>
/// 已提交人数
/// </summary>
public int SubmittedCount { get; set; }
/// <summary>
/// 未提交的裁判姓名
/// </summary>
public List<string> PendingJudges { get; set; } = new();
}
/// <summary>
/// 后台记分台:单个裁判的评分
/// </summary>
public class JudgeBoardSheetScoreOutput
{
/// <summary>
/// 评分单ID
/// </summary>
public long ScoreSheetId { get; set; }
/// <summary>
/// 裁判ID
/// </summary>
public long RefereeId { get; set; }
/// <summary>
/// 裁判姓名
/// </summary>
public string RefereeName { get; set; } = string.Empty;
/// <summary>
/// 裁判席位编码
/// </summary>
public string JudgeRole { get; set; } = string.Empty;
/// <summary>
/// 裁判类型编码
/// </summary>
public string JudgeRoleType { get; set; } = string.Empty;
/// <summary>
/// 该裁判的得分
/// </summary>
public string Value { get; set; } = string.Empty;
/// <summary>
/// 是否由该裁判判定取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>裁判记录画板地址。</summary>
public string? AnnotationUrl { get; set; }
}
/// <summary>
/// 后台记分台:单个计分符号的聚合得分
/// </summary>
public class JudgeSymbolScoreOutput
{
/// <summary>
/// 计分符号,如 T1
/// </summary>
public string Symbol { get; set; } = string.Empty;
/// <summary>
/// 计分名称,如创意分
/// </summary>
public string Label { get; set; } = string.Empty;
/// <summary>
/// 裁判类型编码
/// </summary>
public string RoleType { get; set; } = string.Empty;
/// <summary>
/// 聚合方式:avg、sum、max、min
/// </summary>
public string Aggregate { get; set; } = string.Empty;
/// <summary>
/// 参与总分的符号:1-加分,-1-减分
/// </summary>
public int Sign { get; set; }
/// <summary>
/// 聚合后的分值
/// </summary>
public string Value { get; set; } = string.Empty;
/// <summary>
/// 参与聚合的各裁判评分
/// </summary>
public List<JudgeBoardSheetScoreOutput> Judges { get; set; } = new();
}
/// <summary>
/// 后台记分台:一个出场的成绩
/// </summary>
public class JudgeScoreBoardEntryOutput
{
/// <summary>
/// 出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 出场编号
/// </summary>
public string EntryNo { get; set; } = string.Empty;
/// <summary>
/// 出场顺序
/// </summary>
public int PlayOrder { get; set; }
/// <summary>
/// 参赛者/参赛队名称
/// </summary>
public string ParticipantName { get; set; } = string.Empty;
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; } = string.Empty;
/// <summary>
/// 出场状态:0-待出场,10-已检录,20-已叫号,30-进行中,40-已完成,80-退赛,90-取消比赛资格
/// </summary>
public int EntryStatus { get; set; }
/// <summary>
/// 是否所有应到裁判都已提交评分
/// </summary>
public bool IsCompleted { get; set; }
/// <summary>
/// 是否跳过计分(退赛、成绩作废)
/// </summary>
public bool IsSkipped { get; set; }
/// <summary>
/// 跳过原因
/// </summary>
public string? SkipReason { get; set; }
/// <summary>
/// 是否取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>
/// 总分
/// </summary>
public string TotalScore { get; set; } = string.Empty;
/// <summary>
/// 名次,0 表示暂未排名
/// </summary>
public int Rank { get; set; }
/// <summary>
/// 成绩状态:0-未生成,10-待复核,20-已确认,90-已作废
/// </summary>
public int ResultStatus { get; set; }
/// <summary>
/// 成绩状态名称
/// </summary>
public string ResultStatusName { get; set; } = string.Empty;
/// <summary>
/// 各计分符号的聚合明细
/// </summary>
public List<JudgeSymbolScoreOutput> Symbols { get; set; } = new();
/// <summary>
/// 各裁判类型的提交进度
/// </summary>
public List<JudgeBoardRoleProgressOutput> Progress { get; set; } = new();
}
/// <summary>
/// 后台记分台
/// </summary>
public class JudgeScoreBoardOutput
{
/// <summary>
/// 场次ID
/// </summary>
public long SessionId { get; set; }
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 场次名称
/// </summary>
public string SessionName { get; set; } = string.Empty;
/// <summary>
/// 场地名称
/// </summary>
public string VenueName { get; set; } = string.Empty;
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; } = string.Empty;
/// <summary>
/// 计分规则名称
/// </summary>
public string RuleName { get; set; } = string.Empty;
/// <summary>
/// 计分公式,如 T1 + T2 - T3
/// </summary>
public string Formula { get; set; } = string.Empty;
/// <summary>
/// 场次状态:0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
/// </summary>
public int SessionStatus { get; set; }
/// <summary>
/// 出场总数
/// </summary>
public int EntryCount { get; set; }
/// <summary>
/// 已算出成绩的出场数
/// </summary>
public int CompletedCount { get; set; }
/// <summary>
/// 出场成绩
/// </summary>
public List<JudgeScoreBoardEntryOutput> Entries { get; set; } = new();
}
/// <summary>
/// 成绩排名查询
/// </summary>
public class JudgeRankingQueryInput
{
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public long? ProjectId { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string? GroupName { get; set; }
/// <summary>
/// 成绩状态:10-待复核,20-已确认
/// </summary>
public int? ResultStatus { get; set; }
}
/// <summary>
/// 成绩排名行
/// </summary>
public class JudgeRankingRowOutput
{
/// <summary>
/// 成绩ID
/// </summary>
public long ResultId { get; set; }
/// <summary>
/// 出场记录ID
/// </summary>
public long? SessionEntryId { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
/// <summary>
/// 项目类型名称
/// </summary>
public string ProjectTypeName { get; set; } = string.Empty;
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; } = string.Empty;
/// <summary>
/// 参赛者/参赛队名称
/// </summary>
public string ParticipantName { get; set; } = string.Empty;
/// <summary>
/// 名次
/// </summary>
public int Rank { get; set; }
/// <summary>
/// 总分
/// </summary>
public string TotalScore { get; set; } = string.Empty;
/// <summary>
/// 难度分
/// </summary>
public decimal DifficultyScore { get; set; }
/// <summary>
/// 表现分(规定赛创意分 T1)
/// </summary>
public decimal PerformanceScore { get; set; }
/// <summary>
/// 规定分(规定赛完成分 T2)
/// </summary>
public decimal RequiredScore { get; set; }
/// <summary>
/// 扣分(规定赛主裁扣分 T3)
/// </summary>
public decimal DeductionScore { get; set; }
/// <summary>
/// 是否取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>
/// 成绩状态:10-待复核,20-已确认,90-已作废
/// </summary>
public int ResultStatus { get; set; }
/// <summary>
/// 成绩状态名称
/// </summary>
public string ResultStatusName { get; set; } = string.Empty;
/// <summary>
/// 成绩版本号
/// </summary>
public int ResultVersion { get; set; }
/// <summary>
/// 复核人(后台系统用户ID)
/// </summary>
public long? ReviewUserId { get; set; }
/// <summary>
/// 复核时间
/// </summary>
public DateTime? ReviewTime { get; set; }
}
/// <summary>
/// 后台发起成绩修正
/// </summary>
public class InitiateJudgeCorrectionInput
{
/// <summary>
/// 评分单ID
/// </summary>
public long ScoreSheetId { get; set; }
/// <summary>
/// 修正原因
/// </summary>
public string Reason { get; set; } = null!;
}
/// <summary>
/// 审批成绩修正申请
/// </summary>
public class ApproveJudgeCorrectionInput
{
/// <summary>
/// 修正申请ID
/// </summary>
public long CorrectionId { get; set; }
/// <summary>
/// 是否同意
/// </summary>
public bool Approved { get; set; }
/// <summary>
/// 审批意见
/// </summary>
public string? ApproveRemark { get; set; }
}
/// <summary>
/// 成绩修正申请
/// </summary>
public class JudgeCorrectionOutput
{
/// <summary>
/// 修正申请ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 场次ID
/// </summary>
public long SessionId { get; set; }
/// <summary>
/// 场次名称
/// </summary>
public string SessionName { get; set; } = string.Empty;
/// <summary>
/// 出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 出场编号
/// </summary>
public string EntryNo { get; set; } = string.Empty;
/// <summary>
/// 参赛者/参赛队名称
/// </summary>
public string ParticipantName { get; set; } = string.Empty;
/// <summary>
/// 原评分单ID
/// </summary>
public long OriginalScoreSheetId { get; set; }
/// <summary>
/// 修正后的新评分单ID
/// </summary>
public long? NewScoreSheetId { get; set; }
/// <summary>
/// 裁判席位编码
/// </summary>
public string JudgeRole { get; set; } = string.Empty;
/// <summary>
/// 裁判姓名
/// </summary>
public string RefereeName { get; set; } = string.Empty;
/// <summary>
/// 修正前的得分
/// </summary>
public string OriginalScore { get; set; } = string.Empty;
/// <summary>
/// 修正后的得分
/// </summary>
public string? NewScore { get; set; }
/// <summary>
/// 申请修正原因
/// </summary>
public string ApplyReason { get; set; } = string.Empty;
/// <summary>
/// 审批意见
/// </summary>
public string? ApproveRemark { get; set; }
/// <summary>
/// 修正状态:0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
/// </summary>
public int CorrectionStatus { get; set; }
/// <summary>
/// 修正状态名称
/// </summary>
public string CorrectionStatusName { get; set; } = string.Empty;
/// <summary>
/// 申请时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 审批时间
/// </summary>
public DateTime? ApproveTime { get; set; }
/// <summary>
/// 完成时间
/// </summary>
public DateTime? CompletedTime { get; set; }
}
/// <summary>
/// 场次成绩确认结果
/// </summary>
public class ConfirmSessionScoreOutput
{
/// <summary>
/// 已确认的成绩条数
/// </summary>
public int ConfirmedCount { get; set; }
/// <summary>
/// 仍未完成评分的出场编号
/// </summary>
public List<string> PendingEntries { get; set; } = new();
/// <summary>
/// 场次是否已整场结束
/// </summary>
public bool SessionFinished { get; set; }
}