From 8032cf027950e2405a56da4dfb55e7d9c02d6f5f Mon Sep 17 00:00:00 2001 From: Siri Mykland <35257015+sirimykland@users.noreply.github.com> Date: Fri, 12 Apr 2024 01:35:55 -0700 Subject: [PATCH] feat: legge til hentUtvidetOrganisasjon i EReg-klient (#1358) Co-authored-by: Jens-Otto Larsen <46576810+jolarsen@users.noreply.github.com> --- .../AbstractOrganisasjonKlient.java | 25 ++++++--- .../JuridiskEnhetVirksomheter.java | 1 + .../integrasjon/organisasjon/OrgInfo.java | 4 ++ .../organisasjon/UtvidetOrganisasjonEReg.java | 56 +++++++++++++++++++ 4 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/UtvidetOrganisasjonEReg.java diff --git a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/AbstractOrganisasjonKlient.java b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/AbstractOrganisasjonKlient.java index 6eb88676a..83fd96a0f 100644 --- a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/AbstractOrganisasjonKlient.java +++ b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/AbstractOrganisasjonKlient.java @@ -27,9 +27,7 @@ protected AbstractOrganisasjonKlient(RestClient client) { @Override public OrganisasjonEReg hentOrganisasjon(String orgnummer) { - var uri = lagURI(orgnummer); - var request = RestRequest.newGET(uri, restConfig); - return restKlient.send(request, OrganisasjonEReg.class); + return hentOrganisasjon(orgnummer, OrganisasjonEReg.class); } @Override @@ -41,20 +39,29 @@ public T hentOrganisasjon(String orgnummer, Class clazz) { @Override public String hentOrganisasjonNavn(String orgnummer) { - var uri = lagURI(orgnummer); - var request = RestRequest.newGET(uri, restConfig); - return restKlient.send(request, OrganisasjonEReg.class).getNavn(); + return hentOrganisasjon(orgnummer, OrganisasjonEReg.class).getNavn(); } @Override + @Deprecated /* Bruk hentUtvidetOrganisasjon */ public JuridiskEnhetVirksomheter hentOrganisasjonHistorikk(String orgnummer) { + return hentUtvidetOrganisasjon(orgnummer, JuridiskEnhetVirksomheter.class); + } + + @Override + public UtvidetOrganisasjonEReg hentUtvidetOrganisasjon(String orgnummer) { + return hentUtvidetOrganisasjon(orgnummer, UtvidetOrganisasjonEReg.class); + } + + @Override + public T hentUtvidetOrganisasjon(String orgnummer, Class clazz) { var query = UriBuilder.fromUri(restConfig.endpoint()) .path(orgnummer) - .queryParam("inkluderHierarki", "true") - .queryParam("inkluderHistorikk", "true") + .queryParam("inkluderHierarki", true) + .queryParam("inkluderHistorikk", true) .build(); var request = RestRequest.newGET(query, restConfig); - return restKlient.send(request, JuridiskEnhetVirksomheter.class); + return restKlient.send(request, clazz); } private URI lagURI(String orgnummer) { diff --git a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/JuridiskEnhetVirksomheter.java b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/JuridiskEnhetVirksomheter.java index 9c0a67f5b..d6c69899c 100644 --- a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/JuridiskEnhetVirksomheter.java +++ b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/JuridiskEnhetVirksomheter.java @@ -10,6 +10,7 @@ import no.nav.vedtak.konfig.Tid; @JsonIgnoreProperties(ignoreUnknown = true) +@Deprecated /* Bruk OrganisasjonUtvidetEReg */ public record JuridiskEnhetVirksomheter(String organisasjonsnummer, OrganisasjonstypeEReg type, OrganisasjonDetaljer organisasjonDetaljer, List driverVirksomheter) { diff --git a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/OrgInfo.java b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/OrgInfo.java index 8bf19b2a4..f58962938 100644 --- a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/OrgInfo.java +++ b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/OrgInfo.java @@ -10,4 +10,8 @@ public interface OrgInfo { JuridiskEnhetVirksomheter hentOrganisasjonHistorikk(String orgnummer); + UtvidetOrganisasjonEReg hentUtvidetOrganisasjon(String orgnummer); + + T hentUtvidetOrganisasjon(String orgnummer, Class clazz); + } diff --git a/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/UtvidetOrganisasjonEReg.java b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/UtvidetOrganisasjonEReg.java new file mode 100644 index 000000000..830ef7ad9 --- /dev/null +++ b/integrasjon/ereg-klient/src/main/java/no/nav/vedtak/felles/integrasjon/organisasjon/UtvidetOrganisasjonEReg.java @@ -0,0 +1,56 @@ +package no.nav.vedtak.felles.integrasjon.organisasjon; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import no.nav.vedtak.konfig.Tid; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record UtvidetOrganisasjonEReg(String organisasjonsnummer, OrganisasjonstypeEReg type, OrganisasjonDetaljer organisasjonDetaljer, + List driverVirksomheter) { + + + public List getEksaktVirksomhetForDato(LocalDate hentedato) { + if (!OrganisasjonstypeEReg.JURIDISK_ENHET.equals(type) || getOpphørsdatoNonNull().isBefore(hentedato)) { + return List.of(); + } + return Optional.ofNullable(driverVirksomheter) + .orElse(List.of()) + .stream() + .filter(v -> v.gyldighetsperiode().fom().isBefore(hentedato) && v.gyldighetsperiode().getTomNonNull().isAfter(hentedato)) + .map(DriverVirksomhet::organisasjonsnummer) + .toList(); + } + + public LocalDate getRegistreringsdato() { + return Optional.ofNullable(organisasjonDetaljer).map(OrganisasjonDetaljer::registreringsdato).map(LocalDateTime::toLocalDate).orElse(null); + } + + public LocalDate getOpphørsdato() { + return Optional.ofNullable(organisasjonDetaljer).map(OrganisasjonDetaljer::opphoersdato).orElse(null); + } + + private LocalDate getOpphørsdatoNonNull() { + return Optional.ofNullable(organisasjonDetaljer).map(OrganisasjonDetaljer::opphoersdato).orElse(Tid.TIDENES_ENDE); + } + + private record OrganisasjonDetaljer(LocalDateTime registreringsdato, LocalDate opphoersdato) { + } + + private record DriverVirksomhet(String organisasjonsnummer, Periode gyldighetsperiode) { + } + + private record Periode(LocalDate fom, LocalDate tom) { + + public LocalDate getTomNonNull() { + return Optional.ofNullable(tom).orElse(Tid.TIDENES_ENDE); + } + + } + +} +