Skip to content

Commit

Permalink
Merge pull request #2585 from navikt/oppgave-rydde-egen-task
Browse files Browse the repository at this point in the history
Må opprette egen task for å rydde i oppgaver, ettersom vi ikke har ti…
  • Loading branch information
charliemidtlyng committed May 3, 2024
2 parents 7ee4194 + ae84779 commit bc9cd1b
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -1,75 +1,33 @@
package no.nav.familie.ef.sak.forvaltning

import no.nav.familie.ef.sak.infrastruktur.sikkerhet.TilgangService
import no.nav.familie.ef.sak.oppgave.OppgaveService
import no.nav.familie.ef.sak.oppgave.OppgaveUtil
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.oppgave.FinnOppgaveRequest
import no.nav.familie.kontrakter.felles.oppgave.Oppgavetype
import no.nav.familie.prosessering.internal.TaskService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.time.LocalDate

@RestController
@RequestMapping("/api/oppgave/forvaltning/opprydding")
@ProtectedWithClaims(issuer = "azuread")
class OppgaveOppryddingForvaltningsController(
private val oppgaveService: OppgaveService,
private val tilgangService: TilgangService,
private val taskService: TaskService,
) {
private val logger = LoggerFactory.getLogger(javaClass)
private val secureLogger = LoggerFactory.getLogger("secureLogger")

final val mappenavnProd = "41 Revurdering"
final val mappenavnDev = "41 - Revurdering"
val mappeNavn = listOf(mappenavnDev, mappenavnProd)

data class RunType(val liveRun: Boolean)

@PostMapping("start-opprydding")
fun ryddOppgaver(
@RequestBody runType: RunType,
) {
logger.info("Starter opprydding av oppgaver")
tilgangService.validerHarForvalterrolle()
val task = taskService.save(OppgaveOppryddingForvaltningsTask.opprettTask(runType))

val mappeId = hentFremleggMappeId()
logger.info("Funnet mappe: $mappeId")

val oppgaveFrist = LocalDate.of(2024, 5, 18)
val oppgaver =
oppgaveService.hentOppgaver(
FinnOppgaveRequest(
tema = Tema.ENF,
fristFomDato = oppgaveFrist,
fristTomDato = oppgaveFrist,
mappeId = mappeId.toLong(),
limit = 1000,
),
)

logger.info("Antall oppgaver funnet: ${oppgaver.antallTreffTotalt}. Antall oppgaver hentet ut: ${oppgaver.oppgaver.size}")

if (runType.liveRun) {
oppgaver.oppgaver.forEach { oppgave ->
val oppgaveId = oppgave.id
if (oppgaveId == null) {
logger.error("Kan ikke ferdigstille oppgave - mangler ID")
secureLogger.info("Kan ikke ferdigstille oppgave pga manglende ID: $oppgave")
} else if (oppgave.oppgavetype != Oppgavetype.Fremlegg.name) {
logger.error("Kan ikke ferdigstille oppgave - feil type")
secureLogger.info("Kan ikke ferdigstille oppgave pga feil oppgavetype: $oppgave")
} else {
secureLogger.info("Ferdigstiller oppgave $oppgaveId")
oppgaveService.ferdigstillOppgave(oppgaveId)
}
}
}
logger.info("Opprettet task for opprydding av oppfølgingsoppgaver: ${task.id}")
}

private fun hentFremleggMappeId() = oppgaveService.finnMapper(OppgaveUtil.ENHET_NR_NAY).single { mappeNavn.contains(it.navn) }.id
data class RunType(val liveRun: Boolean)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package no.nav.familie.ef.sak.forvaltning

import com.fasterxml.jackson.module.kotlin.readValue
import no.nav.familie.ef.sak.oppgave.OppgaveService
import no.nav.familie.ef.sak.oppgave.OppgaveUtil
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.objectMapper
import no.nav.familie.kontrakter.felles.oppgave.FinnOppgaveRequest
import no.nav.familie.kontrakter.felles.oppgave.Oppgavetype
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service
import java.time.LocalDate
import java.util.Properties

@Service
@TaskStepBeskrivelse(
taskStepType = OppgaveOppryddingForvaltningsTask.TYPE,
maxAntallFeil = 1,
settTilManuellOppfølgning = true,
beskrivelse = "Rydd fremleggsoppgaver som ligger med frist 18.mai i revurderingsmappa",
)
class OppgaveOppryddingForvaltningsTask(
private val oppgaveService: OppgaveService,
) : AsyncTaskStep {
private val logger = LoggerFactory.getLogger(javaClass)
private val secureLogger = LoggerFactory.getLogger("secureLogger")

final val mappenavnProd = "41 Revurdering"
final val mappenavnDev = "41 - Revurdering"
val mappeNavn = listOf(mappenavnDev, mappenavnProd)

override fun doTask(task: Task) {
val runType = objectMapper.readValue<OppgaveOppryddingForvaltningsController.RunType>(task.payload)
logger.info("Starter opprydding av oppgaver")

val mappeId = hentFremleggMappeId()
logger.info("Funnet mappe: $mappeId")

val oppgaveFrist = LocalDate.of(2024, 5, 18)
val oppgaver =
oppgaveService.hentOppgaver(
FinnOppgaveRequest(
tema = Tema.ENF,
fristFomDato = oppgaveFrist,
fristTomDato = oppgaveFrist,
mappeId = mappeId.toLong(),
limit = 1000,
),
)

logger.info("Antall oppgaver funnet: ${oppgaver.antallTreffTotalt}. Antall oppgaver hentet ut: ${oppgaver.oppgaver.size}")

if (runType.liveRun) {
oppgaver.oppgaver.forEach { oppgave ->
val oppgaveId = oppgave.id
if (oppgaveId == null) {
logger.error("Kan ikke ferdigstille oppgave - mangler ID")
secureLogger.info("Kan ikke ferdigstille oppgave pga manglende ID: $oppgave")
} else if (oppgave.oppgavetype != Oppgavetype.Fremlegg.name) {
logger.error("Kan ikke ferdigstille oppgave - feil type")
secureLogger.info("Kan ikke ferdigstille oppgave pga feil oppgavetype: $oppgave")
} else {
secureLogger.info("Ferdigstiller oppgave $oppgaveId")
oppgaveService.ferdigstillOppgave(oppgaveId)
}
}
}
}

companion object {
const val TYPE = "oppryddingAvForvaltningsoppgaver"

fun opprettTask(runType: OppgaveOppryddingForvaltningsController.RunType): Task {
return Task(
TYPE,
objectMapper.writeValueAsString(runType),
Properties(),
)
}
}

private fun hentFremleggMappeId() = oppgaveService.finnMapper(OppgaveUtil.ENHET_NR_NAY).single { mappeNavn.contains(it.navn) }.id
}

0 comments on commit bc9cd1b

Please sign in to comment.