Skip to content

Commit

Permalink
Fjern støtte for gammel merknad fra los (#2573)
Browse files Browse the repository at this point in the history
  • Loading branch information
tendestad authored Sep 2, 2024
1 parent 3deec56 commit 19616db
Show file tree
Hide file tree
Showing 25 changed files with 79 additions and 802 deletions.
2 changes: 0 additions & 2 deletions src/main/kotlin/no/nav/k9/los/K9Los.kt
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ import no.nav.k9.los.tjenester.kodeverk.KodeverkApis
import no.nav.k9.los.tjenester.konfig.KonfigApis
import no.nav.k9.los.tjenester.mock.localSetup
import no.nav.k9.los.tjenester.saksbehandler.NavAnsattApis
import no.nav.k9.los.tjenester.saksbehandler.merknad.MerknadApi
import no.nav.k9.los.tjenester.saksbehandler.nokkeltall.SaksbehandlerNøkkeltallApis
import no.nav.k9.los.tjenester.saksbehandler.oppgave.OppgaveApis
import no.nav.k9.los.tjenester.saksbehandler.saksliste.SaksbehandlerOppgavekoApis
Expand Down Expand Up @@ -369,7 +368,6 @@ private fun Route.api(sseChannel: BroadcastChannel<SseEvent>) {
route("saksbehandler") {
route("oppgaver") {
OppgaveApis()
MerknadApi()
}

SaksbehandlerOppgavekoApis()
Expand Down
13 changes: 0 additions & 13 deletions src/main/kotlin/no/nav/k9/los/KoinProfiles.kt
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ import no.nav.k9.los.tjenester.avdelingsleder.AvdelingslederTjeneste
import no.nav.k9.los.tjenester.avdelingsleder.nokkeltall.NokkeltallTjeneste
import no.nav.k9.los.tjenester.driftsmeldinger.DriftsmeldingTjeneste
import no.nav.k9.los.tjenester.kodeverk.HentKodeverkTjeneste
import no.nav.k9.los.tjenester.saksbehandler.merknad.MerknadTjeneste
import no.nav.k9.los.tjenester.saksbehandler.oppgave.*
import no.nav.k9.los.tjenester.saksbehandler.saksliste.SakslisteTjeneste
import no.nav.k9.los.tjenester.sse.RefreshKlienter.initializeRefreshKlienter
Expand Down Expand Up @@ -361,18 +360,6 @@ fun common(app: Application, config: Configuration) = module {

single { OppgaveKøOppdaterer(get(), get(), get()) }

single {
MerknadTjeneste(
oppgaveRepositoryV2 = get(),
oppgaveKøOppdaterer = get(),
azureGraphService = get(),
migreringstjeneste = get(),
k9SakTilLosAdapterTjeneste = get(),
behandlingProsessEventK9Repository = get(),
tm = get()
)
}

single {
HealthService(
healthChecks = get<AsynkronProsesseringV1Service>().isHealtyChecks()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package no.nav.k9.los.domene.lager.oppgave.v2
import com.fasterxml.jackson.databind.JsonNode
import no.nav.k9.los.domene.modell.FagsakYtelseType
import no.nav.k9.los.domene.modell.Fagsystem
import no.nav.k9.los.tjenester.saksbehandler.merknad.Merknad
import no.nav.k9.los.tjenester.saksbehandler.merknad.MerknadEndret
import org.slf4j.LoggerFactory
import java.time.LocalDateTime
import java.time.temporal.ChronoUnit
Expand All @@ -22,7 +20,6 @@ open class Behandling constructor(
valkersId: Ident?,
val kode6: Boolean = false,
val skjermet: Boolean = false,
var merknad: Merknad?,
private val data: JsonNode?
) {
var ferdigstilt: LocalDateTime? = null
Expand Down Expand Up @@ -52,7 +49,6 @@ open class Behandling constructor(
søkersId = søkersId,
kode6 = false,
skjermet = false,
merknad = null,
data = null
)
}
Expand Down Expand Up @@ -92,8 +88,6 @@ open class Behandling constructor(
sistEndret = LocalDateTime.now()
log.info("Ferdigstiller behandling $eksternReferanse")
lukkAlleAktiveOppgaver(ferdigstillelse)
if (merknad != null) { slettMerknad() }

ferdigstilt = ferdigstillelse.tidspunkt
}

Expand Down Expand Up @@ -193,27 +187,6 @@ open class Behandling constructor(
return oppgaver.any { it.oppgaveKode == nyOppgave.oppgaveKode && it.opprettet.equalsWithPrecision(nyOppgave.tidspunkt, 50L) }
}

fun lagreMerknad(merknadEndring: MerknadEndret, saksbehandlerIdent: String?) {
if (merknadEndring.merknadKoder.isEmpty()) {
slettMerknad()
return
}

if (merknad == null) {
merknad = merknadEndring.nyMerknad(saksbehandlerIdent, aktiveOppgaver())
return
}
merknad?.oppdater(merknadEndring.merknadKoder, merknadEndring.fritekst)
}

private fun slettMerknad() {
if (merknad == null) {
log.warn("Prøver å slette merknad som ikke finnes eller allerede er slettet")
return
}
log.info("Sletter merknad $eksternReferanse")
merknad?.slett()
}
}

fun LocalDateTime.equalsWithPrecision(annen: LocalDateTime, errorMs: Long = 50L): Boolean {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
package no.nav.k9.los.domene.lager.oppgave.v2

import com.fasterxml.jackson.module.kotlin.readValue
import kotliquery.Query
import kotliquery.Row
import kotliquery.TransactionalSession
import kotliquery.*
import kotliquery.action.ListResultQueryAction
import kotliquery.action.NullableResultQueryAction
import kotliquery.action.UpdateQueryAction
import kotliquery.queryOf
import kotliquery.sessionOf
import kotliquery.using
import no.nav.k9.los.domene.modell.FagsakYtelseType
import no.nav.k9.los.domene.modell.Fagsystem
import no.nav.k9.los.tjenester.innsikt.Databasekall
import no.nav.k9.los.tjenester.saksbehandler.merknad.Merknad
import no.nav.k9.los.utils.LosObjectMapper
import org.slf4j.LoggerFactory
import java.util.*
import java.util.concurrent.atomic.LongAdder
import javax.sql.DataSource

Expand All @@ -36,16 +27,12 @@ class OppgaveRepositoryV2(

fun hentBehandling(eksternReferanse: String, tx: TransactionalSession): Behandling? {
val oppgaver = tx.run(hentOppgaver(eksternReferanse))
val merknad = tx.run(hentMerknaderQuery(eksternReferanse))
.also { check(it.size <= 1) { "Behandling kan bare ha en aktiv merknad. Fant ${it.size}" }}
.firstOrNull()
return tx.run(hentBehandling(eksternReferanse, oppgaver, merknad))
return tx.run(hentBehandling(eksternReferanse, oppgaver))
}

private fun hentBehandling(
eksternReferanse: String,
oppgaver: Collection<OppgaveV2>,
merknad: Merknad?
oppgaver: Collection<OppgaveV2>
): NullableResultQueryAction<Behandling> {
return queryOf(
"""
Expand All @@ -63,13 +50,12 @@ class OppgaveRepositoryV2(
FOR UPDATE
""",
mapOf("ekstern_referanse" to eksternReferanse)
).map { row -> row.tilBehandling(eksternReferanse, oppgaver, merknad) }.asSingle
).map { row -> row.tilBehandling(eksternReferanse, oppgaver) }.asSingle
}

private fun Row.tilBehandling(
eksternReferanse: String,
oppgaver: Collection<OppgaveV2>,
merknad: Merknad?
oppgaver: Collection<OppgaveV2>
): Behandling {
return Behandling(
id = long("id"),
Expand All @@ -81,7 +67,6 @@ class OppgaveRepositoryV2(
opprettet = localDateTime("opprettet"),
sistEndret = localDateTimeOrNull("sist_endret"),
søkersId = stringOrNull("soekers_id")?.let { Ident(it, Ident.IdType.AKTØRID) },
merknad = merknad,
data = null
).also {
it.ferdigstilt = localDateTimeOrNull("ferdigstilt_tidspunkt")
Expand Down Expand Up @@ -131,94 +116,6 @@ class OppgaveRepositoryV2(
}.asList
}

fun hentMerknader(eksternReferanse: String, inkluderSlettet: Boolean = false): List<Merknad> {
return using(sessionOf(dataSource)) { it.run(hentMerknaderQuery(eksternReferanse, inkluderSlettet)) }
}

fun hentMerknader(eksternReferanse: String, inkluderSlettet: Boolean = false, tx: TransactionalSession): List<Merknad> {
return tx.run(hentMerknaderQuery(eksternReferanse, inkluderSlettet))
}

private fun hentMerknaderQuery(eksternReferanse: String, inkluderSlettet: Boolean = false) : ListResultQueryAction<Merknad> {
return queryOf(
"""
select
id,
merknad_koder,
oppgave_ider,
oppgave_koder,
fritekst,
saksbehandler,
opprettet,
sist_endret,
slettet
from merknad
WHERE ekstern_referanse = :ekstern_referanse
and slettet = :slettet
""",
mapOf(
"ekstern_referanse" to eksternReferanse,
"slettet" to inkluderSlettet
)
).map { row -> Merknad(
oppgaveKoder = LosObjectMapper.instance.readValue(row.string("oppgave_koder")),
oppgaveIder = LosObjectMapper.instance.readValue(row.string("oppgave_ider")),
saksbehandler = row.stringOrNull("saksbehandler"),
opprettet = row.localDateTime("opprettet"),
sistEndret = row.localDateTimeOrNull("sist_endret"),
slettet = row.boolean("slettet")
).apply {
id = row.long("id")
merknadKoder = LosObjectMapper.instance.readValue(row.string("merknad_koder"))
fritekst = row.stringOrNull("fritekst")
}}.asList
}

data class EksternReferanseMerknad (val eksternReferanse: String, val merknad: Merknad)

fun hentAlleMerknader(): List<EksternReferanseMerknad> {
return using(sessionOf(dataSource)) { it.run(hentAlleMerknaderQuery()) }
}

fun hentAlleMerknader(tx: TransactionalSession): List<EksternReferanseMerknad> {
return tx.run(hentAlleMerknaderQuery())
}
private fun hentAlleMerknaderQuery() : ListResultQueryAction<EksternReferanseMerknad> {
return queryOf(
"""
select
ekstern_referanse,
id,
merknad_koder,
oppgave_ider,
oppgave_koder,
fritekst,
saksbehandler,
opprettet,
sist_endret,
slettet
from merknad
WHERE not slettet
""",
mapOf()
).map { row -> EksternReferanseMerknad(
eksternReferanse = row.string("ekstern_referanse"),
merknad = Merknad(
oppgaveKoder = LosObjectMapper.instance.readValue(row.string("oppgave_koder")),
oppgaveIder = LosObjectMapper.instance.readValue(row.string("oppgave_ider")),
saksbehandler = row.stringOrNull("saksbehandler"),
opprettet = row.localDateTime("opprettet"),
sistEndret = row.localDateTimeOrNull("sist_endret"),
slettet = row.boolean("slettet")
).apply {
id = row.long("id")
merknadKoder = LosObjectMapper.instance.readValue(row.string("merknad_koder"))
fritekst = row.stringOrNull("fritekst")
}
)}.asList
}


fun lagre(behandling: Behandling) {
using(sessionOf(dataSource)) {
it.transaction { tx ->
Expand All @@ -235,11 +132,6 @@ class OppgaveRepositoryV2(
oppgave.id?.also { tx.run(update(oppgave)) }
?: tx.updateAndReturnGeneratedKey(insert(dbId!!, oppgave))?.also { oppgave.id = it }
}

behandling.merknad?.let { merknad ->
merknad.id?.also { tx.run(update(merknad)) }
?: tx.updateAndReturnGeneratedKey(insert(dbId!!, behandling.eksternReferanse, merknad))?.also { merknad.id = it }
}
}

private fun insert(behandling: Behandling): Query {
Expand Down Expand Up @@ -372,60 +264,4 @@ class OppgaveRepositoryV2(
}


private fun update(merknad: Merknad): UpdateQueryAction {
return queryOf(
"""
UPDATE merknad SET
sist_endret = :sist_endret,
fritekst = :fritekst,
merknad_koder = :merknad_koder :: jsonb,
slettet = :slettet
WHERE id = :id
""", mapOf(
"id" to merknad.id,
"fritekst" to merknad.fritekst,
"sist_endret" to merknad.sistEndret,
"merknad_koder" to LosObjectMapper.instance.writeValueAsString(merknad.merknadKoder),
"slettet" to merknad.slettet
)
).asUpdate
}

private fun insert(behandlingId: Long, eksternReferanse: String, merknad: Merknad): Query {
return queryOf(
"""
insert into merknad (
behandling_id,
ekstern_referanse,
merknad_koder,
oppgave_koder,
oppgave_ider,
fritekst,
saksbehandler,
opprettet,
sist_endret
) VALUES (
:behandling_id,
:ekstern_referanse,
:merknad_koder :: jsonb,
:oppgave_koder :: jsonb,
:oppgave_ider :: jsonb,
:fritekst,
:saksbehandler,
:opprettet,
:sist_endret
)
""", mapOf(
"behandling_id" to behandlingId,
"ekstern_referanse" to eksternReferanse,
"merknad_koder" to LosObjectMapper.instance.writeValueAsString(merknad.merknadKoder),
"oppgave_koder" to LosObjectMapper.instance.writeValueAsString(merknad.oppgaveKoder),
"oppgave_ider" to LosObjectMapper.instance.writeValueAsString(merknad.oppgaveIder),
"fritekst" to merknad.fritekst,
"saksbehandler" to merknad.saksbehandler,
"opprettet" to merknad.opprettet,
"sist_endret" to merknad.sistEndret,
)
)
}
}
15 changes: 2 additions & 13 deletions src/main/kotlin/no/nav/k9/los/domene/modell/OppgaveKø.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import no.nav.k9.los.domene.lager.oppgave.Oppgave
import no.nav.k9.los.domene.repository.ReservasjonRepository
import no.nav.k9.los.tjenester.avdelingsleder.oppgaveko.AndreKriterierDto
import no.nav.k9.los.tjenester.avdelingsleder.oppgaveko.KriteriumDto
import no.nav.k9.los.tjenester.saksbehandler.merknad.Merknad
import org.slf4j.LoggerFactory
import java.time.LocalDate
import java.time.LocalDateTime
Expand Down Expand Up @@ -52,20 +51,17 @@ data class OppgaveKø(
fun leggOppgaveTilEllerFjernFraKø(
oppgave: Oppgave,
reservasjonRepository: ReservasjonRepository,
merknader: List<Merknad>
): Boolean {
return leggOppgaveTilEllerFjernFraKø(oppgave, { erOppgavenReservert(reservasjonRepository, it) }, merknader)
return leggOppgaveTilEllerFjernFraKø(oppgave, { erOppgavenReservert(reservasjonRepository, it) })
}

fun leggOppgaveTilEllerFjernFraKø(
oppgave: Oppgave,
erOppgavenReservertSjekk : (Oppgave) -> Boolean,
merknader: List<Merknad>
): Boolean {
val tilhørerOppgaveTilKø = tilhørerOppgaveTilKø(
oppgave = oppgave,
erOppgavenReservertSjekk = erOppgavenReservertSjekk,
merknader
)
if (tilhørerOppgaveTilKø) {
if (this.oppgaverOgDatoer.none { it.id == oppgave.eksternId }) {
Expand Down Expand Up @@ -95,15 +91,13 @@ data class OppgaveKø(
fun tilhørerOppgaveTilKø(
oppgave: Oppgave,
reservasjonRepository: ReservasjonRepository,
merknader: List<Merknad>
): Boolean {
return tilhørerOppgaveTilKø(oppgave, { erOppgavenReservert(reservasjonRepository, it) } , merknader )
return tilhørerOppgaveTilKø(oppgave, { erOppgavenReservert(reservasjonRepository, it) } )
}

fun tilhørerOppgaveTilKø(
oppgave: Oppgave,
erOppgavenReservertSjekk : (Oppgave) -> Boolean,
merknader: List<Merknad>
): Boolean {
if (!oppgave.aktiv) {
return false
Expand Down Expand Up @@ -132,11 +126,6 @@ data class OppgaveKø(
return false
}

if (merknadKoder.isEmpty() && merknader.isNotEmpty() || !merknader.flatMap { it.merknadKoder }
.containsAll(merknadKoder)) {
return false
}

if (oppgave.feilutbetaltBeløp != null && filtreringFeilutbetaling != null
&& filtreringFeilutbetaling!!.erUtenfor(oppgave.feilutbetaltBeløp)
) {
Expand Down
Loading

0 comments on commit 19616db

Please sign in to comment.