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