Skip to content

Commit

Permalink
Moderniser LosBehandlingDto
Browse files Browse the repository at this point in the history
  • Loading branch information
jolarsen committed Jun 27, 2024
1 parent fb15fe7 commit 7d7e90b
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 164 deletions.
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
<sonar.projectName>fp-los</sonar.projectName>
<sonar.projectKey>navikt_fplos</sonar.projectKey>

<fp-kontrakter.version>9.1.15</fp-kontrakter.version>
<felles.version>7.2.0</felles.version>
<prosesstask.version>5.0.9</prosesstask.version>
<fp-kontrakter.version>9.1.19</fp-kontrakter.version>
<felles.version>7.2.1</felles.version>
<prosesstask.version>5.0.11</prosesstask.version>
</properties>

<dependencies>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package no.nav.foreldrepenger.los.hendelse.hendelsehåndterer;

public enum LokalFagsakEgenskap {
EØS_BOSATT_NORGE,
BOSATT_UTLAND,
SAMMENSATT_KONTROLL,
DØD,
NÆRING,
PRAKSIS_UTSETTELSE
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,21 @@
import java.util.function.Predicate;

import no.nav.foreldrepenger.los.felles.util.StreamUtil;
import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.FagsakEgenskaper;
import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.LokalFagsakEgenskap;
import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.OppgaveEgenskapFinner;
import no.nav.foreldrepenger.los.oppgave.AndreKriterierType;
import no.nav.vedtak.hendelser.behandling.Behandlingstype;
import no.nav.vedtak.hendelser.behandling.Behandlingsårsak;
import no.nav.vedtak.hendelser.behandling.Ytelse;
import no.nav.vedtak.hendelser.behandling.los.LosBehandlingDto;
import no.nav.vedtak.hendelser.behandling.los.LosFagsakEgenskaperDto;
import no.nav.vedtak.hendelser.behandling.los.LosFagsakEgenskaperDto.FagsakMarkering;

public class FpsakOppgaveEgenskapFinner implements OppgaveEgenskapFinner {
private final Set<AndreKriterierType> andreKriterier = new LinkedHashSet<>();
private final String saksbehandlerForTotrinn;

public FpsakOppgaveEgenskapFinner(LosBehandlingDto behandling) {
this.saksbehandlerForTotrinn = behandling.ansvarligSaksbehandlerIdent();
var saksegenskaper = Optional.ofNullable(behandling.saksegenskaper()).orElse(List.of());

if (harBehandlingsegenskap(behandling, LokalBehandlingEgenskap.SYKDOMSVURDERING)) {
this.andreKriterier.add(AndreKriterierType.VURDER_SYKDOM);
Expand Down Expand Up @@ -55,16 +54,16 @@ public FpsakOppgaveEgenskapFinner(LosBehandlingDto behandling) {
if (behandling.behandlingsårsaker().stream().anyMatch(Behandlingsårsak.KLAGE_TILBAKEBETALING::equals)) {
this.andreKriterier.add(AndreKriterierType.KLAGE_PÅ_TILBAKEBETALING);
}
if (FagsakEgenskaper.fagsakErMarkertEØSBosattNorge(behandling) || harSaksegenskap(behandling, LokalFagsakEgenskap.EØS_BOSATT_NORGE)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.EØS_BOSATT_NORGE)) {
this.andreKriterier.add(AndreKriterierType.EØS_SAK);
}
if (FagsakEgenskaper.fagsakErMarkertBosattUtland(behandling) || harSaksegenskap(behandling, LokalFagsakEgenskap.BOSATT_UTLAND)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.BOSATT_UTLAND)) {
this.andreKriterier.add(AndreKriterierType.UTLANDSSAK);
}
if (FagsakEgenskaper.fagsakErMarkertSammensattKontroll(behandling) || harSaksegenskap(behandling, LokalFagsakEgenskap.SAMMENSATT_KONTROLL)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.SAMMENSATT_KONTROLL)) {
this.andreKriterier.add(AndreKriterierType.SAMMENSATT_KONTROLL);
}
if (FagsakEgenskaper.fagsakErMarkertDød(behandling) || harSaksegenskap(behandling, LokalFagsakEgenskap.DØD)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.DØD)) {
this.andreKriterier.add(AndreKriterierType.DØD);
}
var aksjonspunkter = behandling.aksjonspunkt().stream().map(Aksjonspunkt::aksjonspunktFra).toList();
Expand All @@ -75,7 +74,7 @@ public FpsakOppgaveEgenskapFinner(LosBehandlingDto behandling) {
if (matchAksjonspunkt(aksjonspunkter, Aksjonspunkt::erRegistrerPapirSøknad)) {
this.andreKriterier.add(AndreKriterierType.PAPIRSØKNAD);
}
if (skalVurdereBehovForSED(aksjonspunkter, behandling)) {
if (skalVurdereBehovForSED(aksjonspunkter, saksegenskaper)) {
this.andreKriterier.add(AndreKriterierType.VURDER_EØS_OPPTJENING);
}
if (matchAksjonspunkt(aksjonspunkter, Aksjonspunkt::skalVurdereArbeidInntekt)) {
Expand All @@ -85,21 +84,14 @@ public FpsakOppgaveEgenskapFinner(LosBehandlingDto behandling) {
this.andreKriterier.add(AndreKriterierType.VURDER_FORMKRAV);
}
// Legger på egenskap næring kun for aksjonspunkt i Opptjening og Beregning for det som er har oppgitt egen næring.
if (FagsakEgenskaper.fagsakErMarkertNæring(behandling) && matchAksjonspunkt(aksjonspunkter, Aksjonspunkt::skalVurdereNæring)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.NÆRING) && matchAksjonspunkt(aksjonspunkter, Aksjonspunkt::skalVurdereNæring)) {
this.andreKriterier.add(AndreKriterierType.NÆRING);
}
if (harSaksegenskap(behandling, LokalFagsakEgenskap.PRAKSIS_UTSETTELSE) && matchAksjonspunkt(aksjonspunkter, Aksjonspunkt::skalVurdereNæring)) {
this.andreKriterier.add(AndreKriterierType.NÆRING);
}
if (FagsakEgenskaper.fagsakErMarkertUtsettelse(behandling) || harSaksegenskap(behandling, LokalFagsakEgenskap.PRAKSIS_UTSETTELSE)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.PRAKSIS_UTSETTELSE)) {
this.andreKriterier.add(AndreKriterierType.PRAKSIS_UTSETTELSE);
}
}

public enum LokalFagsakEgenskap {
NASJONAL, EØS_BOSATT_NORGE, BOSATT_UTLAND, SAMMENSATT_KONTROLL, DØD, NÆRING, PRAKSIS_UTSETTELSE
}

public enum LokalBehandlingEgenskap {
SYKDOMSVURDERING, BARE_FAR_RETT, FARESIGNALER, DIREKTE_UTBETALING
}
Expand All @@ -114,23 +106,23 @@ public String getSaksbehandlerForTotrinn() {
return saksbehandlerForTotrinn;
}

private static boolean skalVurdereBehovForSED(List<Aksjonspunkt> aksjonspunkt, LosBehandlingDto dto) {
var skalVurdereInnhentingAvSED = matchAksjonspunkt(aksjonspunkt, Aksjonspunkt::skalVurdereInnhentingAvSED);
var fagsakErMarkertNasjonal = Optional.ofNullable(dto).map(LosBehandlingDto::fagsakEgenskaper)
.map(LosFagsakEgenskaperDto::fagsakMarkering)
.filter(FagsakMarkering.NASJONAL::equals)
.isPresent() || harSaksegenskap(dto, LokalFagsakEgenskap.NASJONAL);
return skalVurdereInnhentingAvSED && !fagsakErMarkertNasjonal;
private static boolean skalVurdereBehovForSED(List<Aksjonspunkt> aksjonspunkt, List<String> saksegenskaper) {
if (matchAksjonspunkt(aksjonspunkt, Aksjonspunkt::skalVurdereInnhentingAvSED)) {
return harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.EØS_BOSATT_NORGE) ||
harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.BOSATT_UTLAND);
} else {
return false;
}
}

