Search in sources :

Example 16 with OppfolgingsBruker

use of no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker in project veilarbportefolje by navikt.

the class OpensearchIndexer method leggTilAktiviteter.

private void leggTilAktiviteter(List<OppfolgingsBruker> brukere) {
    if (brukere == null || brukere.isEmpty()) {
        throw new IllegalArgumentException();
    }
    validateBatchSize(brukere);
    List<PersonId> personIder = brukere.stream().map(OppfolgingsBruker::getPerson_id).map(PersonId::of).collect(toList());
    Map<PersonId, Set<AktivitetStatus>> alleAktiviteterForBrukere = aktivitetDAO.getAktivitetstatusForBrukere(personIder);
    alleAktiviteterForBrukere.forEach((personId, statuserForBruker) -> {
        OppfolgingsBruker bruker = finnBruker(brukere, personId);
        statuserForBruker.forEach(status -> {
            IndekseringUtils.leggTilUtlopsDato(bruker, status);
            IndekseringUtils.leggTilStartDato(bruker, status);
        });
        Set<String> aktiviteterSomErAktive = statuserForBruker.stream().filter(AktivitetStatus::isAktiv).map(AktivitetStatus::getAktivitetType).collect(toSet());
        bruker.setAktiviteter(aktiviteterSomErAktive);
    });
}
Also used : Collectors.toSet(java.util.stream.Collectors.toSet) Set(java.util.Set) PersonId(no.nav.pto.veilarbportefolje.domene.value.PersonId) AktivitetStatus(no.nav.pto.veilarbportefolje.aktiviteter.AktivitetStatus) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker)

Example 17 with OppfolgingsBruker

use of no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker in project veilarbportefolje by navikt.

the class AdminController method testHentIndeksertPostgresOgOracleBruker.

@PutMapping("/test/hentFraOracleOgPostgres")
public String testHentIndeksertPostgresOgOracleBruker(@RequestBody String aktoerIdString) {
    authorizeAdmin();
    AktorId aktoerId = AktorId.of(aktoerIdString);
    OppfolgingsBruker fraOracle = brukerRepository.hentBrukerFraView(aktoerId).get();
    OppfolgingsBruker fraPostgres = brukerRepository.hentBrukerFraView(aktoerId).get();
    postgresOpensearchMapper.flettInnPostgresData(List.of(fraPostgres), true);
    PostgresAktorIdEntity aktorIdData = aktoerDataOpensearchMapper.hentAktoerData(List.of(aktoerId)).get(aktoerId);
    return "{ \"oracle\":" + JsonUtils.toJson(fraOracle) + ", \"postgres\":" + JsonUtils.toJson(aktorIdData) + " }";
}
Also used : PostgresAktorIdEntity(no.nav.pto.veilarbportefolje.postgres.opensearch.PostgresAktorIdEntity) AktorId(no.nav.common.types.identer.AktorId) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker) PutMapping(org.springframework.web.bind.annotation.PutMapping)

Example 18 with OppfolgingsBruker

use of no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker in project veilarbportefolje by navikt.

the class OpensearchIndexer method skrivTilIndeks.

