diff --git a/pom.xml b/pom.xml index 53d51d6b..e695a0de 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ 3.20240913110742_adb42f8 2.20240902084316_04f17df no.nav.familie.klage.ApplicationKt - 3.0_20240913135049_042822f + 3.0_20240917094852_351320d 2.0_20230214104704_706e9c0 5.0.5 4.9.1 diff --git a/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt b/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt index 49dc3534..f201a34b 100644 --- a/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt +++ b/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt @@ -70,6 +70,7 @@ data class BehandlingEvent( BehandlingEventType.ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET -> detaljer.ankeITrygderettenbehandlingOpprettet?.sendtTilTrygderetten ?: throw Feil(feilmelding) BehandlingEventType.BEHANDLING_FEILREGISTRERT -> detaljer.behandlingFeilregistrert?.feilregistrert ?: throw Feil("Fant ikke tidspunkt for feilregistrering") + BehandlingEventType.BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET -> detaljer.behandlingEtterTrygderettenOpphevetAvsluttet?.avsluttet ?: throw Feil(feilmelding) } } @@ -97,12 +98,14 @@ data class BehandlingDetaljer( val ankebehandlingAvsluttet: AnkebehandlingAvsluttetDetaljer? = null, val behandlingFeilregistrert: BehandlingFeilregistrertDetaljer? = null, val ankeITrygderettenbehandlingOpprettet: AnkeITrygderettenbehandlingOpprettetDetaljer? = null, + val behandlingEtterTrygderettenOpphevetAvsluttet: BehandlingEtterTrygderettenOpphevetAvsluttetDetaljer? = null, ) { fun oppgaveTekst(saksbehandlersEnhet: String): String { return klagebehandlingAvsluttet?.oppgaveTekst(saksbehandlersEnhet) ?: ankebehandlingOpprettet?.oppgaveTekst(saksbehandlersEnhet) ?: ankebehandlingAvsluttet?.oppgaveTekst(saksbehandlersEnhet) + ?: behandlingEtterTrygderettenOpphevetAvsluttet?.oppgaveTekst(saksbehandlersEnhet) ?: "Ukjent" } } @@ -148,3 +151,16 @@ data class AnkebehandlingAvsluttetDetaljer( data class BehandlingFeilregistrertDetaljer(val reason: String, val type: Type, val feilregistrert: LocalDateTime) data class AnkeITrygderettenbehandlingOpprettetDetaljer(val sendtTilTrygderetten: LocalDateTime, val utfall: KlageinstansUtfall?) + +data class BehandlingEtterTrygderettenOpphevetAvsluttetDetaljer( + val avsluttet: LocalDateTime, + val utfall: KlageinstansUtfall, + val journalpostReferanser: List, +) { + fun oppgaveTekst(saksbehandlersEnhet: String): String { + return "Hendelse fra klage av type behandling etter trygderetten opphevet avsluttet med utfall: $utfall mottatt. " + + "Avsluttet tidspunkt: $avsluttet. " + + "Opprinnelig klagebehandling er behandlet av enhet: $saksbehandlersEnhet. " + + "Journalpost referanser: ${journalpostReferanser.joinToString(", ")}" + } +} diff --git a/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt b/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt index ca0fd7c8..47742440 100644 --- a/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt +++ b/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt @@ -51,24 +51,20 @@ class BehandlingEventService( when (behandlingEvent.type) { BehandlingEventType.KLAGEBEHANDLING_AVSLUTTET -> behandleKlageAvsluttet(behandling, behandlingEvent) - BehandlingEventType.ANKEBEHANDLING_AVSLUTTET, - -> behandleAnkeAvsluttet(behandling, behandlingEvent) + BehandlingEventType.ANKEBEHANDLING_AVSLUTTET, BehandlingEventType.BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET, + -> opprettOppgaveTask(behandling, behandlingEvent) BehandlingEventType.ANKEBEHANDLING_OPPRETTET, BehandlingEventType.ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET, -> { - /* - * Skal ikke gjøre noe dersom eventtype er ANKEBEHANDLING_OPPRETTET - * eller ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET - * */ + // Skal ikke gjøre noe dersom eventtype er ANKEBEHANDLING_OPPRETTET eller ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET } - - BehandlingEventType.BEHANDLING_FEILREGISTRERT -> opprettBehandlingFeilregistretTask(behandling.id) + BehandlingEventType.BEHANDLING_FEILREGISTRERT -> opprettBehandlingFeilregistrertTask(behandling.id) } } } - private fun opprettBehandlingFeilregistretTask(behandlingId: UUID) { + private fun opprettBehandlingFeilregistrertTask(behandlingId: UUID) { taskService.save(BehandlingFeilregistrertTask.opprettTask(behandlingId)) } @@ -95,10 +91,6 @@ class BehandlingEventService( null } - private fun behandleAnkeAvsluttet(behandling: Behandling, behandlingEvent: BehandlingEvent) { - opprettOppgaveTask(behandling, behandlingEvent) - } - private fun behandleKlageAvsluttet(behandling: Behandling, behandlingEvent: BehandlingEvent) { when (behandling.status) { BehandlingStatus.FERDIGSTILT -> logger.error("Mottatt event på ferdigstilt behandling $behandlingEvent - event kan være lest fra før") @@ -109,7 +101,7 @@ class BehandlingEventService( } } - private fun opprettOppgaveTask(behandling: Behandling, behandlingEvent: BehandlingEvent) { + fun opprettOppgaveTask(behandling: Behandling, behandlingEvent: BehandlingEvent) { val fagsakDomain = fagsakRepository.finnFagsakForBehandlingId(behandling.id) ?: error("Finner ikke fagsak for behandlingId: ${behandling.id}") val saksbehandlerIdent = behandling.sporbar.endret.endretAv diff --git a/src/main/kotlin/no/nav/familie/klage/personopplysninger/fullmakt/FullmaktClient.kt b/src/main/kotlin/no/nav/familie/klage/personopplysninger/fullmakt/FullmaktClient.kt index a4e94cb4..4fbd736e 100644 --- a/src/main/kotlin/no/nav/familie/klage/personopplysninger/fullmakt/FullmaktClient.kt +++ b/src/main/kotlin/no/nav/familie/klage/personopplysninger/fullmakt/FullmaktClient.kt @@ -2,7 +2,6 @@ package no.nav.familie.klage.personopplysninger.fullmakt import no.nav.familie.http.client.AbstractRestClient import org.apache.hc.client5.http.utils.Base64 -import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Qualifier import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Component diff --git a/src/main/kotlin/no/nav/familie/klage/test/TestController.kt b/src/main/kotlin/no/nav/familie/klage/test/TestController.kt index 236e53e3..c9f3f82c 100644 --- a/src/main/kotlin/no/nav/familie/klage/test/TestController.kt +++ b/src/main/kotlin/no/nav/familie/klage/test/TestController.kt @@ -27,7 +27,7 @@ class TestController( private val fagsakPersonService: FagsakPersonService, private val fagsakRepository: FagsakRepository, private val opprettBehandlingService: OpprettBehandlingService, - private val behandleSakOppgaveRepository: BehandleSakOppgaveRepository + private val behandleSakOppgaveRepository: BehandleSakOppgaveRepository, ) { @PostMapping("opprett") @@ -49,7 +49,7 @@ class TestController( ), ) - val behandleSakOppgave = BehandleSakOppgave( + val behandleSakOppgave = BehandleSakOppgave( behandlingId, 123, ) @@ -57,7 +57,7 @@ class TestController( behandleSakOppgaveRepository.insert(behandleSakOppgave) return Ressurs.success( - behandlingId + behandlingId, ) } diff --git a/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt b/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt index 3800ae66..4efb55f1 100644 --- a/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt +++ b/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt @@ -99,7 +99,7 @@ class FamilieIntegrasjonerMock(integrasjonerConfig: IntegrasjonerConfig) { .withQueryParam("variantFormat", equalTo("ARKIV")) .willReturn(okJson(objectMapper.writeValueAsString(Ressurs.success(pdfAsBase64String)))), get(urlPathMatching("${integrasjonerConfig.oppgaveUri.path}/([0-9]*)")) - .willReturn(okJson(objectMapper.writeValueAsString(Ressurs.success(Oppgave(Random.nextLong().absoluteValue, tilordnetRessurs = "Z994152", tema = Tema.ENF, status = StatusEnum.UNDER_BEHANDLING),)))), + .willReturn(okJson(objectMapper.writeValueAsString(Ressurs.success(Oppgave(Random.nextLong().absoluteValue, tilordnetRessurs = "Z994152", tema = Tema.ENF, status = StatusEnum.UNDER_BEHANDLING))))), get(urlPathMatching("${integrasjonerConfig.saksbehandlerUri.path}/Z994152")) .willReturn(okJson(objectMapper.writeValueAsString(Ressurs.success(Saksbehandler(UUID.randomUUID(), "Z994152", "Luke", "Skywalker", "4405"))))), put(urlMatching("${integrasjonerConfig.dokarkivUri.path}.*")) diff --git a/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt b/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt index 61fd2f7b..4a7d509d 100644 --- a/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt +++ b/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt @@ -12,6 +12,7 @@ import no.nav.familie.klage.integrasjoner.FamilieIntegrasjonerClient import no.nav.familie.klage.kabal.AnkeITrygderettenbehandlingOpprettetDetaljer import no.nav.familie.klage.kabal.AnkebehandlingOpprettetDetaljer import no.nav.familie.klage.kabal.BehandlingDetaljer +import no.nav.familie.klage.kabal.BehandlingEtterTrygderettenOpphevetAvsluttetDetaljer import no.nav.familie.klage.kabal.BehandlingEvent import no.nav.familie.klage.kabal.BehandlingFeilregistrertDetaljer import no.nav.familie.klage.kabal.BehandlingFeilregistrertTask @@ -19,6 +20,7 @@ import no.nav.familie.klage.kabal.KlagebehandlingAvsluttetDetaljer import no.nav.familie.klage.kabal.KlageresultatRepository import no.nav.familie.klage.kabal.Type import no.nav.familie.klage.kabal.domain.KlageinstansResultat +import no.nav.familie.klage.oppgave.OpprettKabalEventOppgaveTask import no.nav.familie.klage.testutil.DomainUtil import no.nav.familie.kontrakter.felles.klage.BehandlingEventType import no.nav.familie.kontrakter.felles.klage.BehandlingStatus @@ -138,6 +140,23 @@ internal class BehandlingEventServiceTest { assertThat(klageinstansResultatSlot.captured.type).isEqualTo(BehandlingEventType.ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET) } + @Test + internal fun `Skal kunne lagre resultat for behandlingsevent BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET`() { + val klageinstansResultatSlot = slot() + + behandlingEventService.handleEvent( + lagBehandlingEvent( + BehandlingEventType.BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET, + BehandlingDetaljer(behandlingEtterTrygderettenOpphevetAvsluttet = BehandlingEtterTrygderettenOpphevetAvsluttetDetaljer(LocalDateTime.of(2023, 6, 21, 1, 1), KlageinstansUtfall.HEVET, emptyList())), + ), + ) + + verify(exactly = 1) { behandlingRepository.findByEksternBehandlingId(any()) } + verify(exactly = 1) { klageresultatRepository.insert(capture(klageinstansResultatSlot)) } + + assertThat(klageinstansResultatSlot.captured.type).isEqualTo(BehandlingEventType.BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET) + } + @Test internal fun `Skal ikke ferdigstille behandling for behandlingsevent ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET`() { val klageinstansResultatSlot = slot() @@ -167,6 +186,20 @@ internal class BehandlingEventServiceTest { assertThat(taskSlot.captured.payload).isEqualTo(behandlingMedStatusVenter.id.toString()) } + @Test + internal fun `Skal lage OpprettOppgave-task for behandlingsevent BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET`() { + val taskSlot = slot() + + val behandlingEtterTrygderettenOpphevetAvsluttetDetaljer = BehandlingEtterTrygderettenOpphevetAvsluttetDetaljer(LocalDateTime.now(), KlageinstansUtfall.HEVET, emptyList()) + + every { taskService.save(capture(taskSlot)) } returns mockk() + + behandlingEventService.handleEvent(lagBehandlingEvent(BehandlingEventType.BEHANDLING_ETTER_TRYGDERETTEN_OPPHEVET_AVSLUTTET, BehandlingDetaljer(behandlingEtterTrygderettenOpphevetAvsluttet = behandlingEtterTrygderettenOpphevetAvsluttetDetaljer))) + + assertThat(taskSlot.captured.type).isEqualTo(OpprettKabalEventOppgaveTask.TYPE) + assertThat(taskSlot.captured.payload).contains("Hendelse fra klage av type behandling etter trygderetten opphevet avsluttet med utfall: HEVET mottatt.") + } + private fun lagBehandlingEvent( behandlingEventType: BehandlingEventType = BehandlingEventType.KLAGEBEHANDLING_AVSLUTTET, behandlingDetaljer: BehandlingDetaljer? = null,