|
2 | 2 |
|
3 | 3 | import lombok.RequiredArgsConstructor; |
4 | 4 | import lombok.extern.slf4j.Slf4j; |
| 5 | +import no.nav.dolly.consumer.teamkatalog.TeamkatalogConsumer; |
| 6 | +import no.nav.dolly.consumer.teamkatalog.dto.TeamkatalogDTO; |
5 | 7 | import no.nav.dolly.domain.dto.DashboardPersonerDTO; |
6 | 8 | import no.nav.dolly.domain.dto.DashboardTeamsDTO; |
| 9 | +import no.nav.dolly.domain.jpa.Bruker; |
7 | 10 | import no.nav.dolly.domain.projection.BestillingerFragment; |
8 | 11 | import no.nav.dolly.domain.projection.TeamFragment; |
9 | 12 | import no.nav.dolly.repository.BestillingRepository; |
| 13 | +import no.nav.dolly.repository.BrukerRepository; |
10 | 14 | import org.springframework.stereotype.Service; |
11 | 15 | import reactor.core.publisher.Flux; |
12 | 16 |
|
13 | 17 | import java.util.Comparator; |
| 18 | +import java.util.stream.Collectors; |
14 | 19 |
|
15 | 20 | import static org.apache.commons.lang3.StringUtils.isNotBlank; |
16 | 21 |
|
|
20 | 25 | public class DashboardService { |
21 | 26 |
|
22 | 27 | private final BestillingRepository bestillingRepository; |
| 28 | + private final BrukerRepository brukerRepository; |
| 29 | + private final TeamkatalogConsumer teamkatalogConsumer; |
23 | 30 |
|
24 | 31 | public Flux<DashboardPersonerDTO> getPersonerStatus() { |
25 | 32 |
|
@@ -59,21 +66,27 @@ public Flux<DashboardPersonerDTO> getPersonerStatus() { |
59 | 66 |
|
60 | 67 | public Flux<DashboardTeamsDTO> getTeamsStatus() { |
61 | 68 |
|
62 | | - return bestillingRepository.findBestillingerForTeamsOrderBySistOppdatert() |
63 | | - .groupBy(TeamFragment::getDato) |
64 | | - .flatMap(Flux::collectList) |
65 | | - .map(fragmentliste -> |
66 | | - DashboardTeamsDTO.builder() |
67 | | - .dato(fragmentliste.stream() |
68 | | - .map(TeamFragment::getDato) |
69 | | - .findAny().orElse(null)) |
70 | | - .entries(fragmentliste.stream() |
71 | | - .filter(fragment -> isNotBlank(fragment.getEpost())) |
72 | | - .map(fragment -> new DashboardTeamsDTO.Entry( |
73 | | - fragment.getEpost(), |
74 | | - fragment.getAntall())) |
75 | | - .toList()) |
76 | | - .build()) |
77 | | - .sort(Comparator.comparing(DashboardTeamsDTO::getDato).reversed()); |
| 69 | + return brukerRepository.findAll() |
| 70 | + .filter(bruker -> isNotBlank(bruker.getEpost())) |
| 71 | + .map(Bruker::getEpost) |
| 72 | + .distinct() |
| 73 | + .flatMap(teamkatalogConsumer::getTeamForEpost) |
| 74 | + .collect(Collectors.toMap(TeamkatalogDTO::getEpost, TeamkatalogDTO::getTeamNavn)) |
| 75 | + .flatMapMany(teams -> bestillingRepository.findBestillingerForTeamsOrderBySistOppdatert() |
| 76 | + .groupBy(TeamFragment::getDato) |
| 77 | + .flatMap(Flux::collectList) |
| 78 | + .map(fragmentliste -> |
| 79 | + DashboardTeamsDTO.builder() |
| 80 | + .dato(fragmentliste.stream() |
| 81 | + .map(TeamFragment::getDato) |
| 82 | + .findAny().orElse(null)) |
| 83 | + .entries(fragmentliste.stream() |
| 84 | + .filter(fragment -> isNotBlank(fragment.getEpost())) |
| 85 | + .map(fragment -> new DashboardTeamsDTO.Entry( |
| 86 | + teams.get(fragment.getEpost()), |
| 87 | + fragment.getAntall())) |
| 88 | + .toList()) |
| 89 | + .build()) |
| 90 | + .sort(Comparator.comparing(DashboardTeamsDTO::getDato).reversed())); |
78 | 91 | } |
79 | 92 | } |
0 commit comments