Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lagt til logging av CallId i kall mot pensjon #3438

Merged
merged 3 commits into from
Apr 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -95,28 +95,6 @@ public class PensjonforvalterClient implements ClientRegister {
private final ObjectMapper objectMapper;
private final Norg2Consumer norg2Consumer;

public static PensjonforvalterResponse mergePensjonforvalterResponses(List<PensjonforvalterResponse> responser) {

var status = new HashMap<String, PensjonforvalterResponse.Response>();
responser.forEach(respons -> respons.getStatus()
.forEach(detalj -> {
if (detalj.getResponse().isResponse2xx()) {
status.putIfAbsent(detalj.getMiljo(), detalj.getResponse());
} else {
status.put(detalj.getMiljo(), detalj.getResponse());
}
}));

return PensjonforvalterResponse.builder()
.status(status.entrySet().stream()
.map(detalj -> PensjonforvalterResponse.ResponseEnvironment.builder()
.miljo(detalj.getKey())
.response(detalj.getValue())
.build())
.toList())
.build();
}

@Override
public Flux<ClientFuture> gjenopprett(RsDollyUtvidetBestilling bestilling, DollyPerson dollyPerson, BestillingProgress progress, boolean isOpprettEndre) {

Expand Down Expand Up @@ -216,13 +194,34 @@ public Flux<ClientFuture> gjenopprett(RsDollyUtvidetBestilling bestilling, Dolly
.map(status2 -> futurePersist(dollyPerson, progress, status2)));
}

private static Mono<List<PdlPersonBolk.PersonBolk>> getPdlPerson(Flux<PdlPersonBolk.Data> persondata) {
@Override
public void release(List<String> identer) {

return persondata
.map(PdlPersonBolk.Data::getHentPersonBolk)
.flatMap(Flux::fromIterable)
.filter(personBolk -> nonNull(personBolk.getPerson()))
.collectList();
// Pensjonforvalter / POPP støtter pt ikke sletting

pensjonforvalterConsumer.sletteTpForhold(identer);
}

public static PensjonforvalterResponse mergePensjonforvalterResponses(List<PensjonforvalterResponse> responser) {

var status = new HashMap<String, PensjonforvalterResponse.Response>();
responser.forEach(respons -> respons.getStatus()
.forEach(detalj -> {
if (detalj.getResponse().isResponse2xx()) {
status.putIfAbsent(detalj.getMiljo(), detalj.getResponse());
} else {
status.put(detalj.getMiljo(), detalj.getResponse());
}
}));

return PensjonforvalterResponse.builder()
.status(status.entrySet().stream()
.map(detalj -> PensjonforvalterResponse.ResponseEnvironment.builder()
.miljo(detalj.getKey())
.response(detalj.getValue())
.build())
.toList())
.build();
}

private Mono<String> getNavEnhetNr(Flux<PdlPersonBolk.Data> persondata, String ident) {
Expand Down Expand Up @@ -275,18 +274,13 @@ private Flux<PensjonforvalterResponse> annulerAlleSamboere(String ident, Set<Str
.map(PensjonSamboerResponse.Samboerforhold::getPidSamboer)
.flatMap(identSamboer -> pensjonforvalterConsumer.hentSamboer(identSamboer, miljoe)))
.flatMap(samboerResponse -> Flux.fromIterable(samboerResponse.getSamboerforhold())
.flatMap(samboer -> pensjonforvalterConsumer.annullerSamboer(samboer.getPidBruker(),
.flatMap(samboer -> pensjonforvalterConsumer.annullerSamboer(
getPeriodeId(samboer.get_links().getAnnuller().getHref()), miljoe)
.filter(response1 -> samboer.getPidBruker().equals(ident) &&
response1.getStatus().stream()
.noneMatch(status -> status.getResponse().getHttpStatus().getStatus() == 200))))));
}

private static String getPeriodeId(String lenke) {
return lenke.substring(lenke.indexOf(PERIODE) + PERIODE.length())
.replace("/annuller", "");
}

private String prepInitStatus(Set<String> miljoer) {

return PENSJON_FORVALTER +
Expand Down Expand Up @@ -344,14 +338,6 @@ private Flux<PdlPersonBolk.Data> getPersonData(List<String> identer) {
.map(PdlPersonBolk::getData);
}

@Override
public void release(List<String> identer) {

// Pensjonforvalter / POPP støtter pt ikke sletting

pensjonforvalterConsumer.sletteTpForhold(identer);
}

private Flux<PensjonforvalterResponse> opprettPersoner(String hovedperson, Set<String> miljoer,
List<PdlPersonBolk.PersonBolk> personer) {

Expand Down Expand Up @@ -418,43 +404,27 @@ private Flux<PensjonforvalterResponse> lagreUforetrygd(PensjonData pensjondata,

if (isOpprettEndre || !transaksjonMappingService.existAlready(PEN_UT, ident, miljoe, null)) {

var context = MappingContextUtils.getMappingContext();
context.setProperty(IDENT, ident);
context.setProperty(MILJOER, List.of(miljoe));
context.setProperty(NAV_ENHET, navEnhetNr);
return Flux.just(mapperFacade.map(uforetrygd, PensjonUforetrygdRequest.class, context))
.flatMap(request -> pensjonforvalterConsumer.lagreUforetrygd(request)
.map(response -> {
response.getStatus().stream()
.filter(status -> status.getResponse().isResponse2xx())
.forEach(status ->
saveAPTransaksjonId(ident, status.getMiljo(), bestillingId,
PEN_UT, new AtomicReference<>(request)));
return response;
}));
var context = MappingContextUtils.getMappingContext();
context.setProperty(IDENT, ident);
context.setProperty(MILJOER, List.of(miljoe));
context.setProperty(NAV_ENHET, navEnhetNr);
return Flux.just(mapperFacade.map(uforetrygd, PensjonUforetrygdRequest.class, context))
.flatMap(request -> pensjonforvalterConsumer.lagreUforetrygd(request)
.map(response -> {
response.getStatus().stream()
.filter(status -> status.getResponse().isResponse2xx())
.forEach(status ->
saveAPTransaksjonId(ident, status.getMiljo(), bestillingId,
PEN_UT, new AtomicReference<>(request)));
return response;
}));

} else {
return getStatus(miljoe, 200, "OK");
}
}));
}

private static Flux<PensjonforvalterResponse> getStatus(String miljoe, Integer status, String reasonPhrase) {

return Flux.just(PensjonforvalterResponse.builder()
.status(List.of(PensjonforvalterResponse.ResponseEnvironment.builder()
.miljo(miljoe)
.response(PensjonforvalterResponse.Response.builder()
.httpStatus(PensjonforvalterResponse.HttpStatus.builder()
.status(status)
.reasonPhrase(reasonPhrase)
.build())
.message(reasonPhrase)
.build())
.build()))
.build());
}

@SuppressWarnings("java:S3740")
private void saveAPTransaksjonId(String ident, String miljoe, Long bestillingId, SystemTyper
type, AtomicReference vedtak) {
Expand Down Expand Up @@ -531,24 +501,6 @@ private String decodeStatus(PensjonforvalterResponse response, String ident) {
.collect(Collectors.joining(","));
}

String getError(PensjonforvalterResponse.ResponseEnvironment entry) {

var response = entry.getResponse();
var httpStatus = response.getHttpStatus();

if (isNotBlank(response.getMessage())) {
if (response.getMessage().contains("{")) {
return ErrorStatusDecoder.encodeStatus(
"Feil: " + response.getMessage().split("\\{")[1].split("}")[0].replace("message\":", ""));
} else {
return ErrorStatusDecoder.encodeStatus("Feil: " + response.getMessage());
}

} else {
return errorStatusDecoder.getErrorText(HttpStatus.valueOf(httpStatus.getStatus()), httpStatus.getReasonPhrase());
}
}

private String toJson(Object object) {

try {
Expand All @@ -559,6 +511,36 @@ private String toJson(Object object) {
return null;
}

private static Mono<List<PdlPersonBolk.PersonBolk>> getPdlPerson(Flux<PdlPersonBolk.Data> persondata) {

return persondata
.map(PdlPersonBolk.Data::getHentPersonBolk)
.flatMap(Flux::fromIterable)
.filter(personBolk -> nonNull(personBolk.getPerson()))
.collectList();
}

private static String getPeriodeId(String lenke) {
return lenke.substring(lenke.indexOf(PERIODE) + PERIODE.length())
.replace("/annuller", "");
}

private static Flux<PensjonforvalterResponse> getStatus(String miljoe, Integer status, String reasonPhrase) {

return Flux.just(PensjonforvalterResponse.builder()
.status(List.of(PensjonforvalterResponse.ResponseEnvironment.builder()
.miljo(miljoe)
.response(PensjonforvalterResponse.Response.builder()
.httpStatus(PensjonforvalterResponse.HttpStatus.builder()
.status(status)
.reasonPhrase(reasonPhrase)
.build())
.message(reasonPhrase)
.build())
.build()))
.build());
}

private static String getGeografiskTilknytning(PdlPersonBolk.GeografiskTilknytning tilknytning) {

if (isNotBlank(tilknytning.getGtKommune())) {
Expand All @@ -571,4 +553,22 @@ private static String getGeografiskTilknytning(PdlPersonBolk.GeografiskTilknytni
return "030102";
}
}

String getError(PensjonforvalterResponse.ResponseEnvironment entry) {

var response = entry.getResponse();
var httpStatus = response.getHttpStatus();

if (isNotBlank(response.getMessage())) {
if (response.getMessage().contains("{")) {
return ErrorStatusDecoder.encodeStatus(
"Feil: " + response.getMessage().split("\\{")[1].split("}")[0].replace("message\":", ""));
} else {
return ErrorStatusDecoder.encodeStatus("Feil: " + response.getMessage());
}

} else {
return errorStatusDecoder.getErrorText(HttpStatus.valueOf(httpStatus.getStatus()), httpStatus.getReasonPhrase());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,83 +59,76 @@ public PensjonforvalterConsumer(
.build();
}

@Timed(name = "providers", tags = {"operation", "pen_getMiljoer"})
@Timed(name = "providers", tags = { "operation", "pen_getMiljoer" })
public Mono<Set<String>> getMiljoer() {

return tokenService.exchange(serverProperties)
.flatMap(token -> new HentMiljoerCommand(webClient, token.getTokenValue()).call());
}

@Timed(name = "providers", tags = {"operation", "popp_lagreInntekt"})
@Timed(name = "providers", tags = { "operation", "popp_lagreInntekt" })
public Flux<PensjonforvalterResponse> lagreInntekter(PensjonPoppInntektRequest pensjonPoppInntektRequest) {

log.info("Popp lagre inntekt {}", pensjonPoppInntektRequest);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagrePoppInntektCommand(webClient, token.getTokenValue(),
pensjonPoppInntektRequest).call());
pensjonPoppInntektRequest).call());
}

@Timed(name = "providers", tags = {"operation", "pen_opprettPerson"})
@Timed(name = "providers", tags = { "operation", "pen_opprettPerson" })
public Flux<PensjonforvalterResponse> opprettPerson(PensjonPersonRequest pensjonPersonRequest,
Set<String> miljoer) {

pensjonPersonRequest.setMiljoer(miljoer);
log.info("Pensjon opprett person {}", pensjonPersonRequest);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new OpprettPersonCommand(webClient, pensjonPersonRequest, token.getTokenValue()).call());
}

@Timed(name = "providers", tags = {"operation", "pen_hentSamboer"})
@Timed(name = "providers", tags = { "operation", "pen_hentSamboer" })
public Flux<PensjonSamboerResponse> hentSamboer(String ident, String miljoe) {

return tokenService.exchange(serverProperties)
.flatMapMany(token -> new HentSamboerCommand(webClient, ident, miljoe, token.getTokenValue()).call())
.doOnNext(response -> log.info("Pensjon samboer for {} i {} hentet {}", ident, miljoe, response));
}

@Timed(name = "providers", tags = {"operation", "pen_opprettSamboer"})
@Timed(name = "providers", tags = { "operation", "pen_opprettSamboer" })
public Flux<PensjonforvalterResponse> lagreSamboer(PensjonSamboerRequest pensjonSamboerRequest,
String miljoe) {

log.info("Pensjon samboer opprett i {} {}", miljoe, pensjonSamboerRequest);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreSamboerCommand(webClient, pensjonSamboerRequest, miljoe, token.getTokenValue()).call());
}

@Timed(name = "providers", tags = {"operation", "pen_opprettSamboer"})
public Flux<PensjonforvalterResponse> annullerSamboer(String ident, String periodeId, String miljoe) {
@Timed(name = "providers", tags = { "operation", "pen_opprettSamboer" })
public Flux<PensjonforvalterResponse> annullerSamboer(String periodeId, String miljoe) {

log.info("Pensjon samboer annuller {} periodeId {}", ident, periodeId);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new AnnullerSamboerCommand(webClient, periodeId, miljoe, token.getTokenValue()).call());
}

@Timed(name = "providers", tags = {"operation", "pen_lagreAlderspensjon"})
@Timed(name = "providers", tags = { "operation", "pen_lagreAlderspensjon" })
public Flux<PensjonforvalterResponse> lagreAlderspensjon(AlderspensjonRequest request) {

log.info("Pensjon lagre alderspensjon {}", request);
return tokenService.exchange(serverProperties)
.flatMapMany(token ->
new LagreAlderspensjonCommand(webClient, token.getTokenValue(), request).call());
}

@Timed(name = "providers", tags = {"operation", "pen_lagreUforetrygd"})
@Timed(name = "providers", tags = { "operation", "pen_lagreUforetrygd" })
public Flux<PensjonforvalterResponse> lagreUforetrygd(PensjonUforetrygdRequest request) {

log.info("Pensjon lagre uforetrygd {}", request);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreUforetrygdCommand(webClient, token.getTokenValue(), request).call());
}

@Timed(name = "providers", tags = {"operation", "pen_lagreTpForhold"})
@Timed(name = "providers", tags = { "operation", "pen_lagreTpForhold" })
public Flux<PensjonforvalterResponse> lagreTpForhold(PensjonTpForholdRequest pensjonTpForholdRequest) {

log.info("Pensjon lagre TP-forhold {}", pensjonTpForholdRequest);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreTpForholdCommand(webClient, token.getTokenValue(), pensjonTpForholdRequest).call());
}

