From 986eac414d2859f51c9a09343f6381f2a2d7b366 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Mon, 24 Jun 2024 18:31:34 +0200 Subject: [PATCH 1/3] Historikkvask for punsj v3 --- .../K9PunsjTilLosHistorikkvaskTjeneste.kt | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt index 25b8226f2..46ab4069a 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt @@ -125,20 +125,25 @@ class K9PunsjTilLosHistorikkvaskTjeneste( var eventTeller = 0L var forrigeOppgave: OppgaveV3? = null + val eventer = eventRepository.hentMedLås(tx, uuid).eventer var eventNrForBehandling = 0L + val høyesteInternVersjon = + oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9punsj", "K9", tx)!! var oppgaveDto: OppgaveDto? = null - val behandlingProsessEventer: List = eventRepository.hentMedLås(tx, uuid).eventer - for (event in behandlingProsessEventer) { + for (event in eventer) { + if (eventNrForBehandling > høyesteInternVersjon) { break } //Historikkvasken har funnet eventer som ennå ikke er lastet inn med normalflyt. Dirty eventer skal håndteres av vanlig adaptertjeneste + oppgaveDto = EventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave) -// oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, høyesteInternVersjon, tx) + oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx) + + eventTeller++ + loggFremgangForHver100(eventTeller, "Prosessert $eventTeller eventer") forrigeOppgave = oppgaveV3Tjeneste.hentOppgaveversjon( - område = "k9", - eksternId = oppgaveDto.id, - eksternVersjon = oppgaveDto.versjon, - tx = tx + område = "K9", eksternId = oppgaveDto.id, eksternVersjon = oppgaveDto.versjon, tx = tx ) + eventNrForBehandling++ } oppgaveDto?.let { From 7706e7f50835643368258eb87c19b1860f4dd3a6 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Tue, 25 Jun 2024 16:52:40 +0200 Subject: [PATCH 2/3] Utvidet testing av punsjeventhandler --- .../k9/punsjtillos/EventTilDtoMapper.kt | 5 +- .../K9PunsjEventHandlerTest.kt | 62 +++++++++++++------ 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt index 1824db238..fa4c1df91 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt @@ -22,8 +22,7 @@ class EventTilDtoMapper { område = "K9", kildeområde = "K9", type = "k9punsj", - status = - if (event.sendtInn == true) { + status = if (event.sendtInn == true) { Oppgavestatus.LUKKET.kode } else if (oppgaveSkalHaVentestatus(event)) { Oppgavestatus.VENTER.kode @@ -36,7 +35,7 @@ class EventTilDtoMapper { ) } - fun utledReservasjonsnøkkel(event: PunsjEventDto): String { + private fun utledReservasjonsnøkkel(event: PunsjEventDto): String { return "K9_p_${event.eksternId}" } diff --git a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt index dc85e128a..da1088c55 100644 --- a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt +++ b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt @@ -1,10 +1,9 @@ package no.nav.k9.los.aksjonspunktbehandling import assertk.assertThat -import assertk.assertions.any import assertk.assertions.hasSize import assertk.assertions.isEqualTo -import assertk.assertions.isNotNull +import assertk.assertions.isNotEqualTo import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import no.nav.helse.dusseldorf.ktor.jackson.dusseldorfConfigured import no.nav.k9.los.AbstractK9LosIntegrationTest @@ -13,10 +12,8 @@ import no.nav.k9.los.domene.repository.OppgaveRepository import no.nav.k9.los.integrasjon.kafka.dto.PunsjEventDto import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.OmrådeSetup import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.punsjtillos.K9PunsjTilLosAdapterTjeneste -import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.saktillos.K9SakTilLosAdapterTjeneste -import no.nav.k9.los.nyoppgavestyring.mottak.omraade.Område -import no.nav.k9.los.nyoppgavestyring.mottak.omraade.OmrådeRepository -import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.OppgaveV3Repository +import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.Oppgavestatus +import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.Oppgave import org.intellij.lang.annotations.Language import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -29,6 +26,11 @@ import kotlin.test.assertTrue class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { val objectMapper = jacksonObjectMapper().dusseldorfConfigured() + private lateinit var k9PunsjEventHandler: K9punsjEventHandler + private lateinit var oppgaveRepository: OppgaveRepository + private lateinit var oppgaveV3Repository: no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository + private lateinit var transactionalManager: TransactionalManager + @BeforeEach fun setup() { @@ -36,14 +38,15 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { områdeSetup.setup() val k9PunsjTilLosAdapterTjeneste = get() k9PunsjTilLosAdapterTjeneste.setup() + k9PunsjEventHandler = get() + oppgaveRepository = get() + oppgaveV3Repository = get() + transactionalManager = get() } @Test fun `Skal opprette en oppgave dersom en punsjoppgave har et aktivt aksjonspunkt`() { - val k9PunsjEventHandler = get() - val oppgaveRepository = get() - val eksternId = "9a009fb9-38ab-4bad-89e0-a3a16ecba306" val eventTid = "2020-11-10T10:43:43.130644" val aktørId = "27078522688" @@ -66,13 +69,7 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString())) assertTrue { oppgaveModell.aktiv } - val områdeRepository = get() - val oppgaveV3Repository = get() - val transactionalManager = get() - - val oppgaveV3 = transactionalManager.transaction { tx -> - oppgaveV3Repository.hentNyesteOppgaveForEksternId(tx, "K9", event.eksternId.toString()) - } + val oppgaveV3 = hentV3Oppgave(event) val felter = oppgaveV3.felter.sortedBy { it.eksternId } assertThat(felter).hasSize(4) @@ -84,7 +81,6 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { assertThat(felter[2].verdi).isEqualTo(eventTid) assertThat(felter[3].eksternId).isEqualTo("registrertDato") assertThat(felter[3].verdi).isEqualTo(eventTid) - } @Test @@ -106,10 +102,15 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { val event = objectMapper.readValue(json, PunsjEventDto::class.java) - k9PunsjEventHandler.prosesser(event) + + // V1 val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString())) assertTrue { oppgaveModell.aktiv } + + // V3 + val oppgaveV3 = hentV3Oppgave(event) + assertThat(oppgaveV3.status).isEqualTo(Oppgavestatus.AAPEN.kode) } @Test @@ -130,10 +131,16 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { }""".trimIndent() val event = objectMapper.readValue(json, PunsjEventDto::class.java) - k9PunsjEventHandler.prosesser(event) + + // V1 val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString())) assertFalse { oppgaveModell.aktiv } + + // V3 + val oppgaveV3 = hentV3Oppgave(event) + // TODO: Skal status på oppgaven endres her, eller er testen ikke relevant? +// assertThat(oppgaveV3.status).isNotEqualTo(Oppgavestatus.AAPEN.kode) } @Test @@ -155,9 +162,24 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { }""".trimIndent() val event = objectMapper.readValue(json, PunsjEventDto::class.java) - k9PunsjEventHandler.prosesser(event) + + // V1 val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString())) assertTrue { oppgaveModell.journalførtTidspunkt != null } + + // V3 + val oppgaveV3 = hentV3Oppgave(event) + assertThat(oppgaveV3.felter.find { it.eksternId == "journalfort" }!!.verdi).isEqualTo("true") + } + + private fun hentV3Oppgave(event: PunsjEventDto): Oppgave { + return transactionalManager.transaction { tx -> + oppgaveV3Repository.hentNyesteOppgaveForEksternId( + tx, + "K9", + event.eksternId.toString() + ) + } } } From aa7683a21ea2e7d013e4a22df9455e113753a285 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Mon, 12 Aug 2024 17:38:21 +0200 Subject: [PATCH 3/3] Fiks etter merge --- .../K9PunsjTilLosHistorikkvaskTjeneste.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt index 3bb1efe63..e65219fb4 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt @@ -120,23 +120,22 @@ class K9PunsjTilLosHistorikkvaskTjeneste( fun vaskOppgaveForBehandlingUUID(uuid: UUID, tx: TransactionalSession): Long { log.info("Vasker historikk for k9punsj-oppgave med eksternId: $uuid") - var eventTeller = 0L var forrigeOppgave: OppgaveV3? = null val eventer = eventRepository.hentMedLås(tx, uuid).eventer var eventNrForBehandling = 0L val høyesteInternVersjon = oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9punsj", "K9", tx)!! - var oppgaveDto: OppgaveDto? = null + var oppgaveV3 : OppgaveV3? = null for (event in eventer) { if (eventNrForBehandling > høyesteInternVersjon) { break } //Historikkvasken har funnet eventer som ennå ikke er lastet inn med normalflyt. Dirty eventer skal håndteres av vanlig adaptertjeneste - oppgaveDto = EventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave) + val oppgaveDto = EventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave) - oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx) + oppgaveV3 = oppgaveV3Tjeneste.utledEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx) + oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveV3, eventNrForBehandling, tx) - eventTeller++ - loggFremgangForHver100(eventTeller, "Prosessert $eventTeller eventer") + loggFremgangForHver100(eventNrForBehandling, "Prosessert $eventNrForBehandling eventer") forrigeOppgave = oppgaveV3Tjeneste.hentOppgaveversjon( område = "K9", eksternId = oppgaveDto.id, eksternVersjon = oppgaveDto.versjon, tx = tx @@ -144,11 +143,11 @@ class K9PunsjTilLosHistorikkvaskTjeneste( eventNrForBehandling++ } - oppgaveDto?.let { - oppgaveV3Tjeneste.ajourholdAktivOppgave(oppgaveDto, eventNrForBehandling, tx) + oppgaveV3?.let { + oppgaveV3Tjeneste.ajourholdAktivOppgave(it, eventNrForBehandling, tx) } - return eventTeller + return eventNrForBehandling } private fun loggFremgangForHver100(teller: Long, tekst: String) {