From aea87bd528e21dc73bd2f504606d3b59ddcd6db6 Mon Sep 17 00:00:00 2001 From: Jens-Otto Larsen Date: Sat, 15 Jun 2024 20:10:05 +0200 Subject: [PATCH] =?UTF-8?q?Overgangsfase=20konsumer=20f=C3=B8dselsdato-hen?= =?UTF-8?q?delse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PdlLeesahHendelseH\303\245ndterer.java" | 15 ++++++++++++--- .../abonnent/pdl/kafka/PdlLeesahOversetter.java | 16 +++++++++++++--- .../pdl/oppslag/F\303\270dselTjeneste.java" | 11 +++++------ 3 files changed, 30 insertions(+), 12 deletions(-) diff --git "a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahHendelseH\303\245ndterer.java" "b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahHendelseH\303\245ndterer.java" index ed21e5bb..6cc31dcc 100644 --- "a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahHendelseH\303\245ndterer.java" +++ "b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahHendelseH\303\245ndterer.java" @@ -10,6 +10,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Map; +import java.util.Optional; import java.util.function.Supplier; import org.apache.kafka.common.serialization.Deserializer; @@ -23,6 +24,7 @@ import jakarta.inject.Inject; import jakarta.transaction.Transactional; import no.nav.foreldrepenger.abonnent.felles.domene.HendelseKilde; +import no.nav.foreldrepenger.abonnent.felles.domene.HendelseType; import no.nav.foreldrepenger.abonnent.felles.domene.HåndtertStatusType; import no.nav.foreldrepenger.abonnent.felles.domene.InngåendeHendelse; import no.nav.foreldrepenger.abonnent.felles.task.HendelserDataWrapper; @@ -113,7 +115,10 @@ void handleMessage(String key, Personhendelse payload) { // key er spesialtegn + loggMottakUtenDato(payload, "fødsel"); } var pdlFødsel = oversetter.oversettFødsel(payload); - prosesserHendelseVidereHvisRelevant(pdlFødsel); + // Må håndtere korrigerte og annullerte hendelser et par dager framover + if (!HendelseType.PDL_FØDSEL_OPPRETTET.equals(pdlFødsel.getHendelseType())) { + prosesserHendelseVidereHvisRelevant(pdlFødsel); + } } private void håndterFødselsdato(Personhendelse payload) { @@ -123,8 +128,12 @@ void handleMessage(String key, Personhendelse payload) { // key er spesialtegn + } else { loggMottakUtenDato(payload, "fødsel dato"); } - //var pdlFødsel = oversetter.oversettFødsel(payload); - //prosesserHendelseVidereHvisRelevant(pdlFødsel); + var pdlFødsel = oversetter.oversettFødselsdato(payload); + var tidligere = Optional.ofNullable(pdlFødsel.getTidligereHendelseId()) + .flatMap(th -> hendelseRepository.finnHendelseFraIdHvisFinnes(th, HendelseKilde.PDL)); + if (HendelseType.PDL_FØDSEL_OPPRETTET.equals(pdlFødsel.getHendelseType()) || tidligere.isPresent()) { + prosesserHendelseVidereHvisRelevant(pdlFødsel); + } } private void håndterDødsfall(Personhendelse payload) { diff --git a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahOversetter.java b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahOversetter.java index e42d6c89..822fb076 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahOversetter.java +++ b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/kafka/PdlLeesahOversetter.java @@ -3,11 +3,10 @@ import java.time.LocalDateTime; import java.time.ZoneId; -import jakarta.enterprise.context.ApplicationScoped; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.enterprise.context.ApplicationScoped; import no.nav.foreldrepenger.abonnent.felles.domene.HendelseType; import no.nav.foreldrepenger.abonnent.pdl.domene.eksternt.PdlDød; import no.nav.foreldrepenger.abonnent.pdl.domene.eksternt.PdlDødfødsel; @@ -43,6 +42,17 @@ public PdlLeesahOversetter() { return builder.build(); } + public PdlFødsel oversettFødselsdato(Personhendelse personhendelse) { + var builder = PdlFødsel.builder(); + oversettPersonhendelse(personhendelse, builder); + + if (personhendelse.getFoedselsdato() != null) { + builder.medFødselsdato(personhendelse.getFoedselsdato().getFoedselsdato()); + } + + return builder.build(); + } + public PdlDød oversettDød(Personhendelse personhendelse) { var builder = PdlDød.builder(); oversettPersonhendelse(personhendelse, builder); @@ -99,7 +109,7 @@ private HendelseType oversettHendelseType(Personhendelse personhendelse) { var endringstype = personhendelse.getEndringstype(); switch (opplysningstype) { - case FØDSEL -> { + case FØDSEL, FØDSELSDATO -> { return switch (endringstype) { case OPPRETTET -> HendelseType.PDL_FØDSEL_OPPRETTET; case ANNULLERT -> HendelseType.PDL_FØDSEL_ANNULLERT; diff --git "a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/oppslag/F\303\270dselTjeneste.java" "b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/oppslag/F\303\270dselTjeneste.java" index 1a80e025..c0f44303 100644 --- "a/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/oppslag/F\303\270dselTjeneste.java" +++ "b/domene/src/main/java/no/nav/foreldrepenger/abonnent/pdl/oppslag/F\303\270dselTjeneste.java" @@ -8,10 +8,9 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; - import no.nav.foreldrepenger.abonnent.pdl.domene.PersonIdent; -import no.nav.pdl.Foedsel; -import no.nav.pdl.FoedselResponseProjection; +import no.nav.pdl.Foedselsdato; +import no.nav.pdl.FoedselsdatoResponseProjection; import no.nav.pdl.ForelderBarnRelasjon; import no.nav.pdl.ForelderBarnRelasjonResponseProjection; import no.nav.pdl.ForelderBarnRelasjonRolle; @@ -54,12 +53,12 @@ public List hentForeldreTil(PersonIdent barn) { var request = new HentPersonQueryRequest(); request.setIdent(barn.getIdent()); var projection = new PersonResponseProjection() - .foedsel(new FoedselResponseProjection().foedselsdato()); + .foedselsdato(new FoedselsdatoResponseProjection().foedselsdato()); var person = pdlKlient.hentPerson(request, projection); - return person.getFoedsel().stream() - .map(Foedsel::getFoedselsdato) + return person.getFoedselsdato().stream() + .map(Foedselsdato::getFoedselsdato) .filter(Objects::nonNull) .findFirst() .map(d -> LocalDate.parse(d, DateTimeFormatter.ISO_LOCAL_DATE));