From f935dfd1f0dba2f0de1a19b44f0076e11003ad03 Mon Sep 17 00:00:00 2001 From: Jens-Otto Larsen <46576810+jolarsen@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:01:43 +0200 Subject: [PATCH] =?UTF-8?q?Oppdater=20ventefrister=20som=20utl=C3=B8per=20?= =?UTF-8?q?hver=2030=20minutt=20(#2019)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Oppdater ventefrister som utløper hver 8 time * Endre til 30 minutt * Fjerne gammel manuell på vent --- .../OppgaveBeholdningStatistikkTjeneste.java | 8 +--- ...rForAvdelingSattManueltP\303\245Vent.java" | 8 ---- .../StatistikkRepository.java | 37 ------------------- .../admin/dto/OppgaveEventLoggDto.java | 16 -------- .../admin/dto/OppgaveKriterieTypeDto.java | 22 ----------- .../N\303\270kkeltallRestTjeneste.java" | 13 +------ ...3\270kkeltallBehandlingerVentestatus.java" | 16 ++++---- ...pgaveBeholdningStatistikkTjenesteTest.java | 8 ---- 8 files changed, 12 insertions(+), 116 deletions(-) delete mode 100644 "domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaverForAvdelingSattManueltP\303\245Vent.java" delete mode 100644 web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveEventLoggDto.java delete mode 100644 web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveKriterieTypeDto.java diff --git a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaveBeholdningStatistikkTjeneste.java b/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaveBeholdningStatistikkTjeneste.java index c681db25e..1e5055811 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaveBeholdningStatistikkTjeneste.java +++ b/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaveBeholdningStatistikkTjeneste.java @@ -1,10 +1,10 @@ package no.nav.foreldrepenger.los.statistikk.oppgavebeholdning; +import java.util.List; + import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import java.util.List; - @ApplicationScoped public class OppgaveBeholdningStatistikkTjeneste { @@ -27,10 +27,6 @@ public List hentAntallOppgaverForAvdelingPerDato(Str return statisikkRepository.hentAlleOppgaverForAvdelingPerDato(avdeling); } - public List hentAntallOppgaverForAvdelingSattManueltPåVent(String avdeling) { - return statisikkRepository.hentAntallOppgaverForAvdelingSattManueltPåVent(avdeling); - } - public List hentOppgaverPerFørsteStønadsdag(String avdeling) { return statisikkRepository.hentOppgaverPerFørsteStønadsdag(avdeling); } diff --git "a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaverForAvdelingSattManueltP\303\245Vent.java" "b/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaverForAvdelingSattManueltP\303\245Vent.java" deleted file mode 100644 index 060821bef..000000000 --- "a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/OppgaverForAvdelingSattManueltP\303\245Vent.java" +++ /dev/null @@ -1,8 +0,0 @@ -package no.nav.foreldrepenger.los.statistikk.oppgavebeholdning; - -import no.nav.foreldrepenger.los.oppgave.FagsakYtelseType; - -import java.time.LocalDate; - -public record OppgaverForAvdelingSattManueltPåVent(FagsakYtelseType fagsakYtelseType, LocalDate behandlingFrist, Long antall) { -} diff --git a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/StatistikkRepository.java b/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/StatistikkRepository.java index 1c8bca51e..dbd80826a 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/StatistikkRepository.java +++ b/domene/src/main/java/no/nav/foreldrepenger/los/statistikk/oppgavebeholdning/StatistikkRepository.java @@ -8,7 +8,6 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.persistence.EntityManager; -import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.oppgaveeventlogg.OppgaveEventType; import no.nav.foreldrepenger.los.oppgave.AndreKriterierType; import no.nav.foreldrepenger.los.oppgave.BehandlingType; import no.nav.foreldrepenger.los.oppgave.FagsakYtelseType; @@ -62,35 +61,6 @@ AND NOT (o.AKTIV='N' AND trunc(datoer.dato) > trunc(o.ENDRET_TID)) """).setParameter(AVDELING_ENHET, avdelingEnhet).getResultStream().map(row -> mapOppgaverForAvdelingPerDato((Object[]) row)).toList(); } - @SuppressWarnings("unchecked") - public List hentAntallOppgaverForAvdelingSattManueltPåVent(String avdelingEnhet) { - return entityManager.createNativeQuery(""" - select COALESCE(trunc(oel.FRIST_TID), trunc(oel.OPPRETTET_TID + 28)) ESTIMERT_FRIST, o.FAGSAK_YTELSE_TYPE, count(1) as ANTALL - from oppgave_event_logg oel - join ( - select behandling_id, fagsak_ytelse_type - from oppgave - where BEHANDLENDE_ENHET = :behandlendeEnhet - group by behandling_id, fagsak_ytelse_type - ) o on o.behandling_id = oel.behandling_id - where oel.event_type = :eventType - and oel.opprettet_tid > systimestamp - 90 - and not exists ( - select 1 - from oppgave_event_logg oel_nyere - where oel_nyere.behandling_id = oel.behandling_id - and oel_nyere.opprettet_tid > oel.opprettet_tid - and oel_nyere.opprettet_tid > systimestamp - 90 - ) - group by COALESCE(trunc(oel.FRIST_TID), trunc(oel.OPPRETTET_TID + 28)), o.fagsak_ytelse_type - """) - .setParameter("behandlendeEnhet", avdelingEnhet) - .setParameter("eventType", OppgaveEventType.MANU_VENT.name()) - .getResultStream() - .map(row -> mapOppgaverForAvdelingSattManueltPåVent((Object[]) row)) - .toList(); - } - @SuppressWarnings("unchecked") public List hentOppgaverPerFørsteStønadsdag(String avdeling) { // Tilpass til tidligste dato før termin - 18u = 1296. Vurder trunc('IW') + 4 (=fredag) for evt ukesvisning @@ -114,13 +84,6 @@ select trunc(o.FORSTE_STONADSDAG) as fstonad FROM OPPGAVE o INNER JOIN avdeling return new OppgaverForFørsteStønadsdag(date, resultat); } - private static OppgaverForAvdelingSattManueltPåVent mapOppgaverForAvdelingSattManueltPåVent(Object[] row) { - var fagsakYtelseType = FagsakYtelseType.fraKode((String) row[1]); // NOSONAR - var estimertFrist = ((Date) row[0]).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // NOSONAR - var antall = ((BigDecimal) row[2]).longValue(); // NOSONAR - return new OppgaverForAvdelingSattManueltPåVent(fagsakYtelseType, estimertFrist, antall); - } - private static OppgaverForAvdeling mapOppgaverForAvdeling(Object[] row) { var fagsakYtelseType = FagsakYtelseType.fraKode((String) row[0]); // NOSONAR var behandlingType = BehandlingType.fraKode((String) row[1]); // NOSONAR diff --git a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveEventLoggDto.java b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveEventLoggDto.java deleted file mode 100644 index c63c099e3..000000000 --- a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveEventLoggDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package no.nav.foreldrepenger.los.web.app.tjenester.admin.dto; - -import java.time.LocalDateTime; - -import no.nav.foreldrepenger.los.domene.typer.BehandlingId; -import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.oppgaveeventlogg.OppgaveEventLogg; -import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.oppgaveeventlogg.OppgaveEventType; -import no.nav.foreldrepenger.los.oppgave.AndreKriterierType; - -public record OppgaveEventLoggDto(BehandlingId behandlingId, OppgaveEventType eventType, AndreKriterierType andreKriterierType, - String behandlendeEnhet, LocalDateTime opprettetTidspunkt) { - - public OppgaveEventLoggDto(OppgaveEventLogg o) { - this(o.getBehandlingId(), o.getEventType(), o.getAndreKriterierType(), o.getBehandlendeEnhet(), o.getOpprettetTidspunkt()); - } -} diff --git a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveKriterieTypeDto.java b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveKriterieTypeDto.java deleted file mode 100644 index 8d50a8abb..000000000 --- a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/admin/dto/OppgaveKriterieTypeDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package no.nav.foreldrepenger.los.web.app.tjenester.admin.dto; - -import java.util.Objects; - -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Pattern; - -import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter; -import no.nav.vedtak.sikkerhet.abac.AbacDto; -import no.nav.vedtak.util.InputValideringRegex; - -public record OppgaveKriterieTypeDto(@NotNull @Pattern(regexp = InputValideringRegex.FRITEKST) String oppgaveEgenskap) implements AbacDto { - - public OppgaveKriterieTypeDto { - Objects.requireNonNull(oppgaveEgenskap, "oppgaveEgenskap"); - } - - @Override - public AbacDataAttributter abacAttributter() { - return AbacDataAttributter.opprett(); - } -} diff --git "a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/N\303\270kkeltallRestTjeneste.java" "b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/N\303\270kkeltallRestTjeneste.java" index da6d7727f..8e5d4c982 100644 --- "a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/N\303\270kkeltallRestTjeneste.java" +++ "b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/N\303\270kkeltallRestTjeneste.java" @@ -2,6 +2,7 @@ import java.util.List; +import io.swagger.v3.oas.annotations.Operation; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; @@ -11,12 +12,9 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; - -import io.swagger.v3.oas.annotations.Operation; import no.nav.foreldrepenger.los.statistikk.oppgavebeholdning.OppgaveBeholdningStatistikkTjeneste; import no.nav.foreldrepenger.los.statistikk.oppgavebeholdning.OppgaverForAvdeling; import no.nav.foreldrepenger.los.statistikk.oppgavebeholdning.OppgaverForAvdelingPerDato; -import no.nav.foreldrepenger.los.statistikk.oppgavebeholdning.OppgaverForAvdelingSattManueltPåVent; import no.nav.foreldrepenger.los.statistikk.oppgavebeholdning.OppgaverForFørsteStønadsdag; import no.nav.foreldrepenger.los.web.app.tjenester.avdelingsleder.dto.AvdelingEnhetDto; import no.nav.vedtak.sikkerhet.abac.BeskyttetRessurs; @@ -57,15 +55,6 @@ public List getAntallOppgaverForAvdelingPerDato(@Not return oppgaveBeholdningStatistikkTjeneste.hentAntallOppgaverForAvdelingPerDato(avdelingEnhet.getAvdelingEnhet()); } - @GET - @Path("/behandlinger-manuelt-vent-historikk") - @Produces("application/json") - @Operation(description = "ManueltVent Historikk", tags = "AvdelingslederTall") - @BeskyttetRessurs(actionType = ActionType.READ, resourceType = ResourceType.OPPGAVESTYRING_AVDELINGENHET) - public List getAntallOppgaverSattPåManuellVentForAvdeling(@NotNull @QueryParam("avdelingEnhet") @Valid AvdelingEnhetDto avdelingEnhet) { - return oppgaveBeholdningStatistikkTjeneste.hentAntallOppgaverForAvdelingSattManueltPåVent(avdelingEnhet.getAvdelingEnhet()); - } - @GET @Path("/behandlinger-første-stønadsdag") @Produces("application/json") diff --git "a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/\303\245pnebehandlinger/N\303\270kkeltallBehandlingerVentestatus.java" "b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/\303\245pnebehandlinger/N\303\270kkeltallBehandlingerVentestatus.java" index 9b929c4b4..0eba35819 100644 --- "a/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/\303\245pnebehandlinger/N\303\270kkeltallBehandlingerVentestatus.java" +++ "b/web/src/main/java/no/nav/foreldrepenger/los/web/app/tjenester/avdelingsleder/n\303\270kkeltall/\303\245pnebehandlinger/N\303\270kkeltallBehandlingerVentestatus.java" @@ -22,7 +22,8 @@ public class NøkkeltallBehandlingerVentestatus { private FpsakKlient fpsakRestKlient; private Map> enhetStatistikkMapUttaksdato; private Map> enhetStatistikkMapVentefrist; - private LocalDateTime nesteOppdateringEtter; + private LocalDateTime nesteFørsteUttakOppdateringEtter; + private LocalDateTime nesteVentefristOppdateringEtter; public NøkkeltallBehandlingerVentestatus() { } @@ -33,13 +34,14 @@ public class NøkkeltallBehandlingerVentestatus { } public List hentBehandlingVentestatusNøkkeltall(String avdeling) { - if (enhetStatistikkMapUttaksdato == null || LocalDateTime.now().isAfter(nesteOppdateringEtter)) { + if (enhetStatistikkMapUttaksdato == null || LocalDateTime.now().isAfter(nesteFørsteUttakOppdateringEtter)) { enhetStatistikkMapUttaksdato = fpsakRestKlient.hentBehandlingFørsteUttakNøkkeltall() .stream() .collect(Collectors.groupingBy(NøkkeltallBehandlingFørsteUttakDto::behandlendeEnhet, Collectors.toUnmodifiableList())); - nesteOppdateringEtter = LocalDateTime.now().plusMinutes(45); + nesteFørsteUttakOppdateringEtter = LocalDateTime.now().plusMinutes(45); if (LOG.isInfoEnabled()) { - LOG.info("Hentet statistikk fra fpsak, neste hentes etter {}. Antall unike uttaksmåneder per enhet: {}", nesteOppdateringEtter, + LOG.info("Hentet statistikk fra fpsak, neste hentes etter {}. Antall unike uttaksmåneder per enhet: {}", + nesteFørsteUttakOppdateringEtter, antallFørsteUttakMånederPerEnhet()); } } @@ -48,13 +50,13 @@ public class NøkkeltallBehandlingerVentestatus { } public List hentVentefristNøkkeltall(String avdeling) { - if (enhetStatistikkMapVentefrist == null || LocalDateTime.now().isAfter(nesteOppdateringEtter)) { + if (enhetStatistikkMapVentefrist == null || LocalDateTime.now().isAfter(nesteVentefristOppdateringEtter)) { enhetStatistikkMapVentefrist = fpsakRestKlient.hentVentefristerNøkkeltall() .stream() .collect(Collectors.groupingBy(NøkkeltallBehandlingVentefristUtløperDto::behandlendeEnhet, Collectors.toUnmodifiableList())); - nesteOppdateringEtter = LocalDateTime.now().plusMinutes(45); + nesteVentefristOppdateringEtter = LocalDateTime.now().plusMinutes(30); if (LOG.isInfoEnabled()) { - LOG.info("Hentet friststatistikk fra fpsak, neste hentes etter {}.", nesteOppdateringEtter); + LOG.info("Hentet friststatistikk fra fpsak, neste hentes etter {}.", nesteVentefristOppdateringEtter); } } var resultat = enhetStatistikkMapVentefrist.get(avdeling); diff --git a/web/src/test/java/no/nav/foreldrepenger/los/web/app/tjenester/statistikk/OppgaveBeholdningStatistikkTjenesteTest.java b/web/src/test/java/no/nav/foreldrepenger/los/web/app/tjenester/statistikk/OppgaveBeholdningStatistikkTjenesteTest.java index 939acef02..b659b2faf 100644 --- a/web/src/test/java/no/nav/foreldrepenger/los/web/app/tjenester/statistikk/OppgaveBeholdningStatistikkTjenesteTest.java +++ b/web/src/test/java/no/nav/foreldrepenger/los/web/app/tjenester/statistikk/OppgaveBeholdningStatistikkTjenesteTest.java @@ -2,9 +2,7 @@ import static no.nav.foreldrepenger.los.organisasjon.Avdeling.AVDELING_DRAMMEN_ENHET; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatNoException; -import java.time.DayOfWeek; import java.time.LocalDate; import org.junit.jupiter.api.BeforeEach; @@ -140,12 +138,6 @@ void hentAntallOppgaverForAvdelingPerDatoTest2() { assertThat(resultater.get(0).opprettetDato()).isEqualTo(LocalDate.now().minusDays(27)); } - @Test - void hentHentStatistikkForManueltPåVent() { - assertThatNoException().isThrownBy(() -> oppgaveBeholdningStatistikkTjeneste.hentAntallOppgaverForAvdelingSattManueltPåVent(AVDELING_DRAMMEN_ENHET)); - } - - @Test void hentOppgaverPerFørsteStønadsdag() { leggInnEttSettMedOppgaver();