From 8b64a35a3a4561f96d898ad00115294b824be552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20P=C3=B8hner?= Date: Tue, 16 Apr 2024 09:10:53 +0200 Subject: [PATCH] =?UTF-8?q?H=C3=A5ndter=20FilterBehandlingType=20via=20col?= =?UTF-8?q?lections=20p=C3=A5=20OppgaveFiltrering-entitet=20(#2075)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Legg på/fjern behandlingtype filter fra relasjon på OppgaveFiltrering entitet + bruk orphanRemoval --- .../AvdelingslederTjeneste.java | 44 +++++++------------ .../oppgavek\303\270/OppgaveFiltrering.java" | 43 ++++++++++++------ .../AvdelingslederTjenesteTest.java | 28 +++++++++++- 3 files changed, 70 insertions(+), 45 deletions(-) diff --git a/src/main/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjeneste.java b/src/main/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjeneste.java index 9e8a41912..23d5b67a1 100644 --- a/src/main/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjeneste.java +++ b/src/main/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjeneste.java @@ -12,7 +12,6 @@ import no.nav.foreldrepenger.los.oppgave.FagsakYtelseType; import no.nav.foreldrepenger.los.oppgave.OppgaveRepository; import no.nav.foreldrepenger.los.oppgavekø.FiltreringAndreKriterierType; -import no.nav.foreldrepenger.los.oppgavekø.FiltreringBehandlingType; import no.nav.foreldrepenger.los.oppgavekø.KøSortering; import no.nav.foreldrepenger.los.oppgavekø.OppgaveFiltrering; import no.nav.foreldrepenger.los.organisasjon.Avdeling; @@ -21,6 +20,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static java.util.function.Predicate.not; + @ApplicationScoped public class AvdelingslederTjeneste { @@ -70,24 +71,24 @@ public void settSortering(Long sakslisteId, KøSortering sortering) { public void endreFiltreringBehandlingType(Long oppgavefiltreringId, BehandlingType behandlingType, boolean checked) { var filtre = oppgaveRepository.hentOppgaveFilterSett(oppgavefiltreringId).orElseThrow(); if (checked) { - if (!behandlingType.gjelderTilbakebetaling()) { - settStandardSorteringHvisTidligereTilbakebetaling(oppgavefiltreringId); - } - oppgaveRepository.lagre(new FiltreringBehandlingType(filtre, behandlingType)); + filtre.leggTilFilter(behandlingType); } else { - oppgaveRepository.slettFiltreringBehandlingType(oppgavefiltreringId, behandlingType); - if (ingenBehandlingsTypeErValgtEtterAtTilbakekrevingErValgtBort(behandlingType, oppgavefiltreringId)) { - settStandardSorteringHvisTidligereTilbakebetaling(oppgavefiltreringId); - } + filtre.fjernFilter(behandlingType); + } + boolean gammelSorteringGjelderTilbakebetaling = filtre.getSortering().getFeltkategori().equals(KøSortering.FK_TILBAKEKREVING); + boolean tilbakekrevingSorteringIkkeAktuell = + filtre.getBehandlingTyper().isEmpty() || filtre.getBehandlingTyper().stream().anyMatch(not(BehandlingType::gjelderTilbakebetaling)); + if (gammelSorteringGjelderTilbakebetaling && tilbakekrevingSorteringIkkeAktuell) { + settSortering(filtre.getId(), KøSortering.BEHANDLINGSFRIST); } - oppgaveRepository.refresh(filtre); + oppgaveRepository.lagre(filtre); } public void endreFagsakYtelseType(Long oppgavefiltreringId, FagsakYtelseType fagsakYtelseType, boolean checked) { var filter = hentFiltrering(oppgavefiltreringId); - filter.fjernFagsakYtelseType(fagsakYtelseType); + filter.fjernFilter(fagsakYtelseType); if (checked) { - filter.leggTilFagsakYtelseType(fagsakYtelseType); + filter.leggTilFilter(fagsakYtelseType); } oppgaveRepository.lagre(filter); } @@ -97,10 +98,10 @@ public void endreFiltreringAndreKriterierType(Long oppgavefiltreringId, boolean checked, boolean inkluder) { var filterSett = hentFiltrering(oppgavefiltreringId); - filterSett.fjernAndreKriterierType(andreKriterierType); + filterSett.fjernFilter(andreKriterierType); if (checked) { var kriterie = new FiltreringAndreKriterierType(filterSett, andreKriterierType, inkluder); - filterSett.leggTilAndreKriterierType(kriterie); + filterSett.leggTilFilter(kriterie); } oppgaveRepository.lagre(filterSett); } @@ -139,21 +140,6 @@ public void settSorteringTidsintervallValg(Long oppgaveFiltreringId, boolean erD oppgaveRepository.settSorteringTidsintervallValg(oppgaveFiltreringId, erDynamiskPeriode); } - private boolean ingenBehandlingsTypeErValgtEtterAtTilbakekrevingErValgtBort(BehandlingType behandlingType, Long oppgavefiltreringId) { - if (!behandlingType.gjelderTilbakebetaling()) { - return false; - } - var filter = hentFiltrering(oppgavefiltreringId); - return filter.getFiltreringBehandlingTyper().isEmpty(); - } - - private void settStandardSorteringHvisTidligereTilbakebetaling(Long oppgavefiltreringId) { - var sortering = oppgaveRepository.hentSorteringForListe(oppgavefiltreringId); - if (sortering != null && sortering.getFeltkategori().equals(KøSortering.FK_TILBAKEKREVING)) { - settSortering(oppgavefiltreringId, KøSortering.BEHANDLINGSFRIST); - } - } - private OppgaveFiltrering hentFiltrering(Long oppgavefiltreringId) { return oppgaveRepository.hentOppgaveFilterSett(oppgavefiltreringId) .orElseThrow(() -> AvdelingslederTjenesteFeil.fantIkkeOppgavekø(oppgavefiltreringId)); diff --git "a/src/main/java/no/nav/foreldrepenger/los/oppgavek\303\270/OppgaveFiltrering.java" "b/src/main/java/no/nav/foreldrepenger/los/oppgavek\303\270/OppgaveFiltrering.java" index cc055faff..1d8431f5b 100644 --- "a/src/main/java/no/nav/foreldrepenger/los/oppgavek\303\270/OppgaveFiltrering.java" +++ "b/src/main/java/no/nav/foreldrepenger/los/oppgavek\303\270/OppgaveFiltrering.java" @@ -6,6 +6,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; @@ -46,7 +47,7 @@ public class OppgaveFiltrering extends BaseEntitet { @Convert(converter = KøSortering.KodeverdiConverter.class) private KøSortering sortering; - @OneToMany(mappedBy = "oppgaveFiltrering") + @OneToMany(mappedBy = "oppgaveFiltrering", cascade = CascadeType.PERSIST, orphanRemoval = true) private Set filtreringBehandlingTyper = new HashSet<>(); @OneToMany(mappedBy = "oppgaveFiltrering", cascade = CascadeType.PERSIST, orphanRemoval = true) @@ -110,6 +111,10 @@ public List getFiltreringAndreKriterierTyper() { return andreKriterierTyper.stream().toList(); } + public Set getSet() { + return andreKriterierTyper; + } + public Avdeling getAvdeling() { return avdeling; } @@ -148,17 +153,35 @@ public void leggTilSaksbehandler(Saksbehandler saksbehandler) { } } - public void leggTilAndreKriterierType(FiltreringAndreKriterierType filtreringAndreKriterierType) { - fjernAndreKriterierType(filtreringAndreKriterierType.getAndreKriterierType()); + public void fjernSaksbehandler(Saksbehandler saksbehandler) { + this.saksbehandlere.remove(saksbehandler); + } + + public void leggTilFilter(FiltreringAndreKriterierType filtreringAndreKriterierType) { + fjernFilter(filtreringAndreKriterierType.getAndreKriterierType()); this.andreKriterierTyper.add(filtreringAndreKriterierType); } - public void fjernAndreKriterierType(AndreKriterierType andreKriterierType) { + public void leggTilFilter(FagsakYtelseType fagsakYtelseType) { + fjernFilter(fagsakYtelseType); + this.filtreringYtelseTyper.add(new FiltreringYtelseType(this, fagsakYtelseType)); + } + + public void leggTilFilter(BehandlingType behandlingType) { + fjernFilter(behandlingType); + this.filtreringBehandlingTyper.add(new FiltreringBehandlingType(this, behandlingType)); + } + + public void fjernFilter(AndreKriterierType andreKriterierType) { this.andreKriterierTyper.removeIf(akt -> akt.getAndreKriterierType() == andreKriterierType); } - public void fjernSaksbehandler(Saksbehandler saksbehandler) { - this.saksbehandlere.remove(saksbehandler); + public void fjernFilter(FagsakYtelseType fagsakYtelseType) { + this.filtreringYtelseTyper.removeIf(yt -> yt.getFagsakYtelseType() == fagsakYtelseType); + } + + public void fjernFilter(BehandlingType behandlingType) { + this.filtreringBehandlingTyper.removeIf(fbt -> fbt.getBehandlingType() == behandlingType); } public void tilbakestill() { @@ -172,14 +195,6 @@ public static OppgaveFiltrering.Builder builder() { return new OppgaveFiltrering.Builder(); } - public void fjernFagsakYtelseType(FagsakYtelseType fagsakYtelseType) { - this.filtreringYtelseTyper.removeIf(yt -> yt.getFagsakYtelseType() == fagsakYtelseType); - } - - public void leggTilFagsakYtelseType(FagsakYtelseType fagsakYtelseType) { - this.filtreringYtelseTyper.add(new FiltreringYtelseType(this, fagsakYtelseType)); - } - public static class Builder { private OppgaveFiltrering tempOppgaveFiltrering; diff --git a/src/test/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjenesteTest.java b/src/test/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjenesteTest.java index ecdac55b7..3b6da1d55 100644 --- a/src/test/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjenesteTest.java +++ b/src/test/java/no/nav/foreldrepenger/los/avdelingsleder/AvdelingslederTjenesteTest.java @@ -79,9 +79,33 @@ void testSlettListe() throws IllegalArgumentException { void testSettSorteringPåListe() { var liste = OppgaveFiltrering.nyTomOppgaveFiltrering(avdelingDrammen()); persistAndFlush(liste); - avdelingslederTjeneste.settSortering(liste.getId(), KøSortering.BEHANDLINGSFRIST); + avdelingslederTjeneste.settSortering(liste.getId(), KøSortering.FØRSTE_STØNADSDAG); entityManager.refresh(liste); - assertThat(liste.getSortering()).isEqualTo(KøSortering.BEHANDLINGSFRIST); + assertThat(liste.getSortering()).isEqualTo(KøSortering.FØRSTE_STØNADSDAG); + } + + @Test + void settStandardSorteringNårTilbakebetalingfilterIkkeAktivt() { + var liste = OppgaveFiltrering.nyTomOppgaveFiltrering(avdelingDrammen()); + liste.leggTilFilter(BehandlingType.TILBAKEBETALING); + persistAndFlush(liste); + avdelingslederTjeneste.settSortering(liste.getId(), KøSortering.BELØP); + avdelingslederTjeneste.settSorteringNumeriskIntervall(liste.getId(), 100L, 200L); + entityManager.refresh(liste); + assertThat(liste) + .matches(d -> d.getFra().equals(100L)) + .matches(d -> d.getTil().equals(200L)) + .matches(OppgaveFiltrering::getErDynamiskPeriode) + .matches(d -> d.getSortering() == KøSortering.BELØP); + + // sett standard sortering når det ikke lenger er filter på behandlingtype tilbakebetaling + avdelingslederTjeneste.endreFiltreringBehandlingType(liste.getId(), BehandlingType.TILBAKEBETALING, false); + entityManager.refresh(liste); + assertThat(liste) + .matches(d -> d.getFra() == null) + .matches(d -> d.getTil() == null) + .matches(d -> !d.getErDynamiskPeriode()) + .matches(d -> d.getSortering() == KøSortering.BEHANDLINGSFRIST); } @Test