Skip to content

Commit

Permalink
Merge pull request #588 from navikt/nøkkeltall_løpende
Browse files Browse the repository at this point in the history
Hent nøkkeltall for løpende saker
  • Loading branch information
Christian H. Mosveen authored Dec 1, 2021
2 parents 497c7cb + 9d196ca commit beb3a4f
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ object DatabaseBuilder {
sessionFactory = sessionFactory,
)
val hendelseRepo = PersonhendelsePostgresRepo(dataSource, clock)
val nøkkeltallRepo = NøkkeltallPostgresRepo(dataSource)
val nøkkeltallRepo = NøkkeltallPostgresRepo(dataSource, clock)

return DatabaseRepos(
avstemming = AvstemmingPostgresRepo(dataSource),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,35 @@ import no.nav.su.se.bakover.database.hent
import no.nav.su.se.bakover.database.withSession
import no.nav.su.se.bakover.domain.nøkkeltall.Nøkkeltall
import no.nav.su.se.bakover.domain.nøkkeltall.NøkkeltallRepo
import java.time.Clock
import java.time.LocalDate
import javax.sql.DataSource

internal class NøkkeltallPostgresRepo(
private val dataSource: DataSource,
private val clock: Clock,
) : NøkkeltallRepo {
override fun hentNøkkeltall(): Nøkkeltall {
return dataSource.withSession {
session ->
val dato = LocalDate.now(clock)
return dataSource.withSession { session ->
"""
with søknadsinfo as (
select s.lukket, s.søknadinnhold, b.status
from søknad s
left join behandling b on s.id = b.søknadid),
behandlingsstatus as (select status, count(*) antall from søknadsinfo group by status)
select count(*) as totalt,
coalesce((select antall from behandlingsstatus where status = 'IVERKSATT_AVSLAG'), 0) as iverksattAvslag,
coalesce(( select antall from behandlingsstatus where status = 'IVERKSATT_INNVILGET' ), 0) as iverksattInnvilget,
(select count(*) as påbegynt from søknadsinfo where søknadsinfo.lukket is null and status is not null and status not like '%IVERKSATT%' ) as påbegynt,
(select count(*) as ikkePåbegynt from søknadsinfo where søknadsinfo.lukket is null and status is null),
(select count(*) as digitalsøknader from søknadsinfo where søknadsinfo.søknadinnhold -> 'forNav' ->> 'type' = 'DigitalSøknad' ),
(select count(*) as papirsøknader from søknadsinfo where søknadsinfo.søknadinnhold -> 'forNav' ->> 'type' = 'Papirsøknad' ),
(select count(*) as personer from sak)
from søknadsinfo;
""".trimIndent().hent(mapOf(), session) { row ->
with søknadsinfo as (select s.lukket, s.søknadinnhold, b.status from søknad s left join behandling b on s.id = b.søknadid),
behandlingsstatus as (select status, count(*) antall from søknadsinfo group by status),
gjeldende_vedtak as (select * from vedtak where :dato >= vedtak.fraogmed and :dato <= vedtak.tilogmed),
innvilgelser as (select count(*) from gjeldende_vedtak where vedtaktype = 'SØKNAD'),
opphør as (select count(*) from gjeldende_vedtak where vedtaktype = 'OPPHØR')
select
(select count(*) from søknadsinfo) as totalt,
(select count(*) from søknadsinfo where søknadsinfo.lukket is null and status is not null and status not like '%IVERKSATT%') as påbegynt,
(select count(*) from søknadsinfo where søknadsinfo.lukket is null and status is null) as ikkePåbegynt,
(select count(*) from søknadsinfo where søknadsinfo.søknadinnhold -> 'forNav' ->> 'type' = 'DigitalSøknad') as digitalsøknader,
(select count(*) from søknadsinfo where søknadsinfo.søknadinnhold -> 'forNav' ->> 'type' = 'Papirsøknad') as papirsøknader,
coalesce((select antall from behandlingsstatus where status = 'IVERKSATT_AVSLAG'), 0) as iverksattAvslag,
coalesce((select antall from behandlingsstatus where status = 'IVERKSATT_INNVILGET' ), 0) as iverksattInnvilget,
(select count(*) from sak) as personer,
(select (select * from innvilgelser) - (select * from opphør)) as løpendeSaker;
""".trimIndent().hent(mapOf("dato" to dato), session) { row ->
row.toNøkkeltall()
}
}!!
Expand All @@ -46,6 +49,7 @@ internal class NøkkeltallPostgresRepo(
digitalsøknader = int("digitalsøknader"),
papirsøknader = int("papirsøknader"),
),
antallUnikePersoner = int("personer")
antallUnikePersoner = int("personer"),
løpendeSaker = int("løpendeSaker")
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ import java.time.Clock
import java.util.UUID
import javax.sql.DataSource

internal val stønadsperiode = Stønadsperiode.create(Periode.create(1.januar(2021), 31.januar(2021)))
internal val stønadsperiode = Stønadsperiode.create(Periode.create(1.januar(2021), 31.desember(2021)))
internal val tomBehandlingsinformasjon = Behandlingsinformasjon.lagTomBehandlingsinformasjon()
internal val behandlingsinformasjonMedAlleVilkårOppfylt =
Behandlingsinformasjon.lagTomBehandlingsinformasjon().withAlleVilkårOppfylt()
Expand Down Expand Up @@ -271,7 +271,7 @@ internal class TestDataHelper(
dataSource = dataSource,
dbMetrics = dbMetrics,
)
internal val nøkkeltallRepo = NøkkeltallPostgresRepo(dataSource = dataSource)
internal val nøkkeltallRepo = NøkkeltallPostgresRepo(dataSource = dataSource, fixedClock)
internal val dokumentRepo = DokumentPostgresRepo(dataSource, sessionFactory)
internal val hendelsePostgresRepo = PersonhendelsePostgresRepo(dataSource, fixedClock)

Expand Down Expand Up @@ -829,6 +829,7 @@ internal class TestDataHelper(
).copy(id = utbetalingId)
utbetalingRepo.opprettUtbetaling(utbetaling)
søknadsbehandlingRepo.lagre(innvilget)
vedtakRepo.lagre(Vedtak.fromSøknadsbehandling(innvilget, utbetalingId, fixedClock))
return innvilget to utbetaling
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 0,
papirsøknader = 0,
),
antallUnikePersoner = 0
antallUnikePersoner = 0,
løpendeSaker = 0,
)
}
}
Expand All @@ -48,7 +49,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 2,
papirsøknader = 0,
),
antallUnikePersoner = 1
antallUnikePersoner = 1,
løpendeSaker = 0,
)
}
}
Expand All @@ -70,7 +72,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 2,
papirsøknader = 0,
),
antallUnikePersoner = 2
antallUnikePersoner = 2,
løpendeSaker = 1,
)
}
}
Expand All @@ -95,7 +98,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 4,
papirsøknader = 0,
),
antallUnikePersoner = 1
antallUnikePersoner = 1,
løpendeSaker = 0,
)
}
}
Expand Down Expand Up @@ -125,7 +129,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 0,
papirsøknader = 1,
),
antallUnikePersoner = 1
antallUnikePersoner = 1,
løpendeSaker = 0,
)
}
}
Expand All @@ -150,7 +155,8 @@ internal class NøkkeltallPostgresRepoTest {
digitalsøknader = 2,
papirsøknader = 0,
),
antallUnikePersoner = 1
antallUnikePersoner = 1,
løpendeSaker = 0,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@ import io.kotest.matchers.shouldNotBe
import io.kotest.matchers.types.shouldBeTypeOf
import no.nav.su.se.bakover.common.Tidspunkt
import no.nav.su.se.bakover.common.desember
import no.nav.su.se.bakover.common.endOfMonth
import no.nav.su.se.bakover.common.januar
import no.nav.su.se.bakover.common.periode.Periode
import no.nav.su.se.bakover.common.startOfMonth
import no.nav.su.se.bakover.database.TestDataHelper
import no.nav.su.se.bakover.database.TestDataHelper.Companion.journalførtSøknadMedOppgave
import no.nav.su.se.bakover.database.antall
Expand Down Expand Up @@ -53,7 +51,6 @@ import no.nav.su.se.bakover.test.getOrFail
import no.nav.su.se.bakover.test.innvilgetUførevilkår
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import java.time.LocalDate
import java.util.UUID

internal class SøknadsbehandlingPostgresRepoTest {
Expand Down Expand Up @@ -598,15 +595,15 @@ internal class SøknadsbehandlingPostgresRepoTest {
attesteringer = listOf(
Attestering.Iverksatt(
attestant = NavIdentBruker.Attestant(saksbehandler.navIdent),
opprettet = Tidspunkt.now(no.nav.su.se.bakover.test.fixedClock),
opprettet = Tidspunkt.now(fixedClock),
),
),
),
fritekstTilBrev = "hshshshs",
stønadsperiode = Stønadsperiode.create(
periode = Periode.create(
fraOgMed = LocalDate.now(no.nav.su.se.bakover.test.fixedClock).startOfMonth(),
tilOgMed = LocalDate.now(no.nav.su.se.bakover.test.fixedClock).endOfMonth(),
fraOgMed = 1.januar(2021),
tilOgMed = 31.desember(2021),
),
begrunnelse = "",
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.su.se.bakover.database.vedtak

import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.desember
import no.nav.su.se.bakover.common.februar
import no.nav.su.se.bakover.common.januar
import no.nav.su.se.bakover.common.mars
Expand Down Expand Up @@ -141,9 +142,9 @@ internal class VedtakPostgresRepoTest {
val vedtakRepo = testDataHelper.vedtakRepo
val (søknadsbehandling, utbetaling) = testDataHelper.nyIverksattInnvilget()
val vedtakSomErAktivt = Vedtak.fromSøknadsbehandling(søknadsbehandling, utbetaling.id, fixedClock)
.copy(periode = Periode.create(1.februar(2021), 31.mars(2021)))
.copy(periode = Periode.create(1.januar(2021), 31.mars(2021)))
val vedtakUtenforAktivPeriode = Vedtak.fromSøknadsbehandling(søknadsbehandling, utbetaling.id, fixedClock)
.copy(periode = Periode.create(1.januar(2021), 31.januar(2021)))
.copy(periode = Periode.create(1.januar(2020), 31.desember(2020)))
vedtakRepo.lagre(vedtakSomErAktivt)
vedtakRepo.lagre(vedtakUtenforAktivPeriode)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.su.se.bakover.domain.nøkkeltall
data class Nøkkeltall(
valknader: Søknader,
val antallUnikePersoner: Int,
valpendeSaker: Int,
) {
data class Søknader(
val totaltAntall: Int,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import no.nav.su.se.bakover.domain.nøkkeltall.Nøkkeltall
internal data class NøkkeltallJson(
valknader: SøknaderJson,
val antallUnikePersoner: Int,
valpendeSaker: Int,
) {
data class SøknaderJson(
val totaltAntall: Int,
Expand All @@ -19,7 +20,8 @@ internal data class NøkkeltallJson(

internal fun Nøkkeltall.toJson() = NøkkeltallJson(
søknader = søknader.toJson(),
antallUnikePersoner = antallUnikePersoner
antallUnikePersoner = antallUnikePersoner,
løpendeSaker = løpendeSaker,
)

internal fun Nøkkeltall.Søknader.toJson() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ internal class NøkkeltallRoutesKtTest {
papirsøknader = 0,
),
antallUnikePersoner = 1,
løpendeSaker = 0,
)
}

Expand All @@ -65,7 +66,8 @@ internal class NøkkeltallRoutesKtTest {
"digitalsøknader" : 0,
"papirsøknader" : 0
},
"antallUnikePersoner" : 1
"antallUnikePersoner" : 1,
"løpendeSaker": 0
}
""".trimIndent()
val actual = response.content
Expand Down

0 comments on commit beb3a4f

Please sign in to comment.