Skip to content

Commit

Permalink
♻️ vedtaksperiode reberegnet er historikkinnslag
Browse files Browse the repository at this point in the history
* og knyttes til generasjon

Co-authored-by: Christian Bülow Skovborg <[email protected]>
  • Loading branch information
elitho and chsko committed Oct 23, 2024
1 parent ea3bf5d commit a5940bd
Show file tree
Hide file tree
Showing 13 changed files with 144 additions and 126 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ sealed interface HistorikkinnslagDto {
TotrinnsvurderingAutomatiskRetur(tidspunkt = LocalDateTime.now())

fun automatiskBehandlingStanset(): AutomatiskBehandlingStanset = AutomatiskBehandlingStanset(tidspunkt = LocalDateTime.now())

fun vedtaksperiodeReberegnet(): VedtaksperiodeReberegnet = VedtaksperiodeReberegnet(tidspunkt = LocalDateTime.now())
}
}

Expand Down Expand Up @@ -118,3 +120,10 @@ data class AutomatiskBehandlingStanset(
override val notat: NotatDto? = null
override val saksbehandler: SaksbehandlerDto? = null
}

data class VedtaksperiodeReberegnet(
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 @@ -10,6 +10,11 @@ interface HistorikkinnslagRepository {
oppgaveId: Long,
)

fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
)

