Skip to content

Commit

Permalink
♻️ totrinnsvurdering automatisk retur er historikkinnslag
Browse files Browse the repository at this point in the history
* og knyttes til generasjon
* notatRepository trengtes ikke lenger i TotrinnsvurderingService
og GodkjenningService

Co-authored-by: Christian Bülow Skovborg <[email protected]>
  • Loading branch information
elitho and chsko committed Oct 23, 2024
1 parent cac19b2 commit 5731112
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 88 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package no.nav.helse.spesialist.api

import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import no.nav.helse.spesialist.api.saksbehandler.SaksbehandlerFraApi
import java.util.UUID

Expand All @@ -11,13 +9,6 @@ interface Totrinnsvurderinghåndterer {
saksbehandlerOid: UUID,
)

fun lagrePeriodehistorikk(
oppgaveId: Long,
saksbehandleroid: UUID?,
type: PeriodehistorikkType,
notat: Pair<String, NotatType>? = null,
)

fun totrinnsvurderingRetur(
oppgaveId: Long,
saksbehandlerFraApi: SaksbehandlerFraApi,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ sealed interface HistorikkinnslagDto {
notat: NotatDto,
saksbehandler: SaksbehandlerDto,
): TotrinnsvurderingRetur = TotrinnsvurderingRetur(notat = notat, saksbehandler = saksbehandler, tidspunkt = LocalDateTime.now())

fun totrinnsvurderingAutomatiskRetur(): TotrinnsvurderingAutomatiskRetur =
TotrinnsvurderingAutomatiskRetur(tidspunkt = LocalDateTime.now())
}
}

Expand Down Expand Up @@ -99,3 +102,10 @@ data class TotrinnsvurderingRetur(
override val saksbehandler: SaksbehandlerDto,
override val tidspunkt: LocalDateTime,
) : HistorikkinnslagDto

