diff --git a/core/src/main/java/com/dite/znpt/service/impl/ProjectMemberServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ProjectMemberServiceImpl.java index cdb1428..1c03097 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/ProjectMemberServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/ProjectMemberServiceImpl.java @@ -18,6 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -50,11 +51,22 @@ public class ProjectMemberServiceImpl extends ServiceImpl list = this.baseMapper.queryTeamMembers(query); + // 按用户ID去重,保留第一个记录 + Map uniqueMembers = list.stream() + .collect(Collectors.toMap( + ProjectMemberResp::getUserId, + member -> member, + (existing, replacement) -> existing // 如果有重复,保留第一个 + )); + + // 转换为列表 + List uniqueList = new ArrayList<>(uniqueMembers.values()); + // 丰富成员信息 - enrichMemberInfo(list); + enrichMemberInfo(uniqueList); // 返回分页结果 - return PageResult.ok(list); + return PageResult.ok(uniqueList); } /** @@ -86,43 +98,81 @@ public class ProjectMemberServiceImpl extends ServiceImpl teamMembers = members.stream() - .map(member -> { - ProjectKanbanDataResp.ProjectKanbanItem.TeamMemberResp teamMember = new ProjectKanbanDataResp.ProjectKanbanItem.TeamMemberResp(); - // 先复制所有同名字段 - BeanUtil.copyProperties(member, teamMember); - // 手动处理字段名不一致的字段 - teamMember.setUserName(member.getName()); // name -> userName - return teamMember; - }) + .collect(Collectors.toMap( + ProjectMemberResp::getUserId, // 按用户ID去重 + member -> { + ProjectKanbanDataResp.ProjectKanbanItem.TeamMemberResp teamMember = new ProjectKanbanDataResp.ProjectKanbanItem.TeamMemberResp(); + // 先复制所有同名字段 + BeanUtil.copyProperties(member, teamMember); + // 手动处理字段名不一致的字段 + teamMember.setUserName(member.getName()); // name -> userName + return teamMember; + }, + (existing, replacement) -> existing // 如果有重复,保留第一个 + )) + .values() + .stream() .collect(Collectors.toList()); item.setTeamMembers(teamMembers); diff --git a/core/src/main/resources/mapper/ProjectMemberMapper.xml b/core/src/main/resources/mapper/ProjectMemberMapper.xml index 81892d0..9d2ef2e 100644 --- a/core/src/main/resources/mapper/ProjectMemberMapper.xml +++ b/core/src/main/resources/mapper/ProjectMemberMapper.xml @@ -4,7 +4,7 @@