Skip to content

Commit

Permalink
Sjekk om søknad har eøs steg for å sette kategori når vi oppretter be…
Browse files Browse the repository at this point in the history
…handling i ks/ba-sak (#1098)
  • Loading branch information
UyQuangNguyen authored May 28, 2024
1 parent 4aa0333 commit 5d7a4a6
Show file tree
Hide file tree
Showing 18 changed files with 113 additions and 66 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package no.nav.familie.baks.mottak.integrasjoner

import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadRepository
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.harEøsSteg
import no.nav.familie.kontrakter.felles.Behandlingstema
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.oppgave.Behandlingstype
import org.springframework.stereotype.Service

@Service
class BarnetrygdOppgaveMapper(hentEnhetClient: HentEnhetClient, pdlClient: PdlClient) :
class BarnetrygdOppgaveMapper(hentEnhetClient: HentEnhetClient, pdlClient: PdlClient, valknadRepository: SøknadRepository) :
AbstractOppgaveMapper(hentEnhetClient, pdlClient) {
override val tema: Tema = Tema.BAR

Expand All @@ -30,13 +32,17 @@ class BarnetrygdOppgaveMapper(hentEnhetClient: HentEnhetClient, pdlClient: PdlCl

override fun hentBehandlingstypeVerdi(journalpost: Journalpost): String? = hentBehandlingstype(journalpost)?.value

fun utledBehandlingKategori(journalpost: Journalpost) =
when {
erEØS(journalpost) -> BehandlingKategori.EØS
fun utledBehandlingKategoriFraSøknad(journalpost: Journalpost): BehandlingKategori {
check(journalpost.erBarnetrygdSøknad()) { "Journalpost m/ id ${journalpost.journalpostId} er ikke en barnetrygd søknad" }
val søknad = søknadRepository.getByJournalpostId(journalpost.journalpostId)

return when {
søknad.harEøsSteg() -> BehandlingKategori.EØS
else -> BehandlingKategori.NASJONAL
}
}

fun utledBehandlingUnderkategori(journalpost: Journalpost) =
fun utledBehandlingUnderkategoriFraSøknad(journalpost: Journalpost) =
when {
journalpost.erBarnetrygdUtvidetSøknad() -> BehandlingUnderkategori.UTVIDET
else -> BehandlingUnderkategori.ORDINÆR
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package no.nav.familie.baks.mottak.integrasjoner

import no.nav.familie.baks.mottak.søknad.kontantstøtte.domene.KontantstøtteSøknadRepository
import no.nav.familie.baks.mottak.søknad.kontantstøtte.domene.harEøsSteg
import no.nav.familie.kontrakter.felles.Behandlingstema
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.oppgave.Behandlingstype
Expand All @@ -9,6 +11,7 @@ import org.springframework.stereotype.Service
class KontantstøtteOppgaveMapper(
hentEnhetClient: HentEnhetClient,
pdlClient: PdlClient,
val kontantstøtteSøknadRepository: KontantstøtteSøknadRepository,
) : AbstractOppgaveMapper(hentEnhetClient, pdlClient) {
override val tema: Tema = Tema.KON

Expand All @@ -26,4 +29,15 @@ class KontantstøtteOppgaveMapper(
else -> Behandlingstype.NASJONAL
}
}

fun utledBehandlingKategoriFraSøknad(journalpost: Journalpost): BehandlingKategori {
check(journalpost.erKontantstøtteSøknad()) { "Journalpost m/ id ${journalpost.journalpostId} er ikke en kontantstøtte søknad" }

val søknad = kontantstøtteSøknadRepository.getByJournalpostId(journalpost.journalpostId)

return when {
søknad.harEøsSteg() -> BehandlingKategori.EØS
else -> BehandlingKategori.NASJONAL
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ data class RestFagsak(

data class RestUtvidetBehandling(
val aktiv: Boolean,
val arbeidsfordelingPåBehandling: RestArbeidsfordelingPåBehandling,
val arbeidsfordelingPåBehandling: RestArbeidsfordelingPåBehandling?,
val behandlingId: Long,
val kategori: BehandlingKategori,
val opprettetTidspunkt: LocalDateTime,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.familie.baks.mottak.søknad

import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.BarnetrygdSøknaddokumentasjon
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBBarnetrygdSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBVedlegg
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV7
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV8
Expand All @@ -25,7 +25,7 @@ object ArkiverDokumentRequestMapper {
private val BARNETRYGD_ID_UTVIDET_POSTFIX = "NAV_33-00.09"

fun toDto(
dbSøknad: DBSøknad,
dbBarnetrygdSøknad: DBBarnetrygdSøknad,
versjonertSøknad: VersjonertSøknad,
pdf: ByteArray,
vedleggMap: Map<String, DBVedlegg>,
Expand Down Expand Up @@ -55,7 +55,7 @@ object ArkiverDokumentRequestMapper {

val søknadsdokumentJson =
Dokument(
dokument = dbSøknad.søknadJson.toByteArray(),
dokument = dbBarnetrygdSøknad.søknadJson.toByteArray(),
filtype = Filtype.JSON,
filnavn = null,
tittel = "SØKNAD_${dokumenttype}_JSON",
Expand All @@ -76,7 +76,7 @@ object ArkiverDokumentRequestMapper {
)

return ArkiverDokumentRequest(
fnr = dbSøknad.fnr,
fnr = dbBarnetrygdSøknad.fnr,
forsøkFerdigstill = false,
hoveddokumentvarianter = listOf(søknadsdokumentPdf, søknadsdokumentJson),
vedleggsdokumenter =
Expand All @@ -86,7 +86,7 @@ object ArkiverDokumentRequestMapper {
pdfOriginalSpråk,
Dokumenttype.BARNETRYGD_VEDLEGG,
),
eksternReferanseId = genererEksternReferanseId(dbSøknad.id, dokumenttype),
eksternReferanseId = genererEksternReferanseId(dbBarnetrygdSøknad.id, dokumenttype),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package no.nav.familie.baks.mottak.søknad

import no.nav.familie.baks.mottak.integrasjoner.DokarkivClient
import no.nav.familie.baks.mottak.søknad.barnetrygd.BarnetrygdSøknadService
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBBarnetrygdSøknad
import no.nav.familie.baks.mottak.søknad.kontantstøtte.KontantstøtteSøknadService
import no.nav.familie.baks.mottak.søknad.kontantstøtte.domene.DBKontantstøtteSøknad
import no.nav.familie.kontrakter.felles.dokarkiv.v2.ArkiverDokumentRequest
Expand All @@ -17,30 +17,30 @@ class JournalføringService(
private val kontantstøtteSøknadService: KontantstøtteSøknadService,
) {
fun journalførBarnetrygdSøknad(
dbSøknad: DBSøknad,
dbBarnetrygdSøknad: DBBarnetrygdSøknad,
pdf: ByteArray,
pdfOriginalSpråk: ByteArray = ByteArray(0),
) {
if (dbSøknad.journalpostId == null) {
val vedlegg = barnetrygdSøknadService.hentLagredeVedlegg(dbSøknad)
if (dbBarnetrygdSøknad.journalpostId == null) {
val vedlegg = barnetrygdSøknadService.hentLagredeVedlegg(dbBarnetrygdSøknad)

val arkiverDokumentRequest =
ArkiverDokumentRequestMapper.toDto(
dbSøknad = dbSøknad,
versjonertSøknad = dbSøknad.hentVersjonertSøknad(),
dbBarnetrygdSøknad = dbBarnetrygdSøknad,
versjonertSøknad = dbBarnetrygdSøknad.hentVersjonertSøknad(),
pdf = pdf,
vedleggMap = vedlegg,
pdfOriginalSpråk = pdfOriginalSpråk,
)
val journalpostId: String = arkiverSøknad(arkiverDokumentRequest)
val dbSøknadMedJournalpostId = dbSøknad.copy(journalpostId = journalpostId)
val dbSøknadMedJournalpostId = dbBarnetrygdSøknad.copy(journalpostId = journalpostId)
barnetrygdSøknadService.lagreDBSøknad(dbSøknadMedJournalpostId)
log.info("Søknaden er journalført og lagret til database")

barnetrygdSøknadService.slettLagredeVedlegg(dbSøknad)
barnetrygdSøknadService.slettLagredeVedlegg(dbBarnetrygdSøknad)
log.info("Vedlegg for søknad slettet fra database etter journalføring")
} else {
log.warn("Søknaden har allerede blitt journalført med journalpostId: ${dbSøknad.journalpostId}")
log.warn("Søknaden har allerede blitt journalført med journalpostId: ${dbBarnetrygdSøknad.journalpostId}")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.familie.baks.mottak.søknad

import no.nav.familie.baks.mottak.integrasjoner.PdfClient
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBBarnetrygdSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV7
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV8
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.VersjonertSøknad
Expand All @@ -24,7 +24,7 @@ class PdfService(
) {
fun lagBarnetrygdPdf(
versjonertSøknad: VersjonertSøknad,
dbSøknad: DBSøknad,
dbBarnetrygdSøknad: DBBarnetrygdSøknad,
språk: String = "nb",
): ByteArray {
val barnetrygdSøknadMapForSpråk =
Expand All @@ -45,8 +45,8 @@ class PdfService(
val ekstraFelterMap =
hentEkstraFelter(
navn = navn.verdi.getValue("nb"),
opprettetTid = dbSøknad.opprettetTid,
fnr = dbSøknad.fnr,
opprettetTid = dbBarnetrygdSøknad.opprettetTid,
fnr = dbBarnetrygdSøknad.fnr,
label =
when (søknadstype) {
Søknadstype.UTVIDET -> "Søknad om utvidet barnetrygd"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.familie.baks.mottak.søknad.barnetrygd

import no.nav.familie.baks.mottak.integrasjoner.FamilieDokumentClient
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBBarnetrygdSøknad
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.DBVedlegg
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.FødselsnummerErNullException
import no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadRepository
Expand All @@ -28,7 +28,7 @@ class BarnetrygdSøknadService(
) {
@Transactional
@Throws(FødselsnummerErNullException::class)
fun motta(versjonertSøknad: VersjonertSøknad): DBSøknad {
fun motta(versjonertSøknad: VersjonertSøknad): DBBarnetrygdSøknad {
val (dbSøknad, dokumentasjon) =
when (versjonertSøknad) {
is SøknadV7 -> {
Expand All @@ -45,7 +45,7 @@ class BarnetrygdSøknadService(
val properties = Properties().apply { this["søkersFødselsnummer"] = dbSøknad.fnr }

// Vi må hente vedleggene nå mens vi har gyldig on-behalf-of-token for brukeren
hentOgLagreSøknadvedlegg(dbSøknad = dbSøknad, søknaddokumentasjonsliste = dokumentasjon)
hentOgLagreSøknadvedlegg(dbBarnetrygdSøknad = dbSøknad, søknaddokumentasjonsliste = dokumentasjon)

taskService.save(
Task(
Expand All @@ -57,34 +57,34 @@ class BarnetrygdSøknadService(
return dbSøknad
}

fun lagreDBSøknad(dbSøknad: DBSøknad): DBSøknad {
return søknadRepository.save(dbSøknad)
fun lagreDBSøknad(dbBarnetrygdSøknad: DBBarnetrygdSøknad): DBBarnetrygdSøknad {
return søknadRepository.save(dbBarnetrygdSøknad)
}

fun hentDBSøknad(søknadId: Long): DBSøknad? {
fun hentDBSøknad(søknadId: Long): DBBarnetrygdSøknad? {
return søknadRepository.hentDBSøknad(søknadId)
}

fun hentLagredeVedlegg(søknad: DBSøknad): Map<String, DBVedlegg> {
fun hentLagredeVedlegg(søknad: DBBarnetrygdSøknad): Map<String, DBVedlegg> {
val map = mutableMapOf<String, DBVedlegg>()
vedleggRepository.hentAlleVedlegg(søknad.id).forEach {
map.putIfAbsent(it.dokumentId, it)
}
return map
}

fun slettLagredeVedlegg(søknad: DBSøknad) {
fun slettLagredeVedlegg(søknad: DBBarnetrygdSøknad) {
vedleggRepository.slettAlleVedlegg(søknad.id)
}

private fun hentOgLagreSøknadvedlegg(
dbSøknad: DBSøknad,
dbBarnetrygdSøknad: DBBarnetrygdSøknad,
knaddokumentasjonsliste: List<Søknaddokumentasjon>,
) {
søknaddokumentasjonsliste.forEach { søknaddokumentasjon ->
søknaddokumentasjon.opplastedeVedlegg.forEach { vedlegg ->
val vedleggDokument = vedleggClient.hentVedlegg(dokumentId = vedlegg.dokumentId)
vedleggRepository.save(vedlegg.tilDBVedlegg(dbSøknad, vedleggDokument))
vedleggRepository.save(vedlegg.tilDBVedlegg(dbBarnetrygdSøknad, vedleggDokument))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ import org.springframework.stereotype.Repository
import org.springframework.transaction.annotation.Transactional

@Repository
interface SøknadRepository : JpaRepository<DBSøknad, String> {
interface SøknadRepository : JpaRepository<DBBarnetrygdSøknad, String> {
@Query(value = "SELECT s FROM Soknad s WHERE s.id = :soknadId")
fun hentDBSøknad(soknadId: Long): DBSøknad?
fun hentDBSøknad(soknadId: Long): DBBarnetrygdSøknad?

@Query(
"SELECT s FROM Soknad s ORDER BY s.opprettetTid DESC LIMIT 1",
)
fun finnSisteLagredeSøknad(): DBSøknad
fun finnSisteLagredeSøknad(): DBBarnetrygdSøknad

fun getByJournalpostId(journalpostId: String): DBBarnetrygdSøknad
}

@Repository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import no.nav.familie.kontrakter.ba.søknad.v8.Søknad as SøknadV8

@Entity(name = "Soknad")
@Table(name = "Soknad")
data class DBSøknad(
data class DBBarnetrygdSøknad(
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "soknad_seq_generator")
@SequenceGenerator(name = "soknad_seq_generator", sequenceName = "soknad_seq", allocationSize = 50)
Expand Down Expand Up @@ -76,9 +76,9 @@ interface Vedlegg {
val data: ByteArray
}

fun SøknadV7.tilDBSøknad(): DBSøknad {
fun SøknadV7.tilDBSøknad(): DBBarnetrygdSøknad {
try {
return DBSøknad(
return DBBarnetrygdSøknad(
søknadJson = objectMapper.writeValueAsString(this),
fnr = this.søker.ident.verdi.getValue("nb"),
)
Expand All @@ -87,9 +87,9 @@ fun SøknadV7.tilDBSøknad(): DBSøknad {
}
}

fun SøknadV8.tilDBSøknad(): DBSøknad {
fun SøknadV8.tilDBSøknad(): DBBarnetrygdSøknad {
try {
return DBSøknad(
return DBBarnetrygdSøknad(
søknadJson = objectMapper.writeValueAsString(this),
fnr = this.søker.ident.verdi.getValue("nb"),
)
Expand All @@ -99,7 +99,7 @@ fun SøknadV8.tilDBSøknad(): DBSøknad {
}

fun Søknadsvedlegg.tilDBVedlegg(
knad: DBSøknad,
knad: DBBarnetrygdSøknad,
data: ByteArray,
): DBVedlegg {
return DBVedlegg(
Expand All @@ -109,4 +109,13 @@ fun Søknadsvedlegg.tilDBVedlegg(
)
}

fun DBBarnetrygdSøknad.harEøsSteg(): Boolean {
val versjonertSøknad = this.hentVersjonertSøknad()

return when (versjonertSøknad) {
is no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV7 -> versjonertSøknad.søknad.søker.harEøsSteg
is no.nav.familie.baks.mottak.søknad.barnetrygd.domene.SøknadV8 -> versjonertSøknad.søknad.søker.harEøsSteg
}
}

class FødselsnummerErNullException : Exception()
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ data class DBKontantstøtteSøknad(
}
}

fun DBKontantstøtteSøknad.harEøsSteg(): Boolean {
val versjonertSøknad = this.hentVersjonertKontantstøtteSøknad()

return when (versjonertSøknad) {
is no.nav.familie.baks.mottak.søknad.kontantstøtte.domene.KontantstøtteSøknadV3 -> versjonertSøknad.kontantstøtteSøknad.søker.harEøsSteg
is no.nav.familie.baks.mottak.søknad.kontantstøtte.domene.KontantstøtteSøknadV4 -> versjonertSøknad.kontantstøtteSøknad.søker.harEøsSteg
}
}

@Entity(name = "kontantstotte_soknad_vedlegg")
@Table(name = "kontantstotte_soknad_vedlegg")
data class DBKontantstotteVedlegg(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ interface KontantstøtteSøknadRepository : JpaRepository<DBKontantstøtteSøkna
"SELECT s FROM kontantstotte_soknad s ORDER BY s.opprettetTid DESC LIMIT 1",
)
fun finnSisteLagredeSøknad(): DBKontantstøtteSøknad

fun getByJournalpostId(journalpostId: String): DBKontantstøtteSøknad
}

@Repository
Expand Down
Loading

0 comments on commit 5d7a4a6

Please sign in to comment.