public void skrivTilIndeks(String indeksNavn, List<OppfolgingsBruker> oppfolgingsBrukere) {
    BulkRequest bulk = new BulkRequest();
    oppfolgingsBrukere.stream().map(bruker -> {
        IndexRequest indexRequest = new IndexRequest(indeksNavn).id(bruker.getAktoer_id());
        return indexRequest.source(toJson(bruker), XContentType.JSON);
    }).forEach(bulk::add);
    restHighLevelClient.bulkAsync(bulk, RequestOptions.DEFAULT, new ActionListener<>() {

        @Override
        public void onResponse(BulkResponse bulkItemResponses) {
            if (bulkItemResponses.hasFailures()) {
                log.warn("Klart ikke å skrive til indeks: {}", bulkItemResponses.buildFailureMessage());
            }
            if (bulkItemResponses.getItems().length != oppfolgingsBrukere.size()) {
                log.warn("Antall faktiske adds og antall brukere som skulle oppdateres er ulike");
            }
            List<String> aktoerIds = oppfolgingsBrukere.stream().map(OppfolgingsBruker::getAktoer_id).collect(toList());
            log.info("Skrev {} brukere til indeks: {}", oppfolgingsBrukere.size(), aktoerIds);
        }

        @Override
        public void onFailure(Exception e) {
            log.warn("Feil under asynkron indeksering av brukerere ", e);
        }
    });
}
Also used : RequestOptions(org.opensearch.client.RequestOptions) SneakyThrows(lombok.SneakyThrows) CollectionUtils.partition(no.nav.common.utils.CollectionUtils.partition) RequiredArgsConstructor(lombok.RequiredArgsConstructor) BulkRequest(org.opensearch.action.bulk.BulkRequest) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker) JsonUtils.toJson(no.nav.common.json.JsonUtils.toJson) SisteEndringRepository(no.nav.pto.veilarbportefolje.sisteendring.SisteEndringRepository) AktorId(no.nav.common.types.identer.AktorId) PostgresOpensearchMapper(no.nav.pto.veilarbportefolje.postgres.opensearch.PostgresOpensearchMapper) EnvironmentUtils.isDevelopment(no.nav.common.utils.EnvironmentUtils.isDevelopment) Lists(com.google.common.collect.Lists) BrukertiltakV2(no.nav.pto.veilarbportefolje.arenapakafka.arenaDTO.BrukertiltakV2) Service(org.springframework.stereotype.Service) Map(java.util.Map) ActionListener(org.opensearch.action.ActionListener) UnderOppfolgingRegler.erUnderOppfolging(no.nav.pto.veilarbportefolje.util.UnderOppfolgingRegler.erUnderOppfolging) PersonId(no.nav.pto.veilarbportefolje.domene.value.PersonId) RestHighLevelClient(org.opensearch.client.RestHighLevelClient) ExecutorService(java.util.concurrent.ExecutorService) Collectors.toSet(java.util.stream.Collectors.toSet) IndekseringUtils.finnBruker(no.nav.pto.veilarbportefolje.opensearch.IndekseringUtils.finnBruker) AktivitetDAO(no.nav.pto.veilarbportefolje.aktiviteter.AktivitetDAO) TiltakRepositoryV1(no.nav.pto.veilarbportefolje.arenapakafka.aktiviteter.TiltakRepositoryV1) Set(java.util.Set) Executors(java.util.concurrent.Executors) String.format(java.lang.String.format) TimeUnit(java.util.concurrent.TimeUnit) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) BulkResponse(org.opensearch.action.bulk.BulkResponse) XContentType(org.opensearch.common.xcontent.XContentType) AktivitetStatus(no.nav.pto.veilarbportefolje.aktiviteter.AktivitetStatus) IndexRequest(org.opensearch.action.index.IndexRequest) BrukerRepository(no.nav.pto.veilarbportefolje.database.BrukerRepository) Collections(java.util.Collections) BulkRequest(org.opensearch.action.bulk.BulkRequest) BulkResponse(org.opensearch.action.bulk.BulkResponse) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) IndexRequest(org.opensearch.action.index.IndexRequest) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker)

Example 19 with OppfolgingsBruker

use of no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker in project veilarbportefolje by navikt.

the class Bruker method of.