private static boolean harSaksegenskap(List<String> saksegenskaper, LokalFagsakEgenskap egenskap) {
return saksegenskaper.stream().anyMatch(s -> s.equalsIgnoreCase(egenskap.name()));
}

private static boolean matchAksjonspunkt(List<Aksjonspunkt> aksjonspunkt, Predicate<Aksjonspunkt> predicate) {
return StreamUtil.safeStream(aksjonspunkt).anyMatch(predicate);
}

private static boolean harSaksegenskap(LosBehandlingDto dto, LokalFagsakEgenskap egenskap) {
return Optional.ofNullable(dto).map(LosBehandlingDto::saksegenskaper).orElse(List.of()).stream()
.anyMatch(s -> s.equalsIgnoreCase(egenskap.name()));
}

private static boolean harBehandlingsegenskap(LosBehandlingDto dto, LokalBehandlingEgenskap egenskap) {
return Optional.ofNullable(dto).map(LosBehandlingDto::behandlingsegenskaper).orElse(List.of()).stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;

import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.FagsakEgenskaper;
import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.LokalFagsakEgenskap;
import no.nav.foreldrepenger.los.hendelse.hendelsehåndterer.OppgaveEgenskapFinner;
import no.nav.foreldrepenger.los.oppgave.AndreKriterierType;
import no.nav.vedtak.hendelser.behandling.Aksjonspunktstatus;
Expand All @@ -18,23 +19,24 @@ public class TilbakekrevingOppgaveEgenskapFinner implements OppgaveEgenskapFinne
public TilbakekrevingOppgaveEgenskapFinner(List<LosBehandlingDto.LosAksjonspunktDto> aksjonspunkter,
String saksbehandler,
LosFagsakEgenskaperDto egenskaperDto) {
var saksegenskaper = Optional.ofNullable(egenskaperDto).map(LosFagsakEgenskaperDto::saksegenskaper).orElse(List.of());
this.andreKriterier = new ArrayList<>();
if (FagsakEgenskaper.fagsakErMarkertBosattUtland(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.BOSATT_UTLAND)) {
this.andreKriterier.add(AndreKriterierType.UTLANDSSAK);
}
if (FagsakEgenskaper.fagsakErMarkertEØSBosattNorge(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.EØS_BOSATT_NORGE)) {
this.andreKriterier.add(AndreKriterierType.EØS_SAK);
}
if (FagsakEgenskaper.fagsakErMarkertSammensattKontroll(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.SAMMENSATT_KONTROLL)) {
this.andreKriterier.add(AndreKriterierType.SAMMENSATT_KONTROLL);
}
if (FagsakEgenskaper.fagsakErMarkertDød(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.DØD)) {
this.andreKriterier.add(AndreKriterierType.DØD);
}
if (FagsakEgenskaper.fagsakErMarkertNæring(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.NÆRING)) {
this.andreKriterier.add(AndreKriterierType.NÆRING);
}
if (FagsakEgenskaper.fagsakErMarkertUtsettelse(egenskaperDto)) {
if (harSaksegenskap(saksegenskaper, LokalFagsakEgenskap.PRAKSIS_UTSETTELSE)) {
this.andreKriterier.add(AndreKriterierType.PRAKSIS_UTSETTELSE);
}
if (aksjonspunkter.stream().anyMatch(a -> a.definisjon().equals("5005") && Aksjonspunktstatus.OPPRETTET.equals(a.status())) &&
Expand All @@ -44,6 +46,10 @@ public TilbakekrevingOppgaveEgenskapFinner(List<LosBehandlingDto.LosAksjonspunkt
this.saksbehandlerForTotrinn = saksbehandler;
}

private static boolean harSaksegenskap(List<String> saksegenskaper, LokalFagsakEgenskap egenskap) {
return saksegenskaper.stream().anyMatch(s -> s.equalsIgnoreCase(egenskap.name()));
}

@Override
public List<AndreKriterierType> getAndreKriterier() {
return andreKriterier;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import no.nav.vedtak.hendelser.behandling.Ytelse;
import no.nav.vedtak.hendelser.behandling.los.LosBehandlingDto;
import no.nav.vedtak.hendelser.behandling.los.LosFagsakEgenskaperDto;
import no.nav.vedtak.hendelser.behandling.los.LosFagsakEgenskaperDto.FagsakMarkering;

@ExtendWith(JpaExtension.class)
@ExtendWith(MockitoExtension.class)
Expand Down Expand Up @@ -189,8 +188,8 @@ void skalLukkeOppgaveVedReturFraTilBehandler() {
@Test
void skalHaEgenskapUtlandVedFagsakMarkering() {
var behandlingId = BehandlingId.random();
var fagsakEgenskaper = new LosFagsakEgenskaperDto(FagsakMarkering.BOSATT_UTLAND);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId, fagsakEgenskaper);
var fagsakEgenskaper = new LosFagsakEgenskaperDto(List.of("BOSATT_UTLAND"), null);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId);
handler.håndterBehandling(hendelse, fagsakEgenskaper);
var oppgaveEgenskaper = DBTestUtil.hentUnik(entityManager, OppgaveEgenskap.class);
assertThat(oppgaveEgenskaper.getAndreKriterierType()).isEqualTo(AndreKriterierType.UTLANDSSAK);
Expand All @@ -199,8 +198,8 @@ void skalHaEgenskapUtlandVedFagsakMarkering() {
@Test
void skalFåEgenskapEøsSakNårMarkertSomEøs() {
var behandlingId = BehandlingId.random();
var fpsakEgenskaper = new LosFagsakEgenskaperDto(FagsakMarkering.EØS_BOSATT_NORGE);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId, fpsakEgenskaper);
var fpsakEgenskaper = new LosFagsakEgenskaperDto(List.of("EØS_BOSATT_NORGE"), null);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId);
handler.håndterBehandling(hendelse, fpsakEgenskaper);
var oppgaveEgenskaper = DBTestUtil.hentAlle(entityManager, OppgaveEgenskap.class);
var kriterieTyper = oppgaveEgenskaper.stream().map(OppgaveEgenskap::getAndreKriterierType);
Expand All @@ -210,8 +209,8 @@ void skalHaEgenskapUtlandVedFagsakMarkering() {
@Test
void skalIkkeFåEgenskapEøsSakNårIkkeEøsMarkert() {
var behandlingId = BehandlingId.random();
var fpsakEgenskaper = new LosFagsakEgenskaperDto(FagsakMarkering.BOSATT_UTLAND);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId, fpsakEgenskaper);
var fpsakEgenskaper = new LosFagsakEgenskaperDto(List.of("BOSATT_UTLAND"), null);
var hendelse = hendelse(åpentAksjonspunkt, behandlingId);
handler.håndterBehandling(hendelse, fpsakEgenskaper);
var oppgaveEgenskaper = DBTestUtil.hentAlle(entityManager, OppgaveEgenskap.class);
var kriterieTyper = oppgaveEgenskaper.stream().map(OppgaveEgenskap::getAndreKriterierType);
Expand Down Expand Up @@ -260,10 +259,6 @@ private void sjekkOppgaveEventAntallEr(int antall) {
}

private static LosBehandlingDto hendelse(List<Aksjonspunkt> aksjonspunkter, BehandlingId behandlingId) {
return hendelse(aksjonspunkter, behandlingId, null);
}

private static LosBehandlingDto hendelse(List<Aksjonspunkt> aksjonspunkter, BehandlingId behandlingId, LosFagsakEgenskaperDto fagsakEgenskaperDto) {
var ap = aksjonspunkter.stream()
.map(a -> new LosBehandlingDto.LosAksjonspunktDto(
a.getDefinisjonKode(),
Expand All @@ -275,7 +270,7 @@ private static LosBehandlingDto hendelse(List<Aksjonspunkt> aksjonspunkter, Beha
return new LosBehandlingDto(behandlingId.toUUID(), Kildesystem.FPTILBAKE, "123", Ytelse.FORELDREPENGER,
new no.nav.vedtak.hendelser.behandling.AktørId(AktørId.dummy().getId()), Behandlingstype.TILBAKEBETALING, Behandlingsstatus.OPPRETTET,
LocalDateTime.now(), "0300", null, "saksbehandler", ap, List.of(),
false, false, List.of(), fagsakEgenskaperDto, null, List.of(),
false, false, List.of(), null, List.of(),
new LosBehandlingDto.LosTilbakeDto(BigDecimal.valueOf(500), LocalDate.now()));
}

Expand Down
Loading

0 comments on commit 7d7e90b

Please sign in to comment.