From 06208e978e3609d6f01dc96c92a955a69e452c6c Mon Sep 17 00:00:00 2001 From: david steinsland Date: Tue, 26 Nov 2024 11:27:39 +0100 Subject: [PATCH] leser inn vedtaksperioder_venter --- .../no/nav/helse/ventetilstand/Hendelse.kt | 8 +- .../VedtaksperiodeVenterRiver.kt | 80 +++++++++++++++++-- .../helse/VedtaksperiodeVentetilstandTest.kt | 36 +++++---- 3 files changed, 93 insertions(+), 31 deletions(-) diff --git a/src/main/kotlin/no/nav/helse/ventetilstand/Hendelse.kt b/src/main/kotlin/no/nav/helse/ventetilstand/Hendelse.kt index 2473e97..47f81be 100644 --- a/src/main/kotlin/no/nav/helse/ventetilstand/Hendelse.kt +++ b/src/main/kotlin/no/nav/helse/ventetilstand/Hendelse.kt @@ -1,13 +1,7 @@ package no.nav.helse.ventetilstand -import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection -import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageContext -import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageProblems -import com.github.navikt.tbd_libs.rapids_and_rivers.River import com.github.navikt.tbd_libs.rapids_and_rivers.JsonMessage -import com.github.navikt.tbd_libs.rapids_and_rivers.asLocalDateTime -import com.github.navikt.tbd_libs.rapids_and_rivers.asLocalDate -import java.util.UUID +import java.util.* internal class Hendelse ( internal val id: UUID, diff --git a/src/main/kotlin/no/nav/helse/ventetilstand/VedtaksperiodeVenterRiver.kt b/src/main/kotlin/no/nav/helse/ventetilstand/VedtaksperiodeVenterRiver.kt index 2003cb8..1419133 100644 --- a/src/main/kotlin/no/nav/helse/ventetilstand/VedtaksperiodeVenterRiver.kt +++ b/src/main/kotlin/no/nav/helse/ventetilstand/VedtaksperiodeVenterRiver.kt @@ -1,14 +1,15 @@ package no.nav.helse.ventetilstand -import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.module.kotlin.convertValue +import com.github.navikt.tbd_libs.rapids_and_rivers.* import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageContext -import com.github.navikt.tbd_libs.rapids_and_rivers.River -import com.github.navikt.tbd_libs.rapids_and_rivers.JsonMessage -import com.github.navikt.tbd_libs.rapids_and_rivers.asLocalDateTime -import com.github.navikt.tbd_libs.rapids_and_rivers.asLocalDate -import com.github.navikt.tbd_libs.rapids_and_rivers.isMissingOrNull import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageMetadata +import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection import io.micrometer.core.instrument.MeterRegistry +import no.nav.helse.objectMapper +import java.time.LocalDate +import java.time.LocalDateTime import java.util.* internal class VedtaksperiodeVenterRiver ( @@ -17,6 +18,24 @@ internal class VedtaksperiodeVenterRiver ( ) : River.PacketListener { init { + River(rapidApplication).apply { + precondition { it.requireValue("@event_name", "vedtaksperioder_venter") } + validate { it.requireKey("@id", "fødselsnummer") } + validate { + it.requireArray("vedtaksperioder") { + requireKey( + "venterPå.venteårsak.hva", + "venterPå.vedtaksperiodeId", + "venterPå.skjæringstidspunkt", + "venterPå.organisasjonsnummer" + ) + interestedIn("venterPå.venteårsak.hvorfor") + requireKey("vedtaksperiodeId", "skjæringstidspunkt", "organisasjonsnummer", "ventetSiden", "venterTil") + } + } + }.register(this) + + // todo: deprecated river River(rapidApplication).apply { precondition { it.requireValue("@event_name", "vedtaksperiode_venter") } validate { it.requireKey( @@ -35,11 +54,32 @@ internal class VedtaksperiodeVenterRiver ( "venterTil", "fødselsnummer" ) } - }.register(this) + }.register(object : River.PacketListener { + override fun onPacket(packet: JsonMessage, context: MessageContext, metadata: MessageMetadata, meterRegistry: MeterRegistry) { + dao.venter(packet.vedtaksperiodeVenter, packet.hendelse) + } + }) } override fun onPacket(packet: JsonMessage, context: MessageContext, metadata: MessageMetadata, meterRegistry: MeterRegistry) { - dao.venter(packet.vedtaksperiodeVenter, packet.hendelse) + packet["vedtaksperioder"].forEach { t -> + val dto = objectMapper.convertValue(t) + dao.venter(VedtaksperiodeVenter.opprett( + vedtaksperiodeId = dto.vedtaksperiodeId, + skjæringstidspunkt = dto.skjæringstidspunkt, + fødselsnummer = packet["fødselsnummer"].asText(), + organisasjonsnummer = dto.organisasjonsnummer, + ventetSiden = dto.ventetSiden, + venterTil = dto.venterTil, + venterPå = VenterPå( + vedtaksperiodeId = dto.venterPå.vedtaksperiodeId, + organisasjonsnummer = dto.venterPå.organisasjonsnummer, + skjæringstidspunkt = dto.venterPå.skjæringstidspunkt, + hva = dto.venterPå.venteårsak.hva, + hvorfor = dto.venterPå.venteårsak.hvorfor + ) + ), packet.hendelse) + } } private companion object { @@ -59,4 +99,28 @@ internal class VedtaksperiodeVenterRiver ( ) ) } +} + +@JsonIgnoreProperties(ignoreUnknown = true) +private data class VedtaksperiodeVenterDto( + val organisasjonsnummer: String, + val vedtaksperiodeId: UUID, + val skjæringstidspunkt: LocalDate, + val ventetSiden: LocalDateTime, + val venterTil: LocalDateTime, + val venterPå: VenterPå +) { + @JsonIgnoreProperties(ignoreUnknown = true) + data class VenterPå( + val vedtaksperiodeId: UUID, + val organisasjonsnummer: String, + val skjæringstidspunkt: LocalDate, + val venteårsak: Venteårsak + ) + + @JsonIgnoreProperties(ignoreUnknown = true) + data class Venteårsak( + val hva : String, + val hvorfor: String? + ) } \ No newline at end of file diff --git a/src/test/kotlin/no/nav/helse/VedtaksperiodeVentetilstandTest.kt b/src/test/kotlin/no/nav/helse/VedtaksperiodeVentetilstandTest.kt index d359397..940faf8 100644 --- a/src/test/kotlin/no/nav/helse/VedtaksperiodeVentetilstandTest.kt +++ b/src/test/kotlin/no/nav/helse/VedtaksperiodeVentetilstandTest.kt @@ -215,23 +215,27 @@ internal class VedtaksperiodeVentetilstandTest { ventetSiden: LocalDateTime = LocalDateTime.parse("2023-03-04T21:34:17.96322") ) = """ { - "@event_name": "vedtaksperiode_venter", - "organisasjonsnummer": "123456789", - "vedtaksperiodeId": "$vedtaksperiodeId", - "skjæringstidspunkt": "2019-01-01", - "ventetSiden": "$ventetSiden", - "venterTil": "+999999999-12-31T23:59:59.999999999", - "venterPå": { - "vedtaksperiodeId": "$venterPåVedtaksperiodeId", - "skjæringstidspunkt": "2018-01-01", - "organisasjonsnummer": "987654321", - "venteårsak": { - "hva": "$venterPå", - "hvorfor": ${venterPåHvorfor?.let { "\"$it\"" }} - } - }, + "@event_name": "vedtaksperioder_venter", "@id": "$hendelseId", - "fødselsnummer": "$fødselsnummer" + "fødselsnummer": "$fødselsnummer", + "vedtaksperioder": [ + { + "organisasjonsnummer": "123456789", + "vedtaksperiodeId": "$vedtaksperiodeId", + "skjæringstidspunkt": "2019-01-01", + "ventetSiden": "$ventetSiden", + "venterTil": "+999999999-12-31T23:59:59.999999999", + "venterPå": { + "vedtaksperiodeId": "$venterPåVedtaksperiodeId", + "skjæringstidspunkt": "2018-01-01", + "organisasjonsnummer": "987654321", + "venteårsak": { + "hva": "$venterPå", + "hvorfor": ${venterPåHvorfor?.let { "\"$it\"" }} + } + } + } + ] } """