public static Bruker of(OppfolgingsBruker bruker, boolean erVedtakstottePilotPa) {
    String formidlingsgruppekode = bruker.getFormidlingsgruppekode();
    String kvalifiseringsgruppekode = bruker.getKvalifiseringsgruppekode();
    String sikkerhetstiltak = bruker.getSikkerhetstiltak();
    String profileringResultat = bruker.getProfilering_resultat();
    String diskresjonskode = bruker.getDiskresjonskode();
    LocalDateTime oppfolgingStartDato = toLocalDateTimeOrNull(bruker.getOppfolging_startdato());
    boolean trengerVurdering = bruker.isTrenger_vurdering();
    return new Bruker().setFnr(bruker.getFnr()).setAktoerid(bruker.getAktoer_id()).setNyForEnhet(bruker.isNy_for_enhet()).setNyForVeileder(bruker.isNy_for_veileder()).setTrengerVurdering(trengerVurdering).setErSykmeldtMedArbeidsgiver(// Etiketten sykemeldt ska vises oavsett om brukeren har ett påbegynnt vedtak eller ej
    OppfolgingUtils.erSykmeldtMedArbeidsgiver(formidlingsgruppekode, kvalifiseringsgruppekode)).setVurderingsBehov(trengerVurdering ? vurderingsBehov(formidlingsgruppekode, kvalifiseringsgruppekode, profileringResultat, erVedtakstottePilotPa) : null).setFornavn(bruker.getFornavn()).setEtternavn(bruker.getEtternavn()).setVeilederId(bruker.getVeileder_id()).setDiskresjonskode(("7".equals(diskresjonskode) || "6".equals(diskresjonskode)) ? diskresjonskode : null).setEgenAnsatt(bruker.isEgen_ansatt()).setErDoed(bruker.isEr_doed()).setSikkerhetstiltak(// TODO: Hvorfor er dette en liste?
    sikkerhetstiltak == null ? new ArrayList<>() : Collections.singletonList(sikkerhetstiltak)).setFodselsdagIMnd(bruker.getFodselsdag_i_mnd()).setFodselsdato(toLocalDateTimeOrNull(bruker.getFodselsdato())).setKjonn(bruker.getKjonn()).setYtelse(YtelseMapping.of(bruker.getYtelse())).setUtlopsdato(toLocalDateTimeOrNull(bruker.getUtlopsdato())).setUtlopsdatoFasett(ManedFasettMapping.of(bruker.getUtlopsdatofasett())).setDagputlopUke(bruker.getDagputlopuke()).setDagputlopUkeFasett(DagpengerUkeFasettMapping.of(bruker.getDagputlopukefasett())).setPermutlopUke(bruker.getPermutlopuke()).setPermutlopUkeFasett(DagpengerUkeFasettMapping.of(bruker.getPermutlopukefasett())).setAapmaxtidUke(bruker.getAapmaxtiduke()).setAapmaxtidUkeFasett(AAPMaxtidUkeFasettMapping.of(bruker.getAapmaxtidukefasett())).setAapUnntakUkerIgjen(bruker.getAapunntakukerigjen()).setAapUnntakUkerIgjenFasett(AAPUnntakUkerIgjenFasettMapping.of(bruker.getAapunntakukerigjenfasett())).setArbeidsliste(Arbeidsliste.of(bruker)).setVenterPaSvarFraNAV(toLocalDateTimeOrNull(bruker.getVenterpasvarfranav())).setVenterPaSvarFraBruker(toLocalDateTimeOrNull(bruker.getVenterpasvarfrabruker())).setNyesteUtlopteAktivitet(toLocalDateTimeOrNull(bruker.getNyesteutlopteaktivitet())).setAktivitetStart(toLocalDateTimeOrNull(bruker.getAktivitet_start())).setNesteAktivitetStart(toLocalDateTimeOrNull(bruker.getNeste_aktivitet_start())).setForrigeAktivitetStart(toLocalDateTimeOrNull(bruker.getForrige_aktivitet_start())).setBrukertiltak(new ArrayList<>(bruker.getTiltak())).setManuellBrukerStatus(bruker.getManuell_bruker()).setMoteStartTid(toLocalDateTimeOrNull(bruker.getAktivitet_mote_startdato())).setMoteSluttTid(toLocalDateTimeOrNull(bruker.getAktivitet_mote_utlopsdato())).setVedtakStatus(bruker.getVedtak_status()).setVedtakStatusEndret(toLocalDateTimeOrNull(bruker.getVedtak_status_endret())).setAnsvarligVeilederForVedtak(bruker.getAnsvarlig_veileder_for_vedtak()).setOppfolgingStartdato(oppfolgingStartDato).setTrengerRevurdering(trengerRevurdering(bruker, erVedtakstottePilotPa)).addAktivitetUtlopsdato("tiltak", dateToTimestamp(bruker.getAktivitet_tiltak_utlopsdato())).addAktivitetUtlopsdato("behandling", dateToTimestamp(bruker.getAktivitet_behandling_utlopsdato())).addAktivitetUtlopsdato("sokeavtale", dateToTimestamp(bruker.getAktivitet_sokeavtale_utlopsdato())).addAktivitetUtlopsdato("stilling", dateToTimestamp(bruker.getAktivitet_stilling_utlopsdato())).addAktivitetUtlopsdato("ijobb", dateToTimestamp(bruker.getAktivitet_ijobb_utlopsdato())).addAktivitetUtlopsdato("egen", dateToTimestamp(bruker.getAktivitet_egen_utlopsdato())).addAktivitetUtlopsdato("gruppeaktivitet", dateToTimestamp(bruker.getAktivitet_gruppeaktivitet_utlopsdato())).addAktivitetUtlopsdato("mote", dateToTimestamp(bruker.getAktivitet_mote_utlopsdato())).addAktivitetUtlopsdato("utdanningaktivitet", dateToTimestamp(bruker.getAktivitet_utdanningaktivitet_utlopsdato()));
}
Also used : LocalDateTime(java.time.LocalDateTime) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker)

