From 9ef2a3501471084b5a9ee56793d133bedec57cdb Mon Sep 17 00:00:00 2001 From: Jakob Havstein Eriksen Date: Wed, 19 Jun 2024 17:53:41 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Behold=20tildeling=20n=C3=A5r=20?= =?UTF-8?q?spleis=20reberegner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Når en saksbehandler hadde tildelt seg en sak, mistet de saken hvis spleis reberegnet perioden, for eksempel pga. ny inntektsmelding. Jeg tenker det er mer fremtidssikkert å legge reserver-kommandoen inn i AvbrytCommand, selv om det ble hakket mer omstendelig og den ikke trengs fra VedtaksperiodeForkastet. Jeg så også på å slippe å ha både OppgaveService og OppgaveDao som parametere, men de to er såpass forskjellige at vi får komme tilbake til det. Koden i reserver-kommandoen så heller ikke så flyttbar ut. Co-authored-by: Eirik Gallefoss --- .../no/nav/helse/mediator/Kommandofabrikk.kt | 9 ++++++++ .../helse/modell/kommando/AvbrytCommand.kt | 10 ++++++++ .../vedtaksperiode/VedtaksperiodeForkastet.kt | 19 ++++++++++++++- .../VedtaksperiodeReberegnet.kt | 23 +++++++++++++++++++ .../src/test/kotlin/AbstractE2ETest.kt | 2 +- .../nav/helse/e2e/UtbetalingEndretE2ETest.kt | 2 +- .../VedtaksperiodeForkastetCommandTest.kt | 13 ++++------- .../modell/kommando/AvbrytCommandTest.kt | 21 +++++++++-------- 8 files changed, 77 insertions(+), 22 deletions(-) diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt index 8c3b01547..ad90ae082 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt @@ -257,11 +257,16 @@ internal class Kommandofabrikk( private fun vedtaksperiodeReberegnet(hendelse: VedtaksperiodeReberegnet): VedtaksperiodeReberegnetCommand { return VedtaksperiodeReberegnetCommand( + fødselsnummer = hendelse.fødselsnummer(), vedtaksperiodeId = hendelse.vedtaksperiodeId(), utbetalingDao = utbetalingDao, periodehistorikkDao = periodehistorikkDao, commandContextDao = commandContextDao, oppgaveService = oppgaveService, + reservasjonDao = reservasjonDao, + tildelingDao = tildelingDao, + oppgaveDao = oppgaveDao, + totrinnsvurderingMediator = totrinnsvurderingMediator, ) } @@ -353,6 +358,10 @@ internal class Kommandofabrikk( snapshotDao = snapshotDao, snapshotClient = snapshotClient, oppgaveService = oppgaveService, + reservasjonDao = reservasjonDao, + tildelingDao = tildelingDao, + oppgaveDao = oppgaveDao, + totrinnsvurderingMediator = totrinnsvurderingMediator, ) } diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/kommando/AvbrytCommand.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/kommando/AvbrytCommand.kt index d3fd4e8af..b2b1fcce3 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/kommando/AvbrytCommand.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/kommando/AvbrytCommand.kt @@ -1,16 +1,26 @@ package no.nav.helse.modell.kommando +import no.nav.helse.db.ReservasjonDao +import no.nav.helse.mediator.oppgave.OppgaveDao import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.CommandContextDao +import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingMediator +import no.nav.helse.spesialist.api.tildeling.TildelingDao import java.util.UUID internal class AvbrytCommand( + fødselsnummer: String, vedtaksperiodeId: UUID, commandContextDao: CommandContextDao, oppgaveService: OppgaveService, + reservasjonDao: ReservasjonDao, + tildelingDao: TildelingDao, + oppgaveDao: OppgaveDao, + totrinnsvurderingMediator: TotrinnsvurderingMediator, ) : MacroCommand() { override val commands: List = listOf( + ReserverPersonHvisTildeltCommand(fødselsnummer, reservasjonDao, tildelingDao, oppgaveDao, totrinnsvurderingMediator), AvbrytOppgaveCommand(vedtaksperiodeId, oppgaveService), AvbrytContextCommand(vedtaksperiodeId, commandContextDao), ) diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeForkastet.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeForkastet.kt index bf45ccca1..c5f31f0c6 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeForkastet.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeForkastet.kt @@ -1,8 +1,10 @@ package no.nav.helse.modell.vedtaksperiode import com.fasterxml.jackson.databind.JsonNode +import no.nav.helse.db.ReservasjonDao import no.nav.helse.mediator.Kommandofabrikk import no.nav.helse.mediator.meldinger.Vedtaksperiodemelding +import no.nav.helse.mediator.oppgave.OppgaveDao import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.CommandContextDao import no.nav.helse.modell.SnapshotDao @@ -12,8 +14,10 @@ import no.nav.helse.modell.kommando.MacroCommand import no.nav.helse.modell.kommando.OppdaterSnapshotCommand import no.nav.helse.modell.person.Person import no.nav.helse.modell.person.PersonDao +import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingMediator import no.nav.helse.rapids_rivers.JsonMessage import no.nav.helse.spesialist.api.snapshot.ISnapshotClient +import no.nav.helse.spesialist.api.tildeling.TildelingDao import java.util.UUID internal class VedtaksperiodeForkastet private constructor( @@ -59,10 +63,23 @@ internal class VedtaksperiodeForkastetCommand( snapshotDao: SnapshotDao, snapshotClient: ISnapshotClient, oppgaveService: OppgaveService, + reservasjonDao: ReservasjonDao, + tildelingDao: TildelingDao, + oppgaveDao: OppgaveDao, + totrinnsvurderingMediator: TotrinnsvurderingMediator, ) : MacroCommand() { override val commands: List = listOf( - AvbrytCommand(vedtaksperiodeId, commandContextDao, oppgaveService), + AvbrytCommand( + fødselsnummer, + vedtaksperiodeId, + commandContextDao, + oppgaveService, + reservasjonDao, + tildelingDao, + oppgaveDao, + totrinnsvurderingMediator, + ), OppdaterSnapshotCommand( snapshotClient = snapshotClient, snapshotDao = snapshotDao, diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeReberegnet.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeReberegnet.kt index 30a8e5b17..b6ef01b51 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeReberegnet.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/vedtaksperiode/VedtaksperiodeReberegnet.kt @@ -1,18 +1,23 @@ package no.nav.helse.modell.vedtaksperiode import com.fasterxml.jackson.databind.JsonNode +import no.nav.helse.db.ReservasjonDao import no.nav.helse.mediator.Kommandofabrikk import no.nav.helse.mediator.meldinger.Vedtaksperiodemelding +import no.nav.helse.mediator.oppgave.OppgaveDao import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.CommandContextDao import no.nav.helse.modell.kommando.AvbrytCommand import no.nav.helse.modell.kommando.Command import no.nav.helse.modell.kommando.MacroCommand +import no.nav.helse.modell.kommando.ReserverPersonHvisTildeltCommand import no.nav.helse.modell.kommando.VedtaksperiodeReberegnetPeriodehistorikk import no.nav.helse.modell.person.Person +import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingMediator import no.nav.helse.modell.utbetaling.UtbetalingDao import no.nav.helse.rapids_rivers.JsonMessage import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDao +import no.nav.helse.spesialist.api.tildeling.TildelingDao import java.util.UUID internal class VedtaksperiodeReberegnet private constructor( @@ -27,6 +32,7 @@ internal class VedtaksperiodeReberegnet private constructor( vedtaksperiodeId = UUID.fromString(packet["vedtaksperiodeId"].asText()), json = packet.toJson(), ) + internal constructor(jsonNode: JsonNode) : this( id = UUID.fromString(jsonNode["@id"].asText()), fødselsnummer = jsonNode["fødselsnummer"].asText(), @@ -50,10 +56,15 @@ internal class VedtaksperiodeReberegnet private constructor( internal class VedtaksperiodeReberegnetCommand( vedtaksperiodeId: UUID, + fødselsnummer: String, utbetalingDao: UtbetalingDao, periodehistorikkDao: PeriodehistorikkDao, commandContextDao: CommandContextDao, oppgaveService: OppgaveService, + reservasjonDao: ReservasjonDao, + tildelingDao: TildelingDao, + oppgaveDao: OppgaveDao, + totrinnsvurderingMediator: TotrinnsvurderingMediator, ) : MacroCommand() { override val commands: List = listOf( @@ -62,10 +73,22 @@ internal class VedtaksperiodeReberegnetCommand( utbetalingDao = utbetalingDao, periodehistorikkDao = periodehistorikkDao, ), + ReserverPersonHvisTildeltCommand( + fødselsnummer = fødselsnummer, + reservasjonDao = reservasjonDao, + tildelingDao = tildelingDao, + oppgaveDao = oppgaveDao, + totrinnsvurderingMediator = totrinnsvurderingMediator, + ), AvbrytCommand( + fødselsnummer = fødselsnummer, vedtaksperiodeId = vedtaksperiodeId, commandContextDao = commandContextDao, oppgaveService = oppgaveService, + reservasjonDao = reservasjonDao, + tildelingDao = tildelingDao, + oppgaveDao = oppgaveDao, + totrinnsvurderingMediator = totrinnsvurderingMediator, ), ) } diff --git a/spesialist-selve/src/test/kotlin/AbstractE2ETest.kt b/spesialist-selve/src/test/kotlin/AbstractE2ETest.kt index 26c0502b4..82a39f380 100644 --- a/spesialist-selve/src/test/kotlin/AbstractE2ETest.kt +++ b/spesialist-selve/src/test/kotlin/AbstractE2ETest.kt @@ -1172,8 +1172,8 @@ internal abstract class AbstractE2ETest : AbstractDatabaseTest() { val sisteOverstyring = testRapid.inspektør.hendelser(overstyringHendelse).last() val hendelseId = UUID.fromString(sisteOverstyring["@id"].asText()) håndterOverstyringIgangsatt(fødselsnummer, hendelseId) - håndterUtbetalingErstattet(aktørId, fødselsnummer, organisasjonsnummer, utbetalingId = UUID.randomUUID()) håndterVedtaksperiodeReberegnet(aktørId, fødselsnummer, organisasjonsnummer) + håndterUtbetalingErstattet(aktørId, fødselsnummer, organisasjonsnummer, utbetalingId = UUID.randomUUID()) } private fun håndterOverstyringIgangsatt( diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/e2e/UtbetalingEndretE2ETest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/e2e/UtbetalingEndretE2ETest.kt index b4b022f8c..b88005490 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/e2e/UtbetalingEndretE2ETest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/e2e/UtbetalingEndretE2ETest.kt @@ -32,8 +32,8 @@ internal class UtbetalingEndretE2ETest : AbstractE2ETest() { tildelOppgave(oppgaveId, saksbehandlerOid) val utbetalingId2 = UUID.randomUUID() - håndterUtbetalingErstattet(arbeidsgiverbeløp = 20000, personbeløp = 20000, utbetalingId = utbetalingId2) håndterVedtaksperiodeReberegnet() + håndterUtbetalingErstattet(arbeidsgiverbeløp = 20000, personbeløp = 20000, utbetalingId = utbetalingId2) spesialistBehandlerGodkjenningsbehovFremTilOppgave( harRisikovurdering = true, harOppdatertMetadata = true, diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/meldinger/VedtaksperiodeForkastetCommandTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/meldinger/VedtaksperiodeForkastetCommandTest.kt index 3a941ad01..02f9eb527 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/meldinger/VedtaksperiodeForkastetCommandTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/meldinger/VedtaksperiodeForkastetCommandTest.kt @@ -1,6 +1,5 @@ package no.nav.helse.mediator.meldinger -import io.mockk.clearMocks import io.mockk.every import io.mockk.mockk import io.mockk.verify @@ -8,13 +7,11 @@ import no.nav.helse.Testdata.snapshot import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.CommandContextDao import no.nav.helse.modell.SnapshotDao -import no.nav.helse.modell.VedtakDao import no.nav.helse.modell.kommando.CommandContext import no.nav.helse.modell.person.PersonDao import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeForkastetCommand import no.nav.helse.spesialist.api.snapshot.SnapshotClient import org.junit.jupiter.api.Assertions.assertTrue -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.util.UUID @@ -27,7 +24,6 @@ internal class VedtaksperiodeForkastetCommandTest { } private val commandContextDao = mockk(relaxed = true) - private val vedtakDao = mockk(relaxed = true) private val personDao = mockk(relaxed = true) private val snapshotDao = mockk(relaxed = true) private val graphQLClient = mockk(relaxed = true) @@ -43,13 +39,12 @@ internal class VedtaksperiodeForkastetCommandTest { snapshotDao = snapshotDao, snapshotClient = graphQLClient, oppgaveService = oppgaveService, + reservasjonDao = mockk(relaxed = true), + tildelingDao = mockk(relaxed = true), + oppgaveDao = mockk(relaxed = true), + totrinnsvurderingMediator = mockk(relaxed = true), ) - @BeforeEach - fun setup() { - clearMocks(commandContextDao, vedtakDao, snapshotDao, graphQLClient) - } - @Test fun `avbryter kommandoer, oppdaterer snapshot og markerer vedtaksperiode som forkastet`() { val snapshot = snapshot(fødselsnummer = FNR) diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/modell/kommando/AvbrytCommandTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/modell/kommando/AvbrytCommandTest.kt index 425863692..85715c1ef 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/modell/kommando/AvbrytCommandTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/modell/kommando/AvbrytCommandTest.kt @@ -1,12 +1,10 @@ package no.nav.helse.modell.kommando -import io.mockk.clearMocks import io.mockk.mockk import io.mockk.verify import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.CommandContextDao import org.junit.jupiter.api.Assertions.assertTrue -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.util.UUID @@ -14,18 +12,21 @@ internal class AvbrytCommandTest { private companion object { private val VEDTAKSPERIODE = UUID.randomUUID() private val CONTEXT = UUID.randomUUID() + private fun lagAvbrytCommand(fødselsnummer: String, vedtaksperiodeId: UUID, commandContextDao: CommandContextDao) = AvbrytCommand( + fødselsnummer = fødselsnummer, + vedtaksperiodeId = vedtaksperiodeId, + commandContextDao = commandContextDao, + oppgaveService = mockk(relaxed = true), + reservasjonDao = mockk(relaxed = true), + tildelingDao = mockk(relaxed = true), + oppgaveDao = mockk(relaxed = true), + totrinnsvurderingMediator = mockk(relaxed = true) + ) } - - private val oppgaveService = mockk(relaxed = true) private val commandContextDao = mockk(relaxed = true) private val context = CommandContext(CONTEXT) - private val command = AvbrytCommand(VEDTAKSPERIODE, commandContextDao, oppgaveService) - - @BeforeEach - fun setup() { - clearMocks(commandContextDao) - } + private val command = lagAvbrytCommand("fnr", VEDTAKSPERIODE, commandContextDao) @Test fun `avbryter command context`() {