Skip to content

Commit da96de6

Browse files
authored
Feature/alderspensjon revurdering og ny uttaksgrad (#3942)
1 parent a64e9f8 commit da96de6

File tree

41 files changed

+793
-108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+793
-108
lines changed

apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ public static void main(String[] args) {
1212
.initializers(new NaisEnvironmentApplicationContextInitializer())
1313
.run(args);
1414
}
15-
}
15+
}

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterClient.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,14 @@ public Mono<BestillingProgress> gjenopprett(RsDollyUtvidetBestilling bestilling,
7272
.flatMap(bestilling1 -> pensjonPdlPersonService.getUtvidetPersondata(dollyPerson.getIdent())
7373
.flatMapMany(utvidetPersondata ->
7474
Flux.concat(
75-
pensjonPersondataService.lagrePersondata(dollyPerson.getIdent(), utvidetPersondata.getT1(), tilgjengeligeMiljoer),
76-
pensjonPensjonsdataService.lagrePensjonsdata(bestilling1, dollyPerson.getIdent(), bestilteMiljoer.get()),
77-
pensjonVedtakService.lagrePensjonVedtak(bestilling1, dollyPerson.getIdent(), utvidetPersondata, bestilteMiljoer.get())
75+
pensjonPersondataService.lagrePersondata(dollyPerson.getIdent(),
76+
utvidetPersondata.getT1(), bestilling, utvidetPersondata.getT2(),
77+
tilgjengeligeMiljoer, isOpprettEndre),
78+
pensjonPensjonsdataService.lagrePensjonsdata(bestilling1,
79+
dollyPerson.getIdent(), bestilteMiljoer.get()),
80+
pensjonVedtakService.lagrePensjonVedtak(bestilling1,
81+
dollyPerson.getIdent(), utvidetPersondata,
82+
bestilteMiljoer.get(), isOpprettEndre)
7883
)))
7984

8085
.timeout(Duration.ofSeconds(applicationConfig.getClientTimeout()))
@@ -88,7 +93,7 @@ public Mono<BestillingProgress> gjenopprett(RsDollyUtvidetBestilling bestilling,
8893
private Flux<String> getErrors(Set<String> miljoer, Throwable throwable) {
8994

9095
return Flux.fromIterable(miljoer)
91-
.map(miljo -> "%s%s:Feil= %s" .formatted(ANNET, miljo,
96+
.map(miljo -> "%s%s:Feil= %s".formatted(ANNET, miljo,
9297
encodeStatus(WebClientError.describe(throwable).getMessage())));
9398
}
9499

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterConsumer.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import no.nav.dolly.bestilling.pensjonforvalter.command.AnnullerSamboerCommand;
77
import no.nav.dolly.bestilling.pensjonforvalter.command.HentMiljoerCommand;
88
import no.nav.dolly.bestilling.pensjonforvalter.command.HentSamboerCommand;
9+
import no.nav.dolly.bestilling.pensjonforvalter.command.LagreAPNyUttaksgrad;
910
import no.nav.dolly.bestilling.pensjonforvalter.command.LagreAfpOffentligCommand;
1011
import no.nav.dolly.bestilling.pensjonforvalter.command.LagreAlderspensjonCommand;
12+
import no.nav.dolly.bestilling.pensjonforvalter.command.LagreApRevurderingVedtak;
1113
import no.nav.dolly.bestilling.pensjonforvalter.command.LagreGenerertPoppInntektCommand;
1214
import no.nav.dolly.bestilling.pensjonforvalter.command.LagrePensjonsavtaleCommand;
1315
import no.nav.dolly.bestilling.pensjonforvalter.command.LagrePoppInntektCommand;
@@ -22,6 +24,7 @@
2224
import no.nav.dolly.bestilling.pensjonforvalter.command.SlettePoppInntektCommand;
2325
import no.nav.dolly.bestilling.pensjonforvalter.command.SletteTpForholdCommand;
2426
import no.nav.dolly.bestilling.pensjonforvalter.domain.AfpOffentligRequest;
27+
import no.nav.dolly.bestilling.pensjonforvalter.domain.AlderspensjonNyUtaksgradRequest;
2528
import no.nav.dolly.bestilling.pensjonforvalter.domain.AlderspensjonRequest;
2629
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonPersonRequest;
2730
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonPoppGenerertInntektRequest;
@@ -34,6 +37,7 @@
3437
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonVedtakResponse;
3538
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonforvalterResponse;
3639
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonsavtaleRequest;
40+
import no.nav.dolly.bestilling.pensjonforvalter.domain.RevurderingVedtakRequest;
3741
import no.nav.dolly.config.Consumers;
3842
import no.nav.dolly.metrics.Timed;
3943
import no.nav.testnav.libs.securitycore.domain.ServerProperties;
@@ -226,6 +230,21 @@ public void sletteAfpOffentlig(List<String> identer) {
226230
.subscribe(resultat -> log.info("Slettet AfpOffentlig (PEN), alle miljøer"));
227231
}
228232

233+
@Timed(name = "providers", tags = {"operation", "pen_lagreRevurderingVedtakAP"})
234+
public Flux<PensjonforvalterResponse> lagreRevurderingVedtak(RevurderingVedtakRequest revurderingVedtakRequest) {
235+
236+
return tokenService.exchange(serverProperties)
237+
.flatMapMany(token -> new LagreApRevurderingVedtak(webClient, revurderingVedtakRequest, token.getTokenValue()).call());
238+
}
239+
240+
@Timed(name = "providers", tags = {"operation", "pen_lagreAPNyUttaksgrad"})
241+
public Flux<PensjonforvalterResponse> lagreAPNyUttaksgrad(AlderspensjonNyUtaksgradRequest nyUtaksgradRequest) {
242+
243+
return tokenService.exchange(serverProperties)
244+
.flatMapMany(token -> new LagreAPNyUttaksgrad(webClient, nyUtaksgradRequest, token.getTokenValue()).call());
245+
}
246+
247+
229248
@Override
230249
public String serviceUrl() {
231250
return serverProperties.getUrl();
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package no.nav.dolly.bestilling.pensjonforvalter.command;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import lombok.extern.slf4j.Slf4j;
5+
import no.nav.dolly.bestilling.pensjonforvalter.domain.AlderspensjonNyUtaksgradRequest;
6+
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonforvalterResponse;
7+
import no.nav.testnav.libs.reactivecore.web.WebClientError;
8+
import no.nav.testnav.libs.reactivecore.web.WebClientHeader;
9+
import org.springframework.web.reactive.function.client.WebClient;
10+
import reactor.core.publisher.Mono;
11+
12+
import java.util.concurrent.Callable;
13+
14+
import static no.nav.dolly.domain.CommonKeysAndUtils.CONSUMER;
15+
import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CALL_ID;
16+
import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CONSUMER_ID;
17+
import static no.nav.dolly.util.CallIdUtil.generateCallId;
18+
19+
@Slf4j
20+
@RequiredArgsConstructor
21+
public class LagreAPNyUttaksgrad implements Callable<Mono<PensjonforvalterResponse>> {
22+
23+
private static final String ALDERSPENSJON_NY_UTTAKSGRAD_URL = "/api/v1/ap/ny-uttaksgrad";
24+
25+
private final WebClient webClient;
26+
private final AlderspensjonNyUtaksgradRequest nyUttaksgradRequest;
27+
private final String token;
28+
29+
@Override
30+
public Mono<PensjonforvalterResponse> call() {
31+
32+
var callId = generateCallId();
33+
log.info("PEN sende ap/ny-uttaksgrad {}, callId: {}", nyUttaksgradRequest, callId);
34+
35+
return webClient
36+
.post()
37+
.uri(uriBuilder -> uriBuilder.path(ALDERSPENSJON_NY_UTTAKSGRAD_URL)
38+
.build())
39+
.headers(WebClientHeader.bearer(token))
40+
.header(HEADER_NAV_CALL_ID, callId)
41+
.header(HEADER_NAV_CONSUMER_ID, CONSUMER)
42+
.bodyValue(nyUttaksgradRequest)
43+
.retrieve()
44+
.bodyToMono(PensjonforvalterResponse.class)
45+
.doOnError(WebClientError.logTo(log))
46+
.onErrorResume(throwable -> {
47+
var description = WebClientError.describe(throwable);
48+
return Mono.just(PensjonforvalterResponse
49+
.builder()
50+
.status(nyUttaksgradRequest
51+
.getMiljoer()
52+
.stream()
53+
.map(miljoe -> PensjonforvalterResponse.ResponseEnvironment
54+
.builder()
55+
.miljo(miljoe)
56+
.response(PensjonforvalterResponse.Response
57+
.builder()
58+
.httpStatus(PensjonforvalterResponse.HttpStatus
59+
.builder()
60+
.status(description.getStatus().value())
61+
.reasonPhrase(description.getStatus().getReasonPhrase())
62+
.build())
63+
.message(description.getMessage())
64+
.path(ALDERSPENSJON_NY_UTTAKSGRAD_URL)
65+
.build())
66+
.build())
67+
.toList())
68+
.build());
69+
});
70+
}
71+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package no.nav.dolly.bestilling.pensjonforvalter.command;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import lombok.extern.slf4j.Slf4j;
5+
import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonforvalterResponse;
6+
import no.nav.dolly.bestilling.pensjonforvalter.domain.RevurderingVedtakRequest;
7+
import no.nav.testnav.libs.reactivecore.web.WebClientError;
8+
import no.nav.testnav.libs.reactivecore.web.WebClientHeader;
9+
import org.springframework.web.reactive.function.client.WebClient;
10+
import reactor.core.publisher.Mono;
11+
12+
import java.util.concurrent.Callable;
13+
14+
import static no.nav.dolly.domain.CommonKeysAndUtils.CONSUMER;
15+
import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CALL_ID;
16+
import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CONSUMER_ID;
17+
import static no.nav.dolly.util.CallIdUtil.generateCallId;
18+
19+
@Slf4j
20+
@RequiredArgsConstructor
21+
public class LagreApRevurderingVedtak implements Callable<Mono<PensjonforvalterResponse>> {
22+
23+
private static final String PENSJON_AP_REVURDERING_VEDTAK_URL = "/api/v1/ap/revurdering-vedtak";
24+
25+
private final WebClient webClient;
26+
private final RevurderingVedtakRequest revurderingVedtakRequest;
27+
private final String token;
28+
29+
@Override
30+
public Mono<PensjonforvalterResponse> call() {
31+
32+
var callId = generateCallId();
33+
log.info("PEN sende ap/revurdering-vedtak {}, callId: {}", revurderingVedtakRequest, callId);
34+
35+
return webClient
36+
.post()
37+
.uri(path -> path
38+
.path(PENSJON_AP_REVURDERING_VEDTAK_URL)
39+
.build())
40+
.headers(WebClientHeader.bearer(token))
41+
.header(HEADER_NAV_CALL_ID, callId)
42+
.header(HEADER_NAV_CONSUMER_ID, CONSUMER)
43+
.bodyValue(revurderingVedtakRequest)
44+
.retrieve()
45+
.bodyToMono(PensjonforvalterResponse.class)
46+
.doOnError(WebClientError.logTo(log))
47+
.onErrorResume(throwable -> {
48+
var description = WebClientError.describe(throwable);
49+
return Mono.just(PensjonforvalterResponse
50+
.builder()
51+
.status(revurderingVedtakRequest
52+
.getMiljoer()
53+
.stream()
54+
.map(miljoe -> PensjonforvalterResponse.ResponseEnvironment
55+
.builder()
56+
.miljo(miljoe)
57+
.response(PensjonforvalterResponse.Response
58+
.builder()
59+
.httpStatus(PensjonforvalterResponse.HttpStatus
60+
.builder()
61+
.status(description.getStatus().value())
62+
.reasonPhrase(description.getStatus().getReasonPhrase())
63+
.build())
64+
.message(description.getMessage())
65+
.path(PENSJON_AP_REVURDERING_VEDTAK_URL)
66+
.build())
67+
.build())
68+
.toList())
69+
.build());
70+
});
71+
}
72+
}

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/command/PensjonHentVedtakCommand.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,4 @@ public Flux<PensjonVedtakResponse> call() {
4646
.doOnError(WebClientError.logTo(log))
4747
.onErrorResume(Exception.class, error -> Mono.empty());
4848
}
49-
5049
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package no.nav.dolly.bestilling.pensjonforvalter.domain;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.time.LocalDate;
9+
import java.util.Set;
10+
11+
@Data
12+
@Builder
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
public class AlderspensjonNyUtaksgradRequest implements PensjonTransaksjonId {
16+
17+
private String fnr;
18+
private Integer nyUttaksgrad;
19+
private LocalDate fom;
20+
private String saksbehandler;
21+
private String attesterer;
22+
private String navEnhetId;
23+
private Set<String> miljoer;
24+
}

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/domain/AlderspensjonRequest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,29 @@
33
import lombok.AllArgsConstructor;
44
import lombok.Data;
55
import lombok.NoArgsConstructor;
6+
import lombok.experimental.SuperBuilder;
67

78
import java.time.LocalDate;
8-
import java.util.ArrayList;
9-
import java.util.List;
9+
import java.util.HashSet;
10+
import java.util.Set;
1011

1112
import static java.util.Objects.isNull;
1213

1314
@Data
15+
@SuperBuilder
1416
@NoArgsConstructor
1517
@AllArgsConstructor
16-
public abstract class AlderspensjonRequest {
18+
public abstract class AlderspensjonRequest implements PensjonTransaksjonId {
1719

18-
private List<String> miljoer;
20+
private Set<String> miljoer;
1921

2022
private String fnr;
2123
private LocalDate iverksettelsesdato;
2224
private Integer uttaksgrad;
2325

24-
public List<String> getMiljoer() {
26+
public Set<String> getMiljoer() {
2527
if (isNull(miljoer)) {
26-
miljoer = new ArrayList<>();
28+
miljoer = new HashSet<>();
2729
}
2830
return miljoer;
2931
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package no.nav.dolly.bestilling.pensjonforvalter.domain;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.EqualsAndHashCode;
6+
import lombok.NoArgsConstructor;
7+
import lombok.ToString;
8+
import lombok.experimental.SuperBuilder;
9+
10+
import java.time.LocalDate;
11+
12+
@Data
13+
@SuperBuilder
14+
@EqualsAndHashCode(callSuper = true)
15+
@ToString(callSuper = true)
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
public class AlderspensjonVedtakDTO extends AlderspensjonVedtakRequest {
19+
20+
private LocalDate fom;
21+
22+
private LocalDate datoForrigeGraderteUttak;
23+
private Integer nyUttaksgrad;
24+
}

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/domain/AlderspensjonVedtakRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
import lombok.EqualsAndHashCode;
66
import lombok.NoArgsConstructor;
77
import lombok.ToString;
8+
import lombok.experimental.SuperBuilder;
89

910
import java.time.LocalDate;
1011

1112
@Data
1213
@EqualsAndHashCode(callSuper = true)
1314
@ToString(callSuper = true)
15+
@SuperBuilder
1416
@NoArgsConstructor
1517
@AllArgsConstructor
1618
public class AlderspensjonVedtakRequest extends AlderspensjonRequest {

0 commit comments

Comments
 (0)