-m "修复赛事编排确认时 EventSessionEntry 写入无效 RegistrationItemId 导致的外键冲突。" -m "完善成绩展示数据,补充参赛单位名称,支持成绩管理矩阵及大屏展示。" -m "调整检录大屏进度规则:赛事检录顺序、当前检录项目及队伍状态统一跟随一检进度。" -m "当前比赛默认根据三检通过记录更新;赛事仅配置两检时,允许二检作为上场标记。" -m "一检全部完成后自动切换下一项目,全部完成后不再错误展示全部参赛队伍。
1085 lines
26 KiB
C#
1085 lines
26 KiB
C#
namespace YD_Event.Application.Workbench.Dtos;
|
||
|
||
/// <summary>
|
||
/// 工作台赛事选择查询输入
|
||
/// </summary>
|
||
public class WorkbenchEventQueryInput : Pagination
|
||
{
|
||
/// <summary>
|
||
/// 赛事名称(可选,模糊匹配)
|
||
/// </summary>
|
||
public string? EventName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 数据来源:registration-报名平台(默认),orderbook-秩序册
|
||
/// </summary>
|
||
public string SourceMode { get; set; } = "registration";
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台赛事选择项
|
||
/// </summary>
|
||
public class WorkbenchEventDto
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事名称
|
||
/// </summary>
|
||
public string EventName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 赛事状态
|
||
/// </summary>
|
||
public int EventStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 比赛开始时间
|
||
/// </summary>
|
||
public DateTime? MatchStartTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 比赛结束时间
|
||
/// </summary>
|
||
public DateTime? MatchEndTime { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台场次列表查询输入
|
||
/// </summary>
|
||
public class WorkbenchSessionQueryInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long EventId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场地ID(可选)
|
||
/// </summary>
|
||
public long? VenueId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目ID(可选)
|
||
/// </summary>
|
||
public long? EventProjectId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次状态(可选):0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
|
||
/// </summary>
|
||
public int? SessionStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关键词搜索(场次编号、场次名称)
|
||
/// </summary>
|
||
public string? Keyword { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台场次信息
|
||
/// </summary>
|
||
public class WorkbenchSessionDto
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long EventId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场地ID
|
||
/// </summary>
|
||
public long VenueId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事项目ID
|
||
/// </summary>
|
||
public long EventProjectId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目组别ID(多组别混合场次时为空)
|
||
/// </summary>
|
||
public long? EventProjectGroupId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 计分规则编码,用于前端按规则展示评分维度
|
||
/// </summary>
|
||
public string ScoreRuleCode { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场次ID
|
||
/// </summary>
|
||
public long SessionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次编号
|
||
/// </summary>
|
||
public string SessionNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场次名称
|
||
/// </summary>
|
||
public string? SessionName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事名称
|
||
/// </summary>
|
||
public string EventName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 项目名称
|
||
/// </summary>
|
||
public string ProjectName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场地名称
|
||
/// </summary>
|
||
public string VenueName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 组别名称(多组别混合时为空)
|
||
/// </summary>
|
||
public string? GroupName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次开始时间
|
||
/// </summary>
|
||
public DateTime? StartTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次结束时间
|
||
/// </summary>
|
||
public DateTime? EndTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次状态:0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
|
||
/// </summary>
|
||
public int SessionStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次状态名称
|
||
/// </summary>
|
||
public string SessionStatusName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 当前出场记录ID
|
||
/// </summary>
|
||
public long? CurrentEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 总出场数
|
||
/// </summary>
|
||
public int TotalEntries { get; set; }
|
||
|
||
/// <summary>
|
||
/// 已完成出场数
|
||
/// </summary>
|
||
public int CompletedEntries { get; set; }
|
||
|
||
/// <summary>
|
||
/// 已确认成绩数
|
||
/// </summary>
|
||
public int ConfirmedResults { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台出场记录列表输入
|
||
/// </summary>
|
||
public class WorkbenchEntryQueryInput
|
||
{
|
||
/// <summary>仅获取指定出场记录(供详情按需加载)。</summary>
|
||
public long? SessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次ID
|
||
/// </summary>
|
||
public long SessionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 出场状态(可选)
|
||
/// </summary>
|
||
public int? EntryStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩状态(可选)
|
||
/// </summary>
|
||
public int? ResultStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关键词搜索(参赛者姓名、队名、出场编号)
|
||
/// </summary>
|
||
public string? Keyword { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台出场记录详情
|
||
/// </summary>
|
||
public class WorkbenchEntryDetailDto
|
||
{
|
||
/// <summary>所属场次ID。</summary>
|
||
public long SessionId { get; set; }
|
||
|
||
/// <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 int SessionOrder { get; set; }
|
||
|
||
/// <summary>
|
||
/// 秩序册预览/赛事编排中的全局出场顺序
|
||
/// </summary>
|
||
public long ScheduleOrder { get; set; }
|
||
|
||
/// <summary>
|
||
/// 参赛者姓名
|
||
/// </summary>
|
||
public string ParticipantName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 队伍名称(个人项目为空)
|
||
/// </summary>
|
||
public string? TeamName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 参赛单位名称
|
||
/// </summary>
|
||
public string? UnitName { get; set; }
|
||
|
||
/// <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 string EntryStatusName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 是否为重赛
|
||
/// </summary>
|
||
public bool IsRematch { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩信息
|
||
/// </summary>
|
||
public WorkbenchEntryResultDto? Result { get; set; }
|
||
|
||
/// <summary>
|
||
/// 裁判评分详情列表
|
||
/// </summary>
|
||
public List<WorkbenchJudgeScoreDto> JudgeScores { get; set; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台出场成绩信息
|
||
/// </summary>
|
||
public class WorkbenchEntryResultDto
|
||
{
|
||
/// <summary>已保存的花样得分系数 M;规定赛为空。</summary>
|
||
public decimal? DeductionFactor { get; set; }
|
||
|
||
/// <summary>用于复核的计算快照(包括失误平均和因子舍入过程)。</summary>
|
||
public string? CalculationJson { get; set; }
|
||
/// <summary>
|
||
/// 成绩ID
|
||
/// </summary>
|
||
public long ResultId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 难度分
|
||
/// </summary>
|
||
public decimal DifficultyScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 表现分
|
||
/// </summary>
|
||
public decimal PerformanceScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 规定分
|
||
/// </summary>
|
||
public decimal RequiredScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 扣分
|
||
/// </summary>
|
||
public decimal DeductionScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 总分
|
||
/// </summary>
|
||
public decimal? TotalScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩显示文本
|
||
/// </summary>
|
||
public string ScoreText { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 是否取消比赛资格
|
||
/// </summary>
|
||
public bool IsDisqualified { get; set; }
|
||
|
||
/// <summary>
|
||
/// 取消比赛资格原因
|
||
/// </summary>
|
||
public string? DisqualifyReason { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩状态:0-计算中,10-待复核,20-已确认,30-已投屏,40-已更正,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 int? Rank { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台裁判评分信息
|
||
/// </summary>
|
||
public class WorkbenchJudgeScoreDto
|
||
{
|
||
/// <summary>
|
||
/// 评分单ID
|
||
/// </summary>
|
||
public long ScoreSheetId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 裁判席位编码
|
||
/// </summary>
|
||
public string JudgeRole { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判类型编码
|
||
/// </summary>
|
||
public string JudgeRoleType { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判类型名称
|
||
/// </summary>
|
||
public string JudgeRoleName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判姓名
|
||
/// </summary>
|
||
public string JudgeName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 评分状态:0-草稿,10-已提交,20-已确认,30-已被修正,90-已作废
|
||
/// </summary>
|
||
public int SheetStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 评分状态名称
|
||
/// </summary>
|
||
public string SheetStatusName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 难度分
|
||
/// </summary>
|
||
public decimal DifficultyScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 表现分
|
||
/// </summary>
|
||
public decimal PerformanceScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 规定分
|
||
/// </summary>
|
||
public decimal RequiredScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 扣分
|
||
/// </summary>
|
||
public decimal DeductionScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 合计得分
|
||
/// </summary>
|
||
public decimal TotalScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否判定取消比赛资格
|
||
/// </summary>
|
||
public bool IsDisqualified { get; set; }
|
||
|
||
/// <summary>
|
||
/// 提交时间
|
||
/// </summary>
|
||
public DateTime? SubmittedTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否存在待处理的修正申请
|
||
/// </summary>
|
||
public bool HasPendingCorrection { get; set; }
|
||
|
||
/// <summary>
|
||
/// 修正任务已批准或裁判修改中,原评分仅供追溯,本次提交仍待裁判重新完成。
|
||
/// </summary>
|
||
public bool RequiresResubmission { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前评分单提交的记录画板 PNG 地址
|
||
/// </summary>
|
||
public string? AnnotationUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 评分单的动态评分项明细快照
|
||
/// </summary>
|
||
public List<WorkbenchScoreItemDto> ScoreItems { get; set; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正可选裁判:一个裁判类型下本场次已分配的裁判。
|
||
/// 裁判类型取自该场次项目的计分规则,裁判人数取自【裁判报名与分配】的分配结果。
|
||
/// </summary>
|
||
public class CorrectionJudgeOptionDto
|
||
{
|
||
/// <summary>
|
||
/// 裁判类型编码(如 CJ、CQ、T)
|
||
/// </summary>
|
||
public string JudgeRoleType { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判类型名称(如 创意编排、完成质量、主裁)
|
||
/// </summary>
|
||
public string JudgeRoleName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 该类型下已分配的裁判席位
|
||
/// </summary>
|
||
public List<CorrectionJudgeItemDto> Judges { get; set; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正可选裁判席位
|
||
/// </summary>
|
||
public class CorrectionJudgeItemDto
|
||
{
|
||
/// <summary>
|
||
/// 裁判分配ID
|
||
/// </summary>
|
||
public long JudgeAssignmentId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 裁判席位编码(如 CQ1、T)
|
||
/// </summary>
|
||
public string JudgeRole { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判档案ID
|
||
/// </summary>
|
||
public long RefereeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 裁判姓名
|
||
/// </summary>
|
||
public string JudgeName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 席位展示名称,如“完成质量1(崔一)”
|
||
/// </summary>
|
||
public string DisplayName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 该裁判对当前出场的评分单ID,未提交评分时为空
|
||
/// </summary>
|
||
public long? ScoreSheetId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 评分单状态:0-草稿,10-已提交,20-已确认,30-已被修正,90-已作废
|
||
/// </summary>
|
||
public int? SheetStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 评分单状态名称
|
||
/// </summary>
|
||
public string? SheetStatusName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 该裁判的评分合计
|
||
/// </summary>
|
||
public decimal? TotalScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否可发起修正
|
||
/// </summary>
|
||
public bool CanCorrect { get; set; }
|
||
|
||
/// <summary>
|
||
/// 不可发起修正的原因,可修正时为空
|
||
/// </summary>
|
||
public string? DisabledReason { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发起成绩修正输入(可一次勾选多名裁判)
|
||
/// </summary>
|
||
public class WorkbenchCorrectionInitiateInput
|
||
{
|
||
/// <summary>
|
||
/// 出场记录ID
|
||
/// </summary>
|
||
public long SessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 需要修正的评分单ID列表
|
||
/// </summary>
|
||
[Required(ErrorMessage = "请选择需要修正的裁判")]
|
||
[MinLength(1, ErrorMessage = "请至少选择一名裁判")]
|
||
public List<long> ScoreSheetIds { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 修正原因
|
||
/// </summary>
|
||
[Required(ErrorMessage = "修正原因不能为空")]
|
||
[StringLength(200, MinimumLength = 2, ErrorMessage = "修正原因长度必须为2-200个字符")]
|
||
public string Reason { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 工作台评分项详情
|
||
/// </summary>
|
||
public class WorkbenchScoreItemDto
|
||
{
|
||
/// <summary>
|
||
/// 评分项编码
|
||
/// </summary>
|
||
public string ItemCode { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 评分项名称
|
||
/// </summary>
|
||
public string ItemName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 所属科目编码(可选)
|
||
/// </summary>
|
||
public string? SubjectCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 评分项类型
|
||
/// </summary>
|
||
public int ItemType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 计分维度
|
||
/// </summary>
|
||
public int ScoreDimension { get; set; }
|
||
|
||
/// <summary>
|
||
/// 计数值(计数类评分项,如次数、人数)
|
||
/// </summary>
|
||
public decimal? CountValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 裁判录入值
|
||
/// </summary>
|
||
public decimal? InputValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 小计得分
|
||
/// </summary>
|
||
public decimal Subtotal { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否由服务端联动生成
|
||
/// </summary>
|
||
public bool IsAutoGenerated { get; set; }
|
||
|
||
/// <summary>
|
||
/// 联动来源评分项编码
|
||
/// </summary>
|
||
public string? ParentItemCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 排序号
|
||
/// </summary>
|
||
public int Sort { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩投屏输入
|
||
/// </summary>
|
||
public class ResultScreenCastInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long EventId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏类型:1-单个成绩,2-排名列表
|
||
/// </summary>
|
||
public int CastType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场地ID(可选,用于筛选投屏范围)
|
||
/// </summary>
|
||
public long? VenueId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目ID(投屏排名时必填)
|
||
/// </summary>
|
||
public long? EventProjectId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 组别ID(投屏排名时必填)
|
||
/// </summary>
|
||
public long? EventProjectGroupId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场次ID(投屏单个成绩时必填)
|
||
/// </summary>
|
||
public long? SessionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 出场记录ID(投屏单个成绩时必填)
|
||
/// </summary>
|
||
public long? SessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩ID(投屏单个成绩时必填)
|
||
/// </summary>
|
||
public long? EventResultId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩版本号(可选,默认使用当前版本)
|
||
/// </summary>
|
||
public int? ResultVersion { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩投屏输出
|
||
/// </summary>
|
||
public class ResultScreenCastOutput
|
||
{
|
||
/// <summary>
|
||
/// 投屏记录ID
|
||
/// </summary>
|
||
public long ScreenCastId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏类型:1-成绩,2-排名
|
||
/// </summary>
|
||
public int CastType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏时间
|
||
/// </summary>
|
||
public DateTime CastTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏内容快照
|
||
/// </summary>
|
||
public string PayloadJson { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 撤回投屏输入
|
||
/// </summary>
|
||
public class WithdrawScreenCastInput
|
||
{
|
||
/// <summary>
|
||
/// 投屏记录ID
|
||
/// </summary>
|
||
public long ScreenCastId { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取当前投屏内容输入
|
||
/// </summary>
|
||
public class GetCurrentScreenCastInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long EventId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 场地ID(可选)
|
||
/// </summary>
|
||
public long? VenueId { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前投屏内容输出
|
||
/// </summary>
|
||
public class CurrentScreenCastDto
|
||
{
|
||
/// <summary>
|
||
/// 投屏记录ID
|
||
/// </summary>
|
||
public long ScreenCastId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏类型:1-成绩,2-排名
|
||
/// </summary>
|
||
public int CastType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏状态:0-已投出,10-已撤回,20-已被新投屏替换
|
||
/// </summary>
|
||
public int CastStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 投屏时间
|
||
/// </summary>
|
||
public DateTime CastTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事名称(大屏标题)
|
||
/// </summary>
|
||
public string EventName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 项目名称
|
||
/// </summary>
|
||
public string ProjectName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 计分规则编码
|
||
/// </summary>
|
||
public string ScoreRuleCode { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 组别名称
|
||
/// </summary>
|
||
public string GroupName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场地名称
|
||
/// </summary>
|
||
public string VenueName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场次编号
|
||
/// </summary>
|
||
public string SessionNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 投屏内容(JSON格式)
|
||
/// </summary>
|
||
public string PayloadJson { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正申请审批输入
|
||
/// </summary>
|
||
public class ApproveScoreCorrectionInput
|
||
{
|
||
/// <summary>
|
||
/// 修正申请ID
|
||
/// </summary>
|
||
public long CorrectionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批结果:true-批准,false-拒绝
|
||
/// </summary>
|
||
public bool IsApproved { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批意见
|
||
/// </summary>
|
||
public string? ApproveRemark { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正申请列表查询输入
|
||
/// </summary>
|
||
public class ScoreCorrectionQueryInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long EventId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 修正状态(可选):0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
|
||
/// </summary>
|
||
public int? CorrectionStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关键词搜索
|
||
/// </summary>
|
||
public string? Keyword { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正申请列表项
|
||
/// </summary>
|
||
public class ScoreCorrectionListDto
|
||
{
|
||
/// <summary>
|
||
/// 修正申请ID
|
||
/// </summary>
|
||
public long CorrectionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事名称
|
||
/// </summary>
|
||
public string EventName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 场次编号
|
||
/// </summary>
|
||
public string SessionNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 出场编号
|
||
/// </summary>
|
||
public string EntryNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 参赛者姓名
|
||
/// </summary>
|
||
public string ParticipantName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 裁判席位
|
||
/// </summary>
|
||
public string JudgeRole { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请人姓名
|
||
/// </summary>
|
||
public string ApplyUserName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请修正原因
|
||
/// </summary>
|
||
public string ApplyReason { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请时间
|
||
/// </summary>
|
||
public DateTime CreatedTime { 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 string? ApproveUserName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批时间
|
||
/// </summary>
|
||
public DateTime? ApproveTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 完成时间
|
||
/// </summary>
|
||
public DateTime? CompletedTime { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩修正申请详情
|
||
/// </summary>
|
||
public class ScoreCorrectionDetailDto
|
||
{
|
||
/// <summary>
|
||
/// 修正申请ID
|
||
/// </summary>
|
||
public long CorrectionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事信息
|
||
/// </summary>
|
||
public WorkbenchSessionDto Session { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 出场信息
|
||
/// </summary>
|
||
public WorkbenchEntryDetailDto Entry { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 原评分单信息
|
||
/// </summary>
|
||
public WorkbenchJudgeScoreDto OriginalScore { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 新评分单信息(修正完成后有值)
|
||
/// </summary>
|
||
public WorkbenchJudgeScoreDto? NewScore { get; set; }
|
||
|
||
/// <summary>
|
||
/// 申请人信息
|
||
/// </summary>
|
||
public string ApplyUserName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请修正原因
|
||
/// </summary>
|
||
public string ApplyReason { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请时间
|
||
/// </summary>
|
||
public DateTime CreatedTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 修正状态:0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
|
||
/// </summary>
|
||
public int CorrectionStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批人姓名
|
||
/// </summary>
|
||
public string? ApproveUserName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批意见
|
||
/// </summary>
|
||
public string? ApproveRemark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批时间
|
||
/// </summary>
|
||
public DateTime? ApproveTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 完成时间
|
||
/// </summary>
|
||
public DateTime? CompletedTime { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 重赛输入
|
||
/// </summary>
|
||
public class CreateRematchInput
|
||
{
|
||
/// <summary>
|
||
/// 原出场记录ID
|
||
/// </summary>
|
||
public long OriginalSessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 重赛原因
|
||
/// </summary>
|
||
[Required(ErrorMessage = "重赛原因不能为空")]
|
||
[StringLength(200, MinimumLength = 2, ErrorMessage = "重赛原因长度必须为2-200个字符")]
|
||
public string RematchReason { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 重赛输出
|
||
/// </summary>
|
||
public class CreateRematchOutput
|
||
{
|
||
/// <summary>
|
||
/// 新出场记录ID
|
||
/// </summary>
|
||
public long NewSessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 新出场编号
|
||
/// </summary>
|
||
public string NewEntryNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 新出场顺序
|
||
/// </summary>
|
||
public int NewPlayOrder { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩作废输入
|
||
/// </summary>
|
||
public class VoidResultInput
|
||
{
|
||
/// <summary>
|
||
/// 出场记录ID
|
||
/// </summary>
|
||
public long SessionEntryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 作废原因
|
||
/// </summary>
|
||
[Required(ErrorMessage = "作废原因不能为空")]
|
||
[StringLength(200, MinimumLength = 2, ErrorMessage = "作废原因长度必须为2-200个字符")]
|
||
public string VoidReason { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 成绩确认输入
|
||
/// </summary>
|
||
public class ConfirmResultInput
|
||
{
|
||
/// <summary>
|
||
/// 成绩ID
|
||
/// </summary>
|
||
public long ResultId { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 批量成绩确认输入
|
||
/// </summary>
|
||
public class BatchConfirmResultInput
|
||
{
|
||
/// <summary>
|
||
/// 场次ID
|
||
/// </summary>
|
||
public long SessionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 成绩ID列表(必须明确提交选中的成绩)
|
||
/// </summary>
|
||
[Required(ErrorMessage = "请选择需要确认的成绩")]
|
||
[MinLength(1, ErrorMessage = "请选择至少一条待确认成绩")]
|
||
public List<long> ResultIds { get; set; } = new();
|
||
}
|