diff --git a/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/DokumentMalType.java b/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/DokumentMalType.java index 9da97af4de2..dbf203b4940 100644 --- a/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/DokumentMalType.java +++ b/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/DokumentMalType.java @@ -38,6 +38,7 @@ public enum DokumentMalType implements Kodeverdi { ETTERLYS_INNTEKTSMELDING("ELYSIM"), ENDRING_UTBETALING("ENDUTB"), // Denne brukes kun for å utlede tittel når overstyrer vedtaksbrev pga fordeling av ytelsen FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV("INFOPU"), + FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID("FORPUS"), // Må gjeninnføre for å flytte anker @Deprecated KLAGE_AVVIST_DOK("KLAGAV"), @@ -165,6 +166,7 @@ private static String utledDokumentTittel(DokumentMalType mal) { case ANKE_OPPHEVET -> "Ankebrev om beslutning om oppheving"; case ENDRING_UTBETALING -> "Endring i fordeling av ytelsen"; case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV -> "Melding om ny vurdering av tidligere avslag"; + case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID -> "Forlenget saksbehandlingstid - Fedrekvotesaken"; }; } } diff --git a/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/formidling/BestillDokumentDtoMapper.java b/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/formidling/BestillDokumentDtoMapper.java index a87b34c59b2..2e7ae399d61 100644 --- a/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/formidling/BestillDokumentDtoMapper.java +++ b/domenetjenester/dokumentbestiller/src/main/java/no/nav/foreldrepenger/dokumentbestiller/formidling/BestillDokumentDtoMapper.java @@ -39,6 +39,7 @@ public static DokumentMal mapDokumentMal(DokumentMalType bestillingDokumentMal) case ETTERLYS_INNTEKTSMELDING -> DokumentMal.ETTERLYS_INNTEKTSMELDING; case ENDRING_UTBETALING -> DokumentMal.ENDRING_UTBETALING; case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV -> DokumentMal.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV; + case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID -> DokumentMal.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID; case KLAGE_AVVIST_DOK, KLAGE_AVVIST_FRITEKST, KLAGE_HJEMSENDT_DOK, diff --git a/pom.xml b/pom.xml index 2fbd255b5b7..5b6c3407b1c 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ 7.4.5 5.1.1 - 9.2.1 + 9.2.2 2.2.1 0.0.14 diff --git a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/praksisutsettelse/FeilPraksisForlengetSaksbehandlingstidTask.java b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/praksisutsettelse/FeilPraksisForlengetSaksbehandlingstidTask.java new file mode 100644 index 00000000000..394c350d536 --- /dev/null +++ b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/praksisutsettelse/FeilPraksisForlengetSaksbehandlingstidTask.java @@ -0,0 +1,87 @@ +package no.nav.foreldrepenger.web.app.tjenester.forvaltning.praksisutsettelse; + +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import jakarta.enterprise.context.Dependent; +import jakarta.inject.Inject; +import jakarta.persistence.EntityManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingType; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsakType; +import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakProsesstaskRekkefølge; +import no.nav.foreldrepenger.dokumentbestiller.DokumentBehandlingTjeneste; +import no.nav.foreldrepenger.dokumentbestiller.DokumentBestillerTjeneste; +import no.nav.foreldrepenger.dokumentbestiller.DokumentBestilling; +import no.nav.foreldrepenger.dokumentbestiller.DokumentMalType; +import no.nav.vedtak.felles.prosesstask.api.ProsessTask; +import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData; +import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler; + +@Dependent +@ProsessTask(value = "behandling.feilpraksisutsettelse.forlenget", prioritet = 4, maxFailedRuns = 1) +@FagsakProsesstaskRekkefølge(gruppeSekvens = false) +class FeilPraksisForlengetSaksbehandlingstidTask implements ProsessTaskHandler { + + private static final Logger LOG = LoggerFactory.getLogger(FeilPraksisForlengetSaksbehandlingstidTask.class); + private static final String DRY_RUN = "dryRun"; + + private final DokumentBestillerTjeneste dokumentBestillerTjeneste; + private final EntityManager entityManager; + private final DokumentBehandlingTjeneste dokumentBehandlingTjeneste; + + + @Inject + FeilPraksisForlengetSaksbehandlingstidTask(DokumentBestillerTjeneste dokumentBestillerTjeneste, + EntityManager entityManager, + DokumentBehandlingTjeneste dokumentBehandlingTjeneste) { + this.dokumentBestillerTjeneste = dokumentBestillerTjeneste; + this.entityManager = entityManager; + this.dokumentBehandlingTjeneste = dokumentBehandlingTjeneste; + } + + @Override + public void doTask(ProsessTaskData prosessTaskData) { + var kandidater = finnKandidater(); + var dryRun = Optional.ofNullable(prosessTaskData.getPropertyValue(DRY_RUN)).filter("false"::equalsIgnoreCase).isEmpty(); + kandidater.forEach(k -> opprettBestillingTask(k, dryRun)); + } + + private List finnKandidater() { + return entityManager.createQuery(""" + select b from Behandling b + join BehandlingÅrsak ba on ba.behandling = b + where ba.behandlingÅrsakType =:årsak + and not exists (select 1 from Behandling b2 where b2.avsluttetDato is null and b2.fagsak = b.fagsak and b2.behandlingType in (:ikkeTyper)) + and b.avsluttetDato is null + """, Behandling.class) + .setParameter("årsak", BehandlingÅrsakType.FEIL_PRAKSIS_UTSETTELSE) + .setParameter("ikkeTyper", Set.of(BehandlingType.KLAGE, BehandlingType.ANKE)) + .getResultList(); + } + + private void opprettBestillingTask(Behandling behandling, boolean dryRun) { + if (dokumentBehandlingTjeneste.erDokumentBestiltForFagsak(behandling.getFagsakId(), + DokumentMalType.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID)) { + LOG.info("Brev allerede bestilt for {}", behandling.getSaksnummer()); + return; + } + + var saksnummer = behandling.getSaksnummer(); + LOG.info("Bestiller forlenget saksbehandlingstid brev for {} {}", saksnummer, behandling.getId()); + var behandlingUuid = behandling.getUuid(); + var bestilling = DokumentBestilling.builder() + .medBehandlingUuid(behandlingUuid) + .medSaksnummer(saksnummer) + .medDokumentMal(DokumentMalType.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID) + .build(); + if (!dryRun) { + dokumentBestillerTjeneste.bestillDokument(bestilling); + } + } +}