Skip to content

Commit

Permalink
Feature to create new behandling for old grunnlag for analysis.
Browse files Browse the repository at this point in the history
  • Loading branch information
jacob-meidell committed Oct 17, 2024
1 parent f5af3c1 commit 7caea3e
Show file tree
Hide file tree
Showing 25 changed files with 1,110 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.co

import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.brev.repository.BrevRepository
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.godskriv.model.GodskrivOpptjeningRepo
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.kontrollbehandling.KontrollbehandlingRepo
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.monitorering.StatusCheckTask
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.monitorering.StatusRapporteringCachingAdapter
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oppgave.repository.OppgaveRepo
Expand Down Expand Up @@ -33,13 +34,16 @@ class ScheduledTasksConfig {
@Autowired
private lateinit var godskrivOpptjeningRepo: GodskrivOpptjeningRepo

@Autowired
private lateinit var kontrollbehandlingRepo: KontrollbehandlingRepo

@Bean
fun statusCheckTask(): StatusCheckTask {
return StatusCheckTask(statusRapporteringsService)
}

@Bean
fun frigiLaserTask(): FrigiLaserTask {
return FrigiLaserTask(persongrunnlagRepo, oppgaveRepo, brevRepository, godskrivOpptjeningRepo)
return FrigiLaserTask(persongrunnlagRepo, oppgaveRepo, brevRepository, godskrivOpptjeningRepo, kontrollbehandlingRepo)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.kontrollbehandling

import java.time.Instant
import java.util.UUID

data class Kontrollbehandling(
val kontrollId: UUID,
val opprettet: Instant,
val orginalBehandlingId: UUID,
val statushistorikk: List<KontrollbehandlingStatus> = listOf(KontrollbehandlingStatus.Klar()),
val referanse: String,
) {
val status: KontrollbehandlingStatus get() = statushistorikk.last()

fun ferdig(): Kontrollbehandling {
return copy(statushistorikk = statushistorikk + status.ferdig())
}

fun retry(melding: String): Kontrollbehandling {
return copy(statushistorikk = statushistorikk + status.retry(melding))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.kontrollbehandling

import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.FullførteBehandlinger

interface KontrollbehandlingProcessingService {
fun process(): List<FullførteBehandlinger>?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.kontrollbehandling

import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.FullførteBehandlinger
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.utils.Mdc
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.utils.NewTransactionTemplate
import no.nav.pensjon.opptjening.omsorgsopptjening.felles.CorrelationId
import no.nav.pensjon.opptjening.omsorgsopptjening.felles.InnlesingId
import org.slf4j.Logger
import org.slf4j.LoggerFactory

internal class KontrollbehandlingProcessingServiceImpl(
private val transactionTemplate: NewTransactionTemplate,
private val service: KontrollbehandlingService,
) : KontrollbehandlingProcessingService {
companion object {
private val log: Logger = LoggerFactory.getLogger(this::class.java)
private val secureLog: Logger = LoggerFactory.getLogger("secure")
}

override fun process(): List<FullførteBehandlinger>? {
val meldinger = transactionTemplate.execute { service.hentOgLås(10) }!!
try {
return meldinger.rader.mapNotNull { melding ->
Mdc.scopedMdc(CorrelationId(melding.kontrollId)) {
Mdc.scopedMdc(InnlesingId(melding.kontrollId)) {
try {
log.info("Starter kontrollbehandling")
transactionTemplate.execute {
service.behandle(melding).also { log.info("Kontrollbehandling utført") }
}
} catch (ex: Throwable) {
transactionTemplate.execute {
log.warn("Exception ved kontrollbehandling: ${ex::class.qualifiedName}")
secureLog.warn("Exception ved kontrollbehandling: ", ex)
service.retry(melding, ex)
}
null
} finally {
log.info("Avslutter kontrollbehandling")
}
}
}
}
} catch (ex: Throwable) {
log.error("Exception ved henting kontrollbehandlinger ${ex::class.qualifiedName}")
secureLog.error("Exception ved henting kontrollbehandlinger", ex)
return null // throw ex
} finally {
transactionTemplate.execute { service.frigi(meldinger) }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.kontrollbehandling

import io.getunleash.Unleash
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.config.DatasourceReadinessCheck
import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.unleash.NavUnleashConfig
import org.slf4j.LoggerFactory

class KontrollbehandlingProcessingThread(
private val service: KontrollbehandlingProcessingService,
private val unleash: Unleash,
private val datasourceReadinessCheck: DatasourceReadinessCheck,
) : Runnable {

init {
val name = "prosesser-persongrunnlag-kontrollbehandling-thread"
log.info("Starting new thread:$name to process kontrollbehandlinger")
Thread(this, name).start()
}


companion object {
private val log = LoggerFactory.getLogger(this::class.java)!!
}


override fun run() {
while (true) {
try {
if (unleash.isEnabled(NavUnleashConfig.Feature.KONTROLL.toggleName) && datasourceReadinessCheck.isReady()) {
service.process() ?: run {
Thread.sleep(1000)
null
}
}
} catch (exception: Throwable) {
log.warn("Exception caught while processing ${exception::class.qualifiedName}")
}
}
}
}
Loading

0 comments on commit 7caea3e

Please sign in to comment.