diff --git a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchQueryBuilder.java b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchQueryBuilder.java index 758db362c..4bb720f35 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchQueryBuilder.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchQueryBuilder.java @@ -471,6 +471,10 @@ static SearchSourceBuilder sorterQueryParametere(String sortOrder, String case "aap_type" -> searchSourceBuilder.sort("ytelse", order); case "aap_vurderingsfrist" -> sorterAapVurderingsfrist(searchSourceBuilder, order, filtervalg); case "aaprettighetsperiode" -> sorterAapRettighetsPeriode(searchSourceBuilder, order); + case "gjeldende_vedtak_14a_innsatsgruppe" -> + searchSourceBuilder.sort("gjeldendeVedtak14a.innsatsgruppe", order); + case "gjeldende_vedtak_14a_hovedmal" -> searchSourceBuilder.sort("gjeldendeVedtak14a.hovedmal", order); + case "gjeldende_vedtak_14a_vedtaksdato" -> searchSourceBuilder.sort("gjeldendeVedtak14a.fattetDato", order) ; case "utkast_14a_status" -> searchSourceBuilder.sort("utkast_14a_status", order); case "arbeidslistekategori" -> searchSourceBuilder.sort("arbeidsliste_kategori", order); case "siste_endring_tidspunkt" -> sorterSisteEndringTidspunkt(searchSourceBuilder, order, filtervalg); diff --git a/src/main/java/no/nav/pto/veilarbportefolje/tiltakshendelse/domain/Tiltakstype.java b/src/main/java/no/nav/pto/veilarbportefolje/tiltakshendelse/domain/Tiltakstype.java index c017fe951..df73d6081 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/tiltakshendelse/domain/Tiltakstype.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/tiltakshendelse/domain/Tiltakstype.java @@ -1,6 +1,13 @@ package no.nav.pto.veilarbportefolje.tiltakshendelse.domain; -// TODO få tiltakstypar frå team Komet public enum Tiltakstype { - ARBFORB + ARBFORB, + ARBRRHDAG, + AVKLARAG, + DIGIOPPARB, + INDOPPFAG, + GRUFAGYRKE, + GRUPPEAMO, + JOBBK, + VASV, } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/util/ValideringsRegler.java b/src/main/java/no/nav/pto/veilarbportefolje/util/ValideringsRegler.java index 48acde3dd..dff5cdb73 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/util/ValideringsRegler.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/util/ValideringsRegler.java @@ -51,6 +51,9 @@ public class ValideringsRegler { "motestatus", "oppfolging_startdato", "veileder_id", + "gjeldende_vedtak_14a_innsatsgruppe", + "gjeldende_vedtak_14a_hovedmal", + "gjeldende_vedtak_14a_vedtaksdato", "utkast_14a_status", "utkast_14a_ansvarlig_veileder", "utkast_14a_status_endret", 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 ee8d1185b..44af8dc12 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchServiceIntegrationTest.java @@ -38,10 +38,7 @@ import org.springframework.jdbc.core.JdbcTemplate; import java.sql.Timestamp; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZonedDateTime; +import java.time.*; import java.util.*; import java.util.stream.Stream; @@ -4402,6 +4399,146 @@ public void skal_hente_brukere_med_og_uten_gjeldendeVedtak14a() { assertThat(respons.getAntall()).isEqualTo(2); } + @Test + public void skal_kunne_sortere_brukere_med_og_uten_gjeldendeVedtak14a_pa_14a_kolonner() { + Fnr brukerMedSiste14aVedtakFnr1 = Fnr.of("11111111111"); + Fnr brukerMedSiste14aVedtakFnr2 = Fnr.of("22222222222"); + Fnr brukerMedSiste14aVedtakFnr3 = Fnr.of("33333333333"); + Fnr brukerUtenSiste14aVedtakFnr = Fnr.of("44444444444"); + AktorId brukerMedSiste14aVedtakAktorId1 = AktorId.of("1111111111111"); + AktorId brukerMedSiste14aVedtakAktorId2 = AktorId.of("2222222222222"); + AktorId brukerMedSiste14aVedtakAktorId3 = AktorId.of("3333333333333"); + AktorId brukerUtenSiste14aVedtakAktorId = AktorId.of("4444444444444"); + + OppfolgingsBruker bruker1 = new OppfolgingsBruker() + .setFnr(brukerMedSiste14aVedtakFnr1.get()) + .setAktoer_id(brukerMedSiste14aVedtakAktorId1.get()) + .setEnhet_id(TEST_ENHET) + .setOppfolging(true) + .setGjeldendeVedtak14a(new GjeldendeVedtak14a( + Innsatsgruppe.VARIG_TILPASSET_INNSATS, + Hovedmal.OKE_DELTAKELSE, + ZonedDateTime.of(2024, 1, 1, 12, 0, 0, 0, ZoneId.systemDefault()) + )); + + OppfolgingsBruker bruker2 = new OppfolgingsBruker() + .setFnr(brukerMedSiste14aVedtakFnr2.get()) + .setAktoer_id(brukerMedSiste14aVedtakAktorId2.get()) + .setEnhet_id(TEST_ENHET) + .setOppfolging(true) + .setGjeldendeVedtak14a(new GjeldendeVedtak14a( + Innsatsgruppe.GRADERT_VARIG_TILPASSET_INNSATS, + Hovedmal.SKAFFE_ARBEID, + ZonedDateTime.of(2022, 1, 1, 12, 0, 0, 0, ZoneId.systemDefault()) + )); + + OppfolgingsBruker bruker3 = new OppfolgingsBruker() + .setFnr(brukerMedSiste14aVedtakFnr3.get()) + .setAktoer_id(brukerMedSiste14aVedtakAktorId3.get()) + .setEnhet_id(TEST_ENHET) + .setOppfolging(true) + .setGjeldendeVedtak14a(new GjeldendeVedtak14a( + Innsatsgruppe.STANDARD_INNSATS, + Hovedmal.BEHOLDE_ARBEID, + ZonedDateTime.of(2020, 1, 1, 12, 0, 0, 0, ZoneId.systemDefault()) + )); + + OppfolgingsBruker brukerUtenGjeldendeVedtak = new OppfolgingsBruker() + .setFnr(brukerUtenSiste14aVedtakFnr.get()) + .setAktoer_id(brukerUtenSiste14aVedtakAktorId.get()) + .setEnhet_id(TEST_ENHET) + .setOppfolging(true); + + var liste = List.of(bruker1, bruker2, bruker3, brukerUtenGjeldendeVedtak); + skrivBrukereTilTestindeks(liste); + + pollOpensearchUntil(() -> opensearchTestClient.countDocuments() == liste.size()); + + Filtervalg filtervalg = new Filtervalg() + .setFerdigfilterListe(emptyList()) + .setGjeldendeVedtak14a(List.of("HAR_14A_VEDTAK", "HAR_IKKE_14A_VEDTAK")); + + /* Standard-sortering (aktør-id). Forventa rekkefølgje: 1, 2, 3, Utan */ + BrukereMedAntall responsStandardsortering = opensearchService.hentBrukere( + TEST_ENHET, + empty(), + "ascending", + "ikke_satt", + filtervalg, + null, + null + ); + assertThat(responsStandardsortering.getAntall()).isEqualTo(4); + assertEquals(responsStandardsortering.getBrukere().get(0).getFnr(), bruker1.getFnr()); + assertEquals(responsStandardsortering.getBrukere().get(1).getFnr(), bruker2.getFnr()); + assertEquals(responsStandardsortering.getBrukere().get(2).getFnr(), bruker3.getFnr()); + assertEquals(responsStandardsortering.getBrukere().get(3).getFnr(), brukerUtenGjeldendeVedtak.getFnr()); + + /* Innsatsgruppe, stigande. Forventa rekkefølgje: 2, 3, 1, Uten */ + BrukereMedAntall responsInnsatsgruppeStigende = opensearchService.hentBrukere( + TEST_ENHET, + empty(), + "ascending", + "gjeldende_vedtak_14a_innsatsgruppe", + filtervalg, + null, + null + ); + assertThat(responsInnsatsgruppeStigende.getAntall()).isEqualTo(4); + assertEquals(responsInnsatsgruppeStigende.getBrukere().get(0).getFnr(), bruker2.getFnr()); + assertEquals(responsInnsatsgruppeStigende.getBrukere().get(1).getFnr(), bruker3.getFnr()); + assertEquals(responsInnsatsgruppeStigende.getBrukere().get(2).getFnr(), bruker1.getFnr()); + assertEquals(responsInnsatsgruppeStigende.getBrukere().get(3).getFnr(), brukerUtenGjeldendeVedtak.getFnr()); + + /* Innsatsgruppe, synkande. Forventa rekkefølgje: 1, 3, 2, Uten */ + BrukereMedAntall responsInnsatsgruppeSynkende = opensearchService.hentBrukere( + TEST_ENHET, + empty(), + "descending", + "gjeldende_vedtak_14a_innsatsgruppe", + filtervalg, + null, + null + ); + assertThat(responsInnsatsgruppeSynkende.getAntall()).isEqualTo(4); + assertEquals(responsInnsatsgruppeSynkende.getBrukere().get(0).getFnr(), bruker1.getFnr()); + assertEquals(responsInnsatsgruppeSynkende.getBrukere().get(1).getFnr(), bruker3.getFnr()); + assertEquals(responsInnsatsgruppeSynkende.getBrukere().get(2).getFnr(), bruker2.getFnr()); + assertEquals(responsInnsatsgruppeSynkende.getBrukere().get(3).getFnr(), brukerUtenGjeldendeVedtak.getFnr()); + + /* Hovedmål, stigande. Forventa: 3, 1, 2, Uten */ + BrukereMedAntall responsHovedmalStigende = opensearchService.hentBrukere( + TEST_ENHET, + empty(), + "ascending", + "gjeldende_vedtak_14a_hovedmal", + filtervalg, + null, + null + ); + assertThat(responsHovedmalStigende.getAntall()).isEqualTo(4); + assertEquals(responsHovedmalStigende.getBrukere().get(0).getFnr(), bruker3.getFnr()); + assertEquals(responsHovedmalStigende.getBrukere().get(1).getFnr(), bruker1.getFnr()); + assertEquals(responsHovedmalStigende.getBrukere().get(2).getFnr(), bruker2.getFnr()); + assertEquals(responsHovedmalStigende.getBrukere().get(3).getFnr(), brukerUtenGjeldendeVedtak.getFnr()); + + /* Vedtaksdato, stigande. Forventa rekkefølgje: 3, 2, 1, Uten */ + BrukereMedAntall responsVedtaksdatoStigende = opensearchService.hentBrukere( + TEST_ENHET, + empty(), + "ascending", + "gjeldende_vedtak_14a_vedtaksdato", + filtervalg, + null, + null + ); + assertThat(responsVedtaksdatoStigende.getAntall()).isEqualTo(4); + assertEquals(responsVedtaksdatoStigende.getBrukere().get(0).getFnr(), bruker3.getFnr()); + assertEquals(responsVedtaksdatoStigende.getBrukere().get(1).getFnr(), bruker2.getFnr()); + assertEquals(responsVedtaksdatoStigende.getBrukere().get(2).getFnr(), bruker1.getFnr()); + assertEquals(responsVedtaksdatoStigende.getBrukere().get(3).getFnr(), brukerUtenGjeldendeVedtak.getFnr()); + } + private boolean veilederExistsInResponse(String veilederId, BrukereMedAntall brukere) { return brukere.getBrukere().stream().anyMatch(bruker -> veilederId.equals(bruker.getVeilederId())); } diff --git a/src/test/java/no/nav/pto/veilarbportefolje/tiltakshendelse/TiltakshendelseRepositoryTest.java b/src/test/java/no/nav/pto/veilarbportefolje/tiltakshendelse/TiltakshendelseRepositoryTest.java index 91db6ec71..3abdbe4a6 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/tiltakshendelse/TiltakshendelseRepositoryTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/tiltakshendelse/TiltakshendelseRepositoryTest.java @@ -81,10 +81,10 @@ void kanIkkeOppdatereTiltakshendelseEtterEndretFnr() { Fnr fnr = Fnr.of("11223312345"); Fnr nyttFnr = Fnr.of("12345112233"); - KafkaTiltakshendelse gammelKafkaData = new KafkaTiltakshendelse(id, true, opprettet, tekst, lenke, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse oppdatertKafkaData = new KafkaTiltakshendelse(id, true, opprettet.plusDays(1), oppdatertTekst, lenke, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse oppdatertMedNyttFnrKafkaData = new KafkaTiltakshendelse(id, true, opprettet.plusDays(2), tekst, lenke, Tiltakstype.ARBFORB, nyttFnr, Avsender.KOMET); - Tiltakshendelse expected = new Tiltakshendelse(id, opprettet.plusDays(1), oppdatertTekst, lenke, Tiltakstype.ARBFORB, fnr); + KafkaTiltakshendelse gammelKafkaData = new KafkaTiltakshendelse(id, true, opprettet, tekst, lenke, Tiltakstype.AVKLARAG, fnr, Avsender.KOMET); + KafkaTiltakshendelse oppdatertKafkaData = new KafkaTiltakshendelse(id, true, opprettet.plusDays(1), oppdatertTekst, lenke, Tiltakstype.JOBBK, fnr, Avsender.KOMET); + KafkaTiltakshendelse oppdatertMedNyttFnrKafkaData = new KafkaTiltakshendelse(id, true, opprettet.plusDays(2), tekst, lenke, Tiltakstype.GRUFAGYRKE, nyttFnr, Avsender.KOMET); + Tiltakshendelse expected = new Tiltakshendelse(id, opprettet.plusDays(1), oppdatertTekst, lenke, Tiltakstype.JOBBK, fnr); assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(gammelKafkaData)); assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(oppdatertKafkaData)); @@ -106,8 +106,8 @@ void kanLagreFlereTiltakshendelserPaSammePerson() { String lenke = "http.cat/200"; Fnr fnr = Fnr.of("11223312345"); - KafkaTiltakshendelse hendelsePaEnPerson = new KafkaTiltakshendelse(id, true, opprettet, tekst, tekst, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse nyHendelsePaSammePerson = new KafkaTiltakshendelse(idNyMelding, true, opprettetNyMelding, tekst, lenke, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); + KafkaTiltakshendelse hendelsePaEnPerson = new KafkaTiltakshendelse(id, true, opprettet, tekst, tekst, Tiltakstype.INDOPPFAG, fnr, Avsender.KOMET); + KafkaTiltakshendelse nyHendelsePaSammePerson = new KafkaTiltakshendelse(idNyMelding, true, opprettetNyMelding, tekst, lenke, Tiltakstype.DIGIOPPARB, fnr, Avsender.KOMET); assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(hendelsePaEnPerson)); assertFalse(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(nyHendelsePaSammePerson)); @@ -124,7 +124,7 @@ void kanSletteTiltakshendelse() { String lenke = "http.cat/200"; Fnr fnr = Fnr.of("11223312345"); - KafkaTiltakshendelse hendelsePaEnPerson = new KafkaTiltakshendelse(id, true, opprettet, tekst, lenke, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); + KafkaTiltakshendelse hendelsePaEnPerson = new KafkaTiltakshendelse(id, true, opprettet, tekst, lenke, Tiltakstype.GRUPPEAMO, fnr, Avsender.KOMET); assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(hendelsePaEnPerson)); @@ -148,7 +148,7 @@ void kanSletteTiltakshendelseReturnereNesteEldste() { Fnr fnr = Fnr.of("11223312345"); KafkaTiltakshendelse hendelsePaEnPerson = new KafkaTiltakshendelse(id, true, opprettet, tekst, tekst, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse nyHendelsePaSammePerson = new KafkaTiltakshendelse(idNyMelding, true, opprettetNyMelding, tekst, lenke, Tiltakstype.ARBFORB, fnr, Avsender.KOMET); + KafkaTiltakshendelse nyHendelsePaSammePerson = new KafkaTiltakshendelse(idNyMelding, true, opprettetNyMelding, tekst, lenke, Tiltakstype.ARBRRHDAG, fnr, Avsender.KOMET); assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(hendelsePaEnPerson)); assertFalse(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(nyHendelsePaSammePerson)); @@ -175,8 +175,8 @@ public void kanHenteTiltakshendelseMedEldsteOpprettetdato() { LocalDateTime opprettet3 = LocalDateTime.of(2020, 6, 1, 12, 0); KafkaTiltakshendelse tiltakshendelse1 = new KafkaTiltakshendelse(id1, true, opprettet1, "Forslag: endre varighet", "http.cat/204", Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse tiltakshendelse2 = new KafkaTiltakshendelse(id2, true, opprettet2, "Forslag: endre varighet", "http.cat/204", Tiltakstype.ARBFORB, fnr, Avsender.KOMET); - KafkaTiltakshendelse tiltakshendelse3 = new KafkaTiltakshendelse(id3, true, opprettet3, "Forslag: endre varighet", "http.cat/204", Tiltakstype.ARBFORB, fnr, Avsender.KOMET); + KafkaTiltakshendelse tiltakshendelse2 = new KafkaTiltakshendelse(id2, true, opprettet2, "Forslag: endre varighet", "http.cat/204", Tiltakstype.ARBRRHDAG, fnr, Avsender.KOMET); + KafkaTiltakshendelse tiltakshendelse3 = new KafkaTiltakshendelse(id3, true, opprettet3, "Forslag: endre varighet", "http.cat/204", Tiltakstype.VASV, fnr, Avsender.KOMET); // Lagrar hendelsane i motsett rekkefølgje av oppretta-tidspunktet assertTrue(repository.tryLagreTiltakshendelseOgSjekkOmDenErEldst(tiltakshendelse1));