Skip to content

Commit

Permalink
Lagre gjeldende avklaringsbehov i behandling_historikk
Browse files Browse the repository at this point in the history
  • Loading branch information
FredrikMeyer committed Oct 29, 2024
1 parent ebf1aad commit 5d75ac8
Show file tree
Hide file tree
Showing 10 changed files with 87 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,11 @@ public data class AvklaringsbehovHendelse(
val endringer: List<Endring>
)

/**
* @param type Referer til type avklaringsbehov. Disse er definert i Definisjon.kt i aap-behandlingsflyt.
*/
public data class Definisjon(
val type: String, // TODO: enum her
val type: String,
val behovType: BehovType,
valsesISteg: StegType
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ data class Behandling(
val relaterteIdenter: List<String> = listOf(),
val relatertBehandlingId: Long? = null,
val snapShotId: Long? = null,
val gjeldendeAvklaringsBehov: String? = null,
) {
init {
// Skal oppgis med sekund-presisjon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,10 @@ SELECT COALESCE(

val historikkId = dbConnection.executeReturnKey(
"""
INSERT INTO behandling_historikk (behandling_id, versjon_id, gjeldende, oppdatert_tid, mottatt_tid,
status, siste_saksbehandler)
VALUES (?, ?, ?, ?, ?, ?, ?)""",
INSERT INTO behandling_historikk (behandling_id,
versjon_id, gjeldende, oppdatert_tid, mottatt_tid,
status, siste_saksbehandler, gjeldende_avklaringsbehov)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)""",
) {
setParams {
var c = 1
Expand All @@ -86,7 +87,8 @@ VALUES (?, ?, ?, ?, ?, ?, ?)""",
setLocalDateTime(c++, LocalDateTime.now(clock))
setLocalDateTime(c++, behandling.mottattTid)
setString(c++, behandling.status.name)
setString(c, behandling.sisteSaksbehandler)
setString(c++, behandling.sisteSaksbehandler)
setString(c, behandling.gjeldendeAvklaringsBehov)
}
}

Expand All @@ -105,25 +107,26 @@ WHERE ident = ?""", behandling.relaterteIdenter
override fun hent(referanse: UUID): Behandling? {
return dbConnection.queryFirstOrNull(
"""
SELECT b.id as b_id,
b.referanse as b_referanse,
b.type as b_type,
b.opprettet_tid as b_opprettet_tid,
b.forrige_behandling_id as b_forrige_behandling_id,
s.id as s_id,
s.saksnummer as s_saksnummer,
sh.oppdatert_tid as sh_oppdatert_tid,
sh.sak_status as sh_sak_status,
sh.id as sh_id,
p.ident as p_ident,
p.id as p_id,
bh.status as bh_status,
bh.versjon_id as bh_versjon_id,
bh.mottatt_tid as bh_mottatt_tid,
bh.id as bh_id,
bh.siste_saksbehandler as bh_siste_saksbehandler,
v.versjon as v_versjon,
rp.rp_ident as rp_ident
SELECT b.id as b_id,
b.referanse as b_referanse,
b.type as b_type,
b.opprettet_tid as b_opprettet_tid,
b.forrige_behandling_id as b_forrige_behandling_id,
s.id as s_id,
s.saksnummer as s_saksnummer,
sh.oppdatert_tid as sh_oppdatert_tid,
sh.sak_status as sh_sak_status,
sh.id as sh_id,
p.ident as p_ident,
p.id as p_id,
bh.status as bh_status,
bh.versjon_id as bh_versjon_id,
bh.mottatt_tid as bh_mottatt_tid,
bh.id as bh_id,
bh.siste_saksbehandler as bh_siste_saksbehandler,
bh.gjeldende_avklaringsbehov as bh_gjeldende_avklaringsbehov,
v.versjon as v_versjon,
rp.rp_ident as rp_ident
FROM behandling b
JOIN sak s on b.sak_id = s.id
JOIN (SELECT * FROM sak_historikk sh WHERE gjeldende = TRUE) sh on s.id = sh.sak_id
Expand All @@ -148,25 +151,26 @@ WHERE b.referanse = ?"""
}

private val hentMedId = """
SELECT b.id as b_id,
b.referanse as b_referanse,
b.type as b_type,
b.opprettet_tid as b_opprettet_tid,
b.forrige_behandling_id as b_forrige_behandling_id,
s.id as s_id,
s.saksnummer as s_saksnummer,
sh.oppdatert_tid as sh_oppdatert_tid,
sh.sak_status as sh_sak_status,
sh.id as sh_id,
p.ident as p_ident,
p.id as p_id,
bh.status as bh_status,
bh.versjon_id as bh_versjon_id,
bh.mottatt_tid as bh_mottatt_tid,
bh.siste_saksbehandler as bh_siste_saksbehandler,
bh.id as bh_id,
v.versjon as v_versjon,
rp.rp_ident as rp_ident
SELECT b.id as b_id,
b.referanse as b_referanse,
b.type as b_type,
b.opprettet_tid as b_opprettet_tid,
b.forrige_behandling_id as b_forrige_behandling_id,
s.id as s_id,
s.saksnummer as s_saksnummer,
sh.oppdatert_tid as sh_oppdatert_tid,
sh.sak_status as sh_sak_status,
sh.id as sh_id,
p.ident as p_ident,
p.id as p_id,
bh.status as bh_status,
bh.versjon_id as bh_versjon_id,
bh.mottatt_tid as bh_mottatt_tid,
bh.siste_saksbehandler as bh_siste_saksbehandler,
bh.gjeldende_avklaringsbehov as bh_gjeldende_avklaringsbehov,
bh.id as bh_id,
v.versjon as v_versjon,
rp.rp_ident as rp_ident
FROM behandling b
JOIN sak s on b.sak_id = s.id
JOIN (SELECT * FROM sak_historikk sh WHERE gjeldende = TRUE) sh on s.id = sh.sak_id
Expand Down Expand Up @@ -235,6 +239,7 @@ WHERE b.id = ?"""
snapShotId = it.getLong("bh_id"),
relaterteIdenter = it.getArray("rp_ident", String::class),
sisteSaksbehandler = it.getStringOrNull("bh_siste_saksbehandler")?.ifBlank { null },
relatertBehandlingId = it.getLongOrNull("b_forrige_behandling_id")
relatertBehandlingId = it.getLongOrNull("b_forrige_behandling_id"),
gjeldendeAvklaringsBehov = it.getStringOrNull("bh_gjeldende_avklaringsbehov")?.ifBlank { null }
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ class HendelsesService(
status = dto.status,
versjon = Versjon(verdi = dto.versjon),
relaterteIdenter = dto.identerForSak,
sisteSaksbehandler = dto.avklaringsbehov.sistePersonPåBehandling()
sisteSaksbehandler = dto.avklaringsbehov.sistePersonPåBehandling(),
gjeldendeAvklaringsBehov = dto.avklaringsbehov.utledGjeldendeAvklaringsBehov()
)
val eksisterendeBehandlingId = behandlingRepository.hent(dto.behandlingReferanse)?.id

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,16 @@ fun List<AvklaringsbehovHendelse>.sistePersonPåBehandling(): String? {
return this.flatMap { it.endringer }
.filter { it.endretAv.lowercase() != "Kelvin".lowercase() }
.maxByOrNull { it.tidsstempel }?.endretAv
}

fun List<AvklaringsbehovHendelse>.utledGjeldendeAvklaringsBehov(): String? {
return this.filter { it.status.erÅpent() }.map { it.definisjon.type }.firstOrNull()
}

fun EndringStatus.erÅpent(): Boolean {
return this in setOf(
EndringStatus.OPPRETTET,
EndringStatus.SENDT_TILBAKE_FRA_BESLUTTER,
EndringStatus.SENDT_TILBAKE_FRA_KVALITETSSIKRER
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@ enum class Tags(override val description: String) : APITag {
),
}

val modules = TagModule(listOf(Tags.Produksjonsstyring))

fun NormalOpenAPIRoute.hentBehandlingstidPerDag(
transactionExecutor: TransactionExecutor
) {

route("/behandlingstid/{typeBehandling}").get<BehandlingstidPerDagInput, List<BehandlingstidPerDagDTO>>(
TagModule(listOf(Tags.Produksjonsstyring))
modules
) { req ->
val respons = transactionExecutor.withinTransaction { conn ->
ProduksjonsstyringRepository(conn).hentBehandlingstidPerDag(req.typeBehandling)
Expand All @@ -36,7 +37,7 @@ fun NormalOpenAPIRoute.hentBehandlingstidPerDag(
respond(respons.map { BehandlingstidPerDagDTO(it.dag, it.snitt) })
}

route("/åpne-behandlinger").get<Unit, Int>() { _ ->
route("/åpne-behandlinger").get<Unit, Int>(modules) { _ ->
val respons = transactionExecutor.withinTransaction {
ProduksjonsstyringRepository(it).antallÅpneBehandlinger()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE behandling_historikk
ADD COLUMN gjeldende_avklaringsbehov VARCHAR(50) DEFAULT NULL;
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,7 @@ class MottaStatistikkTest {
val uthentetBehandling = BehandlingRepository(it).hent(hendelse.behandlingReferanse)

assertThat(uthentetBehandling?.referanse).isEqualTo(hendelse.behandlingReferanse)
assertThat(uthentetBehandling?.gjeldendeAvklaringsBehov).isEqualTo("5003")
assertThat(uthentetSak.saksnummer).isEqualTo(hendelse.saksnummer)
assertThat(uthentetBehandling?.sak?.saksnummer).isEqualTo(hendelse.saksnummer)
assertThat(uthentetBehandling?.opprettetTid).isEqualTo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ class BehandlingRepositoryTest {
opprettetTid = LocalDateTime.now(),
mottattTid = LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.SECONDS),
versjon = Versjon("xxx"),
relaterteIdenter = listOf("123", "456", "123456789")
relaterteIdenter = listOf("123", "456", "123456789"),
gjeldendeAvklaringsBehov = "0559"
)
)
}
Expand All @@ -47,6 +48,7 @@ class BehandlingRepositoryTest {
assertThat(uthentet.status).isEqualTo(BehandlingStatus.UTREDES)
assertThat(uthentet.sak.sakStatus).isEqualTo(SakStatus.UTREDES)
assertThat(uthentet.relaterteIdenter).containsExactlyInAnyOrder("123", "456", "123456789")
assertThat(uthentet.gjeldendeAvklaringsBehov).isEqualTo("0559")
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ class HendelseHjelpereKtTest {
)
assertThat(liste.sistePersonPåBehandling()).isNull()
}

@Test
fun `utled gjeldende avklaringsbehov`() {
assertThat(ufullførtBehandlingEndringer.utledGjeldendeAvklaringsBehov()).isEqualTo("5099")
}

@Test
fun `returnerer null for avsluttet behandling`() {
assertThat(avklaringsbehovHendelser.utledGjeldendeAvklaringsBehov()).isNull()
}
}

val avklaringsbehovHendelser = listOf(
Expand Down

0 comments on commit 5d75ac8

Please sign in to comment.