fun lagre(
historikkType: PeriodehistorikkType,
saksbehandlerOid: UUID? = null,
Expand Down
11 changes: 7 additions & 4 deletions spesialist-selve/src/main/kotlin/no/nav/helse/db/NotatDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,23 @@ import org.slf4j.LoggerFactory
import java.util.UUID
import javax.sql.DataSource

class NotatDao(private val dataSource: DataSource) : HelseDao(dataSource), NotatRepository {
class NotatDao(
private val dataSource: DataSource,
) : HelseDao(dataSource),
NotatRepository {
private companion object {
private val log = LoggerFactory.getLogger(NotatDao::class.java)
}

override fun lagreForOppgaveId(
oppgaveId: Long,
tekst: String,
saksbehandler_oid: UUID,
saksbehandlerOid: UUID,
notatType: NotatType,
): Long? {
log.info("{} lagrer {} notat for oppgaveId {}", saksbehandler_oid, notatType, oppgaveId)
log.info("{} lagrer {} notat for oppgaveId {}", saksbehandlerOid, notatType, oppgaveId)
return sessionOf(dataSource).use { session ->
TransactionalNotatDao(session).lagreForOppgaveId(oppgaveId, tekst, saksbehandler_oid, notatType)
TransactionalNotatDao(session).lagreForOppgaveId(oppgaveId, tekst, saksbehandlerOid, notatType)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ interface NotatRepository {
fun lagreForOppgaveId(
oppgaveId: Long,
tekst: String,
saksbehandler_oid: UUID,
saksbehandlerOid: UUID,
notatType: NotatType = NotatType.Generelt,
): Long?
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,71 +2,30 @@ package no.nav.helse.db

import kotliquery.sessionOf
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.periodehistorikk.AutomatiskBehandlingStanset
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
import no.nav.helse.spesialist.api.notat.NotatApiDao
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import java.util.UUID
import javax.sql.DataSource

class PgHistorikkinnslagRepository(
private val dataSource: DataSource,
) : HistorikkinnslagRepository {
private val notatDao: NotatApiDao = NotatApiDao(dataSource)
private val oppgaveDao = OppgaveDao(dataSource)

override fun lagre(
historikkinnslag: HistorikkinnslagDto,
oppgaveId: Long,
) {
val generasjonId = oppgaveDao.finnGenerasjonId(oppgaveId)
when (historikkinnslag) {
is FjernetFraPåVent -> lagre(historikkinnslag, generasjonId, null)
is LagtPåVent -> {
val notatId =
historikkinnslag.notat?.let { notat ->
notatDao
.opprettNotatForOppgaveId(
oppgaveId = notat.oppgaveId,
tekst = notat.tekst,
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
type = NotatType.PaaVent,
)?.toInt()
}
lagre(historikkinnslag, generasjonId, notatId)
}
is TotrinnsvurderingFerdigbehandlet -> lagre(historikkinnslag, generasjonId, null)
is AvventerTotrinnsvurdering -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingAutomatiskRetur -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingRetur -> {
val notatId =
notatDao
.opprettNotatForOppgaveId(
oppgaveId = historikkinnslag.notat.oppgaveId,
tekst = historikkinnslag.notat.tekst,
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
type = NotatType.PaaVent,
)?.toInt()
lagre(historikkinnslag, generasjonId, notatId)
}
is AutomatiskBehandlingStanset -> lagre(historikkinnslag, generasjonId, null)
}
lagre(historikkinnslag, generasjonId)
}

private fun lagre(
override fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
notatId: Int?,
) {
sessionOf(dataSource).use { session ->
TransactionalPeriodehistorikkDao(session).lagre(historikkinnslag, generasjonId, notatId)
sessionOf(dataSource, returnGeneratedKey = true).use { session ->
TransactionalPeriodehistorikkDao(session).lagre(historikkinnslag, generasjonId)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import no.nav.helse.spesialist.api.graphql.schema.NotatType
import org.intellij.lang.annotations.Language
import java.util.UUID

class TransactionalNotatDao(private val session: Session) : NotatRepository {
class TransactionalNotatDao(
private val session: Session,
) : NotatRepository {
override fun lagreForOppgaveId(
oppgaveId: Long,
tekst: String,
saksbehandler_oid: UUID,
saksbehandlerOid: UUID,
notatType: NotatType,
): Long? {
@Language("PostgreSQL")
Expand All @@ -33,7 +35,7 @@ class TransactionalNotatDao(private val session: Session) : NotatRepository {
mapOf(
"oppgave_id" to oppgaveId,
"tekst" to tekst,
"saksbehandler_oid" to saksbehandler_oid,
"saksbehandler_oid" to saksbehandlerOid,
"type" to notatType.name,
),
).asUpdateAndReturnGeneratedKey,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ 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.modell.periodehistorikk.VedtaksperiodeReberegnet
import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import org.intellij.lang.annotations.Language
import java.util.UUID
Expand All @@ -22,6 +24,46 @@ class TransactionalPeriodehistorikkDao(
oppgaveId: Long,
): Unit = throw UnsupportedOperationException()

override fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
) {
when (historikkinnslag) {
is FjernetFraPåVent -> lagre(historikkinnslag, generasjonId, null)
is LagtPåVent -> {
val notatId =
historikkinnslag.notat?.let { notat ->
TransactionalNotatDao(session)
.lagreForOppgaveId(
oppgaveId = notat.oppgaveId,
tekst = notat.tekst,
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
notatType = NotatType.PaaVent,
)?.toInt()
}
lagre(historikkinnslag, generasjonId, notatId)
}

is TotrinnsvurderingFerdigbehandlet -> lagre(historikkinnslag, generasjonId, null)
is AvventerTotrinnsvurdering -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingAutomatiskRetur -> lagre(historikkinnslag, generasjonId, null)
is TotrinnsvurderingRetur -> {
val notatId =
TransactionalNotatDao(session)
.lagreForOppgaveId(
oppgaveId = historikkinnslag.notat.oppgaveId,
tekst = historikkinnslag.notat.tekst,
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
notatType = NotatType.Retur,
)?.toInt()
lagre(historikkinnslag, generasjonId, notatId)
}

is AutomatiskBehandlingStanset -> lagre(historikkinnslag, generasjonId, null)
is VedtaksperiodeReberegnet -> lagre(historikkinnslag, generasjonId, null)
}
}

internal fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
Expand Down Expand Up @@ -55,6 +97,7 @@ class TransactionalPeriodehistorikkDao(
is TotrinnsvurderingRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
is TotrinnsvurderingAutomatiskRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
is AutomatiskBehandlingStanset -> "STANS_AUTOMATISK_BEHANDLING" // TODO: Mangler å migrere typen i databasen
is VedtaksperiodeReberegnet -> "VEDTAKSPERIODE_REBEREGNET" // TODO: Mangler å migrere typen i databasen
}

override fun lagre(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ import no.nav.helse.modell.utbetaling.UtbetalingEndretCommand
import no.nav.helse.modell.vedtaksperiode.GenerasjonService
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovCommand
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovData
import no.nav.helse.modell.vedtaksperiode.Vedtaksperiode
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeForkastet
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeForkastetCommand
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeNyUtbetaling
Expand Down Expand Up @@ -208,12 +209,12 @@ internal class Kommandofabrikk(

internal fun vedtaksperiodeReberegnet(
hendelse: VedtaksperiodeReberegnet,
vedtaksperiode: Vedtaksperiode,
session: TransactionalSession,
): VedtaksperiodeReberegnetCommand =
VedtaksperiodeReberegnetCommand(
fødselsnummer = hendelse.fødselsnummer(),
vedtaksperiodeId = hendelse.vedtaksperiodeId(),
utbetalingRepository = TransactionalUtbetalingDao(session),
vedtaksperiode = vedtaksperiode,
historikkinnslagRepository = TransactionalPeriodehistorikkDao(session),
commandContextRepository = TransactionalCommandContextDao(session),
oppgaveService = transaksjonellOppgaveService(session),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,19 @@
package no.nav.helse.modell.kommando

import no.nav.helse.db.HistorikkinnslagRepository
import no.nav.helse.db.UtbetalingRepository
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import org.slf4j.LoggerFactory
import java.util.UUID
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.vedtaksperiode.Vedtaksperiode

internal class VedtaksperiodeReberegnetPeriodehistorikk(
private val vedtaksperiodeId: UUID,
private val utbetalingRepository: UtbetalingRepository,
private val vedtaksperiode: Vedtaksperiode,
private val historikkinnslagRepository: HistorikkinnslagRepository,
) : Command {
private val sikkerLogg = LoggerFactory.getLogger("tjenestekall")

override fun execute(context: CommandContext): Boolean {
val utbetalinger = utbetalingRepository.utbetalingerForVedtaksperiode(vedtaksperiodeId)
val utbetalingId = utbetalinger.firstOrNull()?.utbetalingId

if (utbetalingId != null) {
sikkerLogg.info(
"Vedtaksperiode reberegnet lagres som periodehistorikk på vedtaksperiode {} med utbetalingId {}",
vedtaksperiodeId,
utbetalingId,
)
historikkinnslagRepository.lagre(PeriodehistorikkType.VEDTAKSPERIODE_REBEREGNET, null, utbetalingId)
} else {
sikkerLogg.info(
"Kunne ikke legge til periodehistorikk ved reberegnet vedtaksperiode. Finner ikke utbetalingId for vedtaksperiodeId {} ",
vedtaksperiodeId,
)
}

val innslag = HistorikkinnslagDto.vedtaksperiodeReberegnet()
historikkinnslagRepository.lagre(
historikkinnslag = innslag,
generasjonId = vedtaksperiode.gjeldendeGenerasjonId,
)
return true
}
}
Loading

0 comments on commit a5940bd

Please sign in to comment.