diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java index e29658816..314ab21aa 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java @@ -24,7 +24,9 @@ import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.MottattDokumentDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.StønadskontoDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.SøknadDtoMapper; +import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDiffSjekk; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDtoMapper; +import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDtoMapperV2; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.UttakDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.UttakSvpDtoMapper; import no.nav.foreldrepenger.fpformidling.klage.Klage; @@ -91,23 +93,39 @@ public Optional hentOriginalBehandlingHvisFinnes(Behandling behandli } public TilkjentYtelseEngangsstønad hentTilkjentYtelseEngangsstønad(Behandling behandling) { - return TilkjentYtelseDtoMapper.mapTilkjentYtelseESFraDto( + var res = TilkjentYtelseDtoMapper.mapTilkjentYtelseESFraDto( behandlingRestKlient.hentTilkjentYtelseEngangsstønad(behandling.getResourceLinker())); + var resV2 = TilkjentYtelseDtoMapperV2.mapTilkjentYtelseESFraDto( + behandlingRestKlient.hentTilkjentYtelseEngangsstønadV2(behandling.getFormidlingRessurser())); + TilkjentYtelseDiffSjekk.loggDiff(res, resV2); + return res; } public Optional hentTilkjentYtelseESHvisFinnes(Behandling behandling) { - return behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnes(behandling.getResourceLinker()) + var res = behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnes(behandling.getResourceLinker()) .map(TilkjentYtelseDtoMapper::mapTilkjentYtelseESFraDto); + var resV2 = behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnesV2(behandling.getFormidlingRessurser()) + .map(TilkjentYtelseDtoMapperV2::mapTilkjentYtelseESFraDto); + TilkjentYtelseDiffSjekk.loggDiff(res.orElse(null), resV2.orElse(null)); + return res; } public TilkjentYtelseForeldrepenger hentTilkjentYtelseForeldrepenger(Behandling behandling) { - return TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto( + var res = TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto( behandlingRestKlient.hentTilkjentYtelseForeldrepenger(behandling.getResourceLinker()), arbeidsgiverTjeneste::hentArbeidsgiverNavn); + var resV2 = TilkjentYtelseDtoMapperV2.mapTilkjentYtelseDagytelseFraDto( + behandlingRestKlient.hentTilkjentYtelseForeldrepengerV2(behandling.getFormidlingRessurser()), arbeidsgiverTjeneste::hentArbeidsgiverNavn); + TilkjentYtelseDiffSjekk.loggDiff(res, resV2); + return res; } public Optional hentTilkjentYtelseFPHvisFinnes(Behandling behandling) { - return behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnes(behandling.getResourceLinker()) + var res = behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnes(behandling.getResourceLinker()) .map(r -> TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn)); + var resV2 = behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnesV2(behandling.getFormidlingRessurser()) + .map(r -> TilkjentYtelseDtoMapperV2.mapTilkjentYtelseDagytelseFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn)); + TilkjentYtelseDiffSjekk.loggDiff(res.orElse(null), resV2.orElse(null)); + return res; } public FamilieHendelse hentFamiliehendelse(Behandling behandling) { diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java index e7119fa29..f03881992 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java @@ -27,6 +27,7 @@ import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.svp.SvangerskapspengerUttakResultatDto; import no.nav.foreldrepenger.kontrakter.formidling.v1.DokumentProdusertDto; import no.nav.foreldrepenger.kontrakter.fpsak.beregningsgrunnlag.v2.BeregningsgrunnlagDto; +import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto; public interface Behandlinger { @@ -74,17 +75,35 @@ default Optional hentFamiliehendelseHvisFinnes(List< .flatMap(link -> hentDtoFraLink(link, TilkjentYtelseEngangsstønadDto.class)); } + default Optional hentTilkjentYtelseEngangsstønadHvisFinnesV2(List resourceLinker) { + return resourceLinker.stream() + .filter(dto -> "\"tilkjentytelse-engangsstonad".equals(dto.getRel())) + .findFirst() + .flatMap(link -> hentDtoFraLink(link, no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto.class)); + } + default TilkjentYtelseEngangsstønadDto hentTilkjentYtelseEngangsstønad(List resourceLinker) { return hentTilkjentYtelseEngangsstønadHvisFinnes(resourceLinker).orElseThrow( () -> new IllegalStateException("Klarte ikke hente Tilkjent ytelse engangsstønad for behandling: " + hentBehandlingId(resourceLinker))); } + default no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto hentTilkjentYtelseEngangsstønadV2(List resourceLinker) { + return hentTilkjentYtelseEngangsstønadHvisFinnesV2(resourceLinker).orElseThrow( + () -> new IllegalStateException("Klarte ikke hente Tilkjent ytelse engangsstønad for behandling: " + hentBehandlingId(resourceLinker))); + } + default TilkjentYtelseMedUttaksplanDto hentTilkjentYtelseForeldrepenger(List resourceLinker) { return hentTilkjentYtelseForeldrepengerHvisFinnes(resourceLinker).orElseThrow(() -> { throw new IllegalStateException("Klarte ikke hente Tilkjent ytelse foreldrepenger for behandling: " + hentBehandlingId(resourceLinker)); }); } + default TilkjentYtelseDagytelseDto hentTilkjentYtelseForeldrepengerV2(List resourceLinker) { + return hentTilkjentYtelseForeldrepengerHvisFinnesV2(resourceLinker).orElseThrow(() -> { + throw new IllegalStateException("Klarte ikke hente Tilkjent ytelse foreldrepenger for behandling: " + hentBehandlingId(resourceLinker)); + }); + } + default Optional hentTilkjentYtelseForeldrepengerHvisFinnes(List resourceLinker) { return resourceLinker.stream() .filter(dto -> "beregningsresultat-dagytelse".equals(dto.getRel())) @@ -92,6 +111,13 @@ default Optional hentTilkjentYtelseForeldrepenge .flatMap(link -> hentDtoFraLink(link, TilkjentYtelseMedUttaksplanDto.class)); } + default Optional hentTilkjentYtelseForeldrepengerHvisFinnesV2(List resourceLinker) { + return resourceLinker.stream() + .filter(dto -> "tilkjentytelse-dagytelse".equals(dto.getRel())) + .findFirst() + .flatMap(link -> hentDtoFraLink(link, TilkjentYtelseDagytelseDto.class)); + } + default Optional hentSoknadHvisFinnes(List resourceLinker) { return resourceLinker.stream() .filter(dto -> "soknad-backend".equals(dto.getRel())) diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDiffSjekk.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDiffSjekk.java new file mode 100644 index 000000000..98c99ab37 --- /dev/null +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDiffSjekk.java @@ -0,0 +1,34 @@ +package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper; + +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseEngangsstønad; + +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseForeldrepenger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Objects; + +public class TilkjentYtelseDiffSjekk { + private static final Logger LOG = LoggerFactory.getLogger(TilkjentYtelseDiffSjekk.class); + + private TilkjentYtelseDiffSjekk() { + //CDI + } + + public static void loggDiff(TilkjentYtelseEngangsstønad res, TilkjentYtelseEngangsstønad resV2) { + var erLike = Objects.equals(res, resV2); + if (!erLike) { + var msg = String.format("Differanse mellom gammel %s og ny %s tilkjent ytelse engangsstønad", res, resV2); + LOG.info(msg); + } + } + + public static void loggDiff(TilkjentYtelseForeldrepenger res, TilkjentYtelseForeldrepenger resV2) { + var erLike = Objects.equals(res, resV2); + if (!erLike) { + var msg = String.format("Differanse mellom gammel %s og ny %s tilkjent ytelse dagytelse", res, resV2); + LOG.info(msg); + } + } +} diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java new file mode 100644 index 000000000..0b97c020d --- /dev/null +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java @@ -0,0 +1,101 @@ +package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.UnaryOperator; + +import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus; +import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.sortering.PeriodeComparator; +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseAndel; +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseEngangsstønad; +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseForeldrepenger; +import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelsePeriode; +import no.nav.foreldrepenger.fpformidling.typer.ArbeidsforholdRef; +import no.nav.foreldrepenger.fpformidling.typer.DatoIntervall; +import no.nav.foreldrepenger.fpformidling.virksomhet.Arbeidsgiver; +import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto; +import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto; + +public class TilkjentYtelseDtoMapperV2 { + + private TilkjentYtelseDtoMapperV2() { + //CDI + } + + public static TilkjentYtelseEngangsstønad mapTilkjentYtelseESFraDto(TilkjentYtelseEngangsstønadDto dto) { + return new TilkjentYtelseEngangsstønad(dto.beregnetTilkjentYtelse()); + } + + public static TilkjentYtelseForeldrepenger mapTilkjentYtelseDagytelseFraDto(TilkjentYtelseDagytelseDto dto, UnaryOperator hentNavn) { + var tilkjentYtelsePerioder = dto.perioder() + .stream() + .map(p -> mapPeriodeFraDto(p, hentNavn)) + .sorted(PeriodeComparator.TILKJENTYTELSERESULTAT) + .toList(); + return TilkjentYtelseForeldrepenger.ny().leggTilPerioder(tilkjentYtelsePerioder).build(); + } + + + private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelsePeriodeDto dto, UnaryOperator hentNavn) { + List andelListe = new ArrayList<>(); + for (var tilkjentYtelseAndelDto : dto.andeler()) { + andelListe.add(mapAndelFraDto(tilkjentYtelseAndelDto, hentNavn)); + } + return TilkjentYtelsePeriode.ny() + .medDagsats((long) dto.dagsats()) + .medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.fom(), dto.tom())) + .medAndeler(andelListe) + .build(); + } + + //Fpsak slår sammen andeler i dto, så vi må eventuelt splitte dem opp igjen + private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { + return TilkjentYtelseAndel.ny() + .medAktivitetStatus(mapAktivitetstatusFraKontrakt(dto.aktivitetstatus())) + .medArbeidsforholdRef( + dto.arbeidsforholdId() != null && !dto.arbeidsforholdId().isEmpty() ? ArbeidsforholdRef.ref(dto.arbeidsforholdId()) : null) + .medArbeidsgiver(mapArbeidsgiverFraDto(dto, hentNavn)) + .medStillingsprosent(dto.stillingsprosent()) + .medErBrukerMottaker(dto.tilSoker() != null && dto.tilSoker() != 0) + .medErArbeidsgiverMottaker(dto.refusjon() != null && dto.refusjon() != 0) + .medDagsats(summerDagsats(dto)) + .medUtbetalesTilBruker(dto.tilSoker()) + .build(); + } + + private static AktivitetStatus mapAktivitetstatusFraKontrakt(TilkjentYtelseDagytelseDto.Aktivitetstatus aktivitetstatus) { + return switch(aktivitetstatus) { + case ARBEIDSAVKLARINGSPENGER -> AktivitetStatus.ARBEIDSAVKLARINGSPENGER; + case ARBEIDSTAKER -> AktivitetStatus.ARBEIDSTAKER; + case DAGPENGER -> AktivitetStatus.DAGPENGER; + case FRILANSER -> AktivitetStatus.FRILANSER; + case MILITÆR_ELLER_SIVIL -> AktivitetStatus.MILITÆR_ELLER_SIVIL; + case SELVSTENDIG_NÆRINGSDRIVENDE -> AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE; + case BRUKERS_ANDEL -> AktivitetStatus.BRUKERS_ANDEL; + case KUN_YTELSE -> AktivitetStatus.KUN_YTELSE; + case TTLSTØTENDE_YTELSE -> AktivitetStatus.TTLSTØTENDE_YTELSE; + case VENTELØNN_VARTPENGER -> AktivitetStatus.VENTELØNN_VARTPENGER; + case KOMBINERT_AT_FL, KOMBINERT_AT_SN, KOMBINERT_FL_SN, + KOMBINERT_AT_FL_SN, UDEFINERT -> throw new IllegalStateException("Ugyldig aktivitetstatus for tilkjent ytelse andel: " + aktivitetstatus); + }; + } + + + private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { + if (!TilkjentYtelseDagytelseDto.Aktivitetstatus.ARBEIDSTAKER.equals(dto.aktivitetstatus()) || dto.arbeidsgiverReferanse() == null) { + return null; + } + return new Arbeidsgiver(dto.arbeidsgiverReferanse(), hentNavn.apply(dto.arbeidsgiverReferanse())); + } + + private static int summerDagsats(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto) { + var sum = 0; + if (dto.tilSoker() != null) { + sum += dto.tilSoker(); + } + if (dto.refusjon() != null) { + sum += dto.refusjon(); + } + return sum; + } +} diff --git a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseAndel.java b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseAndel.java index afe3cc17b..de73f2d33 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseAndel.java +++ b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseAndel.java @@ -1,6 +1,7 @@ package no.nav.foreldrepenger.fpformidling.tilkjentytelse; import java.math.BigDecimal; +import java.util.Objects; import java.util.Optional; import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus; @@ -28,6 +29,31 @@ private TilkjentYtelseAndel(Builder builder) { utbetalesTilBruker = builder.utbetalesTilBruker; } + @Override + public String toString() { + return "TilkjentYtelseAndel{" + "dagsats=" + dagsats + ", aktivitetStatus=" + aktivitetStatus + ", erArbeidsgiverMottaker=" + + erArbeidsgiverMottaker + ", stillingsprosent=" + stillingsprosent + ", arbeidsgiver=" + arbeidsgiver + ", arbeidsforholdRef=" + + arbeidsforholdRef + ", erBrukerMottaker=" + erBrukerMottaker + ", utbetalesTilBruker=" + utbetalesTilBruker + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + TilkjentYtelseAndel that = (TilkjentYtelseAndel) o; + return dagsats == that.dagsats && erArbeidsgiverMottaker == that.erArbeidsgiverMottaker && erBrukerMottaker == that.erBrukerMottaker + && utbetalesTilBruker == that.utbetalesTilBruker && aktivitetStatus == that.aktivitetStatus && Objects.equals(stillingsprosent, + that.stillingsprosent) && Objects.equals(arbeidsgiver, that.arbeidsgiver) && Objects.equals(arbeidsforholdRef, that.arbeidsforholdRef); + } + + @Override + public int hashCode() { + return Objects.hash(dagsats, aktivitetStatus, erArbeidsgiverMottaker, stillingsprosent, arbeidsgiver, arbeidsforholdRef, erBrukerMottaker, + utbetalesTilBruker); + } + public static Builder ny() { return new Builder(); } diff --git a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseForeldrepenger.java b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseForeldrepenger.java index 561031eae..6446b44b3 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseForeldrepenger.java +++ b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelseForeldrepenger.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class TilkjentYtelseForeldrepenger { private List perioder; @@ -18,6 +19,26 @@ public List getPerioder() { return perioder; } + @Override + public String toString() { + return "TilkjentYtelseForeldrepenger{" + "perioder=" + perioder + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + TilkjentYtelseForeldrepenger that = (TilkjentYtelseForeldrepenger) o; + return Objects.equals(perioder, that.perioder); + } + + @Override + public int hashCode() { + return Objects.hash(perioder); + } + public static final class Builder { private List perioder = new ArrayList<>(); diff --git a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelsePeriode.java b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelsePeriode.java index 31b396dc9..924d9f4d6 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelsePeriode.java +++ b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/tilkjentytelse/TilkjentYtelsePeriode.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import no.nav.foreldrepenger.fpformidling.typer.DatoIntervall; @@ -25,6 +26,28 @@ private TilkjentYtelsePeriode(Builder builder) { .sum()).longValue(); } + @Override + public String toString() { + return "TilkjentYtelsePeriode{" + "dagsats=" + dagsats + ", periode=" + periode + ", utbetaltTilSøker=" + utbetaltTilSøker + ", andeler=" + + andeler + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + TilkjentYtelsePeriode that = (TilkjentYtelsePeriode) o; + return Objects.equals(dagsats, that.dagsats) && Objects.equals(periode, that.periode) && Objects.equals(utbetaltTilSøker, + that.utbetaltTilSøker) && Objects.equals(andeler, that.andeler); + } + + @Override + public int hashCode() { + return Objects.hash(dagsats, periode, utbetaltTilSøker, andeler); + } + public static Builder ny() { return new Builder(); } diff --git a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/virksomhet/Arbeidsgiver.java b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/virksomhet/Arbeidsgiver.java index 92d373245..e9238677f 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/fpformidling/virksomhet/Arbeidsgiver.java +++ b/domene/src/main/java/no/nav/foreldrepenger/fpformidling/virksomhet/Arbeidsgiver.java @@ -23,6 +23,18 @@ public int hashCode() { @Override public String toString() { - return "Arbeidsgiver{" + "arbeidsgiverReferanse='" + arbeidsgiverReferanse + '\'' + '}'; + return "Arbeidsgiver{" + "arbeidsgiverReferanse='" + tilMaskertNummer(arbeidsgiverReferanse) + '\'' + '}'; } + + public static String tilMaskertNummer(String orgNummer) { + if (orgNummer == null) { + return null; + } + var length = orgNummer.length(); + if (length <= 4) { + return "*".repeat(length); + } + return "*".repeat(length - 4) + orgNummer.substring(length - 4); + } + }