@Timed(name = "providers", tags = {"operation", "pen_sletteTpForhold"})
@Timed(name = "providers", tags = { "operation", "pen_sletteTpForhold" })
public void sletteTpForhold(List<String> identer) {

tokenService.exchange(serverProperties)
Expand All @@ -147,10 +140,9 @@ public void sletteTpForhold(List<String> identer) {
.subscribe(response -> log.info("Slettet mot PESYS (tp) i alle miljoer"));
}

@Timed(name = "providers", tags = {"operation", "pen_lagreTpYtelse"})
@Timed(name = "providers", tags = { "operation", "pen_lagreTpYtelse" })
public Flux<PensjonforvalterResponse> lagreTpYtelse(PensjonTpYtelseRequest pensjonTpYtelseRequest) {

log.info("Pensjon lagre TP-ytelse {}", pensjonTpYtelseRequest);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreTpYtelseCommand(webClient, token.getTokenValue(), pensjonTpYtelseRequest).call());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,17 @@ public class AnnullerSamboerCommand implements Callable<Mono<PensjonforvalterRes
private final String token;

public Mono<PensjonforvalterResponse> call() {

var callId = generateCallId();
log.info("Pensjon samboer annuller periodeId {}, callId: {}", periodeId, callId);

return webClient
.put()
.uri(uriBuilder -> uriBuilder
.path(PEN_SAMBOER_URL)
.build(miljoe, periodeId))
.header(AUTHORIZATION, "Bearer " + token)
.header(HEADER_NAV_CALL_ID, generateCallId())
.header(HEADER_NAV_CALL_ID, callId)
.header(HEADER_NAV_CONSUMER_ID, CONSUMER)
.retrieve()
.toBodilessEntity()
Expand Down Expand Up @@ -75,7 +79,7 @@ private static PensjonforvalterResponse pensjonforvalterResponseFromError(String
.reasonPhrase(WebClientFilter.getStatus(error).getReasonPhrase())
.build())
.message(WebClientFilter.getMessage(error))
.path(PEN_SAMBOER_URL.replace("{miljoe}", miljoe).replace("{periodeId}", periodeId))
.path(PEN_SAMBOER_URL.replace("{miljoe}", miljoe).replace("{periodeId}", periodeId))
.build())
.build();

Expand Down
Loading
Loading