From 5de1dc7a056a01f86834b281910aaf001d8edfab Mon Sep 17 00:00:00 2001 From: Mikael Bjerga Date: Fri, 20 Dec 2024 16:17:22 +0100 Subject: [PATCH] =?UTF-8?q?Fjern=20bestemmenede=20frav=C3=A6rsdag=20(del?= =?UTF-8?q?=201)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BerikInntektsmeldingService.kt | 2 +- .../inntektsmelding/db/river/LagreImRiver.kt | 6 +-- .../db/river/LagreJournalpostIdRiver.kt | 11 ++--- .../db/river/LagreImRiverTest.kt | 6 --- .../db/river/LagreJournalpostIdRiverTest.kt | 6 --- .../distribusjon/DistribusjonRiver.kt | 28 ++--------- .../distribusjon/DistribusjonRiverTest.kt | 17 ++----- .../joark/JournalfoerImRiver.kt | 46 ++++++------------- .../inntektsmelding/joark/TilDokumenter.kt | 4 +- .../joark/TilXmlInntektsmelding.kt | 29 ++++++------ .../joark/dokument/XMLUtils.kt | 8 +--- .../joark/JournalfoerImRiverTest.kt | 13 +----- .../joark/TilDokumenterKtTest.kt | 3 +- .../joark/TilXmlInntektsmeldingTest.kt | 7 ++- .../joark/dokument/XMLMapperTest.kt | 6 +-- 15 files changed, 55 insertions(+), 137 deletions(-) diff --git a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt index 06b97f6c6..8ee9918a1 100644 --- a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt +++ b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt @@ -204,7 +204,7 @@ class BerikInntektsmeldingService( .plus( mapOf( Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - // TODO vurder å flytte denne inn i Inntektsmelding (ikke sikker om det er en god idé, så avventer til v1 er brukt overalt) + // TODO fjern etter overgangsfase Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), Key.INNSENDING_ID to steg0.innsendingId.toJson(Long.serializer()), ), diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt index 9c5ceda95..1ade2ea6f 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt @@ -15,12 +15,10 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository -import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger -import java.time.LocalDate import java.util.UUID data class LagreImMelding( @@ -29,7 +27,6 @@ data class LagreImMelding( val transaksjonId: UUID, val data: Map, val inntektsmelding: Inntektsmelding, - val bestemmendeFravaersdag: LocalDate, val innsendingId: Long, ) @@ -51,13 +48,12 @@ class LagreImRiver( transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, inntektsmelding = Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), data), - bestemmendeFravaersdag = Key.BESTEMMENDE_FRAVAERSDAG.les(LocalDateSerializer, data), innsendingId = Key.INNSENDING_ID.les(Long.serializer(), data), ) } override fun LagreImMelding.haandter(json: Map): Map { - val inntektsmeldingGammeltFormat = inntektsmelding.convert().copy(bestemmendeFraværsdag = bestemmendeFravaersdag) + val inntektsmeldingGammeltFormat = inntektsmelding.convert() imRepo.oppdaterMedBeriketDokument(inntektsmelding.type.id, innsendingId, inntektsmeldingGammeltFormat) sikkerLogger.info("Lagret inntektsmelding.") diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt index eca0cd5bf..b36c463e3 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt @@ -15,7 +15,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository import no.nav.helsearbeidsgiver.inntektsmelding.db.SelvbestemtImRepo -import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.logger @@ -84,13 +83,11 @@ class LagreJournalpostIdRiver( Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET.toJson(), Key.KONTEKST_ID to transaksjonId.toJson(), Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to json[Key.BESTEMMENDE_FRAVAERSDAG], Key.JOURNALPOST_ID to journalpostId.toJson(), - ).mapValuesNotNull { it } - .also { - logger.info("Publiserer event '${EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET}' med journalpost-ID '$journalpostId'.") - sikkerLogger.info("Publiserer event:\n${it.toPretty()}") - } + ).also { + logger.info("Publiserer event '${EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET}' med journalpost-ID '$journalpostId'.") + sikkerLogger.info("Publiserer event:\n${it.toPretty()}") + } } override fun LagreJournalpostIdMelding.haandterFeil( diff --git a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt index 9f8585d46..6e6417ca0 100644 --- a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt +++ b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt @@ -28,7 +28,6 @@ import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.test.date.oktober import java.util.UUID class LagreImRiverTest : @@ -63,7 +62,6 @@ class LagreImRiverTest : Key.DATA to mapOf( Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), Key.ER_DUPLIKAT_IM to false.toJson(Boolean.serializer()), Key.INNSENDING_ID to innsendingId.toJson(Long.serializer()), ).toJson(), @@ -122,8 +120,6 @@ class LagreImRiverTest : } }) -private val bestemmendeFravaersdag = 20.oktober - private fun innkommendeMelding( innsendingId: Long, inntektsmelding: Inntektsmelding = mockInntektsmeldingV1(), @@ -135,11 +131,9 @@ private fun innkommendeMelding( data = mapOf( Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), Key.INNSENDING_ID to innsendingId.toJson(Long.serializer()), ), inntektsmelding = inntektsmelding, - bestemmendeFravaersdag = bestemmendeFravaersdag, innsendingId = innsendingId, ) diff --git a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiverTest.kt b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiverTest.kt index 3ee0d1fd6..5db7af618 100644 --- a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiverTest.kt +++ b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiverTest.kt @@ -31,7 +31,6 @@ import no.nav.helsearbeidsgiver.inntektsmelding.db.SelvbestemtImRepo import no.nav.helsearbeidsgiver.inntektsmelding.db.river.Mock.INNSENDING_ID import no.nav.helsearbeidsgiver.inntektsmelding.db.river.Mock.toMap import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.test.date.oktober import java.util.UUID class LagreJournalpostIdRiverTest : @@ -64,7 +63,6 @@ class LagreJournalpostIdRiverTest : Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET.toJson(), Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to Mock.bestemmendeFravaersdag.toJson(), Key.JOURNALPOST_ID to innkommendeMelding.journalpostId.toJson(), ) @@ -93,7 +91,6 @@ class LagreJournalpostIdRiverTest : testRapid.sendJson( innkommendeMelding .toMap() - .minus(Key.BESTEMMENDE_FRAVAERSDAG) .minus(Key.INNSENDING_ID), ) @@ -225,8 +222,6 @@ class LagreJournalpostIdRiverTest : private object Mock { const val INNSENDING_ID = 1L - val bestemmendeFravaersdag = 20.oktober - fun innkommendeMelding(inntektsmelding: Inntektsmelding = mockInntektsmeldingV1()): LagreJournalpostIdMelding = LagreJournalpostIdMelding( eventName = EventName.INNTEKTSMELDING_JOURNALFOERT, @@ -242,7 +237,6 @@ private object Mock { Key.KONTEKST_ID to transaksjonId.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), Key.INNSENDING_ID to INNSENDING_ID.toJson(Long.serializer()), ) diff --git a/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt b/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt index 1c0516e61..1163a7b17 100644 --- a/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt +++ b/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt @@ -1,21 +1,18 @@ package no.nav.helsearbeidsgiver.inntektsmelding.distribusjon -import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.JournalfoertInntektsmelding import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les -import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toPretty import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log -import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull -import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.json.toJsonStr @@ -23,7 +20,6 @@ import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger import org.apache.kafka.clients.producer.KafkaProducer import org.apache.kafka.clients.producer.ProducerRecord -import java.time.LocalDate import java.util.UUID const val TOPIC_HELSEARBEIDSGIVER_INNTEKTSMELDING_EKSTERN = "helsearbeidsgiver.inntektsmelding" @@ -32,7 +28,6 @@ data class Melding( val eventName: EventName, val transaksjonId: UUID, val inntektsmelding: Inntektsmelding, - val bestemmendeFravaersdag: LocalDate?, val journalpostId: String, ) @@ -50,7 +45,6 @@ class DistribusjonRiver( eventName = Key.EVENT_NAME.krev(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET, EventName.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), inntektsmelding = Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), json), - bestemmendeFravaersdag = Key.BESTEMMENDE_FRAVAERSDAG.lesOrNull(LocalDateSerializer, json), journalpostId = Key.JOURNALPOST_ID.les(String.serializer(), json), ) } @@ -61,7 +55,7 @@ class DistribusjonRiver( sikkerLogger.info("$it Innkommende melding:\n${json.toPretty()}") } - distribuerInntektsmelding(inntektsmelding, bestemmendeFravaersdag, journalpostId) + distribuerInntektsmelding(journalpostId, inntektsmelding) "Distribuerte IM med journalpost-ID '$journalpostId'.".also { logger.info(it) @@ -73,8 +67,7 @@ class DistribusjonRiver( Key.KONTEKST_ID to transaksjonId.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag?.toJson(), - ).mapValuesNotNull { it } + ) } override fun Melding.haandterFeil( @@ -106,15 +99,13 @@ class DistribusjonRiver( ) private fun distribuerInntektsmelding( - inntektsmelding: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, journalpostId: String, + inntektsmelding: Inntektsmelding, ) { val journalfoertInntektsmelding = JournalfoertInntektsmelding( journalpostId = journalpostId, - inntektsmeldingV1 = inntektsmelding, - bestemmendeFravaersdag = bestemmendeFravaersdag, + inntektsmelding = inntektsmelding, ) val record = @@ -126,12 +117,3 @@ class DistribusjonRiver( kafkaProducer.send(record) } } - -// Midlertidig klasse som inneholder bestemmende fraværsdag -@Serializable -data class JournalfoertInntektsmelding( - val journalpostId: String, - val inntektsmeldingV1: Inntektsmelding, - @Serializable(LocalDateSerializer::class) - val bestemmendeFravaersdag: LocalDate?, -) diff --git a/apps/distribusjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiverTest.kt b/apps/distribusjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiverTest.kt index 4ec53e79c..35bad055b 100644 --- a/apps/distribusjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiverTest.kt +++ b/apps/distribusjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiverTest.kt @@ -12,6 +12,7 @@ import io.mockk.verify import io.mockk.verifySequence import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.JournalfoertInntektsmelding import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -24,10 +25,8 @@ import no.nav.helsearbeidsgiver.felles.test.mock.randomDigitString import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.inntektsmelding.distribusjon.Mock.toMap -import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.json.toJsonStr -import no.nav.helsearbeidsgiver.utils.test.date.oktober import org.apache.kafka.clients.producer.KafkaProducer import org.apache.kafka.clients.producer.ProducerRecord import java.util.UUID @@ -61,16 +60,14 @@ class DistribusjonRiverTest : Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), Key.JOURNALPOST_ID to innkommendeMelding.journalpostId.toJson(), Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to innkommendeMelding.bestemmendeFravaersdag?.toJson(), - ).mapValuesNotNull { it } + ) val forventetRecord = ProducerRecord( TOPIC_HELSEARBEIDSGIVER_INNTEKTSMELDING_EKSTERN, JournalfoertInntektsmelding( journalpostId = innkommendeMelding.journalpostId, - inntektsmeldingV1 = innkommendeMelding.inntektsmelding, - bestemmendeFravaersdag = innkommendeMelding.bestemmendeFravaersdag, + inntektsmelding = innkommendeMelding.inntektsmelding, ).toJsonStr(JournalfoertInntektsmelding.serializer()), ) @@ -95,7 +92,6 @@ class DistribusjonRiverTest : testRapid.sendJson( innkommendeMelding .toMap() - .minus(Key.BESTEMMENDE_FRAVAERSDAG) .plus(Key.INNTEKTSMELDING to selvbestemtInntektsmelding.toJson(Inntektsmelding.serializer())), ) @@ -114,8 +110,7 @@ class DistribusjonRiverTest : TOPIC_HELSEARBEIDSGIVER_INNTEKTSMELDING_EKSTERN, JournalfoertInntektsmelding( journalpostId = innkommendeMelding.journalpostId, - inntektsmeldingV1 = selvbestemtInntektsmelding, - bestemmendeFravaersdag = null, + inntektsmelding = selvbestemtInntektsmelding, ).toJsonStr(JournalfoertInntektsmelding.serializer()), ) @@ -182,7 +177,6 @@ private object Mock { eventName = EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET, transaksjonId = UUID.randomUUID(), inntektsmelding = mockInntektsmeldingV1(), - bestemmendeFravaersdag = 20.oktober, journalpostId = randomDigitString(13), ) @@ -191,7 +185,6 @@ private object Mock { Key.EVENT_NAME to eventName.toJson(), Key.KONTEKST_ID to transaksjonId.toJson(), Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag?.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), - ).mapValuesNotNull { it } + ) } diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt index 46370b464..d83c6a40d 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt @@ -5,11 +5,9 @@ import no.nav.helsearbeidsgiver.dokarkiv.DokArkivClient import no.nav.helsearbeidsgiver.dokarkiv.domene.Avsender import no.nav.helsearbeidsgiver.dokarkiv.domene.GjelderPerson import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding -import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.bestemmendeFravaersdag import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les -import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.json.toPretty @@ -18,7 +16,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull -import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.logger @@ -30,7 +27,6 @@ data class JournalfoerImMelding( val eventName: EventName, val transaksjonId: UUID, val inntektsmelding: Inntektsmelding, - val bestemmendeFravaersdag: LocalDate?, ) class JournalfoerImRiver( @@ -47,31 +43,21 @@ class JournalfoerImRiver( val eventName = Key.EVENT_NAME.les(EventName.serializer(), json) val transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json) - when (eventName) { - EventName.INNTEKTSMELDING_MOTTATT -> - JournalfoerImMelding( - eventName = eventName, - transaksjonId = transaksjonId, - inntektsmelding = Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), data), - bestemmendeFravaersdag = Key.BESTEMMENDE_FRAVAERSDAG.lesOrNull(LocalDateSerializer, data), - ) - - EventName.SELVBESTEMT_IM_LAGRET -> { - val im = Key.SELVBESTEMT_INNTEKTSMELDING.les(Inntektsmelding.serializer(), data) - JournalfoerImMelding( - eventName = eventName, - transaksjonId = transaksjonId, - inntektsmelding = im, - bestemmendeFravaersdag = - bestemmendeFravaersdag( - arbeidsgiverperioder = im.agp?.perioder.orEmpty(), - sykefravaersperioder = im.sykmeldingsperioder, - ), - ) + val inntektsmelding = + when (eventName) { + EventName.INNTEKTSMELDING_MOTTATT -> Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), data) + EventName.SELVBESTEMT_IM_LAGRET -> Key.SELVBESTEMT_INNTEKTSMELDING.les(Inntektsmelding.serializer(), data) + else -> null } - else -> - null + if (inntektsmelding == null) { + null + } else { + JournalfoerImMelding( + eventName = eventName, + transaksjonId = transaksjonId, + inntektsmelding = inntektsmelding, + ) } } @@ -81,14 +67,13 @@ class JournalfoerImRiver( sikkerLogger.info("$it Innkommende melding:\n${json.toPretty()}") } - val journalpostId = opprettOgFerdigstillJournalpost(transaksjonId, inntektsmelding, bestemmendeFravaersdag) + val journalpostId = opprettOgFerdigstillJournalpost(transaksjonId, inntektsmelding) return mapOf( Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(), Key.KONTEKST_ID to transaksjonId.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag?.toJson(), Key.INNSENDING_ID to json[Key.DATA]?.toMap()?.get(Key.INNSENDING_ID), ).mapValuesNotNull { it } .also { @@ -128,7 +113,6 @@ class JournalfoerImRiver( private fun opprettOgFerdigstillJournalpost( transaksjonId: UUID, inntektsmelding: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, ): String { "Prøver å opprette og ferdigstille journalpost.".also { logger.info(it) @@ -146,7 +130,7 @@ class JournalfoerImRiver( navn = inntektsmelding.avsender.orgNavn, ), datoMottatt = LocalDate.now(), - dokumenter = tilDokumenter(transaksjonId, inntektsmelding, bestemmendeFravaersdag), + dokumenter = tilDokumenter(transaksjonId, inntektsmelding), eksternReferanseId = "ARI-$transaksjonId", callId = "callId_$transaksjonId", ) diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt index 20caa3881..0a5322b36 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt @@ -5,7 +5,6 @@ import no.nav.helsearbeidsgiver.dokarkiv.domene.DokumentVariant import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding import no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument.PdfDokument import no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument.transformToXML -import java.time.LocalDate import java.util.Base64 import java.util.UUID @@ -14,7 +13,6 @@ private val base64 = Base64.getEncoder() fun tilDokumenter( uuid: UUID, inntektsmelding: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, ): List = listOf( Dokument( @@ -25,7 +23,7 @@ fun tilDokumenter( listOf( DokumentVariant( filtype = "XML", - fysiskDokument = transformToXML(inntektsmelding, bestemmendeFravaersdag).toByteArray().encode(), + fysiskDokument = transformToXML(inntektsmelding).toByteArray().encode(), variantFormat = "ORIGINAL", filnavn = "ari-$uuid.xml", ), diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmelding.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmelding.kt index 6d64706aa..ebf050238 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmelding.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmelding.kt @@ -6,7 +6,6 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Bonus import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Feilregistrert import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Ferie import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Ferietrekk -import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntekt import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.InntektEndringAarsak import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Naturalytelse @@ -21,6 +20,7 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.RefusjonEndring import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Sykefravaer import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Tariffendring import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.VarigLoennsendring +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.bestemmendeFravaersdag import no.seres.xsd.nav.inntektsmelding_m._20181211.Arbeidsforhold import no.seres.xsd.nav.inntektsmelding_m._20181211.Arbeidsgiver import no.seres.xsd.nav.inntektsmelding_m._20181211.Avsendersystem @@ -30,26 +30,19 @@ import no.seres.xsd.nav.inntektsmelding_m._20181211.Kontaktinformasjon import no.seres.xsd.nav.inntektsmelding_m._20181211.NaturalytelseDetaljer import no.seres.xsd.nav.inntektsmelding_m._20181211.Skjemainnhold import no.seres.xsd.nav.inntektsmelding_m._20181211.SykepengerIArbeidsgiverperioden -import java.time.LocalDate import no.seres.xsd.nav.inntektsmelding_m._20181211.Inntekt as InntektXml import no.seres.xsd.nav.inntektsmelding_m._20181211.Periode as PeriodeXml import no.seres.xsd.nav.inntektsmelding_m._20181211.Refusjon as RefusjonXml -fun tilXmlInntektsmelding( - im: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, -): InntektsmeldingM = +fun tilXmlInntektsmelding(im: Inntektsmelding): InntektsmeldingM = InntektsmeldingM().also { - it.skjemainnhold = tilSkjemainnhold(im, bestemmendeFravaersdag) + it.skjemainnhold = tilSkjemainnhold(im) } -private fun tilSkjemainnhold( - im: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, -): Skjemainnhold = +private fun tilSkjemainnhold(im: Inntektsmelding): Skjemainnhold = Skjemainnhold().also { skjema -> skjema.aarsakTilInnsending = im.aarsakInnsending.name - skjema.arbeidsforhold = im.inntekt.map(bestemmendeFravaersdag) + skjema.arbeidsforhold = im.tilArbeidsforhold() skjema.arbeidsgiver = im.avsender.map() skjema.arbeidstakerFnr = im.sykmeldt.fnr.verdi skjema.avsendersystem = @@ -74,14 +67,18 @@ private fun Avsender.map(): Arbeidsgiver = ag.virksomhetsnummer = orgnr.verdi } -private fun Inntekt?.map(bestemmendeFravaersdag: LocalDate?): Arbeidsforhold = +private fun Inntektsmelding.tilArbeidsforhold(): Arbeidsforhold = Arbeidsforhold().also { af -> af.beregnetInntekt = InntektXml().also { - it.aarsakVedEndring = this?.endringAarsak?.tilTekst() - it.beloep = this?.beloep?.toBigDecimal() + it.aarsakVedEndring = inntekt?.endringAarsak?.tilTekst() + it.beloep = inntekt?.beloep?.toBigDecimal() } - af.foersteFravaersdag = bestemmendeFravaersdag + af.foersteFravaersdag = + bestemmendeFravaersdag( + arbeidsgiverperioder = agp?.perioder.orEmpty(), + sykefravaersperioder = sykmeldingsperioder, + ) } private fun Refusjon?.map(): RefusjonXml = diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLUtils.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLUtils.kt index 9aedae11e..fbf7d0975 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLUtils.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLUtils.kt @@ -4,16 +4,12 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding import no.nav.helsearbeidsgiver.inntektsmelding.joark.tilXmlInntektsmelding import no.seres.xsd.nav.inntektsmelding_m._20181211.ObjectFactory import java.io.StringWriter -import java.time.LocalDate import javax.xml.bind.JAXBContext val CONTEXT: JAXBContext = JAXBContext.newInstance(ObjectFactory::class.java) -fun transformToXML( - inntektsmeldingDokument: Inntektsmelding, - bestemmendeFravaersdag: LocalDate?, -): String { - val inntektM = tilXmlInntektsmelding(inntektsmeldingDokument, bestemmendeFravaersdag) +fun transformToXML(inntektsmeldingDokument: Inntektsmelding): String { + val inntektM = tilXmlInntektsmelding(inntektsmeldingDokument) val writer = StringWriter() CONTEXT.createMarshaller().marshal(ObjectFactory().createMelding(inntektM), writer) return writer.toString() diff --git a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiverTest.kt b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiverTest.kt index 33bd85b3d..6052d17d5 100644 --- a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiverTest.kt +++ b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiverTest.kt @@ -31,9 +31,7 @@ import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmeldingV1 import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.inntektsmelding.joark.Mock.toMap -import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.test.date.oktober import java.time.LocalDate import java.util.UUID import no.nav.helsearbeidsgiver.dokarkiv.domene.Avsender as KlientAvsender @@ -56,7 +54,7 @@ class JournalfoerImRiverTest : val journalpostId = UUID.randomUUID().toString() val innsendingId = 1L - val innkommendeMelding = Mock.innkommendeMelding(EventName.INNTEKTSMELDING_MOTTATT, Mock.inntektsmelding, Mock.bestemmendeFravaersdag) + val innkommendeMelding = Mock.innkommendeMelding(EventName.INNTEKTSMELDING_MOTTATT, Mock.inntektsmelding) coEvery { mockDokArkivKlient.opprettOgFerdigstillJournalpost(any(), any(), any(), any(), any(), any(), any()) @@ -78,7 +76,6 @@ class JournalfoerImRiverTest : Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), Key.INNTEKTSMELDING to Mock.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to Mock.bestemmendeFravaersdag.toJson(), Key.INNSENDING_ID to innsendingId.toJson(Long.serializer()), ) @@ -124,7 +121,6 @@ class JournalfoerImRiverTest : Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), Key.JOURNALPOST_ID to journalpostId.toJson(), Key.INNTEKTSMELDING to Mock.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to Mock.bestemmendeFravaersdag.toJson(), ) coVerifySequence { @@ -203,20 +199,17 @@ class JournalfoerImRiverTest : private object Mock { val inntektsmelding = mockInntektsmeldingV1() - val bestemmendeFravaersdag = 20.oktober val fail = mockFail("I don't think we're in Kansas anymore.", EventName.INNTEKTSMELDING_MOTTATT) fun innkommendeMelding( eventName: EventName, inntektsmelding: Inntektsmelding, - bestemmendeFravaersdag: LocalDate? = null, ): JournalfoerImMelding = JournalfoerImMelding( eventName = eventName, transaksjonId = UUID.randomUUID(), inntektsmelding = inntektsmelding, - bestemmendeFravaersdag = bestemmendeFravaersdag, ) fun JournalfoerImMelding.toMap(imKey: Key = Key.INNTEKTSMELDING): Map = @@ -226,9 +219,7 @@ private object Mock { Key.DATA to mapOf( imKey to inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag?.toJson(), - ).mapValuesNotNull { it } - .toJson(), + ).toJson(), ) fun opprettOgFerdigstillResponse(journalpostId: String): OpprettOgFerdigstillResponse = diff --git a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt index ae8da271d..4a0c57d72 100644 --- a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt +++ b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmeldingV1 -import no.nav.helsearbeidsgiver.utils.test.date.oktober import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import java.util.UUID @@ -11,7 +10,7 @@ class TilDokumenterKtTest { fun tilDokumenter() { val mockInntektsmelding = mockInntektsmeldingV1() - val dokumenter = tilDokumenter(UUID.randomUUID(), mockInntektsmelding, 20.oktober) + val dokumenter = tilDokumenter(UUID.randomUUID(), mockInntektsmelding) assertEquals(1, dokumenter.size) assertEquals(2, dokumenter[0].dokumentVarianter.size) diff --git a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmeldingTest.kt b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmeldingTest.kt index bac4d2977..f545af864 100644 --- a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmeldingTest.kt +++ b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilXmlInntektsmeldingTest.kt @@ -23,8 +23,7 @@ class TilXmlInntektsmeldingTest { @Test fun `skal mappe inntektsmelding til xml-skjema`() { val im = mockInntektsmeldingV1() - val bestemmendeFravaersdag = 20.oktober - val imXml = tilXmlInntektsmelding(im, bestemmendeFravaersdag) + val imXml = tilXmlInntektsmelding(im) val skjema = imXml.skjemainnhold Assertions.assertNotNull(skjema.aarsakTilInnsending) Assertions.assertNotNull(skjema.arbeidsgiver) @@ -32,7 +31,7 @@ class TilXmlInntektsmeldingTest { Assertions.assertEquals(im.avsender.tlf, skjema.arbeidsgiver.kontaktinformasjon.telefonnummer) Assertions.assertEquals(im.avsender.navn, skjema.arbeidsgiver.kontaktinformasjon.kontaktinformasjonNavn) Assertions.assertEquals(im.sykmeldt.fnr.verdi, skjema.arbeidstakerFnr) - Assertions.assertEquals(bestemmendeFravaersdag, skjema.arbeidsforhold.foersteFravaersdag) + Assertions.assertEquals(20.oktober, skjema.arbeidsforhold.foersteFravaersdag) Assertions.assertNotNull(skjema.arbeidsforhold.beregnetInntekt) Assertions.assertEquals(2, skjema.sykepengerIArbeidsgiverperioden.arbeidsgiverperiodeListe.size) Assertions.assertNotNull(skjema.sykepengerIArbeidsgiverperioden.bruttoUtbetalt) @@ -65,7 +64,7 @@ class TilXmlInntektsmeldingTest { endringAarsak = null, ), ) - val im = tilXmlInntektsmelding(inntektmeldingUtenAarsak, bestemmendeFravaersdag) + val im = tilXmlInntektsmelding(inntektmeldingUtenAarsak) Assertions.assertNull(im.skjemainnhold.arbeidsforhold.beregnetInntekt.aarsakVedEndring) } diff --git a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLMapperTest.kt b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLMapperTest.kt index c4eeed53a..1c6e7d56f 100644 --- a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLMapperTest.kt +++ b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/XMLMapperTest.kt @@ -3,7 +3,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmeldingV1 import no.nav.helsearbeidsgiver.inntektsmelding.joark.tilXmlInntektsmelding -import no.nav.helsearbeidsgiver.utils.test.date.oktober import org.junit.jupiter.api.Test import java.io.StringReader import javax.xml.XMLConstants @@ -22,10 +21,10 @@ class XMLMapperTest { } private fun mapToXML(mockInntektsmelding: Inntektsmelding) { - val inntektM = tilXmlInntektsmelding(mockInntektsmelding, 20.oktober) + val inntektM = tilXmlInntektsmelding(mockInntektsmelding) val sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI) val xsdSchema = sf.newSchema(inntektM.javaClass.classLoader.getResource("xsd/Inntektsmelding20181211_V7.xsd")) - val xml = transformToXML(mockInntektsmelding, 20.oktober) + val xml = transformToXML(mockInntektsmelding) val stringReader = StringReader(xml) val unmarshaller = CONTEXT.createUnmarshaller() unmarshaller.schema = xsdSchema @@ -37,7 +36,6 @@ class XMLMapperTest { private fun mockInntektsmeldingDokumentMedTommeLister(): Inntektsmelding = mockInntektsmeldingV1().let { it.copy( - sykmeldingsperioder = emptyList(), agp = it.agp?.copy( perioder = emptyList(),