Skip to content

Commit

Permalink
Endret til ny kontrakt fra behandlingsflyt
Browse files Browse the repository at this point in the history
  • Loading branch information
frodeli committed Sep 25, 2024
1 parent e4a4c1b commit 37e6454
Show file tree
Hide file tree
Showing 10 changed files with 97 additions and 178 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package no.nav.aap.oppgave

import no.nav.aap.oppgave.opprett.Avklaringsbehovtype
import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode
import java.util.UUID

data class AvklaringsbehovReferanseDto(
val saksnummer: String? = null,
val referanse: UUID? = null,
val journalpostId: Long? = null,
val avklaringsbehovtype: Avklaringsbehovtype,
val avklaringsbehovKode: AvklaringsbehovKode,
)

This file was deleted.

4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
val ktorVersion = "2.3.12"
val komponenterVersjon = "0.0.69"
val tilgangVersjon = "0.0.11"
val behandlingsflytVersjon= "0.0.3"
val behandlingsflytVersjon= "0.0.5"

plugins {
id("oppgave.conventions")
Expand All @@ -21,7 +21,7 @@ dependencies {
implementation("no.nav.aap.kelvin:dbtest:$komponenterVersjon")
implementation("no.nav.aap.kelvin:infrastructure:$komponenterVersjon")
implementation("no.nav.aap.kelvin:server:$komponenterVersjon")
implementation("no.nav:ktor-openapi-generator:1.0.32")
implementation("no.nav:ktor-openapi-generator:1.0.34")
implementation("no.nav.aap.tilgang:api-kontrakt:$tilgangVersjon")
implementation("no.nav.aap.behandlingsflyt:kontrakt:$behandlingsflytVersjon")

Expand Down
5 changes: 2 additions & 3 deletions app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package no.nav.aap.oppgave

import no.nav.aap.komponenter.dbconnect.DBConnection
import no.nav.aap.oppgave.filter.FilterDto
import no.nav.aap.oppgave.opprett.Avklaringsbehovtype
import no.nav.aap.oppgave.plukk.NesteOppgaveDto
import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode
import no.nav.aap.oppgave.verdityper.OppgaveId
Expand Down Expand Up @@ -107,7 +106,7 @@ class OppgaveRepository(private val connection: DBConnection) {
saksnummer = it.getStringOrNull("SAKSNUMMER"),
referanse = it.getUUIDOrNull("BEHANDLING_REF"),
journalpostId = it.getLongOrNull("JOURNALPOST_ID"),
avklaringsbehovtype = Avklaringsbehovtype.fraKode(it.getString("AVKLARINGSBEHOV_TYPE"))
avklaringsbehovKode = AvklaringsbehovKode(it.getString("AVKLARINGSBEHOV_TYPE"))
)
)
}
Expand Down Expand Up @@ -209,7 +208,7 @@ class OppgaveRepository(private val connection: DBConnection) {
if (avklaringsbehovReferanse.saksnummer != null) setString(index++, avklaringsbehovReferanse.saksnummer)
if (avklaringsbehovReferanse.referanse != null) setUUID(index++, avklaringsbehovReferanse.referanse)
if (avklaringsbehovReferanse.journalpostId != null ) setLong(index++, avklaringsbehovReferanse.journalpostId)
setString(index++, avklaringsbehovReferanse.avklaringsbehovtype.kode)
setString(index++, avklaringsbehovReferanse.avklaringsbehovKode.kode)
}
setRowMapper { row ->
OppgaveId(row.getLong("ID"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,60 +1,66 @@
package no.nav.aap.oppgave.opprette

import no.nav.aap.behandlingsflyt.kontrakt.avklaringsbehov.Status
import no.nav.aap.behandlingsflyt.kontrakt.hendelse.AvklaringsbehovHendelseDto
import no.nav.aap.behandlingsflyt.kontrakt.hendelse.BehandlingFlytStoppetHendelse
import no.nav.aap.oppgave.OppgaveDto
import no.nav.aap.oppgave.opprett.AvklaringsbehovDto
import no.nav.aap.oppgave.opprett.Avklaringsbehovstatus
import no.nav.aap.oppgave.opprett.BehandlingshistorikkRequest
import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode
import java.time.LocalDateTime
import java.util.UUID


fun BehandlingshistorikkRequest.lagOppgave(ident: String): OppgaveDto? {
val åpentAvklaringsbehov = this.getÅpentAvklaringsbehov()
fun BehandlingFlytStoppetHendelse.lagOppgave(ident: String): OppgaveDto? {
val åpentAvklaringsbehov = this.finnÅpentAvklaringsbehov()
if (åpentAvklaringsbehov == null) {
return null
}
return when (åpentAvklaringsbehov.status) {
Avklaringsbehovstatus.OPPRETTET ->
Status.OPPRETTET ->
this.opprettNyOppgave(åpentAvklaringsbehov, ident)
Avklaringsbehovstatus.SENDT_TILBAKE_FRA_KVALITETSSIKRER, Avklaringsbehovstatus.SENDT_TILBAKE_FRA_BESLUTTER ->
Status.SENDT_TILBAKE_FRA_KVALITETSSIKRER, Status.SENDT_TILBAKE_FRA_BESLUTTER ->
this.gjenopprettOppgave(åpentAvklaringsbehov, ident)
else -> return null
}
}

fun BehandlingshistorikkRequest.hvemLøsteForrigeAvklaringsbehov(): String? {
fun BehandlingFlytStoppetHendelse.hvemLøsteForrigeAvklaringsbehov(): String? {
val avsluttedeAvklaringsbehov = avklaringsbehov
.filter { it.status == Avklaringsbehovstatus.AVSLUTTET }
.filter { it.status == Status.AVSLUTTET }
val løsteForrigeAvklaringsbehov = avsluttedeAvklaringsbehov
.map {it.endringer.sortedBy { it.tidsstempel }.last()}
.sortedBy { it.tidsstempel }
.lastOrNull()?.endretAv
return løsteForrigeAvklaringsbehov
}

private fun BehandlingshistorikkRequest.opprettNyOppgave(avklaringsbehov: AvklaringsbehovDto, ident: String): OppgaveDto {
private fun BehandlingFlytStoppetHendelse.opprettNyOppgave(avklaringsbehov: AvklaringsbehovHendelseDto, ident: String): OppgaveDto {
return OppgaveDto(
saksnummer = this.saksnummer,
behandlingRef = UUID.fromString(this.referanse),
saksnummer = this.saksnummer.toString(),
behandlingRef = this.referanse.referanse,
behandlingOpprettet = this.opprettetTidspunkt,
avklaringsbehovKode = AvklaringsbehovKode(avklaringsbehov.definisjon.type),
opprettetAv = ident,
opprettetTidspunkt = LocalDateTime.now()
)
}

private fun BehandlingshistorikkRequest.gjenopprettOppgave(avklaringsbehov: AvklaringsbehovDto, ident: String): OppgaveDto {
private fun BehandlingFlytStoppetHendelse.gjenopprettOppgave(avklaringsbehov: AvklaringsbehovHendelseDto, ident: String): OppgaveDto {
val oppgaveDto = this.opprettNyOppgave(avklaringsbehov, ident)
val sistEndretAv = avklaringsbehov.sistEndretAv()
oppgaveDto.copy(reservertAv = sistEndretAv, reservertTidspunkt = LocalDateTime.now())
return oppgaveDto
}

private fun AvklaringsbehovDto.sistEndretAv(): String? {
private fun AvklaringsbehovHendelseDto.sistEndretAv(): String? {
return endringer
.sortedByDescending { it.tidsstempel }
.filter { it.status == this.status }
.map { it.endretAv }
.firstOrNull()
}

fun BehandlingFlytStoppetHendelse.finnÅpentAvklaringsbehov() = avklaringsbehov.firstOrNull {
it.status in setOf(
Status.OPPRETTET,
Status.SENDT_TILBAKE_FRA_BESLUTTER,
Status.SENDT_TILBAKE_FRA_KVALITETSSIKRER
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ import com.papsign.ktor.openapigen.route.response.respondWithStatus
import com.papsign.ktor.openapigen.route.route
import io.ktor.http.HttpStatusCode
import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
import no.nav.aap.behandlingsflyt.kontrakt.hendelse.BehandlingFlytStoppetHendelse
import no.nav.aap.komponenter.dbconnect.transaction
import no.nav.aap.komponenter.httpklient.auth.token
import no.nav.aap.oppgave.AvklaringsbehovReferanseDto
import no.nav.aap.oppgave.verdityper.OppgaveId
import no.nav.aap.oppgave.OppgaveRepository
import no.nav.aap.oppgave.metriker.httpCallCounter
import no.nav.aap.oppgave.opprett.Avklaringsbehovtype
import no.nav.aap.oppgave.opprett.BehandlingshistorikkRequest
import no.nav.aap.oppgave.plukk.ReserverOppgaveService
import no.nav.aap.oppgave.server.authenticate.ident
import org.slf4j.LoggerFactory
Expand All @@ -24,7 +23,7 @@ private val log = LoggerFactory.getLogger("OpprettOppgaveAPI")

fun NormalOpenAPIRoute.opprettOppgaveApi(dataSource: DataSource, prometheus: PrometheusMeterRegistry) =

route("/opprett-oppgave").post<Unit, OppgaveId, BehandlingshistorikkRequest> { _, request ->
route("/opprett-oppgave").post<Unit, OppgaveId, BehandlingFlytStoppetHendelse> { _, request ->
prometheus.httpCallCounter("/opprett-oppgave").increment()
val oppgave = request.lagOppgave(ident())
if (oppgave != null) {
Expand All @@ -36,7 +35,7 @@ fun NormalOpenAPIRoute.opprettOppgaveApi(dataSource: DataSource, prometheus: Pro
oppgave.saksnummer,
oppgave.behandlingRef,
oppgave.journalpostId,
Avklaringsbehovtype.fraKode(oppgave.avklaringsbehovKode.kode)
oppgave.avklaringsbehovKode
)
val reserverteOppgaver = ReserverOppgaveService(connection).reserverOppgave(avklaringsbehovReferanse, hvemLøsteForrigeAvklaringsbehovIdent, token())
if (reserverteOppgaver.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class PlukkOppgaveService(val connection: DBConnection) {
val tilgangRequest = TilgangRequest(
saksnummer = nesteOppgave.avklaringsbehovReferanse.saksnummer!!,
behandlingsreferanse = nesteOppgave.avklaringsbehovReferanse.referanse?.toString(),
avklaringsbehovKode = nesteOppgave.avklaringsbehovReferanse.avklaringsbehovtype.kode,
avklaringsbehovKode = nesteOppgave.avklaringsbehovReferanse.avklaringsbehovKode.kode,
operasjon = Operasjon.SAKSBEHANDLE
)
if (TilgangGateway.harTilgang(tilgangRequest, token)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class ReserverOppgaveService(val connection: DBConnection) {
val tilgangRequest = TilgangRequest(
saksnummer = avklaringsbehovReferanse.saksnummer,
behandlingsreferanse = avklaringsbehovReferanse.referanse?.toString(),
avklaringsbehovKode = avklaringsbehovReferanse.avklaringsbehovtype.kode,
avklaringsbehovKode = avklaringsbehovReferanse.avklaringsbehovKode.kode,
operasjon = Operasjon.SAKSBEHANDLE
)
if (TilgangGateway.harTilgang(tilgangRequest, token)) {
Expand Down
Loading

0 comments on commit 37e6454

Please sign in to comment.