using YD_Event.Application.Common.Excel; namespace YD_Event.Application.OrderBook.Dtos; /// /// 秩序册「出场秩序」工作表行模型 /// public class OrderBookEntryRow { /// /// 序号(仅便于人工核对,导入时不参与落库) /// [ExcelHeader("序号")] public string? Seq { get; set; } /// /// 场地名称(必填) /// [ExcelHeader("场地名称")] public string? VenueName { get; set; } /// /// 项目名称(必填,需与赛事已配置项目一致,不存在将自动建档) /// [ExcelHeader("项目名称")] public string? ProjectName { get; set; } /// /// 组别名称(可空,空则归入"公开组") /// [ExcelHeader("组别名称")] public string? GroupName { get; set; } /// /// 出场编号(可空,空则按同场次顺序自动生成) /// [ExcelHeader("出场编号")] public string? EntryNo { get; set; } /// /// 姓名/队名(必填) /// [ExcelHeader("姓名/队名")] public string? ParticipantName { get; set; } /// /// 所属单位(可空,仅用于核对展示) /// [ExcelHeader("单位")] public string? UnitName { get; set; } /// /// 联系电话(可空) /// [ExcelHeader("联系电话")] public string? Mobile { get; set; } /// /// 证件号(可空) /// [ExcelHeader("证件号")] public string? IdCard { get; set; } /// /// 备注(可空) /// [ExcelHeader("备注")] public string? Remark { get; set; } } /// /// 秩序册「裁判名单」工作表行模型 /// public class OrderBookRefereeRow { /// /// 序号(仅便于人工核对) /// [ExcelHeader("序号")] public string? Seq { get; set; } /// /// 裁判姓名(必填) /// [ExcelHeader("姓名")] public string? Name { get; set; } /// /// 手机号(必填,用于匹配/创建裁判档案及打分账号) /// [ExcelHeader("手机号")] public string? Mobile { get; set; } /// /// 裁判角色(可空,如:主裁/难度裁判/表现裁判) /// [ExcelHeader("裁判角色")] public string? RoleText { get; set; } /// /// 裁判等级(可空,如:国际级/国家级/一级/二级/三级) /// [ExcelHeader("裁判等级")] public string? LevelText { get; set; } /// /// 负责场地(可空,对应出场秩序中的场地名称) /// [ExcelHeader("负责场地")] public string? VenueName { get; set; } /// /// 负责项目(可空) /// [ExcelHeader("负责项目")] public string? ProjectName { get; set; } } /// /// 秩序册导入解析输出 /// public class OrderBookImportOutput { /// /// 导入批次ID(用于确认导入) /// public long BatchId { get; set; } /// /// 解析状态:0-解析中,10-待确认,20-存在错误 /// public int Status { get; set; } /// /// 原始数据行数(不含表头) /// public int TotalRows { get; set; } /// /// 有效行数 /// public int ValidRows { get; set; } /// /// 错误数量(存在错误时不可确认) /// public int ErrorCount { get; set; } /// /// 警告数量(不阻断确认) /// public int WarningCount { get; set; } /// /// 解析预览统计 /// public OrderBookPreview Preview { get; set; } = new(); /// /// 问题清单(错误/警告) /// public List Errors { get; set; } = new(); } /// /// 秩序册解析预览统计 /// public class OrderBookPreview { /// /// 场地数量 /// public int VenueCount { get; set; } /// /// 场次数量(项目×组别×场地) /// public int SessionCount { get; set; } /// /// 出场记录数量 /// public int EntryCount { get; set; } /// /// 裁判数量 /// public int RefereeCount { get; set; } } /// /// 秩序册解析问题项 /// public class OrderBookParseIssue { /// /// 所在行号(Excel 物理行号,含表头) /// public int Row { get; set; } /// /// 所在列名 /// public string Column { get; set; } = string.Empty; /// /// 问题描述 /// public string Message { get; set; } = string.Empty; /// /// 级别:error-错误(阻断确认),warning-警告(不阻断) /// public string Level { get; set; } = "error"; } /// /// 秩序册确认导入输入 /// public class OrderBookConfirmInput { /// /// 导入批次ID(必填,由导入接口返回) /// [Required(ErrorMessage = "批次ID不能为空")] public long BatchId { get; set; } /// /// 是否为裁判生成小程序打分账号 /// public bool GenerateJudgeAccount { get; set; } /// /// 打分账号初始密码(生成账号时必填,长度6-32位) /// public string? DefaultPassword { get; set; } } /// /// 秩序册确认导入输出 /// public class OrderBookConfirmOutput { /// /// 秩序册版本号 /// public int OrderBookVersion { get; set; } /// /// 生成场地数量 /// public int VenueCount { get; set; } /// /// 生成场次数量 /// public int SessionCount { get; set; } /// /// 生成出场记录数量 /// public int EntryCount { get; set; } /// /// 纳入裁判数量 /// public int RefereeCount { get; set; } } /// /// 秩序册导入暂存草稿 /// public class OrderBookDraft { /// /// 批次ID /// public long BatchId { get; set; } /// /// 创建该导入批次的后台用户ID /// public long CreatedUserId { get; set; } /// /// 解析结果是否包含阻断确认的错误 /// public bool HasErrors { get; set; } /// /// 赛事ID(当前版本要求赛事已预先创建) /// public long? EventId { get; set; } /// /// 导入模式:append-追加(默认),overwrite-覆盖该赛事既有编排 /// public string ImportMode { get; set; } = "append"; /// /// 解析时间 /// public DateTime CreatedAt { get; set; } /// /// 出场明细(已通过基础校验) /// public List Entries { get; set; } = new(); /// /// 裁判明细 /// public List Referees { get; set; } = new(); } /// /// 暂存出场行 /// public class OrderBookDraftEntry { /// /// Excel 物理行号 /// public int Row { get; set; } /// /// 场地名称 /// public string VenueName { get; set; } = string.Empty; /// /// 项目名称 /// public string ProjectName { get; set; } = string.Empty; /// /// 组别名称 /// public string GroupName { get; set; } = string.Empty; /// /// 原始出场编号(可空) /// public string? EntryNo { get; set; } /// /// 姓名/队名 /// public string ParticipantName { get; set; } = string.Empty; /// /// 单位 /// public string? UnitName { get; set; } /// /// 联系电话 /// public string? Mobile { get; set; } } /// /// 暂存裁判行 /// public class OrderBookDraftReferee { /// /// Excel 物理行号 /// public int Row { get; set; } /// /// 裁判姓名 /// public string Name { get; set; } = string.Empty; /// /// 手机号 /// public string Mobile { get; set; } = string.Empty; /// /// 裁判角色文本 /// public string? RoleText { get; set; } /// /// 裁判等级文本 /// public string? LevelText { get; set; } /// /// 负责场地名称 /// public string? VenueName { get; set; } /// /// 负责项目名称 /// public string? ProjectName { get; set; } }