Skip to content

Commit

Permalink
Generell utsetting av oppgaver, der også opprettelse av forelder-barn…
Browse files Browse the repository at this point in the history
…-relasjon-hendelser skal forsinkes med en uke (#545)

* Refaktorerer DødsfallOppgave til ForsinketOppgave sånn at vi kan legge til forsinkelser generelt, og da også for relasjonshendelser
  • Loading branch information
throndi authored Sep 16, 2024
1 parent dee3d60 commit 385efe9
Show file tree
Hide file tree
Showing 19 changed files with 307 additions and 289 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class DodsfallHandler(
) : PersonhendelseHandler {
override val type = PersonhendelseType.DØDSFALL

override fun lagOppgaveInformasjon(personhendelse: Personhendelse): OppgaveInformasjon = UtsettDødsfallOppgave(beskrivelse = "Dødsfall med dødsdato: ${personhendelse.doedsfall.doedsdato.tilNorskDatoformat()}")
override fun lagOppgaveInformasjon(personhendelse: Personhendelse): OppgaveInformasjon = UtsettOppgave(beskrivelse = "Dødsfall med dødsdato: ${personhendelse.doedsfall.doedsdato.tilNorskDatoformat()}")

override fun personidenterPerPersonSomSkalKontrolleres(personhendelse: Personhendelse): List<Set<String>> {
val personIdenter = personhendelse.identerUtenAktørId()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ import org.springframework.stereotype.Component
class DødfødtBarnHandler : PersonhendelseHandler {
override val type = PersonhendelseType.DØDFØDT_BARN

override fun lagOppgaveInformasjon(personhendelse: Personhendelse): OppgaveInformasjon = UtsettDødsfallOppgave(beskrivelse = "Dødfødt barn ${personhendelse.doedfoedtBarn.dato.tilNorskDatoformat()}")
override fun lagOppgaveInformasjon(personhendelse: Personhendelse): OppgaveInformasjon = UtsettOppgave(beskrivelse = "Dødfødt barn ${personhendelse.doedfoedtBarn.dato.tilNorskDatoformat()}")
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,36 +39,36 @@ class ForelderBarnHandler(
val nyeBarnSomIkkeFinnesPåBehandlingen = nyeBarnForBruker.filtrerÅrsak(NyttBarnÅrsak.BARN_FINNES_IKKE_PÅ_BEHANDLING)

if (barnFødtFørTermin.isNotEmpty()) {
return opprettOppgaveBarnFødtFørTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtFørTermin)
return opprettOppgaveInformasjonBarnFødtFørTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtFørTermin)
}
if (barnFødtEtterTermin.isNotEmpty()) {
return opprettOppgaveBarnFødtEtterTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtEtterTermin)
return opprettOppgaveInformasjonBarnFødtEtterTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtEtterTermin)
}

return OpprettOppgave(
return UtsettOppgave(
"Bruker har fått et nytt/nye barn ${nyeBarnSomIkkeFinnesPåBehandlingen.separerteIdenterMedStønadstype()} som ikke finnes på behandling.",
)
}

private fun opprettOppgaveBarnFødtFørTermin(
private fun opprettOppgaveInformasjonBarnFødtFørTermin(
nyeBarnSomIkkeFinnesPåBehandlingen: List<NyttBarn>,
barnFødtFørTermin: List<NyttBarn>,
): OpprettOppgave {
): OppgaveInformasjon {
val nyeBarnTekst = nyeBarnTekst(nyeBarnSomIkkeFinnesPåBehandlingen)
return OpprettOppgave(
return UtsettOppgave(
"Bruker er innvilget stønad for ufødt(e) barn ${barnFødtFørTermin.separerteIdenterMedStønadstype()}. " +
"Barnet er registrert født i måneden før oppgitt termindato. " +
nyeBarnTekst +
"Vurder saken.",
)
}

private fun opprettOppgaveBarnFødtEtterTermin(
private fun opprettOppgaveInformasjonBarnFødtEtterTermin(
nyeBarnSomIkkeFinnesPåBehandlingen: List<NyttBarn>,
barnFødtEtterTermin: List<NyttBarn>,
): OpprettOppgave {
): OppgaveInformasjon {
val nyeBarnTekst = nyeBarnTekst(nyeBarnSomIkkeFinnesPåBehandlingen)
return OpprettOppgave(
return UtsettOppgave(
"Bruker er innvilget stønad for ufødt(e) barn ${barnFødtEtterTermin.separerteIdenterMedStønadstype()}. " +
"Barnet er registrert født i måneden etter oppgitt termindato. " +
nyeBarnTekst +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ data class OpprettOppgave(
val beskrivelse: String,
) : OppgaveInformasjon()

data class UtsettDødsfallOppgave(
data class UtsettOppgave(
val beskrivelse: String,
) : OppgaveInformasjon()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import no.nav.familie.ef.personhendelse.Hendelse
import no.nav.familie.ef.personhendelse.client.OppgaveClient
import no.nav.familie.ef.personhendelse.client.SakClient
import no.nav.familie.ef.personhendelse.client.opprettVurderLivshendelseoppgave
import no.nav.familie.ef.personhendelse.dødsfalloppgaver.DødsfallOppgaveService
import no.nav.familie.ef.personhendelse.personhendelsemapping.PersonhendelseRepository
import no.nav.familie.ef.personhendelse.util.identerUtenAktørId
import no.nav.familie.ef.personhendelse.utsattoppgave.UtsattOppgaveService
import no.nav.familie.kontrakter.felles.oppgave.IdentGruppe
import no.nav.familie.kontrakter.felles.oppgave.Oppgave
import no.nav.familie.kontrakter.felles.oppgave.StatusEnum
Expand All @@ -24,7 +24,7 @@ class PersonhendelseService(
private val sakClient: SakClient,
private val oppgaveClient: OppgaveClient,
private val personhendelseRepository: PersonhendelseRepository,
private val dsfallOppgaveService: DødsfallOppgaveService,
private val utsattOppgaveService: UtsattOppgaveService,
) {
private val logger: Logger = LoggerFactory.getLogger(javaClass)
private val secureLogger: Logger = LoggerFactory.getLogger("secureLogger")
Expand Down Expand Up @@ -86,8 +86,8 @@ class PersonhendelseService(
oppgaveInformasjon.beskrivelse,
personIdent,
)
is UtsettDødsfallOppgave ->
dødsfallOppgaveService.lagreDødsfallOppgave(
is UtsettOppgave ->
utsattOppgaveService.lagreUtsattOppgave(
personhendelse,
handlers[personhendelse.opplysningstype]?.type ?: error("Kunne ikke finne personopplysningstype"),
personIdent,
Expand All @@ -97,17 +97,17 @@ class PersonhendelseService(
}

@Transactional
fun opprettOppgaverAvUkesgamleDødsfallhendelser() {
val dødsfallOppgaver = dødsfallOppgaveService.hentIkkeOpprettedeDødsfalloppgaverOverEnUkeTilbakeITid()
dødsfallOppgaver.forEach { dødsfallOppgave ->
fun opprettOppgaverAvUkesgamleHendelser() {
val utsatteOppgaver = utsattOppgaveService.hentIkkeOpprettedeUtsatteOppgaverEldreEnnEnUke()
utsatteOppgaver.forEach { utsattOppgave ->
opprettOppgave(
dødsfallOppgave.hendelsesId,
dødsfallOppgave.endringstype,
dødsfallOppgave.beskrivelse,
dødsfallOppgave.personId,
utsattOppgave.hendelsesId,
utsattOppgave.endringstype,
utsattOppgave.beskrivelse,
utsattOppgave.personId,
)
}
dødsfallOppgaveService.settDødsfalloppgaverTilUtført(dødsfallOppgaver)
utsattOppgaveService.settUtsatteOppgaverTilUtført(utsatteOppgaver)
}

private fun logHendelse(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package no.nav.familie.ef.personhendelse.dødsfalloppgaver
package no.nav.familie.ef.personhendelse.utsattoppgave

import no.nav.familie.ef.personhendelse.handler.PersonhendelseType
import no.nav.person.pdl.leesah.Endringstype
import java.time.LocalDateTime
import java.util.UUID

data class DødsfallOppgave(
data class UtsattOppgave(
val hendelsesId: UUID,
val personId: String,
val beskrivelse: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.personhendelse.dødsfalloppgaver
package no.nav.familie.ef.personhendelse.utsattoppgave

import no.nav.familie.ef.personhendelse.handler.PersonhendelseType
import no.nav.person.pdl.leesah.Endringstype
Expand All @@ -12,7 +12,7 @@ import java.time.LocalDateTime
import java.util.UUID

@Repository
class DødsfallOppgaveRepository(
class UtsattOppgaveRepository(
val namedParameterJdbcTemplate: NamedParameterJdbcTemplate,
) {
val logger: Logger = LoggerFactory.getLogger(javaClass)
Expand All @@ -26,7 +26,7 @@ class DødsfallOppgaveRepository(
hendelsesTid: LocalDateTime,
) {
val sql =
"INSERT INTO dødsfalloppgave VALUES(:hendelsesId, :personIdent, :beskrivelse, :personhendelseType, :endringstype, :hendelsestid, :opprettetoppgavetid) ON CONFLICT DO NOTHING"
"INSERT INTO utsattoppgave VALUES(:hendelsesId, :personIdent, :beskrivelse, :personhendelseType, :endringstype, :hendelsestid, :opprettetoppgavetid) ON CONFLICT DO NOTHING"
val params =
MapSqlParameterSource(
mapOf(
Expand All @@ -44,7 +44,7 @@ class DødsfallOppgaveRepository(

fun settOppgaveTilUtført(hendelseId: UUID) {
val sql =
"UPDATE dødsfalloppgave SET opprettetoppgavetid = :opprettetoppgavetid WHERE hendelse_id=:hendelseId"
"UPDATE utsattoppgave SET opprettetoppgavetid = :opprettetoppgavetid WHERE hendelse_id=:hendelseId"
val params =
MapSqlParameterSource(
mapOf(
Expand All @@ -55,14 +55,14 @@ class DødsfallOppgaveRepository(
namedParameterJdbcTemplate.update(sql, params)
}

fun hentIkkeOpprettedeDødsfalloppgaverOverEnUkeTilbakeITid(): List<DødsfallOppgave> {
fun hentIkkeOpprettedeUtsatteOppgaverEldreEnnEnUke(): List<UtsattOppgave> {
val sql =
"SELECT * FROM dødsfalloppgave WHERE hendelsestid <= (NOW() - INTERVAL '1 week') AND opprettetoppgavetid IS NULL"
return namedParameterJdbcTemplate.query(sql, dødsfallOppgaveMapper)
"SELECT * FROM utsattoppgave WHERE hendelsestid <= (NOW() - INTERVAL '1 week') AND opprettetoppgavetid IS NULL"
return namedParameterJdbcTemplate.query(sql, utsattOppgaveMapper)
}

private val dødsfallOppgaveMapper = { rs: ResultSet, _: Int ->
DødsfallOppgave(
private val utsattOppgaveMapper = { rs: ResultSet, _: Int ->
UtsattOppgave(
UUID.fromString(rs.getString("hendelse_id")),
rs.getString("person_id"),
rs.getString("beskrivelse"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.personhendelse.dødsfalloppgaver
package no.nav.familie.ef.personhendelse.utsattoppgave

import no.nav.familie.ef.personhendelse.handler.PersonhendelseService
import no.nav.familie.leader.LeaderClient
Expand All @@ -8,16 +8,16 @@ import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Service

@Service
class DødsfallOppgaveScheduler(
class UtsattOppgaveScheduler(
val personhendelseService: PersonhendelseService,
) {
val logger: Logger = LoggerFactory.getLogger(this::class.java)

@Scheduled(cron = "\${OPPGAVERDØDSFALL_CRON_EXPRESSION}")
fun opprettForsinkedeOppgaver() {
fun opprettUtsatteOppgaver() {
if (LeaderClient.isLeader() == true) {
logger.info("Cron scheduler starter for opprettelse av oppgaver ifm dødsfall")
personhendelseService.opprettOppgaverAvUkesgamleDødsfallhendelser()
personhendelseService.opprettOppgaverAvUkesgamleHendelser()
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.personhendelse.dødsfalloppgaver
package no.nav.familie.ef.personhendelse.utsattoppgave

import no.nav.familie.ef.personhendelse.handler.PersonhendelseType
import no.nav.person.pdl.leesah.Personhendelse
Expand All @@ -7,16 +7,16 @@ import java.time.LocalDateTime
import java.util.UUID

@Service
class DødsfallOppgaveService(
private val dsfallOppgaveRepository: DødsfallOppgaveRepository,
class UtsattOppgaveService(
private val utsattOppgaveRepository: UtsattOppgaveRepository,
) {
fun lagreDødsfallOppgave(
fun lagreUtsattOppgave(
personhendelse: Personhendelse,
personhendelseType: PersonhendelseType,
personIdent: String,
beskrivelse: String,
) {
dødsfallOppgaveRepository.lagreOppgave(
utsattOppgaveRepository.lagreOppgave(
UUID.fromString(personhendelse.hendelseId),
personhendelseType,
personhendelse.endringstype.name,
Expand All @@ -26,9 +26,9 @@ class DødsfallOppgaveService(
)
}

fun hentIkkeOpprettedeDødsfalloppgaverOverEnUkeTilbakeITid(): List<DødsfallOppgave> = dødsfallOppgaveRepository.hentIkkeOpprettedeDødsfalloppgaverOverEnUkeTilbakeITid()
fun hentIkkeOpprettedeUtsatteOppgaverEldreEnnEnUke(): List<UtsattOppgave> = utsattOppgaveRepository.hentIkkeOpprettedeUtsatteOppgaverEldreEnnEnUke()

fun settDødsfalloppgaverTilUtført(oppgaver: List<DødsfallOppgave>) {
oppgaver.forEach { dødsfallOppgaveRepository.settOppgaveTilUtført(it.hendelsesId) }
fun settUtsatteOppgaverTilUtført(oppgaver: List<UtsattOppgave>) {
oppgaver.forEach { utsattOppgaveRepository.settOppgaveTilUtført(it.hendelsesId) }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE dødsfalloppgave RENAME TO utsattoppgave;
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ abstract class IntegrasjonSpringRunnerTest {
private fun resetDatabase() {
namedParameterJdbcTemplate.update("TRUNCATE TABLE hendelse CASCADE", MapSqlParameterSource())
namedParameterJdbcTemplate.update("TRUNCATE TABLE efvedtakhendelse CASCADE", MapSqlParameterSource())
namedParameterJdbcTemplate.update("TRUNCATE TABLE dødsfalloppgave CASCADE", MapSqlParameterSource())
namedParameterJdbcTemplate.update("TRUNCATE TABLE utsattoppgave CASCADE", MapSqlParameterSource())
}

private fun resetWiremockServers() {
Expand Down
Loading

0 comments on commit 385efe9

Please sign in to comment.