diff --git a/src/main/java/no/nav/pto/veilarbportefolje/domene/Bruker.java b/src/main/java/no/nav/pto/veilarbportefolje/domene/Bruker.java index 4c5d346cbf..d3b7fbd108 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/domene/Bruker.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/domene/Bruker.java @@ -11,8 +11,8 @@ import no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker; import no.nav.pto.veilarbportefolje.persononinfo.barnUnder18Aar.BarnUnder18AarData; import no.nav.pto.veilarbportefolje.persononinfo.domene.Adressebeskyttelse; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtak; -import no.nav.pto.veilarbportefolje.siste14aVedtak.GjeldendeVedtak14a; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; import no.nav.pto.veilarbportefolje.util.OppfolgingUtils; import java.sql.Timestamp; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/domene/Filtervalg.java b/src/main/java/no/nav/pto/veilarbportefolje/domene/Filtervalg.java index 59634c6408..10827ab1c6 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/domene/Filtervalg.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/domene/Filtervalg.java @@ -6,7 +6,7 @@ import no.nav.pto.veilarbportefolje.domene.filtervalg.UtdanningBestattSvar; import no.nav.pto.veilarbportefolje.domene.filtervalg.UtdanningGodkjentSvar; import no.nav.pto.veilarbportefolje.domene.filtervalg.UtdanningSvar; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringsKategori; import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal; import no.nav.pto.veilarbportefolje.vedtakstotte.Innsatsgruppe; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/kafka/KafkaConfigCommon.java b/src/main/java/no/nav/pto/veilarbportefolje/kafka/KafkaConfigCommon.java index 1a0bbdc2b5..00bb346bfd 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/kafka/KafkaConfigCommon.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/kafka/KafkaConfigCommon.java @@ -48,8 +48,8 @@ import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerServiceV2; import no.nav.pto.veilarbportefolje.persononinfo.PdlBrukerdataKafkaService; import no.nav.pto.veilarbportefolje.persononinfo.PdlResponses.PdlDokument; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakKafkaDto; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakKafkaDto; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakService; import no.nav.pto.veilarbportefolje.sistelest.SistLestKafkaMelding; import no.nav.pto.veilarbportefolje.sistelest.SistLestService; import no.nav.pto.veilarbportefolje.tiltakshendelse.TiltakshendelseService; @@ -64,7 +64,6 @@ import java.util.List; import java.util.Properties; import java.util.stream.Collectors; -import java.util.stream.Stream; import static no.nav.common.kafka.consumer.util.ConsumerUtils.findConsumerConfigsWithStoreOnFailure; import static no.nav.common.kafka.util.KafkaPropertiesPreset.aivenDefaultConsumerProperties; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexer.java b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexer.java index f55baebe59..5139509cc5 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexer.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexer.java @@ -123,10 +123,9 @@ private void flettInnNodvendigData(List brukere) { postgresOpensearchMapper.flettInnEnsligeForsorgereData(brukere); postgresOpensearchMapper.flettInnBarnUnder18Aar(brukere); postgresOpensearchMapper.flettInnTiltakshendelser(brukere); - postgresOpensearchMapper.flettInnSiste14aVedtak(brukere); postgresOpensearchMapper.flettInnEldsteUtgattVarsel(brukere); - postgresOpensearchMapper.flettInnOpplysningerOmArbeidssoekerData(brukere); + postgresOpensearchMapper.flettInnGjeldende14aVedtak(brukere); if (brukere.isEmpty()) { log.warn("Skriver ikke til index da alle brukere i batchen er ugyldige"); diff --git a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexerV2.java b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexerV2.java index d97b74fd91..381a5083d7 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexerV2.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchIndexerV2.java @@ -14,7 +14,7 @@ import no.nav.pto.veilarbportefolje.hendelsesfilter.Hendelse; import no.nav.pto.veilarbportefolje.oppfolging.OppfolgingRepositoryV2; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerEntity; -import no.nav.pto.veilarbportefolje.siste14aVedtak.GjeldendeVedtak14a; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringDTO; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringsKategori; import no.nav.pto.veilarbportefolje.tiltakshendelse.domain.Tiltakshendelse; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchService.java b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchService.java index c4a48211ec..e90d3631ee 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchService.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchService.java @@ -13,7 +13,7 @@ import no.nav.pto.veilarbportefolje.opensearch.domene.*; import no.nav.pto.veilarbportefolje.opensearch.domene.Avvik14aStatistikkResponse.Avvik14aStatistikkAggregation.Avvik14aStatistikkFilter.Avvik14aStatistikkBuckets; import no.nav.pto.veilarbportefolje.opensearch.domene.StatustallResponse.StatustallAggregation.StatustallFilter.StatustallBuckets; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; import no.nav.pto.veilarbportefolje.vedtakstotte.VedtaksstotteClient; import org.apache.commons.lang3.StringUtils; import org.opensearch.action.search.SearchRequest; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/domene/OppfolgingsBruker.java b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/domene/OppfolgingsBruker.java index c7f83e68cc..f725f8feaa 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/domene/OppfolgingsBruker.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/domene/OppfolgingsBruker.java @@ -7,8 +7,8 @@ import no.nav.pto.veilarbportefolje.domene.Statsborgerskap; import no.nav.pto.veilarbportefolje.hendelsesfilter.Hendelse; import no.nav.pto.veilarbportefolje.persononinfo.barnUnder18Aar.BarnUnder18AarData; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtak; -import no.nav.pto.veilarbportefolje.siste14aVedtak.GjeldendeVedtak14a; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; import no.nav.pto.veilarbportefolje.tiltakshendelse.domain.Tiltakshendelse; import java.time.LocalDate; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingAvsluttetService.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingAvsluttetService.java index bf4b879b67..e6918243cb 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingAvsluttetService.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingAvsluttetService.java @@ -15,7 +15,7 @@ import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerServiceV2; import no.nav.pto.veilarbportefolje.persononinfo.PdlIdentRepository; import no.nav.pto.veilarbportefolje.persononinfo.PdlService; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakService; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringService; import org.springframework.stereotype.Service; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingRepositoryV2.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingRepositoryV2.java index aa34657e35..43704c38db 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingRepositoryV2.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingRepositoryV2.java @@ -6,13 +6,14 @@ import no.nav.common.types.identer.AktorId; import no.nav.pto.veilarbportefolje.domene.BrukerOppdatertInformasjon; import no.nav.pto.veilarbportefolje.domene.value.VeilederId; +import no.nav.pto.veilarbportefolje.util.DateUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.sql.ResultSet; import java.time.ZonedDateTime; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.stream.Collectors; import static no.nav.pto.veilarbportefolje.database.PostgresTable.OPPFOLGING_DATA.AKTOERID; import static no.nav.pto.veilarbportefolje.database.PostgresTable.OPPFOLGING_DATA.MANUELL; @@ -115,4 +116,22 @@ public Optional hentVeilederForBruker(AktorId aktoerId) { (rs, i) -> VeilederId.veilederIdOrNull(rs.getString("veilederid")), aktoerId.get()) )); } + + public Map> hentStartDatoForOppfolging(Set aktoerIder) { + Map> result = new HashMap<>(); + return db.query("select startdato, aktoerid from oppfolging_data where aktoerid = any (?::varchar[])", + ps -> ps.setString(1, listParam(aktoerIder.stream().map(AktorId::get).toList())), + (ResultSet rs) -> { + while (rs.next()) { + ZonedDateTime startDatoForOppfolging = DateUtils.toZonedDateTime(rs.getTimestamp("startdato")); + AktorId aktoerid = AktorId.of(rs.getString("aktoerid")); + result.put(aktoerid, Optional.ofNullable(startDatoForOppfolging)); + } + return result; + }); + } + + private static String listParam(List identer) { + return identer.stream().collect(Collectors.joining(",", "{", "}")); + } } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetService.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetService.java index cfb3a38992..bf5e096bb8 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetService.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetService.java @@ -7,7 +7,7 @@ import no.nav.pto.veilarbportefolje.opensearch.OpensearchIndexer; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerServiceV2; import no.nav.pto.veilarbportefolje.persononinfo.PdlService; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakService; import org.springframework.stereotype.Service; import java.time.ZonedDateTime; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aStatistikkMetrikk.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aStatistikkMetrikk.java similarity index 97% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aStatistikkMetrikk.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aStatistikkMetrikk.java index 9b29370be1..f518fb0844 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aStatistikkMetrikk.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aStatistikkMetrikk.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.MeterBinder; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtak.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtak.java similarity index 69% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtak.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtak.java index 545fbcbfaa..61b4383cd3 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtak.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtak.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak; public enum Avvik14aVedtak { INNSATSGRUPPE_ULIK, HOVEDMAAL_ULIK, diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakService.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakService.java similarity index 67% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakService.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakService.java index 452bbc50b1..3f19977412 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakService.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakService.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak; import lombok.RequiredArgsConstructor; import no.nav.common.types.identer.AktorId; @@ -10,6 +10,8 @@ import no.nav.pto.veilarbportefolje.domene.Vedtak14aInfo; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerEntity; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerRepositoryV3; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtakService; import org.springframework.stereotype.Service; import java.util.Collections; @@ -27,7 +29,7 @@ public class Avvik14aVedtakService { final OppfolgingsbrukerRepositoryV3 oppfolgingsbrukerRepositoryV3; - final Siste14aVedtakRepository siste14aVedtakRepository; + final Gjeldende14aVedtakService gjeldende14aVedtakService; public Map hentAvvik(Set brukere) { if (brukere.isEmpty()) { @@ -39,29 +41,29 @@ public Map hentAvvik(Set bru brukere.stream().map(GjeldendeIdenter::getFnr).collect(Collectors.toSet()) ); - Map aktorIdSiste14aVedtakMap = - siste14aVedtakRepository.hentSiste14aVedtakForBrukere( + Map> aktorIdGjeldende14aVedtakMap = + gjeldende14aVedtakService.hentGjeldende14aVedtak( brukere.stream().map(GjeldendeIdenter::getAktorId).collect(Collectors.toSet()) ); return brukere.stream().map((GjeldendeIdenter identer) -> { - Vedtak14aInfo vedtak14aInfo = mapTilVedtak14aInfo(fnrOppfolgingsbrukerEntityMap, aktorIdSiste14aVedtakMap, identer); + Vedtak14aInfo vedtak14aInfo = mapTilVedtak14aInfo(fnrOppfolgingsbrukerEntityMap, aktorIdGjeldende14aVedtakMap, identer); Avvik14aVedtak avvik14aVedtak = finnAvvik(vedtak14aInfo); return Map.entry(identer, avvik14aVedtak); }).collect(toMap(Entry::getKey, Entry::getValue)); } - private Vedtak14aInfo mapTilVedtak14aInfo(Map fnrOppfolgingsbrukerEntityMap, Map aktorIdSiste14aVedtakMap, GjeldendeIdenter identer) { - Optional oppfolgingsbruker = Optional.ofNullable(fnrOppfolgingsbrukerEntityMap.getOrDefault(identer.getFnr(), null)); - Optional siste14aVedtak = Optional.ofNullable(aktorIdSiste14aVedtakMap.getOrDefault(identer.getAktorId(), null)); + private Vedtak14aInfo mapTilVedtak14aInfo(Map fnrOppfolgingsbrukerEntityMap, Map> aktorIdGjeldende14aVedtakMap, GjeldendeIdenter identer) { + Optional maybeOppfolgingsbruker = Optional.ofNullable(fnrOppfolgingsbrukerEntityMap.getOrDefault(identer.getFnr(), null)); + Optional maybeGjeldende14aVedtak = aktorIdGjeldende14aVedtakMap.getOrDefault(identer.getAktorId(), Optional.empty()); return Vedtak14aInfo.builder() - .arenaInnsatsgruppe(oppfolgingsbruker.map(OppfolgingsbrukerEntity::kvalifiseringsgruppekode).map(kvalifiseringsgruppeKode -> valueOfOrNull(ArenaInnsatsgruppe.class, kvalifiseringsgruppeKode)).orElse(null)) - .arenaHovedmal(oppfolgingsbruker.map(OppfolgingsbrukerEntity::hovedmaalkode).map(hovedmaal -> valueOfOrNull(ArenaHovedmal.class, hovedmaal)).orElse(null)) - .innsatsgruppe(siste14aVedtak.map(Siste14aVedtakForBruker::getInnsatsgruppe).orElse(null)) - .hovedmal(siste14aVedtak.map(Siste14aVedtakForBruker::getHovedmal).orElse(null)).build(); + .arenaInnsatsgruppe(maybeOppfolgingsbruker.map(OppfolgingsbrukerEntity::kvalifiseringsgruppekode).map(kvalifiseringsgruppeKode -> valueOfOrNull(ArenaInnsatsgruppe.class, kvalifiseringsgruppeKode)).orElse(null)) + .arenaHovedmal(maybeOppfolgingsbruker.map(OppfolgingsbrukerEntity::hovedmaalkode).map(hovedmaal -> valueOfOrNull(ArenaHovedmal.class, hovedmaal)).orElse(null)) + .innsatsgruppe(maybeGjeldende14aVedtak.map(Gjeldende14aVedtak::getInnsatsgruppe).orElse(null)) + .hovedmal(maybeGjeldende14aVedtak.map(Gjeldende14aVedtak::getHovedmal).orElse(null)).build(); } private Avvik14aVedtak finnAvvik(Vedtak14aInfo vedtak14aInfo) { diff --git a/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/Gjeldende14aVedtakService.kt b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/Gjeldende14aVedtakService.kt new file mode 100644 index 0000000000..f87d061fc8 --- /dev/null +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/Gjeldende14aVedtakService.kt @@ -0,0 +1,84 @@ +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak + +import no.nav.common.types.identer.AktorId +import no.nav.pto.veilarbportefolje.oppfolging.OppfolgingRepositoryV2 +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakForBruker +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakRepository +import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal +import no.nav.pto.veilarbportefolje.vedtakstotte.Innsatsgruppe +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.time.ZoneId +import java.time.ZonedDateTime +import java.util.* + +@Service +class Gjeldende14aVedtakService( + @Autowired val siste14aVedtakRepository: Siste14aVedtakRepository, + @Autowired val oppfolgingRepositoryV2: OppfolgingRepositoryV2 +) { + fun hentGjeldende14aVedtak(brukerIdenter: Set): Map> { + val aktorIdSiste14aVedtakMap: Map> = + siste14aVedtakRepository.hentSiste14aVedtakForBrukere(brukerIdenter) + .mapValues { Optional.ofNullable(it.value) } + val aktorIdStartDatoOppfolgingMap: Map> = + oppfolgingRepositoryV2.hentStartDatoForOppfolging(brukerIdenter) + + return brukerIdenter.associate { brukerIdent -> + val maybeSiste14aVedtak: Optional = + aktorIdSiste14aVedtakMap[brukerIdent] ?: Optional.empty() + val maybeStartDatoOppfolging: Optional = + aktorIdStartDatoOppfolgingMap[brukerIdent] ?: Optional.empty() + + if (maybeSiste14aVedtak.isEmpty || maybeStartDatoOppfolging.isEmpty) { + return@associate brukerIdent to Optional.empty() + } + + if (!sjekkOmVedtakErGjeldende(maybeSiste14aVedtak.get(), maybeStartDatoOppfolging.get())) { + return@associate brukerIdent to Optional.empty() + } + + return@associate brukerIdent to maybeSiste14aVedtak.get().let { + Optional.of( + Gjeldende14aVedtak( + aktorId = it.aktorId, + innsatsgruppe = it.innsatsgruppe, + hovedmal = it.hovedmal, + fattetDato = it.fattetDato + ) + ) + } + } + } + + companion object { + @JvmField + val LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE: ZonedDateTime = + ZonedDateTime.of(2017, 12, 4, 0, 0, 0, 0, ZoneId.systemDefault()) + + @JvmStatic + fun sjekkOmVedtakErGjeldende( + siste14aVedtakForBruker: Siste14aVedtakForBruker, + startDatoInnevarendeOppfolgingsperiode: ZonedDateTime + ): Boolean { + val erVedtaketFattetIInnevarendeOppfolgingsperiode = + siste14aVedtakForBruker.fattetDato.isAfter(startDatoInnevarendeOppfolgingsperiode) + val erVedtaketFattetForLanseringsdatoForVeilarboppfolging = siste14aVedtakForBruker.fattetDato + .isBefore(LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE) + val erStartdatoForOppfolgingsperiodeLikLanseringsdatoForVeilarboppfolging = + !startDatoInnevarendeOppfolgingsperiode + .isAfter(LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE) + + return erVedtaketFattetIInnevarendeOppfolgingsperiode || + (erVedtaketFattetForLanseringsdatoForVeilarboppfolging + && erStartdatoForOppfolgingsperiodeLikLanseringsdatoForVeilarboppfolging) + } + } +} + +data class Gjeldende14aVedtak( + val aktorId: AktorId, + val innsatsgruppe: Innsatsgruppe, + val hovedmal: Hovedmal?, + val fattetDato: ZonedDateTime +) \ No newline at end of file diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/GjeldendeVedtak14a.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/GjeldendeVedtak14a.java similarity index 79% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/GjeldendeVedtak14a.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/GjeldendeVedtak14a.java index 7c2bd1e91d..392ae73633 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/GjeldendeVedtak14a.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/GjeldendeVedtak14a.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak; import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal; import no.nav.pto.veilarbportefolje.vedtakstotte.Innsatsgruppe; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakApiDto.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakApiDto.java similarity index 85% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakApiDto.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakApiDto.java index 4e190843a8..083ab4f877 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakApiDto.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakApiDto.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakForBruker.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakForBruker.java similarity index 69% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakForBruker.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakForBruker.java index c3096ec540..1d27906787 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakForBruker.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakForBruker.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import lombok.AllArgsConstructor; import lombok.Builder; @@ -21,6 +21,26 @@ public class Siste14aVedtakForBruker { ZonedDateTime fattetDato; boolean fraArena; + public AktorId getAktorId() { + return aktorId; + } + + public Innsatsgruppe getInnsatsgruppe() { + return innsatsgruppe; + } + + public Hovedmal getHovedmal() { + return hovedmal; + } + + public ZonedDateTime getFattetDato() { + return fattetDato; + } + + public boolean isFraArena() { + return fraArena; + } + public static Siste14aVedtakForBruker fraKafkaDto(Siste14aVedtakKafkaDto dto) { return new Siste14aVedtakForBruker(dto.aktorId, dto.innsatsgruppe, dto.hovedmal, dto.fattetDato, dto.fraArena); } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakKafkaDto.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakKafkaDto.java similarity index 87% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakKafkaDto.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakKafkaDto.java index 9930b3599b..01b5dfec61 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakKafkaDto.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakKafkaDto.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakRepository.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakRepository.java similarity index 98% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakRepository.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakRepository.java index ea9c0ec68b..38174ffe55 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakRepository.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakRepository.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakService.java b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakService.java similarity index 93% rename from src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakService.java rename to src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakService.java index 79af14ec0b..851862b0fe 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14aVedtakService.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14aVedtakService.java @@ -1,10 +1,11 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import lombok.RequiredArgsConstructor; import no.nav.common.types.identer.AktorId; import no.nav.common.types.identer.Fnr; import no.nav.pto.veilarbportefolje.kafka.KafkaCommonNonKeyedConsumerService; import no.nav.pto.veilarbportefolje.opensearch.OpensearchIndexerV2; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; import no.nav.pto.veilarbportefolje.persononinfo.PdlIdentRepository; import no.nav.pto.veilarbportefolje.persononinfo.domene.IdenterForBruker; import no.nav.pto.veilarbportefolje.vedtakstotte.VedtaksstotteClient; diff --git a/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java b/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java index d071fcfa4f..831c90cc9c 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java @@ -10,6 +10,8 @@ import no.nav.pto.veilarbportefolje.domene.Statsborgerskap; import no.nav.pto.veilarbportefolje.ensligforsorger.EnsligeForsorgereService; import no.nav.pto.veilarbportefolje.ensligforsorger.dto.output.EnsligeForsorgerOvergangsstønadTiltakDto; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtakService; import no.nav.pto.veilarbportefolje.hendelsesfilter.Hendelse; import no.nav.pto.veilarbportefolje.hendelsesfilter.HendelseRepository; import no.nav.pto.veilarbportefolje.hendelsesfilter.IngenHendelseForPersonException; @@ -22,7 +24,9 @@ import no.nav.pto.veilarbportefolje.persononinfo.barnUnder18Aar.BarnUnder18AarService; import no.nav.pto.veilarbportefolje.postgres.utils.AktivitetEntity; import no.nav.pto.veilarbportefolje.postgres.utils.AvtaltAktivitetEntity; -import no.nav.pto.veilarbportefolje.siste14aVedtak.*; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringService; import no.nav.pto.veilarbportefolje.tiltakshendelse.TiltakshendelseRepository; import no.nav.pto.veilarbportefolje.tiltakshendelse.domain.Tiltakshendelse; @@ -33,6 +37,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static java.util.function.Function.identity; import static no.nav.pto.veilarbportefolje.postgres.PostgresAktivitetMapper.kalkulerAvtalteAktivitetInformasjon; import static no.nav.pto.veilarbportefolje.postgres.PostgresAktivitetMapper.kalkulerGenerellAktivitetInformasjon; @@ -51,8 +56,8 @@ public class PostgresOpensearchMapper { private final EnsligeForsorgereService ensligeForsorgereService; private final ArbeidssoekerService arbeidssoekerService; private final TiltakshendelseRepository tiltakshendelseRepository; - private final Siste14aVedtakRepository siste14aVedtakRepository; private final HendelseRepository hendelseRepository; + private final Gjeldende14aVedtakService gjeldende14aVedtakService; public void flettInnAktivitetsData(List brukere) { List aktoerIder = brukere.stream().map(OppfolgingsBruker::getAktoer_id).map(AktorId::of).toList(); @@ -233,17 +238,20 @@ public void flettInnOpplysningerOmArbeidssoekerData(List bruk }); } - public void flettInnSiste14aVedtak(List brukere) { - Map aktorIdSiste14aVedtakMap = siste14aVedtakRepository.hentSiste14aVedtakForBrukere(brukere.stream().map(bruker -> - AktorId.of(bruker.getAktoer_id())).collect(Collectors.toSet()) - ); + public void flettInnGjeldende14aVedtak(List brukere) { + Set brukereSet = brukere.stream().map(bruker -> AktorId.of(bruker.getAktoer_id())).collect(Collectors.toSet()); + Map> aktorIdGjeldende14aVedtakMap = gjeldende14aVedtakService.hentGjeldende14aVedtak(brukereSet); + brukere.forEach(bruker -> { - Optional maybeSiste14aVedtakForBruker = Optional.ofNullable(aktorIdSiste14aVedtakMap.get(AktorId.of(bruker.getAktoer_id()))); - bruker.setGjeldendeVedtak14a(maybeSiste14aVedtakForBruker.map(siste14aVedtakForBruker -> new GjeldendeVedtak14a( - siste14aVedtakForBruker.getInnsatsgruppe(), - siste14aVedtakForBruker.getHovedmal(), - siste14aVedtakForBruker.getFattetDato() - )).orElse(null)); + Optional maybeGjeldendeVedtak14a = aktorIdGjeldende14aVedtakMap.getOrDefault(AktorId.of(bruker.getAktoer_id()), Optional.empty()); + if (maybeGjeldendeVedtak14a.isPresent()) { + Gjeldende14aVedtak gjeldende14aVedtak = maybeGjeldendeVedtak14a.get(); + bruker.setGjeldendeVedtak14a(new GjeldendeVedtak14a( + gjeldende14aVedtak.getInnsatsgruppe(), + gjeldende14aVedtak.getHovedmal(), + gjeldende14aVedtak.getFattetDato() + )); + } }); } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/vedtakstotte/VedtaksstotteClient.java b/src/main/java/no/nav/pto/veilarbportefolje/vedtakstotte/VedtaksstotteClient.java index 8ddd5f7682..73c5adaae8 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/vedtakstotte/VedtaksstotteClient.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/vedtakstotte/VedtaksstotteClient.java @@ -9,7 +9,7 @@ import no.nav.pto.veilarbportefolje.auth.AuthService; import no.nav.pto.veilarbportefolje.config.EnvironmentProperties; import no.nav.pto.veilarbportefolje.kodeverk.CacheConfig; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakApiDto; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakApiDto; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; diff --git a/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java b/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java index 281c0118a0..85c890a984 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java @@ -32,6 +32,7 @@ import no.nav.pto.veilarbportefolje.ensligforsorger.EnsligeForsorgereService; import no.nav.pto.veilarbportefolje.fargekategori.FargekategoriRepository; import no.nav.pto.veilarbportefolje.fargekategori.FargekategoriService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtakService; import no.nav.pto.veilarbportefolje.hendelsesfilter.HendelseRepository; import no.nav.pto.veilarbportefolje.hendelsesfilter.HendelseService; import no.nav.pto.veilarbportefolje.huskelapp.HuskelappRepository; @@ -61,9 +62,9 @@ import no.nav.pto.veilarbportefolje.postgres.BrukerRepositoryV2; import no.nav.pto.veilarbportefolje.postgres.PostgresOpensearchMapper; import no.nav.pto.veilarbportefolje.service.BrukerServiceV2; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtakService; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakRepository; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtakService; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakRepository; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakService; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringRepositoryV2; import no.nav.pto.veilarbportefolje.sisteendring.SisteEndringService; import no.nav.pto.veilarbportefolje.sistelest.SistLestService; @@ -176,6 +177,7 @@ TiltakshendelseService.class, HendelseRepository.class, HendelseService.class, + Gjeldende14aVedtakService.class }) public class ApplicationConfigTest { diff --git a/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java b/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java index 73d871af77..42dcf25631 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java @@ -23,9 +23,9 @@ import no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker; import no.nav.pto.veilarbportefolje.persononinfo.barnUnder18Aar.BarnUnder18AarData; import no.nav.pto.veilarbportefolje.persononinfo.domene.Adressebeskyttelse; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Avvik14aVedtak; -import no.nav.pto.veilarbportefolje.siste14aVedtak.GjeldendeVedtak14a; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakForBruker; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak.Avvik14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakForBruker; import no.nav.pto.veilarbportefolje.tiltakshendelse.domain.Tiltakshendelse; import no.nav.pto.veilarbportefolje.tiltakshendelse.domain.Tiltakstype; import no.nav.pto.veilarbportefolje.util.BrukerComparator; diff --git a/src/test/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetOgAvsluttetServiceTest.java b/src/test/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetOgAvsluttetServiceTest.java index 817d1e24fd..7e820e8a80 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetOgAvsluttetServiceTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/oppfolging/OppfolgingStartetOgAvsluttetServiceTest.java @@ -10,6 +10,8 @@ import no.nav.pto.veilarbportefolje.domene.AktorClient; import no.nav.pto.veilarbportefolje.domene.BrukerOppdatertInformasjon; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.*; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.GjeldendeVedtak14a; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.*; import no.nav.pto.veilarbportefolje.persononinfo.PdlIdentRepository; import no.nav.pto.veilarbportefolje.persononinfo.PdlPersonRepository; import no.nav.pto.veilarbportefolje.persononinfo.PdlPortefoljeClient; @@ -19,7 +21,6 @@ import no.nav.pto.veilarbportefolje.persononinfo.domene.PDLIdent; import no.nav.pto.veilarbportefolje.persononinfo.domene.PDLPerson; import no.nav.pto.veilarbportefolje.persononinfo.domene.PDLPersonBarn; -import no.nav.pto.veilarbportefolje.siste14aVedtak.*; import no.nav.pto.veilarbportefolje.util.EndToEndTest; import no.nav.pto.veilarbportefolje.util.TestDataClient; import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal; @@ -154,15 +155,15 @@ public void cleanup() { mockPdlPersonBarnRespons(fnr); mockHentOppfolgingsbrukerResponse(fnr); + SisteOppfolgingsperiodeV1 sisteOppfolgingsperiodeV1 = genererStartetOppfolgingsperiode(aktorId); Siste14aVedtakApiDto siste14aVedtakApiDto = new Siste14aVedtakApiDto( Innsatsgruppe.SITUASJONSBESTEMT_INNSATS, Hovedmal.OKE_DELTAKELSE, - tilfeldigDatoTilbakeITid(), + sisteOppfolgingsperiodeV1.getStartDato().plusDays(1), true ); when(vedtaksstotteClient.hentSiste14aVedtak(fnr)).thenReturn(Optional.of(siste14aVedtakApiDto)); - - oppfolgingPeriodeService.behandleKafkaMeldingLogikk(genererStartetOppfolgingsperiode(aktorId)); + oppfolgingPeriodeService.behandleKafkaMeldingLogikk(sisteOppfolgingsperiodeV1); IdenterForBruker identerForBruker = pdlIdentRepository.hentIdenterForBruker(aktorId.get()); Optional siste14aVedtakForBruker = siste14aVedtakRepository.hentSiste14aVedtak(identerForBruker); diff --git a/src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakServiceTest.java b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakServiceTest.java similarity index 59% rename from src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakServiceTest.java rename to src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakServiceTest.java index 8bf5a1d807..5a04b74810 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Avvik14aVedtakServiceTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/avvik14aVedtak/Avvik14aVedtakServiceTest.java @@ -1,4 +1,4 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.avvik14aVedtak; import no.nav.common.types.identer.Fnr; @@ -8,27 +8,33 @@ import no.nav.pto.veilarbportefolje.domene.GjeldendeIdenter; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerEntity; import no.nav.pto.veilarbportefolje.oppfolgingsbruker.OppfolgingsbrukerRepositoryV3; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtak; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtakService; import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal; import no.nav.pto.veilarbportefolje.vedtakstotte.Innsatsgruppe; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.Map; +import java.util.Optional; import java.util.Set; -import static no.nav.pto.veilarbportefolje.util.TestDataUtils.randomAktorId; -import static no.nav.pto.veilarbportefolje.util.TestDataUtils.randomFnr; +import static no.nav.pto.veilarbportefolje.util.TestDataUtils.*; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anySet; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; public class Avvik14aVedtakServiceTest { private final OppfolgingsbrukerRepositoryV3 oppfolgingsbrukerRepositoryV3 = mock(OppfolgingsbrukerRepositoryV3.class); - private final Siste14aVedtakRepository siste14aVedtakRepository = mock(Siste14aVedtakRepository.class); - private final Avvik14aVedtakService avvik14aVedtakService = - new Avvik14aVedtakService(oppfolgingsbrukerRepositoryV3, siste14aVedtakRepository); + private final Gjeldende14aVedtakService gjeldende14aVedtakService = mock(Gjeldende14aVedtakService.class); + private final Avvik14aVedtakService avvik14aVedtakService = new Avvik14aVedtakService(oppfolgingsbrukerRepositoryV3, gjeldende14aVedtakService); + @BeforeEach + public void resetMocks() { + reset(oppfolgingsbrukerRepositoryV3); + reset(gjeldende14aVedtakService); + } @Test public void skalIkkeFinneAvvikForBrukereMedTilsvarendeDataIArenaOgVedtaksstotte() { @@ -39,14 +45,15 @@ public void skalIkkeFinneAvvikForBrukereMedTilsvarendeDataIArenaOgVedtaksstotte( .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) .hovedmaalkode(ArenaHovedmal.BEHOLDEA.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.keySet()).containsAll(identer); @@ -62,14 +69,15 @@ public void skalIkkeFinneAvvikNaarArenaInnsatsgruppeErNull() { .kvalifiseringsgruppekode(null) .hovedmaalkode(ArenaHovedmal.BEHOLDEA.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14aVedtak = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14aVedtak.getAktorId(), Optional.of(gjeldende14aVedtak))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.keySet()).containsAll(identer); @@ -85,14 +93,15 @@ public void skalIkkeFinneAvvikNaarArenaKvalifiseringsgruppeErServiceGruppe() { .kvalifiseringsgruppekode(ArenaServicegruppe.VURDU.name()) .hovedmaalkode(ArenaHovedmal.BEHOLDEA.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.keySet()).containsAll(identer); @@ -108,14 +117,15 @@ public void skalIkkeFinneAvvikNaarInnsatsgruppeErLikOgArenaHovedmaalErNull() { .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) .hovedmaalkode(null) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.keySet()).containsAll(identer); @@ -131,14 +141,15 @@ public void skalFinneAvvikDersomInnsatsgruppeErUlik() { .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) .hovedmaalkode(ArenaHovedmal.BEHOLDEA.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.SITUASJONSBESTEMT_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.SITUASJONSBESTEMT_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.values()).containsOnly(Avvik14aVedtak.INNSATSGRUPPE_ULIK); @@ -153,14 +164,15 @@ public void skalFinneAvvikDersomHovedmaalErUlik() { .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) .hovedmaalkode(ArenaHovedmal.OKEDELT.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.values()).containsOnly(Avvik14aVedtak.HOVEDMAAL_ULIK); @@ -175,40 +187,20 @@ public void skalFinneAvvikDersomInnsatsgruppeOgHovedmaalErUlik() { .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) .hovedmaalkode(ArenaHovedmal.OKEDELT.name()) .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .innsatsgruppe(Innsatsgruppe.SITUASJONSBESTEMT_INNSATS) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); + Gjeldende14aVedtak gjeldende14AVedtakForBruker = new Gjeldende14aVedtak( + ident1.getAktorId(), + Innsatsgruppe.SITUASJONSBESTEMT_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + randomZonedDate() + ); when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); + when(gjeldende14aVedtakService.hentGjeldende14aVedtak(anySet())).thenReturn(Map.of(gjeldende14AVedtakForBruker.getAktorId(), Optional.of(gjeldende14AVedtakForBruker))); Map avvik = avvik14aVedtakService.hentAvvik(identer); assertThat(avvik.values()).containsOnly(Avvik14aVedtak.INNSATSGRUPPE_OG_HOVEDMAAL_ULIK); } - @Test - public void skalFinneAvvikDersomInnsatsgruppeManglerISiste14aVedtak() { - GjeldendeIdenter ident1 = genererGjeldendeIdent(); - Set identer = Set.of(ident1); - OppfolgingsbrukerEntity oppfolgingsbruker = OppfolgingsbrukerEntity.builder() - .fodselsnr(ident1.getFnr().get()) - .kvalifiseringsgruppekode(ArenaInnsatsgruppe.IKVAL.name()) - .hovedmaalkode(ArenaHovedmal.BEHOLDEA.name()) - .build(); - Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() - .aktorId(ident1.getAktorId()) - .hovedmal(Hovedmal.BEHOLDE_ARBEID) - .build(); - - when(oppfolgingsbrukerRepositoryV3.hentOppfolgingsBrukere(anySet())).thenReturn(Map.of(Fnr.of(oppfolgingsbruker.fodselsnr()), oppfolgingsbruker)); - when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(anySet())).thenReturn(Map.of(siste14AVedtakForBruker.aktorId, siste14AVedtakForBruker)); - - Map avvik = avvik14aVedtakService.hentAvvik(identer); - assertThat(avvik.values()).containsOnly(Avvik14aVedtak.INNSATSGRUPPE_MANGLER_I_NY_KILDE); - } - private GjeldendeIdenter genererGjeldendeIdent() { return GjeldendeIdenter.builder().fnr(randomFnr()).aktorId(randomAktorId()).build(); } diff --git a/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/FlettingAvGjeldende14aVedtakTest.java b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/FlettingAvGjeldende14aVedtakTest.java new file mode 100644 index 0000000000..58f31b4812 --- /dev/null +++ b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/gjeldende14aVedtak/FlettingAvGjeldende14aVedtakTest.java @@ -0,0 +1,308 @@ +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak; + +import no.nav.common.types.identer.AktorId; +import no.nav.pto.veilarbportefolje.domene.GjeldendeIdenter; +import no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker; +import no.nav.pto.veilarbportefolje.oppfolging.OppfolgingRepositoryV2; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakForBruker; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakRepository; +import no.nav.pto.veilarbportefolje.postgres.PostgresOpensearchMapper; +import no.nav.pto.veilarbportefolje.vedtakstotte.Hovedmal; +import no.nav.pto.veilarbportefolje.vedtakstotte.Innsatsgruppe; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.time.ZonedDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.gjeldende14aVedtak.Gjeldende14aVedtakService.LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE; +import static no.nav.pto.veilarbportefolje.util.TestDataUtils.randomAktorId; +import static no.nav.pto.veilarbportefolje.util.TestDataUtils.randomFnr; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +public class FlettingAvGjeldende14aVedtakTest { + private final PostgresOpensearchMapper postgresOpensearchMapper; + private final Siste14aVedtakRepository siste14aVedtakRepository = mock(Siste14aVedtakRepository.class); + private final OppfolgingRepositoryV2 oppfolgingRepositoryV2 = mock(OppfolgingRepositoryV2.class); + + FlettingAvGjeldende14aVedtakTest() { + final Gjeldende14aVedtakService gjeldende14aVedtakService = new Gjeldende14aVedtakService(siste14aVedtakRepository, oppfolgingRepositoryV2); + + this.postgresOpensearchMapper = new PostgresOpensearchMapper( + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + gjeldende14aVedtakService + ); + } + + @BeforeEach + public void resetMocks() { + reset(siste14aVedtakRepository); + reset(oppfolgingRepositoryV2); + } + + @Test + public void skal_flette_inn_gjeldende_14a_vedtak_nar_siste_14a_vedtak_er_fattet_før_lansering_av_veilarboppfolging() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + + Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() + .aktorId(ident1.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2015-11-10T19:37:25+02:00")) + .build(); + + Map aktorIdSiste14aVedtakMap = Map.of(ident1.getAktorId(), siste14AVedtakForBruker); + + ZonedDateTime startdatoForOppfolging = LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE; + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of(ident1.getAktorId(), Optional.of(startdatoForOppfolging)); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker)); + + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a()).isNotNull(); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().fattetDato()).isEqualTo(siste14AVedtakForBruker.getFattetDato()); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().innsatsgruppe()).isEqualTo(siste14AVedtakForBruker.getInnsatsgruppe()); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().hovedmal()).isEqualTo(siste14AVedtakForBruker.getHovedmal()); + } + + @Test + public void skal_flette_inn_gjeldende_14a_vedtak_nar_siste_14a_vedtak_er_fattet_etter_lansering_av_veilarboppfolging_og_i_inneværende_oppfølgingsperiode() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + + Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() + .aktorId(ident1.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2020-11-10T10:00:00+02:00")) + .build(); + + Map aktorIdSiste14aVedtakMap = Map.of(ident1.getAktorId(), siste14AVedtakForBruker); + + ZonedDateTime startdatoForOppfolging = ZonedDateTime.parse("2019-05-11T10:00:00+02:00"); + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of(ident1.getAktorId(), Optional.of(startdatoForOppfolging)); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker)); + + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a()).isNotNull(); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().fattetDato()).isEqualTo(siste14AVedtakForBruker.getFattetDato()); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().innsatsgruppe()).isEqualTo(siste14AVedtakForBruker.getInnsatsgruppe()); + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a().hovedmal()).isEqualTo(siste14AVedtakForBruker.getHovedmal()); + } + + @Test + public void skal_ikke_flette_inn_gjeldende_14a_vedtak_når_siste_14a_vedtak_er_fattet_etter_lansering_av_veilarboppfolging_men_utenfor_inneværende_oppfølgingsperiode() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + + Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() + .aktorId(ident1.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2018-11-10T10:00:00+02:00")) + .build(); + + Map aktorIdSiste14aVedtakMap = Map.of(ident1.getAktorId(), siste14AVedtakForBruker); + + ZonedDateTime startdatoForOppfolging = ZonedDateTime.parse("2019-03-02T10:00:00+02:00"); + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of(ident1.getAktorId(), Optional.of(startdatoForOppfolging)); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker)); + + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a()).isNull(); + } + + @Test + public void skal_ikke_flette_inn_gjeldende_14a_vedtak_når_bruker_har_et_siste_14a_vedtak_men_ikke_er_under_oppfølging() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + + Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() + .aktorId(ident1.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2018-11-10T10:00:00+02:00")) + .build(); + + Map aktorIdSiste14aVedtakMap = Map.of(ident1.getAktorId(), siste14AVedtakForBruker); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(Collections.emptyMap()); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker)); + + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a()).isNull(); + } + + @Test + public void skal_ikke_flette_inn_gjeldende_14a_vedtak_når_siste_14a_vedtak_er_fattet_før_lansering_av_veilarboppfolging_men_oppfølgingsperiode_startdato_er_etter_lansering_av_veilarboppfolging() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + + Siste14aVedtakForBruker siste14AVedtakForBruker = Siste14aVedtakForBruker.builder() + .aktorId(ident1.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2015-01-20T10:00:00+02:00")) + .build(); + + Map aktorIdSiste14aVedtakMap = Map.of(ident1.getAktorId(), siste14AVedtakForBruker); + + ZonedDateTime startdatoForOppfolging = ZonedDateTime.parse("2020-12-02T10:00:00+02:00"); + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of(ident1.getAktorId(), Optional.of(startdatoForOppfolging)); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker)); + + assertThat(oppfolgingsbruker.getGjeldendeVedtak14a()).isNull(); + } + + @Test + public void skal_ikke_flette_inn_gjeldende_14a_vedtak_for_flere_brukere_med_ulike_utgangspunkt() { + GjeldendeIdenter oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter = genererGjeldendeIdent(); + GjeldendeIdenter oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_gjeldendeIdenter = genererGjeldendeIdent(); + GjeldendeIdenter oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_gjeldendeIdenter = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode = new OppfolgingsBruker() + .setFnr(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getFnr().get()) + .setAktoer_id(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId().get()); + OppfolgingsBruker oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode = new OppfolgingsBruker() + .setFnr(oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_gjeldendeIdenter.getFnr().get()) + .setAktoer_id(oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId().get()); + OppfolgingsBruker oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode = new OppfolgingsBruker() + .setFnr(oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_gjeldendeIdenter.getFnr().get()) + .setAktoer_id(oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_gjeldendeIdenter.getAktorId().get()); + + Siste14aVedtakForBruker oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_siste14AVedtak = Siste14aVedtakForBruker.builder() + .aktorId(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2015-01-20T10:00:00+02:00")) + .build(); + Siste14aVedtakForBruker oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_siste14AVedtak = Siste14aVedtakForBruker.builder() + .aktorId(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId()) + .innsatsgruppe(Innsatsgruppe.STANDARD_INNSATS) + .hovedmal(Hovedmal.BEHOLDE_ARBEID) + .fattetDato(ZonedDateTime.parse("2020-01-20T10:00:00+02:00")) + .build(); + + + Map aktorIdSiste14aVedtakMap = Map.of( + oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId(), + oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_siste14AVedtak, + oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId(), + oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_siste14AVedtak + ); + + ZonedDateTime oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_startDatoOppfølging = LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE; + ZonedDateTime oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_startDatoOppfølging = LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE; + ZonedDateTime oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_startDatoOppfølging = ZonedDateTime.parse("2020-12-02T10:00:00+02:00"); + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of( + oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId(), + Optional.of(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode_startDatoOppfølging), + oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_gjeldendeIdenter.getAktorId(), + Optional.of(oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode_startDatoOppfølging), + oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_gjeldendeIdenter.getAktorId(), + Optional.of(oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode_startDatoOppfølging) + ); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of( + oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode, + oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode, + oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode + )); + + assertThat(oppfolgingsbrukerMedVedtakFraFørLanseringAvOppfolgingsperiode.getGjeldendeVedtak14a()).isNotNull(); + assertThat(oppfolgingsbrukerMedVedtakFraEtterLanseringAvOppfolgingsperiode.getGjeldendeVedtak14a()).isNotNull(); + assertThat(oppfolgingsbrukerUtenVedtakIInneværendeOppfølgingsperiode.getGjeldendeVedtak14a()).isNull(); + } + + @Test + public void skal_ikke_flette_inn_gjeldende_14a_vedtak_når_personen_ikke_har_noen_14a_vedtak() { + GjeldendeIdenter ident1 = genererGjeldendeIdent(); + GjeldendeIdenter ident2 = genererGjeldendeIdent(); + + OppfolgingsBruker oppfolgingsbruker1 = new OppfolgingsBruker() + .setFnr(ident1.getFnr().get()) + .setAktoer_id(ident1.getAktorId().get()); + OppfolgingsBruker oppfolgingsbruker2 = new OppfolgingsBruker() + .setFnr(ident2.getFnr().get()) + .setAktoer_id(ident2.getAktorId().get()); + + Map aktorIdSiste14aVedtakMap = Collections.emptyMap(); + + ZonedDateTime startdatoForOppfolging1 = ZonedDateTime.parse("2018-12-02T19:37:25+02:00"); + ZonedDateTime startdatoForOppfolging2 = LANSERINGSDATO_VEILARBOPPFOLGING_OPPFOLGINGSPERIODE; + + Map> aktorIdStartDatoForOppfolgingMap = + Map.of( + ident1.getAktorId(), Optional.of(startdatoForOppfolging1), + ident2.getAktorId(), Optional.of(startdatoForOppfolging2) + ); + + when(siste14aVedtakRepository.hentSiste14aVedtakForBrukere(any())).thenReturn(aktorIdSiste14aVedtakMap); + when(oppfolgingRepositoryV2.hentStartDatoForOppfolging(any())).thenReturn(aktorIdStartDatoForOppfolgingMap); + + postgresOpensearchMapper.flettInnGjeldende14aVedtak(List.of(oppfolgingsbruker1, oppfolgingsbruker2)); + + assertThat(oppfolgingsbruker1.getGjeldendeVedtak14a()).isNull(); + assertThat(oppfolgingsbruker2.getGjeldendeVedtak14a()).isNull(); + } + + private GjeldendeIdenter genererGjeldendeIdent() { + return GjeldendeIdenter.builder().fnr(randomFnr()).aktorId(randomAktorId()).build(); + } +} diff --git a/src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java similarity index 96% rename from src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java rename to src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java index 4207a12708..4cd9baad02 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/oppfolgingsvedtak14a/siste14aVedtak/Siste14AVedtakForBrukerRepositoryTest.java @@ -1,7 +1,9 @@ -package no.nav.pto.veilarbportefolje.siste14aVedtak; +package no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak; import no.nav.common.types.identer.AktorId; import no.nav.pto.veilarbportefolje.config.ApplicationConfigTest; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakForBruker; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakRepository; import no.nav.pto.veilarbportefolje.persononinfo.PdlIdentRepository; import no.nav.pto.veilarbportefolje.persononinfo.domene.IdenterForBruker; import no.nav.pto.veilarbportefolje.persononinfo.domene.PDLIdent; diff --git a/src/test/java/no/nav/pto/veilarbportefolje/vedtaksstotte/VedtaksstotteClientTest.java b/src/test/java/no/nav/pto/veilarbportefolje/vedtaksstotte/VedtaksstotteClientTest.java index d36b3ffd61..0b8decdc03 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/vedtaksstotte/VedtaksstotteClientTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/vedtaksstotte/VedtaksstotteClientTest.java @@ -3,7 +3,7 @@ import com.github.tomakehurst.wiremock.junit.WireMockRule; import no.nav.common.types.identer.Fnr; -import no.nav.pto.veilarbportefolje.siste14aVedtak.Siste14aVedtakApiDto; +import no.nav.pto.veilarbportefolje.oppfolgingsvedtak14a.siste14aVedtak.Siste14aVedtakApiDto; import no.nav.pto.veilarbportefolje.vedtakstotte.VedtaksstotteClient; import org.junit.Rule; import org.junit.Test;