Skip to content

Commit

Permalink
Refaktorert PensjonforvalterClient og PensjonforvalterConsumer
Browse files Browse the repository at this point in the history
  • Loading branch information
stigus committed Apr 3, 2024
1 parent 6d6516f commit a8d3c48
Show file tree
Hide file tree
Showing 11 changed files with 140 additions and 130 deletions.
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 @@ -35,7 +35,6 @@
import java.util.List;
import java.util.Set;

import static no.nav.dolly.util.CallIdUtil.generateCallId;
import static no.nav.dolly.util.JacksonExchangeStrategyUtil.getJacksonStrategy;

@Slf4j
Expand Down Expand Up @@ -70,22 +69,18 @@ public Mono<Set<String>> getMiljoer() {
@Timed(name = "providers", tags = { "operation", "popp_lagreInntekt" })
public Flux<PensjonforvalterResponse> lagreInntekter(PensjonPoppInntektRequest pensjonPoppInntektRequest) {

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

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

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

@Timed(name = "providers", tags = { "operation", "pen_hentSamboer" })
Expand All @@ -100,59 +95,46 @@ public Flux<PensjonSamboerResponse> hentSamboer(String ident, String miljoe) {
public Flux<PensjonforvalterResponse> lagreSamboer(PensjonSamboerRequest pensjonSamboerRequest,
String miljoe) {

String callId = generateCallId();
log.info("Pensjon samboer opprett i {} {}, callId: {}", miljoe, pensjonSamboerRequest, callId);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreSamboerCommand(webClient, pensjonSamboerRequest, miljoe, token.getTokenValue(), callId).call());
.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) {
public Flux<PensjonforvalterResponse> annullerSamboer(String periodeId, String miljoe) {

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

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

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

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

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

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

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

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

String callId = generateCallId();
log.info("Pensjon slette TP-forhold callId: {}", callId);

tokenService.exchange(serverProperties)
.flatMapMany(token -> new HentMiljoerCommand(webClient, token.getTokenValue()).call()
.flatMapMany(miljoer -> Flux.range(0, identer.size())
.map(index -> new SletteTpForholdCommand(webClient, identer.get(index), miljoer, token.getTokenValue(), callId).call())))
.map(index -> new SletteTpForholdCommand(webClient, identer.get(index), miljoer, token.getTokenValue()).call())))
.flatMap((Flux::from))
.collectList()
.subscribe(response -> log.info("Slettet mot PESYS (tp) i alle miljoer"));
Expand All @@ -161,10 +143,8 @@ public void sletteTpForhold(List<String> identer) {
@Timed(name = "providers", tags = { "operation", "pen_lagreTpYtelse" })
public Flux<PensjonforvalterResponse> lagreTpYtelse(PensjonTpYtelseRequest pensjonTpYtelseRequest) {

String callId = generateCallId();
log.info("Pensjon lagre TP-ytelse {}, callId: {}", pensjonTpYtelseRequest, callId);
return tokenService.exchange(serverProperties)
.flatMapMany(token -> new LagreTpYtelseCommand(webClient, token.getTokenValue(), pensjonTpYtelseRequest, callId).call());
.flatMapMany(token -> new LagreTpYtelseCommand(webClient, token.getTokenValue(), pensjonTpYtelseRequest).call());
}

@Override
Expand Down
Loading

0 comments on commit a8d3c48

Please sign in to comment.