Example 20 with OppfolgingsBruker

use of no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker in project veilarbportefolje by navikt.

the class BrukerRepositoryTest method skal_hente_bruker_fra_view.

@Test
public void skal_hente_bruker_fra_view() {
    final Fnr fnr = randomFnr();
    final AktorId aktorId = randomAktorId();
    final PersonId personId = randomPersonId();
    SqlUtils.insert(jdbcTemplate, Table.OPPFOLGINGSBRUKER.TABLE_NAME).value(Table.OPPFOLGINGSBRUKER.FODSELSNR, fnr.toString()).value(Table.OPPFOLGINGSBRUKER.PERSON_ID, personId.toString()).execute();
    SqlUtils.insert(jdbcTemplate, Table.AKTOERID_TO_PERSONID.TABLE_NAME).value(Table.AKTOERID_TO_PERSONID.AKTOERID, aktorId.toString()).value(Table.AKTOERID_TO_PERSONID.PERSONID, personId.toString()).value(Table.AKTOERID_TO_PERSONID.GJELDENE, 1).execute();
    final Optional<OppfolgingsBruker> bruker = brukerRepository.hentBrukerFraView(brukerRepository.hentAktorIdFraView(fnr).get());
    assertThat(bruker).isPresent();
}
Also used : PersonId(no.nav.pto.veilarbportefolje.domene.value.PersonId) TestDataUtils.randomPersonId(no.nav.pto.veilarbportefolje.util.TestDataUtils.randomPersonId) AktorId(no.nav.common.types.identer.AktorId) TestDataUtils.randomAktorId(no.nav.pto.veilarbportefolje.util.TestDataUtils.randomAktorId) Fnr(no.nav.common.types.identer.Fnr) TestDataUtils.randomFnr(no.nav.pto.veilarbportefolje.util.TestDataUtils.randomFnr) OppfolgingsBruker(no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker) Test(org.junit.Test)

Aggregations

OppfolgingsBruker (no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker)29 EndToEndTest (no.nav.pto.veilarbportefolje.util.EndToEndTest)18 Test (org.junit.jupiter.api.Test)18 AktorId (no.nav.common.types.identer.AktorId)7 Set (java.util.Set)3 Collectors.toSet (java.util.stream.Collectors.toSet)3 PersonId (no.nav.pto.veilarbportefolje.domene.value.PersonId)3 ZonedDateTime (java.time.ZonedDateTime)2 List (java.util.List)2 Collectors.toList (java.util.stream.Collectors.toList)2 RequiredArgsConstructor (lombok.RequiredArgsConstructor)2 SneakyThrows (lombok.SneakyThrows)2 AktivitetStatus (no.nav.pto.veilarbportefolje.aktiviteter.AktivitetStatus)2 VeilederId (no.nav.pto.veilarbportefolje.domene.value.VeilederId)2 TestDataUtils.randomAktorId (no.nav.pto.veilarbportefolje.util.TestDataUtils.randomAktorId)2 Test (org.junit.Test)2 Lists (com.google.common.collect.Lists)1 String.format (java.lang.String.format)1 LocalDateTime (java.time.LocalDateTime)1 ArrayList (java.util.ArrayList)1