data class TotrinnsvurderingAutomatiskRetur(
override val tidspunkt: LocalDateTime,
) : HistorikkinnslagDto {
override val notat: NotatDto? = null
override val saksbehandler: SaksbehandlerDto? = null
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ internal class SpesialistApp(
totrinnsvurderingRepository = totrinnsvurderingDao,
oppgaveRepository = oppgaveDao,
historikkinnslagRepository = pgHistorikkinnslagRepository,
notatRepository = notatDao,
)

private val snapshotService = SnapshotService(snapshotDao = snapshotApiDao, snapshotClient = snapshotClient)
Expand Down Expand Up @@ -298,7 +297,6 @@ internal class SpesialistApp(
rapidsConnection = rapidsConnection,
oppgaveService = oppgaveService,
saksbehandlerRepository = saksbehandlerDao,
notatRepository = notatDao,
)
subsumsjonsmelder = Subsumsjonsmelder(versjonAvKode, rapidsConnection)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import no.nav.helse.modell.periodehistorikk.AvventerTotrinnsvurdering
import no.nav.helse.modell.periodehistorikk.FjernetFraPåVent
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.periodehistorikk.LagtPåVent
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingAutomatiskRetur
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingFerdigbehandlet
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingRetur
import no.nav.helse.spesialist.api.graphql.schema.NotatType
Expand Down Expand Up @@ -42,6 +43,7 @@ class PgHistorikkinnslagRepository(
}
is TotrinnsvurderingFerdigbehandlet -> lagre(historikkinnslag, generasjonId, null)
is AvventerTotrinnsvurdering -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingAutomatiskRetur -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingRetur -> {
val notatId =
notatDao
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import no.nav.helse.modell.periodehistorikk.AvventerTotrinnsvurdering
import no.nav.helse.modell.periodehistorikk.FjernetFraPåVent
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.periodehistorikk.LagtPåVent
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingAutomatiskRetur
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingFerdigbehandlet
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingRetur
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
Expand Down Expand Up @@ -51,6 +52,7 @@ class TransactionalPeriodehistorikkDao(
is TotrinnsvurderingFerdigbehandlet -> "TOTRINNSVURDERING_ATTESTERT" // TODO: Mangler å migrere typen i databasen
is AvventerTotrinnsvurdering -> "TOTRINNSVURDERING_TIL_GODKJENNING" // TODO: Mangler å migrere typen i databasen
is TotrinnsvurderingRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
is TotrinnsvurderingAutomatiskRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
}

override fun lagre(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package no.nav.helse.mediator

import net.logstash.logback.argument.StructuredArguments
import no.nav.helse.db.NotatRepository
import no.nav.helse.db.PgHistorikkinnslagRepository
import no.nav.helse.db.ReservasjonDao
import no.nav.helse.db.SaksbehandlerRepository
Expand Down Expand Up @@ -34,13 +33,11 @@ internal class GodkjenningService(
private val reservasjonDao: ReservasjonDao = ReservasjonDao(dataSource),
private val pgHistorikkinnslagRepository: PgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource),
private val saksbehandlerRepository: SaksbehandlerRepository,
private val notatRepository: NotatRepository,
private val totrinnsvurderingService: TotrinnsvurderingService =
TotrinnsvurderingService(
TotrinnsvurderingDao(dataSource),
oppgaveDao,
pgHistorikkinnslagRepository,
notatRepository,
),
) : Godkjenninghåndterer {
private companion object {
Expand All @@ -62,34 +59,35 @@ internal class GodkjenningService(
val saksbehandlerJson = saksbehandler(godkjenningDTO, totrinnsvurdering, oid)
val beslutterJson = beslutter(godkjenningDTO, totrinnsvurdering)
val godkjenningMessage =
JsonMessage.newMessage(
"saksbehandler_løsning",
mutableMapOf(
"@forårsaket_av" to
mapOf(
"event_name" to "behov",
"behov" to "Godkjenning",
"id" to hendelseId,
),
"fødselsnummer" to fødselsnummer,
"oppgaveId" to godkjenningDTO.oppgavereferanse,
"hendelseId" to hendelseId,
"godkjent" to godkjenningDTO.godkjent,
"saksbehandlerident" to godkjenningDTO.saksbehandlerIdent,
"saksbehandleroid" to oid,
"saksbehandlerepost" to epost,
"godkjenttidspunkt" to LocalDateTime.now(),
"saksbehandleroverstyringer" to saksbehandleroverstyringer,
"saksbehandler" to saksbehandlerJson,
).apply {
godkjenningDTO.årsak?.let { put("årsak", it) }
godkjenningDTO.begrunnelser?.let { put("begrunnelser", it) }
godkjenningDTO.kommentar?.let { put("kommentar", it) }
compute("beslutter") { _, _ -> beslutterJson }
},
).also {
sikkerlogg.info("Publiserer saksbehandler-løsning: ${it.toJson()}")
}
JsonMessage
.newMessage(
"saksbehandler_løsning",
mutableMapOf(
"@forårsaket_av" to
mapOf(
"event_name" to "behov",
"behov" to "Godkjenning",
"id" to hendelseId,
),
"fødselsnummer" to fødselsnummer,
"oppgaveId" to godkjenningDTO.oppgavereferanse,
"hendelseId" to hendelseId,
"godkjent" to godkjenningDTO.godkjent,
"saksbehandlerident" to godkjenningDTO.saksbehandlerIdent,
"saksbehandleroid" to oid,
"saksbehandlerepost" to epost,
"godkjenttidspunkt" to LocalDateTime.now(),
"saksbehandleroverstyringer" to saksbehandleroverstyringer,
"saksbehandler" to saksbehandlerJson,
).apply {
godkjenningDTO.årsak?.let { put("årsak", it) }
godkjenningDTO.begrunnelser?.let { put("begrunnelser", it) }
godkjenningDTO.kommentar?.let { put("kommentar", it) }
compute("beslutter") { _, _ -> beslutterJson }
},
).also {
sikkerlogg.info("Publiserer saksbehandler-løsning: ${it.toJson()}")
}
logg.info(
"Publiserer saksbehandler-løsning for {}, {}",
StructuredArguments.keyValue("oppgaveId", godkjenningDTO.oppgavereferanse),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@ import kotliquery.sessionOf
import no.nav.helse.db.AvviksvurderingDao
import no.nav.helse.db.CommandContextRepository
import no.nav.helse.db.InntektskilderDao
import no.nav.helse.db.NotatDao
import no.nav.helse.db.OppgaveRepository
import no.nav.helse.db.PgHistorikkinnslagRepository
import no.nav.helse.db.TotrinnsvurderingDao
import no.nav.helse.db.TransactionalCommandContextDao
import no.nav.helse.db.TransactionalEgenAnsattDao
import no.nav.helse.db.TransactionalInntektskilderDao
import no.nav.helse.db.TransactionalMeldingDao
import no.nav.helse.db.TransactionalNotatDao
import no.nav.helse.db.TransactionalOppgaveDao
import no.nav.helse.db.TransactionalOpptegnelseDao
import no.nav.helse.db.TransactionalOverstyringDao
Expand Down Expand Up @@ -93,15 +91,13 @@ internal class Kommandofabrikk(
private val egenAnsattDao: EgenAnsattDao = EgenAnsattDao(dataSource),
oppgaveService: () -> OppgaveService,
private val totrinnsvurderingDao: TotrinnsvurderingDao = TotrinnsvurderingDao(dataSource),
private val notatDao: NotatDao = NotatDao(dataSource),
private val pgHistorikkinnslagRepository: PgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource),
private valVentDao: PåVentDao = PåVentDao(dataSource),
private val totrinnsvurderingService: TotrinnsvurderingService =
TotrinnsvurderingService(
totrinnsvurderingDao,
oppgaveDao,
pgHistorikkinnslagRepository,
notatDao,
),
private val godkjenningMediator: GodkjenningMediator,
private val automatisering: Automatisering,
Expand Down Expand Up @@ -141,7 +137,8 @@ internal class Kommandofabrikk(
transactionalSession: TransactionalSession,
): GosysOppgaveEndretCommand {
val utbetaling = TransactionalUtbetalingDao(transactionalSession).hentUtbetaling(oppgaveDataForAutomatisering.utbetalingId)
val harTildeltOppgave = TransactionalTildelingDao(transactionalSession).tildelingForOppgave(oppgaveDataForAutomatisering.oppgaveId) != null
val harTildeltOppgave =
TransactionalTildelingDao(transactionalSession).tildelingForOppgave(oppgaveDataForAutomatisering.oppgaveId) != null
val godkjenningsbehovData =
TransactionalMeldingDao(
transactionalSession,
Expand Down Expand Up @@ -228,7 +225,6 @@ internal class Kommandofabrikk(
TransactionalTotrinnsvurderingDao(session),
TransactionalOppgaveDao(session),
TransactionalPeriodehistorikkDao(session),
TransactionalNotatDao(session),
),
)

Expand Down Expand Up @@ -333,7 +329,6 @@ internal class Kommandofabrikk(
TransactionalTotrinnsvurderingDao(session),
TransactionalOppgaveDao(session),
TransactionalPeriodehistorikkDao(session),
TransactionalNotatDao(session),
),
json = hendelse.toJson(),
)
Expand All @@ -356,7 +351,6 @@ internal class Kommandofabrikk(
TransactionalTotrinnsvurderingDao(session),
TransactionalOppgaveDao(session),
TransactionalPeriodehistorikkDao(session),
TransactionalNotatDao(session),
),
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
package no.nav.helse.modell.totrinnsvurdering

import no.nav.helse.db.HistorikkinnslagRepository
import no.nav.helse.db.NotatRepository
import no.nav.helse.db.OppgaveRepository
import no.nav.helse.db.TotrinnsvurderingRepository
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.periodehistorikk.NotatDto
import no.nav.helse.modell.saksbehandler.SaksbehandlerDto
import no.nav.helse.spesialist.api.Totrinnsvurderinghåndterer
import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import no.nav.helse.spesialist.api.saksbehandler.SaksbehandlerFraApi
import java.util.UUID

class TotrinnsvurderingService(
private val totrinnsvurderingRepository: TotrinnsvurderingRepository,
private val oppgaveRepository: OppgaveRepository,
private val historikkinnslagRepository: HistorikkinnslagRepository,
private val notatRepository: NotatRepository,
) : Totrinnsvurderinghåndterer {
fun finnEllerOpprettNy(vedtaksperiodeId: UUID): TotrinnsvurderingOld = totrinnsvurderingRepository.opprett(vedtaksperiodeId)

Expand All @@ -29,28 +25,8 @@ class TotrinnsvurderingService(
fun settAutomatiskRetur(vedtaksperiodeId: UUID) {
oppgaveRepository.finnIdForAktivOppgave(vedtaksperiodeId)?.let {
totrinnsvurderingRepository.settErRetur(vedtaksperiodeId)

lagrePeriodehistorikk(
oppgaveId = it,
saksbehandleroid = null,
type = PeriodehistorikkType.TOTRINNSVURDERING_RETUR,
)
}
}

override fun lagrePeriodehistorikk(
oppgaveId: Long,
saksbehandleroid: UUID?,
type: PeriodehistorikkType,
notat: Pair<String, NotatType>?,
) {
var notatId: Int? = null
if (notat != null && saksbehandleroid != null) {
val (tekst, notattype) = notat
notatId = notatRepository.lagreForOppgaveId(oppgaveId, tekst, saksbehandleroid, notattype)?.toInt()
}
oppgaveRepository.finnUtbetalingId(oppgaveId)?.also {
historikkinnslagRepository.lagre(type, saksbehandleroid, it, notatId)
val innslag = HistorikkinnslagDto.totrinnsvurderingAutomatiskRetur()
historikkinnslagRepository.lagre(innslag, it)
}
}

Expand All @@ -59,7 +35,8 @@ class TotrinnsvurderingService(
saksbehandlerFraApi: SaksbehandlerFraApi,
notat: String,
) {
val innslag = HistorikkinnslagDto.totrinnsvurderingRetur(notat = NotatDto(oppgaveId, notat), saksbehandlerFraApi.toDto())
val innslag =
HistorikkinnslagDto.totrinnsvurderingRetur(notat = NotatDto(oppgaveId, notat), saksbehandlerFraApi.toDto())
historikkinnslagRepository.lagre(innslag, oppgaveId)
}

Expand Down
4 changes: 0 additions & 4 deletions spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import no.nav.helse.SpeilTilgangsgrupper
import no.nav.helse.TestRapidHelpers.oppgaveId
import no.nav.helse.TestRapidHelpers.siste
import no.nav.helse.db.NotatDao
import no.nav.helse.db.OpptegnelseDao
import no.nav.helse.db.PgHistorikkinnslagRepository
import no.nav.helse.db.ReservasjonDao
Expand Down Expand Up @@ -31,7 +30,6 @@ internal abstract class AbstractIntegrationTest : AbstractE2ETest() {
private val totrinnsvurderingDao = TotrinnsvurderingDao(dataSource)
private val meldingDao = MeldingDao(dataSource)
private val saksbehandlerDao = SaksbehandlerDao(dataSource)
private val notatDao = NotatDao(dataSource)

private val oppgaveService =
OppgaveService(
Expand All @@ -57,13 +55,11 @@ internal abstract class AbstractIntegrationTest : AbstractE2ETest() {
oppgaveService = oppgaveService,
reservasjonDao = reservasjonDao,
saksbehandlerRepository = saksbehandlerDao,
notatRepository = notatDao,
totrinnsvurderingService =
TotrinnsvurderingService(
totrinnsvurderingDao,
oppgaveDao,
pgHistorikkinnslagRepository,
notatDao,
),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@ package no.nav.helse.modell.totrinnsvurdering
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import no.nav.helse.db.NotatRepository
import no.nav.helse.db.HistorikkinnslagRepository
import no.nav.helse.db.TotrinnsvurderingDao
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import org.junit.jupiter.api.Test
import java.util.UUID

class TotrinnsvurderingServiceTest {
private val totrinnsvurderingDao = mockk<TotrinnsvurderingDao>(relaxed = true)
private val notatRepository = mockk<NotatRepository>(relaxed = true)

val oppgaveDao = mockk<OppgaveDao>(relaxed = true)
private val historikkinnslagRepository = mockk<HistorikkinnslagRepository>(relaxed = true)
Expand All @@ -22,7 +19,6 @@ class TotrinnsvurderingServiceTest {
totrinnsvurderingDao,
oppgaveDao,
historikkinnslagRepository,
notatRepository,
)

@Test
Expand All @@ -41,9 +37,8 @@ class TotrinnsvurderingServiceTest {
verify(exactly = 1) { oppgaveDao.finnIdForAktivOppgave(vedtaksperiodeId) }
verify(exactly = 1) {
historikkinnslagRepository.lagre(
historikkType = PeriodehistorikkType.TOTRINNSVURDERING_RETUR,
saksbehandlerOid = null,
utbetalingId = utbetalingId,
historikkinnslag = any(),
oppgaveId = oppgaveId,
)
}
}
Expand Down

0 comments on commit 5731112

Please sign in to comment.