Skip to content

Commit 662f2ac

Browse files
authored
Merge pull request #111 from SynergyX-AI-Pattern/fix/#110_ranking_duplicate_user_filter
[FIX] 동일 userId 중복 제거 로직 추가 #110
2 parents 379c8c8 + 9f6a8d1 commit 662f2ac

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/main/java/com/synergyx/trading/service/backtestService/ranking/BacktestRankingService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,21 @@ public List<BacktestRankingDTO> getRanking(int limit) {
4242
// Repository 호출
4343
List<BacktestRankingDTO> rankings = backtestRankingRepository.findMonthlyUserMaxReturnRankings(startOfMonth, endOfMonth, PageRequest.of(0, limit));
4444

45+
// 최대 수익률이 같을 경우, userId 중복 나타나는 현상 발생
46+
// 최대 수익률이 더 높은 1건 채택
47+
rankings = rankings.stream()
48+
.collect(Collectors.toMap(
49+
BacktestRankingDTO::getUserId,
50+
Function.identity(),
51+
(existing, replacement) ->
52+
replacement.getMaxReturn() > existing.getMaxReturn()
53+
? replacement : existing
54+
))
55+
.values()
56+
.stream()
57+
.sorted((a, b) -> Double.compare(b.getMaxReturn(), a.getMaxReturn())) // 수익률 내림차순 재정렬
58+
.toList();
59+
4560
// 백테스트 ID 목록 추출
4661
List<Long> backtestIds = rankings.stream()
4762
.map(BacktestRankingDTO::getBacktestId)

0 commit comments

Comments
 (0)