From 82d90306b8f2b63abbfb2430bc858e178b8afe1a Mon Sep 17 00:00:00 2001 From: Gustav Berggren Date: Fri, 1 Dec 2023 13:43:22 +0100 Subject: [PATCH 1/4] =?UTF-8?q?forslag=20p=C3=A5=20ny=20oppdateringstype?= =?UTF-8?q?=20utsettSpeilRelatert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt | 9 +++++---- .../no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt index b21bae26f..c795f9919 100644 --- a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt +++ b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt @@ -11,7 +11,7 @@ data class UtsattOppgaveDTO( ) enum class OppdateringstypeDTO { - Utsett, Opprett, OpprettSpeilRelatert, Ferdigbehandlet + Utsett, UtsettSpeilRelatert, Opprett, OpprettSpeilRelatert, Ferdigbehandlet } enum class DokumentTypeDTO { @@ -19,8 +19,9 @@ enum class DokumentTypeDTO { } fun OppdateringstypeDTO.tilHandling() = when (this) { - OppdateringstypeDTO.Utsett -> Handling.Utsett - OppdateringstypeDTO.Opprett -> Handling.Opprett - OppdateringstypeDTO.Ferdigbehandlet -> Handling.Forkast + OppdateringstypeDTO.Utsett, + OppdateringstypeDTO.UtsettSpeilRelatert -> Handling.Utsett + OppdateringstypeDTO.Opprett, OppdateringstypeDTO.OpprettSpeilRelatert -> Handling.Opprett + OppdateringstypeDTO.Ferdigbehandlet -> Handling.Forkast } diff --git a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt index 4cd8f643f..b3cad1a79 100644 --- a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt +++ b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt @@ -37,7 +37,7 @@ class UtsattOppgaveService( return } logger.info("Fant oppgave for inntektsmelding: ${oppgave.arkivreferanse} med tilstand: ${oppgave.tilstand.name}") - val gjelderSpeil = oppdatering.oppdateringstype == OppdateringstypeDTO.OpprettSpeilRelatert + val gjelderSpeil = oppdatering.oppdateringstype in setOf(OppdateringstypeDTO.OpprettSpeilRelatert, OppdateringstypeDTO.UtsettSpeilRelatert) if (oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == no.nav.syfo.utsattoppgave.Handling.Utsett) { if (oppgave.timeout == null) { From e48a137938b5f42c48843106e7e493110d48d43a Mon Sep 17 00:00:00 2001 From: Gustav Berggren Date: Fri, 1 Dec 2023 15:15:17 +0100 Subject: [PATCH 2/4] erstatt med extention function --- .../kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt | 6 ++++++ .../no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt index c795f9919..5f3b6604a 100644 --- a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt +++ b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveDTO.kt @@ -25,3 +25,9 @@ fun OppdateringstypeDTO.tilHandling() = when (this) { OppdateringstypeDTO.OpprettSpeilRelatert -> Handling.Opprett OppdateringstypeDTO.Ferdigbehandlet -> Handling.Forkast } + +fun OppdateringstypeDTO.erSpeilRelatert() = when (this) { + OppdateringstypeDTO.UtsettSpeilRelatert, + OppdateringstypeDTO.OpprettSpeilRelatert -> true + else -> false +} diff --git a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt index b3cad1a79..844003883 100644 --- a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt +++ b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt @@ -37,7 +37,7 @@ class UtsattOppgaveService( return } logger.info("Fant oppgave for inntektsmelding: ${oppgave.arkivreferanse} med tilstand: ${oppgave.tilstand.name}") - val gjelderSpeil = oppdatering.oppdateringstype in setOf(OppdateringstypeDTO.OpprettSpeilRelatert, OppdateringstypeDTO.UtsettSpeilRelatert) + val gjelderSpeil = oppdatering.oppdateringstype.erSpeilRelatert() if (oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == no.nav.syfo.utsattoppgave.Handling.Utsett) { if (oppgave.timeout == null) { From d7c0499d7fe4af1b4cd9fd8422105ee0dd9e5f3b Mon Sep 17 00:00:00 2001 From: Gustav Berggren Date: Wed, 6 Dec 2023 12:40:35 +0100 Subject: [PATCH 3/4] Forenkle UtsattOppgaveService --- .../utsattoppgave/UtsattOppgaveService.kt | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt index 844003883..c905165eb 100644 --- a/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt +++ b/src/main/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveService.kt @@ -36,45 +36,43 @@ class UtsattOppgaveService( logger.info("Mottok oppdatering på en ukjent oppgave for id: ${oppdatering.id}") return } + logger.info("Fant oppgave for inntektsmelding: ${oppgave.arkivreferanse} med tilstand: ${oppgave.tilstand.name}") val gjelderSpeil = oppdatering.oppdateringstype.erSpeilRelatert() - if (oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == no.nav.syfo.utsattoppgave.Handling.Utsett) { - if (oppgave.timeout == null) { - metrikk.tellUtsattOppgave_UtenDato() + when { + oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == Handling.Utsett -> { + if (oppgave.timeout == null) { + metrikk.tellUtsattOppgave_UtenDato() + } + oppdatering.timeout ?: error("Timeout på utsettelse mangler for inntektsmelding: ${oppgave.arkivreferanse}") + oppgave.timeout = oppdatering.timeout + oppgave.oppdatert = LocalDateTime.now() + oppgave.speil = gjelderSpeil + lagre(oppgave) + metrikk.tellUtsattOppgave_Utsett() + logger.info("Oppdaterte timeout på inntektsmelding: ${oppgave.arkivreferanse} til ${oppdatering.timeout}") + } + oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == Handling.Forkast -> { + oppgave.oppdatert = LocalDateTime.now() + lagre(oppgave.copy(tilstand = Tilstand.Forkastet, speil = gjelderSpeil)) + metrikk.tellUtsattOppgave_Forkast() + logger.info("Endret oppgave: ${oppgave.arkivreferanse} til tilstand: ${Tilstand.Forkastet.name}") + } + (oppgave.tilstand == Tilstand.Utsatt || oppgave.tilstand == Tilstand.Forkastet) && oppdatering.handling == Handling.Opprett -> { + val inntektsmeldingEntitet = inntektsmeldingRepository.findByArkivReferanse(oppgave.arkivreferanse) + val resultat = opprettOppgaveIGosys(oppgave, oppgaveClient, utsattOppgaveDAO, behandlendeEnhetConsumer, gjelderSpeil, inntektsmeldingEntitet, om) + oppgave.oppdatert = LocalDateTime.now() + lagre(oppgave.copy(tilstand = Tilstand.Opprettet, speil = gjelderSpeil)) + metrikk.tellUtsattOppgave_Opprett() + logger.info("Endret oppgave: ${oppgave.inntektsmeldingId} til tilstand: ${Tilstand.Opprettet.name} gosys oppgaveID: ${resultat.oppgaveId} duplikat? ${resultat.duplikat}") + } + else -> { + metrikk.tellUtsattOppgave_Irrelevant() + logger.info("Oppdatering på dokumentId: ${oppdatering.id} ikke relevant") } - oppdatering.timeout ?: error("Timeout på utsettelse mangler for inntektsmelding: ${oppgave.arkivreferanse}") - oppgave.timeout = oppdatering.timeout - oppgave.oppdatert = LocalDateTime.now() - oppgave.speil = gjelderSpeil - lagre(oppgave) - metrikk.tellUtsattOppgave_Utsett() - logger.info("Oppdaterte timeout på inntektsmelding: ${oppgave.arkivreferanse} til ${oppdatering.timeout}") - return - } - - if (oppgave.tilstand == Tilstand.Utsatt && oppdatering.handling == no.nav.syfo.utsattoppgave.Handling.Forkast) { - oppgave.oppdatert = LocalDateTime.now() - lagre(oppgave.copy(tilstand = Tilstand.Forkastet, speil = gjelderSpeil)) - metrikk.tellUtsattOppgave_Forkast() - logger.info("Endret oppgave: ${oppgave.arkivreferanse} til tilstand: ${Tilstand.Forkastet.name}") - return - } - - if ((oppgave.tilstand == Tilstand.Utsatt || oppgave.tilstand == Tilstand.Forkastet) && oppdatering.handling == Handling.Opprett) { - val inntektsmeldingEntitet = inntektsmeldingRepository.findByArkivReferanse(oppgave.arkivreferanse) - val resultat = opprettOppgaveIGosys(oppgave, oppgaveClient, utsattOppgaveDAO, behandlendeEnhetConsumer, gjelderSpeil, inntektsmeldingEntitet, om) - oppgave.oppdatert = LocalDateTime.now() - lagre(oppgave.copy(tilstand = Tilstand.Opprettet, speil = gjelderSpeil)) - metrikk.tellUtsattOppgave_Opprett() - logger.info("Endret oppgave: ${oppgave.inntektsmeldingId} til tilstand: ${Tilstand.Opprettet.name} gosys oppgaveID: ${resultat.oppgaveId} duplikat? ${resultat.duplikat}") - return } - - metrikk.tellUtsattOppgave_Irrelevant() - logger.info("Oppdatering på dokumentId: ${oppdatering.id} ikke relevant") } - fun lagre(oppgave: UtsattOppgaveEntitet) { utsattOppgaveDAO.lagre(oppgave) } From 02505a371e7fa1f486bcb212b4fe441f7843a942 Mon Sep 17 00:00:00 2001 From: Gustav Berggren Date: Wed, 6 Dec 2023 12:41:00 +0100 Subject: [PATCH 4/4] Ny Test for UtsettSpeilRelatert --- .../utsattoppgave/UtsattOppgaveServiceTest.kt | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/test/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveServiceTest.kt b/src/test/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveServiceTest.kt index 2d090641b..925e36732 100644 --- a/src/test/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveServiceTest.kt +++ b/src/test/kotlin/no/nav/syfo/utsattoppgave/UtsattOppgaveServiceTest.kt @@ -1,6 +1,7 @@ package no.nav.syfo.utsattoppgave import com.fasterxml.jackson.databind.ObjectMapper +import io.mockk.every import io.mockk.mockk import io.mockk.verify import no.nav.syfo.client.OppgaveClient @@ -20,8 +21,8 @@ open class UtsattOppgaveServiceTest { private var oppgaveClient: OppgaveClient = mockk() private var behandlendeEnhetConsumer: BehandlendeEnhetConsumer = mockk() private lateinit var oppgaveService: UtsattOppgaveService - private var metrikk: Metrikk = mockk() - private var inntektsmeldingRepository: InntektsmeldingRepository = mockk() + private var metrikk: Metrikk = mockk(relaxed = true) + private var inntektsmeldingRepository: InntektsmeldingRepository = mockk(relaxed = true) private var om: ObjectMapper = mockk() @BeforeEach @@ -43,6 +44,22 @@ open class UtsattOppgaveServiceTest { verify { utsattOppgaveDAO.opprett(oppgave) } } + @Test + fun `lagrerer utsatt oppgave med gjelder speil flagg for UtsettSpeilRelatert`() { + val timeout = LocalDateTime.of(2023, 4, 6, 9, 0) + val nyTimout = timeout.plusDays(7) + val oppgave = enOppgave(timeout) + every { utsattOppgaveDAO.finn(any()) } returns oppgave + val oppgaveOppdatering = OppgaveOppdatering( + UUID.randomUUID(), + OppdateringstypeDTO.UtsettSpeilRelatert.tilHandling(), + nyTimout, + OppdateringstypeDTO.UtsettSpeilRelatert + ) + oppgaveService.prosesser(oppgaveOppdatering) + verify { utsattOppgaveDAO.lagre(eq(oppgave.copy(timeout = nyTimout, speil = true))) } + } + private fun enOppgave(timeout: LocalDateTime, tilstand: Tilstand = Tilstand.Utsatt) = UtsattOppgaveEntitet( fnr = fnr, aktørId = aktørId,