打分系统裁判端表设计

This commit is contained in:
马梓彭 2026-08-17 23:07:15 +08:00
parent 3be70127b5
commit 33a289568e
15 changed files with 1311 additions and 5 deletions

View File

@ -40,6 +40,12 @@ public class EventJudgeAssignment : Entity<long>, ISoftDelete, ICreatedUserId, I
[SugarColumn(Length = 32)]
public string JudgeRole { get; set; } = null!;
/// <summary>
/// 裁判角色类别编码(如 DP、DM、DR、P、T)
/// </summary>
[SugarColumn(Length = 16, IsNullable = true)]
public string? JudgeRoleType { get; set; }
/// <summary>
/// 分配状态:0-草稿,1-已提交,2-已替换,9-已停用
/// </summary>

View File

@ -0,0 +1,90 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 裁判端消息表
/// </summary>
[SugarTable("EventJudgeMessage")]
public class EventJudgeMessage : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 接收用户ID
/// </summary>
public long ReceiverUserId { get; set; }
/// <summary>
/// 接收裁判ID
/// </summary>
public long RefereeId { get; set; }
/// <summary>
/// 消息类型:1-成绩修正提醒,2-评分任务下发,3-重赛通知,9-系统通知
/// </summary>
public int MessageType { get; set; }
/// <summary>
/// 消息标题
/// </summary>
[SugarColumn(Length = 128)]
public string Title { get; set; } = null!;
/// <summary>
/// 消息内容
/// </summary>
[SugarColumn(Length = 512)]
public string Content { get; set; } = null!;
/// <summary>
/// 关联业务类型
/// </summary>
[SugarColumn(Length = 32, IsNullable = true)]
public string? RelationType { get; set; }
/// <summary>
/// 关联业务ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? RelationId { get; set; }
/// <summary>
/// 是否已读
/// </summary>
public bool IsRead { get; set; }
/// <summary>
/// 阅读时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? ReadTime { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -0,0 +1,120 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 裁判评分明细表
/// </summary>
[SugarTable("EventJudgeScoreDetail")]
public class EventJudgeScoreDetail : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的裁判评分单ID
/// </summary>
public long ScoreSheetId { get; set; }
/// <summary>
/// 关联的计分规则明细ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? ScoreRuleItemId { get; set; }
/// <summary>
/// 评分项编码
/// </summary>
[SugarColumn(Length = 64)]
public string ItemCode { get; set; } = null!;
/// <summary>
/// 评分项名称(快照)
/// </summary>
[SugarColumn(Length = 128)]
public string ItemName { get; set; } = null!;
/// <summary>
/// 评分对象编码(如 A、B)
/// </summary>
[SugarColumn(Length = 32, IsNullable = true)]
public string? SubjectCode { get; set; }
/// <summary>
/// 评分项类型:1-难度计数,2-规定元素,3-表现维度,4-扣分项,5-取消资格,6-规定赛评分项
/// </summary>
public int ItemType { get; set; }
/// <summary>
/// 得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
/// </summary>
public int ScoreDimension { get; set; }
/// <summary>
/// 录入数量
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? CountValue { get; set; }
/// <summary>
/// 录入分值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? InputValue { get; set; }
/// <summary>
/// 单位分值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? UnitValue { get; set; }
/// <summary>
/// 本项小计
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal Subtotal { get; set; }
/// <summary>
/// 是否自动生成
/// </summary>
public bool IsAutoGenerated { get; set; }
/// <summary>
/// 来源评分项编码
/// </summary>
[SugarColumn(Length = 64, IsNullable = true)]
public string? ParentItemCode { get; set; }
/// <summary>
/// 扩展信息(JSON)
/// </summary>
[SugarColumn(Length = 1000, IsNullable = true)]
public string? ExtensionJson { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -0,0 +1,197 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 裁判评分单表
/// </summary>
[SugarTable("EventJudgeScoreSheet")]
public class EventJudgeScoreSheet : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 关联的比赛场次ID
/// </summary>
public long SessionId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 关联的裁判评分任务ID
/// </summary>
public long JudgeTaskId { get; set; }
/// <summary>
/// 关联的裁判分配ID
/// </summary>
public long JudgeAssignmentId { get; set; }
/// <summary>
/// 关联的裁判档案ID
/// </summary>
public long RefereeId { get; set; }
/// <summary>
/// 提交用户ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? JudgeUserId { get; set; }
/// <summary>
/// 裁判席位编码
/// </summary>
[SugarColumn(Length = 32)]
public string JudgeRole { get; set; } = null!;
/// <summary>
/// 裁判角色类别编码
/// </summary>
[SugarColumn(Length = 16)]
public string JudgeRoleType { get; set; } = null!;
/// <summary>
/// 关联的计分规则ID
/// </summary>
public long ScoreRuleId { get; set; }
/// <summary>
/// 计分规则版本号
/// </summary>
public int RuleVersion { get; set; } = 1;
/// <summary>
/// 评分单版本号
/// </summary>
public int SheetVersion { get; set; } = 1;
/// <summary>
/// 评分单状态:0-草稿,10-已提交,20-已确认,30-已被修正,90-已作废
/// </summary>
public int SheetStatus { get; set; }
/// <summary>
/// 是否为当前有效版本
/// </summary>
public bool IsCurrent { get; set; } = true;
/// <summary>
/// 难度分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DifficultyScore { get; set; }
/// <summary>
/// 表现分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal PerformanceScore { get; set; }
/// <summary>
/// 规定分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal RequiredScore { get; set; }
/// <summary>
/// 扣分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DeductionScore { get; set; }
/// <summary>
/// 规定元素完成数量
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal RequiredCompletedCount { get; set; }
/// <summary>
/// 规定元素缺失数量
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal RequiredMissingCount { get; set; }
/// <summary>
/// 合计得分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal TotalScore { get; set; }
/// <summary>
/// 是否取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>
/// 取消比赛资格原因编码
/// </summary>
[SugarColumn(Length = 64, IsNullable = true)]
public string? DisqualifyReasonCode { get; set; }
/// <summary>
/// 取消比赛资格补充说明
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? DisqualifyRemark { get; set; }
/// <summary>
/// 计算明细(JSON)
/// </summary>
[SugarColumn(ColumnDataType = "nvarchar(max)", IsNullable = true)]
public string? CalculationJson { get; set; }
/// <summary>
/// 提交幂等键
/// </summary>
[SugarColumn(Length = 64)]
public string IdempotencyKey { get; set; } = null!;
/// <summary>
/// 提交时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? SubmittedTime { get; set; }
/// <summary>
/// 来源评分单ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? OriginalSheetId { get; set; }
/// <summary>
/// 修正原因
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? CorrectionReason { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -0,0 +1,156 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 裁判评分任务表
/// </summary>
[SugarTable("EventJudgeTask")]
public class EventJudgeTask : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 关联的比赛场次ID
/// </summary>
public long SessionId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 关联的裁判分配ID
/// </summary>
public long JudgeAssignmentId { get; set; }
/// <summary>
/// 关联的赛事裁判记录ID
/// </summary>
public long EventRefereeId { get; set; }
/// <summary>
/// 关联的裁判档案ID
/// </summary>
public long RefereeId { get; set; }
/// <summary>
/// 关联的小程序用户ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? JudgeUserId { get; set; }
/// <summary>
/// 裁判席位编码
/// </summary>
[SugarColumn(Length = 32)]
public string JudgeRole { get; set; } = null!;
/// <summary>
/// 裁判角色类别编码
/// </summary>
[SugarColumn(Length = 16)]
public string JudgeRoleType { get; set; } = null!;
/// <summary>
/// 关联的计分规则ID
/// </summary>
public long ScoreRuleId { get; set; }
/// <summary>
/// 计分规则版本号
/// </summary>
public int RuleVersion { get; set; } = 1;
/// <summary>
/// 任务快照(JSON)
/// </summary>
[SugarColumn(ColumnDataType = "nvarchar(max)")]
public string TaskSnapshotJson { get; set; } = null!;
/// <summary>
/// 任务类型:0-正常打分,1-成绩修正
/// </summary>
public int TaskType { get; set; }
/// <summary>
/// 任务状态:0-待下发,10-已下发,20-已接收,30-评分中,40-已提交,50-需修正,60-已修正,80-已拒绝,90-已作废,99-已过期
/// </summary>
public int TaskStatus { get; set; }
/// <summary>
/// 任务版本号
/// </summary>
public int TaskVersion { get; set; } = 1;
/// <summary>
/// 下发时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? DispatchedTime { get; set; }
/// <summary>
/// 接收时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? AcceptedTime { get; set; }
/// <summary>
/// 提交时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? SubmittedTime { get; set; }
/// <summary>
/// 任务截止时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? ExpiresTime { get; set; }
/// <summary>
/// 来源任务ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? OriginalTaskId { get; set; }
/// <summary>
/// 拒绝原因
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? RejectReason { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? Remark { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -25,7 +25,7 @@ public class EventReferee : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedT
public long? RefereeApplicationId { get; set; }
/// <summary>
/// 关联来源:1-后台添加,2-小程序报名
/// 关联来源:1-后台添加,2-小程序报名,3-秩序册导入
/// </summary>
public int SourceType { get; set; } = 1;

View File

@ -69,6 +69,75 @@ public class EventResult : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTi
[SugarColumn(Length = 32)]
public string Score { get; set; }
/// <summary>
/// 关联的比赛场次ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? SessionId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? SessionEntryId { get; set; }
/// <summary>
/// 难度分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DifficultyScore { get; set; }
/// <summary>
/// 表现分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal PerformanceScore { get; set; }
/// <summary>
/// 规定分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal RequiredScore { get; set; }
/// <summary>
/// 扣分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DeductionScore { get; set; }
/// <summary>
/// 数值总分
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? TotalScore { get; set; }
/// <summary>
/// 是否取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>
/// 取消比赛资格原因编码
/// </summary>
[SugarColumn(Length = 64, IsNullable = true)]
public string? DisqualifyReasonCode { get; set; }
/// <summary>
/// 成绩状态:0-计算中,10-待复核,20-已确认,30-已投屏,40-已更正,90-已作废
/// </summary>
public int ResultStatus { get; set; }
/// <summary>
/// 当前成绩版本号
/// </summary>
public int ResultVersion { get; set; } = 1;
/// <summary>
/// 聚合计算明细(JSON)
/// </summary>
[SugarColumn(ColumnDataType = "nvarchar(max)", IsNullable = true)]
public string? CalculationJson { get; set; }
/// <summary>
/// 排名
/// </summary>
@ -114,4 +183,4 @@ public class EventResult : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTi
/// 更新时间
/// </summary>
public DateTime? UpdatedTime { get; set; }
}
}

View File

@ -0,0 +1,121 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 成绩投屏记录表
/// </summary>
[SugarTable("EventResultScreenCast")]
public class EventResultScreenCast : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 投屏类型:1-成绩,2-排名
/// </summary>
public int CastType { get; set; }
/// <summary>
/// 投屏场地ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? VenueId { get; set; }
/// <summary>
/// 关联的赛事项目ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? EventProjectId { get; set; }
/// <summary>
/// 关联的赛事项目组别ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? EventProjectGroupId { get; set; }
/// <summary>
/// 关联的比赛场次ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? SessionId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? SessionEntryId { get; set; }
/// <summary>
/// 关联的赛事成绩ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? EventResultId { get; set; }
/// <summary>
/// 投屏时的成绩版本号
/// </summary>
[SugarColumn(IsNullable = true)]
public int? ResultVersion { get; set; }
/// <summary>
/// 投屏内容快照(JSON)
/// </summary>
[SugarColumn(ColumnDataType = "nvarchar(max)")]
public string PayloadJson { get; set; } = null!;
/// <summary>
/// 投屏状态:0-已投出,10-已撤回,20-已被新投屏替换
/// </summary>
public int CastStatus { get; set; }
/// <summary>
/// 投屏时间
/// </summary>
public DateTime CastTime { get; set; }
/// <summary>
/// 撤回时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? RevokedTime { get; set; }
/// <summary>
/// 撤回人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? RevokedUserId { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? Remark { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -0,0 +1,140 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 赛事成绩版本表
/// </summary>
[SugarTable("EventResultVersion")]
public class EventResultVersion : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事成绩ID
/// </summary>
public long EventResultId { get; set; }
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 成绩版本号
/// </summary>
public int ResultVersion { get; set; } = 1;
/// <summary>
/// 难度分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DifficultyScore { get; set; }
/// <summary>
/// 表现分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal PerformanceScore { get; set; }
/// <summary>
/// 规定分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal RequiredScore { get; set; }
/// <summary>
/// 扣分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal DeductionScore { get; set; }
/// <summary>
/// 正式总分
/// </summary>
[SugarColumn(DecimalDigits = 4)]
public decimal TotalScore { get; set; }
/// <summary>
/// 名次
/// </summary>
[SugarColumn(IsNullable = true)]
public int? Rank { get; set; }
/// <summary>
/// 是否取消比赛资格
/// </summary>
public bool IsDisqualified { get; set; }
/// <summary>
/// 取消比赛资格原因编码
/// </summary>
[SugarColumn(Length = 64, IsNullable = true)]
public string? DisqualifyReasonCode { get; set; }
/// <summary>
/// 成绩状态:0-计算中,10-待复核,20-已确认,30-已投屏,40-已更正,90-已作废
/// </summary>
public int ResultStatus { get; set; }
/// <summary>
/// 版本来源:0-正常聚合,1-成绩修正,2-重赛
/// </summary>
public int SourceType { get; set; }
/// <summary>
/// 关联的成绩修正申请ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? ScoreCorrectionId { get; set; }
/// <summary>
/// 关联的计分规则ID
/// </summary>
public long ScoreRuleId { get; set; }
/// <summary>
/// 计分规则版本号
/// </summary>
public int RuleVersion { get; set; } = 1;
/// <summary>
/// 聚合计算明细(JSON)
/// </summary>
[SugarColumn(ColumnDataType = "nvarchar(max)", IsNullable = true)]
public string? CalculationJson { get; set; }
/// <summary>
/// 版本说明
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? Remark { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -0,0 +1,118 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 成绩修正申请表
/// </summary>
[SugarTable("EventScoreCorrection")]
public class EventScoreCorrection : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 关联的比赛场次ID
/// </summary>
public long SessionId { get; set; }
/// <summary>
/// 关联的场次出场记录ID
/// </summary>
public long SessionEntryId { get; set; }
/// <summary>
/// 被修正的原评分单ID
/// </summary>
public long OriginalScoreSheetId { get; set; }
/// <summary>
/// 关联的裁判分配ID
/// </summary>
public long JudgeAssignmentId { get; set; }
/// <summary>
/// 裁判席位编码
/// </summary>
[SugarColumn(Length = 32)]
public string JudgeRole { get; set; } = null!;
/// <summary>
/// 修正任务ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? CorrectionTaskId { get; set; }
/// <summary>
/// 修正完成后产生的新评分单ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? NewScoreSheetId { get; set; }
/// <summary>
/// 申请人ID
/// </summary>
public long ApplyUserId { get; set; }
/// <summary>
/// 申请修正原因
/// </summary>
[SugarColumn(Length = 512)]
public string ApplyReason { get; set; } = null!;
/// <summary>
/// 审批人ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? ApproveUserId { get; set; }
/// <summary>
/// 审批意见
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? ApproveRemark { get; set; }
/// <summary>
/// 审批时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? ApproveTime { get; set; }
/// <summary>
/// 修正状态:0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
/// </summary>
public int CorrectionStatus { get; set; }
/// <summary>
/// 完成时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? CompletedTime { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -59,7 +59,13 @@ public class EventSession : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedT
public DateTime? EndTime { get; set; }
/// <summary>
/// 场次状态:0-草稿,10-就绪,30-进行中,60-已结束,90-已取消
/// 当前出场记录ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? CurrentEntryId { get; set; }
/// <summary>
/// 场次状态:0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
/// </summary>
public int SessionStatus { get; set; }

View File

@ -22,7 +22,13 @@ public class EventSessionEntry : Entity<long>, ISoftDelete, ICreatedUserId, ICre
/// <summary>
/// 关联的报名项目明细ID
/// </summary>
public long RegistrationItemId { get; set; }
[SugarColumn(IsNullable = true)]
public long? RegistrationItemId { get; set; }
/// <summary>
/// 出场数据来源:0-报名平台编排,1-秩序册导入
/// </summary>
public int SourceType { get; set; }
/// <summary>
/// 出场编号(项目序号+场地序号+出场顺序)
@ -36,10 +42,50 @@ public class EventSessionEntry : Entity<long>, ISoftDelete, ICreatedUserId, ICre
public int PlayOrder { get; set; }
/// <summary>
/// 出场状态:0-待出场(其余状态由打分系统流转时写入)
/// 出场状态:0-待出场,10-已检录,20-已叫号,30-进行中,40-已完成,80-退赛,90-取消比赛资格
/// </summary>
public int EntryStatus { get; set; }
/// <summary>
/// 叫号时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? CallTime { get; set; }
/// <summary>
/// 开始比赛时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? StartTime { get; set; }
/// <summary>
/// 结束比赛时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? FinishTime { get; set; }
/// <summary>
/// 是否为重赛产生的出场记录
/// </summary>
public bool IsRematch { get; set; }
/// <summary>
/// 重赛来源出场记录ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? RematchFromEntryId { get; set; }
/// <summary>
/// 成绩是否已作废
/// </summary>
public bool IsVoided { get; set; }
/// <summary>
/// 成绩作废原因
/// </summary>
[SugarColumn(Length = 512, IsNullable = true)]
public string? VoidReason { get; set; }
/// <summary>
/// 参赛人员姓名
/// </summary>

View File

@ -0,0 +1,101 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 重赛记录表
/// </summary>
[SugarTable("EventSessionEntryRematch")]
public class EventSessionEntryRematch : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 关联的赛事项目ID
/// </summary>
public long EventProjectId { get; set; }
/// <summary>
/// 关联的赛事项目组别ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? EventProjectGroupId { get; set; }
/// <summary>
/// 原比赛场次ID
/// </summary>
public long OriginalSessionId { get; set; }
/// <summary>
/// 原场次出场记录ID
/// </summary>
public long OriginalSessionEntryId { get; set; }
/// <summary>
/// 重赛场次ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? NewSessionId { get; set; }
/// <summary>
/// 重赛出场记录ID
/// </summary>
[SugarColumn(IsNullable = true)]
public long? NewSessionEntryId { get; set; }
/// <summary>
/// 重赛原因编码
/// </summary>
[SugarColumn(Length = 64)]
public string ReasonCode { get; set; } = null!;
/// <summary>
/// 重赛原因说明
/// </summary>
[SugarColumn(Length = 512)]
public string RematchReason { get; set; } = null!;
/// <summary>
/// 申请人ID
/// </summary>
public long ApplyUserId { get; set; }
/// <summary>
/// 重赛状态:0-已申请,10-已安排,20-已完成,90-已取消
/// </summary>
public int RematchStatus { get; set; }
/// <summary>
/// 完成时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? CompletedTime { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}

View File

@ -32,6 +32,17 @@ public class ScoreRule : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime
[SugarColumn(Length = 4000, IsNullable = true)]
public string? RuleConfigJson { get; set; }
/// <summary>
/// 规则版本号
/// </summary>
public int RuleVersion { get; set; } = 1;
/// <summary>
/// 规则明细列表(导航属性)
/// </summary>
[SugarColumn(IsIgnore = true)]
public List<ScoreRuleItem>? Items { get; set; }
/// <summary>
/// 可用状态
/// </summary>

View File

@ -0,0 +1,125 @@
namespace YD_Event.Core.Entities;
/// <summary>
/// 计分规则明细表
/// </summary>
[SugarTable("ScoreRuleItem")]
public class ScoreRuleItem : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
{
/// <summary>
/// 关联的计分规则ID
/// </summary>
public long ScoreRuleId { get; set; }
/// <summary>
/// 裁判角色类别编码
/// </summary>
[SugarColumn(Length = 16)]
public string JudgeRoleType { get; set; } = null!;
/// <summary>
/// 评分项编码
/// </summary>
[SugarColumn(Length = 64)]
public string ItemCode { get; set; } = null!;
/// <summary>
/// 评分项名称
/// </summary>
[SugarColumn(Length = 128)]
public string ItemName { get; set; } = null!;
/// <summary>
/// 评分项类型:1-难度等级计数,2-规定元素计数,3-表现维度,4-扣分项,5-取消资格原因,6-规定赛评分项
/// </summary>
public int ItemType { get; set; }
/// <summary>
/// 父级评分项编码
/// </summary>
[SugarColumn(Length = 64, IsNullable = true)]
public string? ParentItemCode { get; set; }
/// <summary>
/// 单位分值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? UnitValue { get; set; }
/// <summary>
/// 最小值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? MinValue { get; set; }
/// <summary>
/// 最大值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? MaxValue { get; set; }
/// <summary>
/// 录入步长
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? StepValue { get; set; }
/// <summary>
/// 默认值
/// </summary>
[SugarColumn(DecimalDigits = 4, IsNullable = true)]
public decimal? DefaultValue { get; set; }
/// <summary>
/// 计算方式:0-数量×单位分值累加,1-直接取录入值,2-仅记录不参与合计
/// </summary>
public int CalcMode { get; set; }
/// <summary>
/// 计入的得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
/// </summary>
public int ScoreDimension { get; set; }
/// <summary>
/// 是否必填
/// </summary>
public bool IsRequired { get; set; }
/// <summary>
/// 扩展配置(JSON)
/// </summary>
[SugarColumn(Length = 2000, IsNullable = true)]
public string? ExtensionJson { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(IsNullable = true)]
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? UpdatedTime { get; set; }
}