diff --git a/YD_Event.Application/Event/EventRecordService.cs b/YD_Event.Application/Event/EventRecordService.cs index b39e561..931cf4e 100644 --- a/YD_Event.Application/Event/EventRecordService.cs +++ b/YD_Event.Application/Event/EventRecordService.cs @@ -187,17 +187,6 @@ public class EventRecordService : BaseService, ITransient var registrationItems = items.Where(i => row.RegistrationIds.Contains(i.RegistrationId)).ToList(); foreach (var item in registrationItems) { - // 查找对应的成绩 - var result = results.FirstOrDefault(r => - r.RegistrationId == item.RegistrationId && - r.ProjectId == item.ProjectId && - r.GroupName == item.GroupName); - - // 查找该项目的所有队员 - var members = registrationPersons - .Where(p => p.RegistrationId == item.RegistrationId && p.ProjectId == item.ProjectId && p.GroupName == item.GroupName) - .ToList(); - // 判断项目类型 bool isIndividualProject = false; int projectType = 0; @@ -212,13 +201,18 @@ public class EventRecordService : BaseService, ITransient if (isIndividualProject) { // 个人项目:每个运动员单独一行 + // 查找该项目的所有队员(按 RegistrationItemId 筛选) + var members = registrationPersons + .Where(p => p.RegistrationItemId == item.Id) + .ToList(); + foreach (var member in members) { // 查找该成员对应的成绩 var memberResult = results.FirstOrDefault(r => r.RegistrationId == item.RegistrationId && r.ProjectId == item.ProjectId && - r.GroupName == item.GroupName && + r.GroupName == item.GroupName && r.RegistrationPersonId == member.Id); row.Items.Add(new EventRegistrationItemOutput @@ -248,7 +242,20 @@ public class EventRecordService : BaseService, ITransient } else { - // 团队项目:所有队员一行 + // 团队项目:每个 RegistrationItemId 单独一行,只显示该项目的队员和成绩 + // 查找该项目的所有队员(按 RegistrationItemId 筛选) + var members = registrationPersons + .Where(p => p.RegistrationItemId == item.Id) + .ToList(); + + // 查找团队成绩:找到该团队中任意一个队员的成绩作为团队成绩 + var teamMemberIds = members.Select(m => m.Id).ToList(); + var result = results.FirstOrDefault(r => + r.RegistrationId == item.RegistrationId && + r.ProjectId == item.ProjectId && + r.GroupName == item.GroupName && + teamMemberIds.Contains(r.RegistrationPersonId)); + string? memberNames = members.Count > 0 ? string.Join(", ", members.Select(m => m.Name)) : null; List? memberIds = members.Count > 0 ? members.Select(m => m.Id).ToList() : null; var memberInfoList = members.Select(m => new MemberInfo