Skip to content

Commit

Permalink
Revert "⚡️ Hent alle historikkinnslag for personen i samme spørring, …
Browse files Browse the repository at this point in the history
…take 2"

Det fins innslag i periodehistorikk som ikke har utbetaling_id, og den
behandlingen de peker på har heller ikke utbetaling_id (AUU).

This reverts commit f94585b.
  • Loading branch information
havstein committed Nov 20, 2024
1 parent 4fc8eaa commit 0d2118e
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import no.nav.helse.spesialist.api.oppgave.OppgaveApiDao
import no.nav.helse.spesialist.api.oppgave.Oppgavehåndterer
import no.nav.helse.spesialist.api.overstyring.Dagtype
import no.nav.helse.spesialist.api.overstyring.Skjonnsfastsettingstype
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkApiDao
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
import no.nav.helse.spesialist.api.totrinnsvurdering.TotrinnsvurderingApiDao
Expand Down Expand Up @@ -172,7 +172,7 @@ data class Arbeidsgiver(
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val fullPeriodehistorikk: Map<UUID, List<PeriodehistorikkDto>>,
private val periodehistorikkApiDao: PeriodehistorikkApiDao,
private val notatDao: NotatApiDao,
private val totrinnsvurderingApiDao: TotrinnsvurderingApiDao,
private valVentApiDao: PåVentApiDao,
Expand Down Expand Up @@ -206,7 +206,7 @@ data class Arbeidsgiver(
risikovurderinger = risikovurderinger,
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = fullPeriodehistorikk,
periodehistorikkApiDao = periodehistorikkApiDao,
notatDao = notatDao,
totrinnsvurderingApiDao = totrinnsvurderingApiDao,
VentApiDao =VentApiDao,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import no.nav.helse.spesialist.api.objectMapper
import no.nav.helse.spesialist.api.oppgave.OppgaveApiDao
import no.nav.helse.spesialist.api.oppgave.OppgaveForPeriodevisningDto
import no.nav.helse.spesialist.api.oppgave.Oppgavehåndterer
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkApiDao
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
Expand Down Expand Up @@ -462,7 +462,7 @@ data class BeregnetPeriode(
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val fullPeriodehistorikk: Map<UUID, List<PeriodehistorikkDto>>,
private val periodehistorikkApiDao: PeriodehistorikkApiDao,
private val notatDao: NotatApiDao,
private val totrinnsvurderingApiDao: TotrinnsvurderingApiDao,
private valVentApiDao: PåVentApiDao,
Expand Down Expand Up @@ -531,7 +531,8 @@ data class BeregnetPeriode(
}

fun historikkinnslag(): List<Historikkinnslag> =
(fullPeriodehistorikk[utbetaling().id] ?: emptyList())
periodehistorikkApiDao
.finn(utbetaling().id)
.map {
when (it.type) {
PeriodehistorikkType.LEGG_PA_VENT -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import no.nav.helse.spesialist.api.overstyring.OverstyringInntektDto
import no.nav.helse.spesialist.api.overstyring.OverstyringMinimumSykdomsgradDto
import no.nav.helse.spesialist.api.overstyring.OverstyringTidslinjeDto
import no.nav.helse.spesialist.api.overstyring.SkjønnsfastsettingSykepengegrunnlagDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkApiDao
import no.nav.helse.spesialist.api.person.PersonApiDao
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
Expand Down Expand Up @@ -100,14 +100,14 @@ data class Person(
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val periodehistorikkApiDao: PeriodehistorikkApiDao,
private val notatDao: NotatApiDao,
private val totrinnsvurderingApiDao: TotrinnsvurderingApiDao,
private valVentApiDao: PåVentApiDao,
private val avviksvurderinghenter: Avviksvurderinghenter,
private val tilganger: SaksbehandlerTilganger,
private val oppgavehåndterer: Oppgavehåndterer,
private val saksbehandlerhåndterer: Saksbehandlerhåndterer,
private val fullPeriodehistorikk: Map<UUID, List<PeriodehistorikkDto>>,
) {
fun versjon(): Int = snapshot.versjon

Expand Down Expand Up @@ -165,7 +165,7 @@ data class Person(
risikovurderinger = risikovurderinger,
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = fullPeriodehistorikk,
periodehistorikkApiDao = periodehistorikkApiDao,
notatDao = notatDao,
totrinnsvurderingApiDao = totrinnsvurderingApiDao,
VentApiDao =VentApiDao,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,40 @@ import kotliquery.Row
import no.nav.helse.HelseDao.Companion.asSQL
import no.nav.helse.db.MedDataSource
import no.nav.helse.db.QueryRunner
import java.util.UUID
import javax.sql.DataSource

class PeriodehistorikkApiDao(
private val dataSource: DataSource,
) : QueryRunner by MedDataSource(dataSource) {
fun hentForPerson(fødselsnummer: String) =
fun finn(utbetalingId: UUID) =
asSQL(
// Fiklete greier, for å unngå sequential scan. Spørringen gjøres mange ganger når GraphQL skal bygge
// person-dataene.
"""
with generasjon_id_og_utbetaling_id as (
select b.utbetaling_id, b.unik_id as generasjon_id
from behandling b
join vedtak v on b.vedtaksperiode_id = v.vedtaksperiode_id
join person p on v.person_ref = p.id
where p.fødselsnummer = :foedselsnummer
WITH innslag_med_utbetaling_id AS
(
SELECT id FROM periodehistorikk WHERE utbetaling_id = :utbetalingId
),
innslag_via_behandling AS
(
SELECT ph.id
FROM periodehistorikk ph
JOIN behandling svg ON generasjon_id = unik_id
WHERE svg.utbetaling_id = :utbetaling_id
)
SELECT id, type, timestamp, json, ident, dialog_ref, utbetaling_id, generasjon_id
FROM periodehistorikk
LEFT JOIN saksbehandler s ON saksbehandler_oid = s.oid
WHERE id IN
(
SELECT id FROM innslag_med_utbetaling_id
UNION ALL
SELECT id FROM innslag_via_behandling
)
select id, type, timestamp, json, ident, dialog_ref, coalesce(utvalg.utbetaling_id, ph.utbetaling_id) as utbetaling_id, utvalg.generasjon_id
from generasjon_id_og_utbetaling_id utvalg
left join periodehistorikk ph on utvalg.utbetaling_id = ph.utbetaling_id or utvalg.generasjon_id = ph.generasjon_id
left join saksbehandler s on saksbehandler_oid = s.oid
where ph.id is not null
""".trimIndent(),
"foedselsnummer" to fødselsnummer,
).list { it.uuid("utbetaling_id") to periodehistorikkDto(it) }.groupBy({ it.first }) { it.second }
"utbetaling_id" to utbetalingId,
).list { periodehistorikkDto(it) }

companion object {
fun periodehistorikkDto(it: Row) =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class PersonService(
risikovurderinger = risikovurderingApiDao.finnRisikovurderinger(fødselsnummer),
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = periodehistorikkApiDao.hentForPerson(fødselsnummer),
periodehistorikkApiDao = periodehistorikkApiDao,
notatDao = notatDao,
totrinnsvurderingApiDao = totrinnsvurderingApiDao,
VentApiDao =VentApiDao,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ import DatabaseIntegrationTest
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.saksbehandler.SaksbehandlerDto
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Test

class PgPeriodehistorikkDaoTest : DatabaseIntegrationTest() {

@Test
fun `finner all periodehistorikk for en person`() {
fun `lagre periodehistorikk ved hjelp av oppgaveId`() {
opprettPerson()
opprettArbeidsgiver()
opprettSaksbehandler()
Expand All @@ -21,9 +19,8 @@ class PgPeriodehistorikkDaoTest : DatabaseIntegrationTest() {
val historikkinnslag = HistorikkinnslagDto.fjernetFraPåVentInnslag(saksbehandler)

historikkinnslagRepository.lagreMedOppgaveId(historikkinnslag, oppgaveId)
val result = periodehistorikkApiDao.hentForPerson(FNR)
val result = periodehistorikkApiDao.finn(UTBETALING_ID)

assertEquals(1, result.size)
assertNotNull(result[UTBETALING_ID])
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ internal class SaksbehandlerMediatorTest : DatabaseIntegrationTest() {
saksbehandler,
)
val melding = testRapid.inspektør.hendelser("oppgave_oppdatert").last()
val historikk = periodehistorikkApiDao.hentForPerson(FNR)[UTBETALING_ID] ?: emptyList()
val historikk = periodehistorikkApiDao.finn(UTBETALING_ID)
assertEquals(PeriodehistorikkType.LEGG_PA_VENT, historikk.first().type)
assertTrue(melding["egenskaper"].map { it.asText() }.contains("PÅ_VENT"))
}
Expand All @@ -438,7 +438,7 @@ internal class SaksbehandlerMediatorTest : DatabaseIntegrationTest() {
)
mediator.påVent(PaVentRequest.FjernPaVent(oppgaveId), saksbehandler)
val melding = testRapid.inspektør.hendelser("oppgave_oppdatert").last()
val historikk = periodehistorikkApiDao.hentForPerson(FNR)[UTBETALING_ID] ?: emptyList()
val historikk = periodehistorikkApiDao.finn(UTBETALING_ID)
assertTrue(historikk.map { it.type }.containsAll(listOf(PeriodehistorikkType.FJERN_FRA_PA_VENT, PeriodehistorikkType.LEGG_PA_VENT)))
assertFalse(melding["egenskaper"].map { it.asText() }.contains("PÅ_VENT"))
}
Expand Down

0 comments on commit 0d2118e

Please sign in to comment.