Skip to content

Commit

Permalink
Kopier aktiviteter ved revurdering (#4716)
Browse files Browse the repository at this point in the history
Når en behandling revurderes, skal aktiviteter lagt til på forrige behandling kopieres med til den nye.

EY-3902
  • Loading branch information
EspenSchei authored May 8, 2024
1 parent 8465c92 commit 4fdef4c
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 4 deletions.
2 changes: 1 addition & 1 deletion apps/etterlatte-behandling/src/main/kotlin/Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ private fun Route.settOppRoutes(applicationContext: ApplicationContext) {
kommerBarnetTilGodeService = applicationContext.kommerBarnetTilGodeService,
behandlingFactory = applicationContext.behandlingFactory,
)
aktivitetspliktRoutes(aktivitetspliktService = applicationContext.aktivtetspliktService)
aktivitetspliktRoutes(aktivitetspliktService = applicationContext.aktivitetspliktService)
sjekklisteRoute(sjekklisteService = applicationContext.sjekklisteService)
statistikkRoutes(behandlingService = applicationContext.behandlingService)
generellbehandlingRoutes(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,25 @@ class AktivitetspliktDao(private val connectionAutoclosing: ConnectionAutoclosin
}
}

fun kopierAktiviteter(
forrigeBehandlingId: UUID,
nyBehandlingId: UUID,
) = connectionAutoclosing.hentConnection {
with(it) {
val stmt =
prepareStatement(
"""
INSERT INTO aktivitetsplikt_aktivitet (id, sak_id, behandling_id, aktivitet_type, fom, tom, opprettet, endret, beskrivelse)
(SELECT gen_random_uuid(), sak_id, ?, aktivitet_type, fom, tom, opprettet, endret, beskrivelse FROM aktivitetsplikt_aktivitet WHERE behandling_id = ?)
""".trimMargin(),
)
stmt.setObject(1, nyBehandlingId)
stmt.setObject(2, forrigeBehandlingId)

stmt.executeUpdate()
}
}

private fun ResultSet.toAktivitet() =
AktivitetspliktAktivitet(
id = getUUID("id"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,15 @@ class AktivitetspliktService(
aktivitetspliktDao.slettAktivitet(aktivitetId, behandlingId)
}
}

fun kopierAktiviteter(
fraBehandlingId: UUID,
tilBehandlingId: UUID,
) {
requireNotNull(behandlingService.hentBehandling(tilBehandlingId)) { "Fant ikke behandling $tilBehandlingId" }

aktivitetspliktDao.kopierAktiviteter(fraBehandlingId, tilBehandlingId)
}
}

class SakidTilhoererIkkeBehandlingException :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import no.nav.etterlatte.behandling.BehandlingDao
import no.nav.etterlatte.behandling.BehandlingHendelserKafkaProducer
import no.nav.etterlatte.behandling.BehandlingService
import no.nav.etterlatte.behandling.GrunnlagService
import no.nav.etterlatte.behandling.aktivitetsplikt.AktivitetspliktService
import no.nav.etterlatte.behandling.domain.Behandling
import no.nav.etterlatte.behandling.domain.Foerstegangsbehandling
import no.nav.etterlatte.behandling.domain.OpprettBehandling
Expand Down Expand Up @@ -89,6 +90,7 @@ class RevurderingService(
private val revurderingDao: RevurderingDao,
private val klageService: KlageService,
private val behandlingService: BehandlingService,
private val aktivitetspliktService: AktivitetspliktService,
) {
private val logger = LoggerFactory.getLogger(RevurderingService::class.java)

Expand Down Expand Up @@ -312,10 +314,11 @@ class RevurderingService(
lagreRevurderingsaarsakFritekst(fritekstAarsak, opprettBehandling.id, saksbehandlerIdent)
}

forrigeBehandling?.let {
kommerBarnetTilGodeService.hentKommerBarnetTilGode(it)
forrigeBehandling?.let { behandlingId ->
kommerBarnetTilGodeService.hentKommerBarnetTilGode(behandlingId)
?.copy(behandlingId = opprettBehandling.id)
?.let { kopiert -> kommerBarnetTilGodeService.lagreKommerBarnetTilgode(kopiert) }
aktivitetspliktService.kopierAktiviteter(behandlingId, opprettBehandling.id)
}
hendelseDao.behandlingOpprettet(opprettBehandling.toBehandlingOpprettet())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ internal class ApplicationContext(
)
val kommerBarnetTilGodeService =
KommerBarnetTilGodeService(kommerBarnetTilGodeDao, behandlingDao)
val aktivtetspliktService = AktivitetspliktService(aktivitetspliktDao, behandlingService)
val aktivitetspliktService = AktivitetspliktService(aktivitetspliktDao, behandlingService)
val sjekklisteService = SjekklisteService(sjekklisteDao, behandlingService, oppgaveService)

val klageBrevService = KlageBrevService(brevApiKlient)
Expand Down Expand Up @@ -364,6 +364,7 @@ internal class ApplicationContext(
revurderingDao = revurderingDao,
klageService = klageService,
behandlingService = behandlingService,
aktivitetspliktService = aktivitetspliktService,
)
val automatiskRevurderingService = AutomatiskRevurderingService(revurderingService)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import io.mockk.slot
import io.mockk.verify
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.SaksbehandlerMedEnheterOgRoller
import no.nav.etterlatte.behandling.aktivitetsplikt.AktivitetspliktService
import no.nav.etterlatte.behandling.domain.Foerstegangsbehandling
import no.nav.etterlatte.behandling.domain.OpprettBehandling
import no.nav.etterlatte.behandling.domain.Revurdering
Expand Down Expand Up @@ -69,6 +70,7 @@ class BehandlingFactoryTest {
private val behandlingService = mockk<BehandlingService>()
private val sakServiceMock = mockk<SakService>()
private val klageService = mockk<KlageService>()
private val aktivitetspliktService = mockk<AktivitetspliktService>()
private val gyldighetsproevingService = mockk<GyldighetsproevingService>(relaxUnitFun = true)
private val pdlTjenesterKlientMock = mockk<PdlTjenesterKlient>()
private val mockOppgave =
Expand Down Expand Up @@ -97,6 +99,7 @@ class BehandlingFactoryTest {
revurderingDao,
klageService,
behandlingService,
aktivitetspliktService,
),
)
private val behandlingFactory =
Expand Down Expand Up @@ -528,6 +531,7 @@ class BehandlingFactoryTest {
every {
behandlingDaoMock.alleBehandlingerISak(any())
} returns listOf(iverksattBehandling)
every { aktivitetspliktService.kopierAktiviteter(any(), any()) } returns Unit

every { behandlingDaoMock.hentBehandling(any()) } returns
revurdering(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,37 @@ class AktivitetspliktDaoTest(ds: DataSource) {
}
}

@Nested
inner class KopierAktiviteter {
@Test
fun `skal kopiere aktiviteter fra tidligere behandling`() {
val forrigeBehandling = UUID.randomUUID()
val nyBehandling = UUID.randomUUID()
val nyAktivitet = opprettAktivitet(sakDao.opprettSak("Person1", SakType.OMSTILLINGSSTOENAD, "0000"))
dao.opprettAktivitet(forrigeBehandling, nyAktivitet, kilde)
dao.opprettAktivitet(forrigeBehandling, nyAktivitet, kilde)
dao.opprettAktivitet(forrigeBehandling, nyAktivitet, kilde)
dao.hentAktiviteter(forrigeBehandling) shouldHaveSize 3
dao.hentAktiviteter(nyBehandling) shouldHaveSize 0

dao.kopierAktiviteter(forrigeBehandling, nyBehandling) shouldBe 3

dao.hentAktiviteter(nyBehandling).asClue {
it shouldHaveSize 3
it.forEach { aktivitet ->
aktivitet.sakId shouldBe nyAktivitet.sakId
aktivitet.behandlingId shouldBe nyBehandling
aktivitet.type shouldBe nyAktivitet.type
aktivitet.fom shouldBe nyAktivitet.fom
aktivitet.tom shouldBe nyAktivitet.tom
aktivitet.opprettet shouldBe kilde
aktivitet.endret shouldBe kilde
aktivitet.beskrivelse shouldBe nyAktivitet.beskrivelse
}
}
}
}

companion object {
fun opprettAktivitet(sak: Sak) =
LagreAktivitetspliktAktivitet(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.etterlatte.SaksbehandlerMedEnheterOgRoller
import no.nav.etterlatte.behandling.BehandlingFactory
import no.nav.etterlatte.behandling.BehandlingsHendelserKafkaProducerImpl
import no.nav.etterlatte.behandling.GrunnlagService
import no.nav.etterlatte.behandling.aktivitetsplikt.AktivitetspliktService
import no.nav.etterlatte.behandling.domain.Behandling
import no.nav.etterlatte.behandling.domain.Foerstegangsbehandling
import no.nav.etterlatte.behandling.domain.GrunnlagsendringStatus
Expand Down Expand Up @@ -124,6 +125,7 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() {
val hendelser = spyk(applicationContext.behandlingsHendelser)
val grunnlagService = spyk(applicationContext.grunnlagsService)
val oppgaveService = spyk(applicationContext.oppgaveService)
val aktivitetspliktService = spyk(applicationContext.aktivitetspliktService)

val (sak, behandling) = opprettSakMedFoerstegangsbehandling(fnr)

Expand All @@ -139,6 +141,7 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() {
oppgaveService,
grunnlagService,
hendelser,
aktivitetspliktService,
).opprettManuellRevurderingWrapper(
sakId = sak.id,
aarsak = Revurderingaarsak.REGULERING,
Expand All @@ -163,6 +166,7 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() {
oppgaveService.hentOppgaverForSak(sak.id)
}
}
verify { aktivitetspliktService.kopierAktiviteter(behandling!!.id, revurdering.id) }
inTransaction {
assertEquals(revurdering, applicationContext.behandlingDao.hentBehandling(revurdering.id))
verify { hendelser.sendMeldingForHendelseMedDetaljertBehandling(any(), BehandlingHendelseType.OPPRETTET) }
Expand Down Expand Up @@ -977,6 +981,7 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() {
oppgaveService: OppgaveService = applicationContext.oppgaveService,
grunnlagService: GrunnlagService = applicationContext.grunnlagsService,
behandlingsHendelser: BehandlingsHendelserKafkaProducerImpl = applicationContext.behandlingsHendelser,
aktivitetspliktService: AktivitetspliktService = applicationContext.aktivitetspliktService,
) = RevurderingService(
oppgaveService,
grunnlagService,
Expand All @@ -988,6 +993,7 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() {
applicationContext.revurderingDao,
applicationContext.klageService,
applicationContext.behandlingService,
aktivitetspliktService,
)

private fun behandlingFactory() =
Expand Down

0 comments on commit 4fdef4c

Please sign in to comment.