Skip to content

Commit

Permalink
Fletter inn et behandling-opprettet event mot dvh hvis det mangler (#…
Browse files Browse the repository at this point in the history
…1765)

* Lager et kunstig behandling-opprettet event hvis behandling-avsluttet event er det eneste

* Bruker versjon(nummer) istedenfor ekstern_versjon, som er event-tid.

Bruker mottattDato som registrertDato ved innskutt opprettet-event, og setter vedtaksDato null.
  • Loading branch information
baskevold authored Nov 28, 2023
1 parent 4ea5d17 commit fcef2bb
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,44 @@ class K9SakOppgaveTilDVHMapper {
val zoneId = ZoneId.of("Europe/Oslo")
}

fun lagBehandling(oppgave: Oppgave): Behandling {
fun lagBehandlinger(oppgave: Oppgave): List<Behandling> {
val behandlingstatus = BehandlingStatus.fraKode(oppgave.hentVerdi("behandlingsstatus"))
val behandlinger = mutableListOf<Behandling>()
if (behandlingstatus == BehandlingStatus.AVSLUTTET) {
if (oppgave.versjon == 0) {
val mottattDato = LocalDateTime.parse(oppgave.hentVerdi("mottattDato")).toLocalDate()
behandlinger.add(lagBehandling(
oppgave,
vedtaksDato = null,
registrertDato = mottattDato,
behandlingStatus = BehandlingStatus.OPPRETTET)
)
}
}
behandlinger.add(lagBehandling(oppgave, behandlingStatus = behandlingstatus))
return behandlinger
}

fun lagBehandling(
oppgave: Oppgave,
vedtaksDato: LocalDate? = oppgave.hentVerdi("vedtaksDato")?.let { LocalDate.parse(it) },
registrertDato: LocalDate = LocalDateTime.parse(oppgave.hentVerdi("registrertDato")).toLocalDate(),
behandlingStatus: BehandlingStatus
): Behandling {
return Behandling(
sakId = oppgave.hentVerdi("saksnummer"),
behandlingId = oppgave.eksternId,
funksjonellTid = LocalDateTime.parse(oppgave.eksternVersjon).atZone(zoneId).toOffsetDateTime(),
tekniskTid = OffsetDateTime.now(zoneId),
mottattDato = LocalDateTime.parse(oppgave.hentVerdi("mottattDato")).toLocalDate(),
registrertDato = LocalDateTime.parse(oppgave.hentVerdi("registrertDato")).toLocalDate(),
vedtaksDato = oppgave.hentVerdi("vedtaksDato")
?.let { LocalDate.parse(it) },
registrertDato = registrertDato,
vedtaksDato = vedtaksDato,
relatertBehandlingId = null,
vedtakId = oppgave.hentVerdi("vedtakId"), //TODO: callback mot K9? evt vedtakstopic, YtelseV1.vedtakReferanse
saksnummer = oppgave.hentVerdi("saksnummer"),
behandlingType = oppgave.hentVerdi("behandlingTypekode")
?.let { BehandlingType.fraKode(it).kode },
behandlingStatus = BehandlingStatus.fraKode(oppgave.hentVerdi("behandlingsstatus")).kode,
behandlingStatus = behandlingStatus.kode,
resultat = oppgave.hentVerdi("resultattype"),
resultatBegrunnelse = null, //TODO: callback mot K9?
utenlandstilsnitt = utledUtenlandstilsnitt(oppgave),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import no.nav.k9.los.domene.lager.oppgave.v2.TransactionalManager
import no.nav.k9.los.integrasjon.abac.IPepClient
import no.nav.k9.los.nyoppgavestyring.mottak.oppgavetype.OppgavetypeRepository
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository
import no.nav.k9.statistikk.kontrakter.JsonSchemas.behandling
import org.slf4j.LoggerFactory
import java.time.LocalDateTime
import java.util.concurrent.TimeUnit
Expand Down Expand Up @@ -95,9 +96,15 @@ class OppgavestatistikkTjeneste(
val erKode6 = runBlocking { pepClient.erSakKode6(sak.saksnummer) }
if (erKode6) {
sak = nullUtEventuelleSensitiveFelter(sak)
behandling = nullUtEventuelleSensitiveFelter(behandling)
}
statistikkPublisher.publiser(sak, behandling)

behandling.map {
if (erKode6) {
nullUtEventuelleSensitiveFelter(it)
} else it
}.forEach {
statistikkPublisher.publiser(sak, it)
}
}

private fun nullUtEventuelleSensitiveFelter(sak: Sak): Sak {
Expand All @@ -113,26 +120,20 @@ class OppgavestatistikkTjeneste(
)
}

private fun byggOppgavestatistikk(oppgaveId: Long, tx: TransactionalSession): Pair<Sak, Behandling> {
private fun byggOppgavestatistikk(oppgaveId: Long, tx: TransactionalSession): Pair<Sak, List<Behandling>> {
val oppgave = oppgaveRepository.hentOppgaveForId(tx, oppgaveId)

var behandling: Behandling
var sak: Sak
when (oppgave.oppgavetype.eksternId) {
"k9sak" -> {
behandling = K9SakOppgaveTilDVHMapper().lagBehandling(oppgave)
sak = K9SakOppgaveTilDVHMapper().lagSak(oppgave)
}

"k9klage" -> {
behandling = K9KlageOppgaveTilDVHMapper().lagBehandling(oppgave)
sak = K9KlageOppgaveTilDVHMapper().lagSak(oppgave)
}

return when (oppgave.oppgavetype.eksternId) {
"k9sak" -> Pair(
K9SakOppgaveTilDVHMapper().lagSak(oppgave),
K9SakOppgaveTilDVHMapper().lagBehandlinger(oppgave)
)
"k9klage" -> Pair(
K9KlageOppgaveTilDVHMapper().lagSak(oppgave),
listOf(K9KlageOppgaveTilDVHMapper().lagBehandling(oppgave))
)
else -> throw IllegalStateException("Ukjent oppgavetype for sending til DVH: ${oppgave.oppgavetype.eksternId}")
}

return Pair(sak, behandling)
}

fun slettStatistikkgrunnlag() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ data class Oppgave(
val status: String, //TODO: definere typer/enum
val endretTidspunkt: LocalDateTime,
val kildeområde: String,
val felter: List<Oppgavefelt>
val felter: List<Oppgavefelt>,
val versjon: Int,
) {
fun hentVerdi(feltnavn: String): String? {
val oppgavefelt = hentOppgavefelt(feltnavn)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ class OppgaveRepository(
status = row.string("status"),
endretTidspunkt = row.localDateTime("endret_tidspunkt"),
kildeområde = row.string("kildeomrade"),
felter = hentOppgavefelter(tx, row.long("id"))
felter = hentOppgavefelter(tx, row.long("id")),
versjon = row.int("versjon")
)
}.asSingle
) ?: throw IllegalStateException("Fant ikke oppgave med eksternId $eksternId")
Expand All @@ -55,7 +56,8 @@ class OppgaveRepository(
status = row.string("status"),
endretTidspunkt = row.localDateTime("endret_tidspunkt"),
kildeområde = row.string("kildeomrade"),
felter = hentOppgavefelter(tx, row.long("id"))
felter = hentOppgavefelter(tx, row.long("id")),
versjon = row.int("versjon")
)
}.asSingle
) ?: throw IllegalStateException("Fant ikke oppgave med id $id")
Expand Down

0 comments on commit fcef2bb

Please sign in to comment.