Skip to content

Commit 16210c8

Browse files
committed
feature: Add KDI support in Instdata processing and enhance related classes
1 parent daa36dd commit 16210c8

12 files changed

Lines changed: 259 additions & 142 deletions

File tree

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/InstdataClient.java

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
@RequiredArgsConstructor
3232
public class InstdataClient implements ClientRegister {
3333

34-
private static final String KDI_STATUS = "KDI_STATUS:";
34+
private static final String INST2_STATUS = "INST2_STATUS#%s";
35+
private static final String KDI_STATUS = "KDI_STATUS#%s";
3536

3637
private final MapperFacade mapperFacade;
3738
private final InstdataConsumer instdataConsumer;
@@ -47,10 +48,12 @@ public Mono<BestillingProgress> gjenopprett(RsDollyUtvidetBestilling bestilling,
4748
return Mono.empty();
4849
}
4950

50-
return Flux.merge(doInst2Bestilling(bestilling, dollyPerson, isOpprettEndre),
51-
doInstKdiBestilling(bestilling, dollyPerson, progress.getBestillingId(), isOpprettEndre))
52-
.collect(Collectors.joining(","))
53-
.flatMap(resultat -> oppdaterStatus(progress, resultat));
51+
return Flux.merge(doInst2Bestilling(bestilling, dollyPerson, isOpprettEndre)
52+
.map(INST2_STATUS::formatted),
53+
doInstKdiBestilling(bestilling, dollyPerson, progress.getBestillingId(), isOpprettEndre)
54+
.map(KDI_STATUS::formatted))
55+
.collect(Collectors.joining(","))
56+
.flatMap(resultat -> oppdaterStatus(progress, resultat));
5457
}
5558

5659
private Mono<String> doInstKdiBestilling(RsDollyUtvidetBestilling bestilling, DollyPerson dollyPerson, Long bestillingId, boolean isOpprettEndre) {
@@ -60,18 +63,16 @@ private Mono<String> doInstKdiBestilling(RsDollyUtvidetBestilling bestilling, Do
6063
.flatMap(bestilling1 -> instdataConsumer.getMiljoer())
6164
.flatMapMany(miljoer -> Flux.fromIterable(miljoer.getKdiEnvironments())
6265
.filter(miljoe -> bestilling.getEnvironments().contains(miljoe))
63-
.flatMap(miljoe -> instKdiHendelseService.getBestilling(bestilling, bestillingId,
64-
dollyPerson.getIdent(), miljoe, isOpprettEndre)
65-
.map(instKdiData -> {
66-
var context = MappingContextUtils.getMappingContext();
67-
context.setProperty("ident", dollyPerson.getIdent());
68-
context.setProperty("miljoe", dollyPerson.getIdent());
69-
return mapperFacade.map(instKdiData, InstdataKdiDTO.class, context);
70-
})
71-
.flatMap(instKdiRequest -> instdataConsumer.postInstdataKdi(instKdiRequest, dollyPerson.getIdent()))
72-
.map(response -> String.format("%s:opphold=%d$%s",
73-
miljoe, oppholdId.incrementAndGet(), getStatus(response)))
74-
.collect(Collectors.joining(","))
66+
.flatMap(miljoe -> instKdiHendelseService.getOppdaterBestilling(bestilling, bestillingId,
67+
dollyPerson.getIdent(), miljoe, isOpprettEndre)
68+
.map(instKdiData -> {
69+
var context = MappingContextUtils.getMappingContext();
70+
context.setProperty("ident", dollyPerson.getIdent());
71+
context.setProperty("miljoe", miljoe);
72+
return mapperFacade.map(instKdiData, InstdataKdiDTO.class, context);
73+
}))
74+
.flatMap(instKdiRequest -> postInstdataKdi(instKdiRequest, dollyPerson.getIdent())))
75+
.collect(Collectors.joining(","));
7576
}
7677

7778
private Flux<String> doInst2Bestilling(RsDollyUtvidetBestilling bestilling, DollyPerson dollyPerson, boolean isOpprettEndre) {
@@ -85,7 +86,8 @@ private Flux<String> doInst2Bestilling(RsDollyUtvidetBestilling bestilling, Doll
8586
.flatMap(instdata -> instdataConsumer.getMiljoer()
8687
.flatMapMany(miljoer -> Flux.fromIterable(miljoer.getInstitusjonsoppholdEnvironments())
8788
.filter(miljoe -> bestilling.getEnvironments().contains(miljoe))
88-
.flatMap(miljoe -> postInstdata(isOpprettEndre, instdata, miljoe))));
89+
.flatMap(miljoe -> postInstdata(isOpprettEndre, instdata, miljoe))
90+
.collect(Collectors.joining(","))));
8991
}
9092

9193
private Mono<BestillingProgress> oppdaterStatus(BestillingProgress progress, String status) {
@@ -139,4 +141,15 @@ private Mono<String> postInstdata(boolean isNewOpphold, List<Instdata> instdata,
139141
}
140142
});
141143
}
144+
145+
private Mono<String> postInstdataKdi(InstdataKdiDTO instdata, String ident) {
146+
147+
return instdataConsumer.postInstdataKdi(instdata, ident)
148+
.map(response -> String.format("%s:%s".formatted(
149+
instdata.getEnvironment(),
150+
response.getStatus().is2xxSuccessful() ? "OK" :
151+
errorStatusDecoder.getErrorText(response.getStatus(),
152+
response.getFeilmelding()))));
153+
154+
}
142155
}

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/InstdataConsumer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ public Mono<InstdataResponse> getInstdata(String ident, String environment) {
6464
public Mono<InstdataKdiResponse> getInstdataKdi(String ident, String environment) {
6565

6666
return tokenService.exchange(serverProperties)
67-
.flatMap(token -> new InstdataKdiGetCommand(webClient, ident, environment, token.getTokenValue()).call());
67+
.flatMap(token -> new InstdataKdiGetCommand(webClient, ident, environment, token.getTokenValue()).call())
68+
.doOnNext(response -> log.info("Instdata KDI hentet for ident {} i miljø {}: {}", ident, environment, response));
6869
}
6970

7071
@Timed(name = "providers", tags = {"operation", "inst_deleteInstdata"})

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/command/InstdataKdiGetCommand.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class InstdataKdiGetCommand implements Callable<Mono<InstdataKdiResponse>
2626

2727
@Override
2828
public Mono<InstdataKdiResponse> call() {
29+
2930
return webClient
3031
.post()
3132
.uri(uriBuilder -> uriBuilder

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/domain/InstdataKdiDTO.java

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,23 @@
33
import lombok.AllArgsConstructor;
44
import lombok.Builder;
55
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
67
import lombok.NoArgsConstructor;
8+
import lombok.ToString;
79
import lombok.experimental.SuperBuilder;
810

911
import java.time.LocalDateTime;
12+
import java.util.ArrayList;
1013
import java.util.List;
1114

15+
import static java.util.Objects.isNull;
16+
1217
@Data
1318
@Builder
1419
@NoArgsConstructor
1520
@AllArgsConstructor
1621
public class InstdataKdiDTO {
1722

18-
private String ident;
1923
private String environment;
2024
private Data data;
2125

@@ -31,9 +35,59 @@ public static class Data {
3135
private List<AvbruddSlutt> avbruddSlutt;
3236
private List<ForventetLoeslatelse> forventetLoeslatelse;
3337
private List<Annullering> annullering;
38+
39+
public List<Innsettelse> getInnsettelse() {
40+
41+
if (isNull(innsettelse)) {
42+
innsettelse = new ArrayList<>();
43+
}
44+
return innsettelse;
45+
}
46+
47+
public List<Loeslatelse> getLoeslatelse() {
48+
49+
if (isNull(loeslatelse)) {
50+
loeslatelse = new ArrayList<>();
51+
}
52+
return loeslatelse;
53+
}
54+
55+
public List<AvbruddStart> getAvbruddStart() {
56+
57+
if (isNull(avbruddStart)) {
58+
avbruddStart = new ArrayList<>();
59+
}
60+
return avbruddStart;
61+
}
62+
63+
public List<AvbruddSlutt> getAvbruddSlutt() {
64+
65+
if (isNull(avbruddSlutt)) {
66+
avbruddSlutt = new ArrayList<>();
67+
}
68+
return avbruddSlutt;
69+
}
70+
71+
public List<ForventetLoeslatelse> getForventetLoeslatelse() {
72+
73+
if (isNull(forventetLoeslatelse)) {
74+
forventetLoeslatelse = new ArrayList<>();
75+
}
76+
return forventetLoeslatelse;
77+
}
78+
79+
public List<Annullering> getAnnullering() {
80+
81+
if (isNull(annullering)) {
82+
annullering = new ArrayList<>();
83+
}
84+
return annullering;
85+
}
3486
}
3587

3688
@lombok.Data
89+
@ToString(callSuper = true)
90+
@EqualsAndHashCode(callSuper = true)
3791
@SuperBuilder
3892
@NoArgsConstructor
3993
@AllArgsConstructor
@@ -44,6 +98,8 @@ public static class Innsettelse extends Hendelse{
4498
}
4599

46100
@lombok.Data
101+
@ToString(callSuper = true)
102+
@EqualsAndHashCode(callSuper = true)
47103
@SuperBuilder
48104
@NoArgsConstructor
49105
@AllArgsConstructor
@@ -56,17 +112,21 @@ public static class Loeslatelse extends Hendelse{
56112
}
57113

58114
@lombok.Data
115+
@ToString(callSuper = true)
116+
@EqualsAndHashCode(callSuper = true)
59117
@SuperBuilder
60118
@NoArgsConstructor
61119
@AllArgsConstructor
62120
public static class AvbruddStart extends Hendelse{
63121

64122
private String kategori;
65123
private String organisasjonsnummer;
66-
private LocalDateTime forventetAvbruddStartTidspunkt;
124+
private LocalDateTime forventetAvbruddSluttTidspunkt;
67125
}
68126

69127
@lombok.Data
128+
@ToString(callSuper = true)
129+
@EqualsAndHashCode(callSuper = true)
70130
@SuperBuilder
71131
@NoArgsConstructor
72132
@AllArgsConstructor
@@ -77,6 +137,8 @@ public static class AvbruddSlutt extends Hendelse {
77137
}
78138

79139
@lombok.Data
140+
@ToString(callSuper = true)
141+
@EqualsAndHashCode(callSuper = true)
80142
@SuperBuilder
81143
@NoArgsConstructor
82144
@AllArgsConstructor

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/domain/InstdataKdiResponse.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22

33
import lombok.AllArgsConstructor;
44
import lombok.Builder;
5-
import lombok.Getter;
5+
import lombok.Data;
66
import lombok.NoArgsConstructor;
7-
import lombok.Setter;
87
import no.nav.testnav.libs.reactivecore.web.WebClientError;
98
import org.springframework.http.HttpStatus;
109
import reactor.core.publisher.Mono;
1110

12-
@Getter
13-
@Setter
11+
@Data
1412
@Builder
1513
@NoArgsConstructor
1614
@AllArgsConstructor

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/instdata/mapper/InstdataKdiMappingStrategy.java

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import no.nav.dolly.mapper.MappingStrategy;
99
import org.springframework.stereotype.Component;
1010

11+
import static org.apache.commons.lang3.StringUtils.isBlank;
12+
1113
@Component
1214
public class InstdataKdiMappingStrategy implements MappingStrategy {
1315

1416
private static final String IDENT = "ident";
15-
private static final String MILJOE = "miljoe";
17+
private static final String INNMELDELSE_HENDELSE_ID = "innmeldelse_hendelse_id";
1618

1719
@Override
1820
public void register(MapperFactory factory) {
@@ -21,15 +23,22 @@ public void register(MapperFactory factory) {
2123
@Override
2224
public void mapAtoB(RsInstdataKdi kilde, InstdataKdiDTO dest, MappingContext context) {
2325

24-
var miljoe = (String) context.getProperty(MILJOE);
26+
var miljoe = (String) context.getProperty("miljoe");
2527
dest.setEnvironment(miljoe);
26-
27-
dest.getData().setInnsettelse(mapperFacade.mapAsList(kilde.getData().getInnsettelse(), InstdataKdiDTO.Innsettelse.class, context));
28-
dest.getData().setAvbruddStart(mapperFacade.mapAsList(kilde.getData().getAvbruddStart(), InstdataKdiDTO.AvbruddStart.class, context));
29-
dest.getData().setAvbruddSlutt(mapperFacade.mapAsList(kilde.getData().getAvbruddSlutt(), InstdataKdiDTO.AvbruddSlutt.class, context));
30-
dest.getData().setForventetLoeslatelse(mapperFacade.mapAsList(kilde.getData().getForventetLoeslatelse(), InstdataKdiDTO.ForventetLoeslatelse.class, context));
31-
dest.getData().setLoeslatelse(mapperFacade.mapAsList(kilde.getData().getForventetLoeslatelse(), InstdataKdiDTO.Loeslatelse.class, context));
32-
dest.getData().setAnnullering(mapperFacade.mapAsList(kilde.getData().getAnnullering(), InstdataKdiDTO.Annullering.class, context));
28+
dest.setData(new InstdataKdiDTO.Data());
29+
30+
var innmeldingHendelseId = kilde.getInnsettelse().stream()
31+
.map(RsInstdataKdi.Hendelse::getHendelseId)
32+
.max(String::compareTo)
33+
.orElse(null);
34+
context.setProperty(INNMELDELSE_HENDELSE_ID, innmeldingHendelseId);
35+
36+
dest.getData().setInnsettelse(mapperFacade.mapAsList(kilde.getInnsettelse(), InstdataKdiDTO.Innsettelse.class, context));
37+
dest.getData().setAvbruddStart(mapperFacade.mapAsList(kilde.getAvbruddStart(), InstdataKdiDTO.AvbruddStart.class, context));
38+
dest.getData().setAvbruddSlutt(mapperFacade.mapAsList(kilde.getAvbruddSlutt(), InstdataKdiDTO.AvbruddSlutt.class, context));
39+
dest.getData().setForventetLoeslatelse(mapperFacade.mapAsList(kilde.getForventetLoeslatelse(), InstdataKdiDTO.ForventetLoeslatelse.class, context));
40+
dest.getData().setLoeslatelse(mapperFacade.mapAsList(kilde.getForventetLoeslatelse(), InstdataKdiDTO.Loeslatelse.class, context));
41+
dest.getData().setAnnullering(mapperFacade.mapAsList(kilde.getAnnullering(), InstdataKdiDTO.Annullering.class, context));
3342
}
3443
})
3544
.register();
@@ -40,10 +49,6 @@ public void mapAtoB(RsInstdataKdi kilde, InstdataKdiDTO dest, MappingContext con
4049
public void mapAtoB(RsInstdataKdi.Innsettelse kilde, InstdataKdiDTO.Innsettelse dest, MappingContext context) {
4150

4251
dest.setNorskident((String) context.getProperty(IDENT));
43-
44-
var miljoe = (String) context.getProperty(MILJOE);
45-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
46-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
4752
}
4853
})
4954
.byDefault()
@@ -55,10 +60,6 @@ public void mapAtoB(RsInstdataKdi.Innsettelse kilde, InstdataKdiDTO.Innsettelse
5560
public void mapAtoB(RsInstdataKdi.AvbruddStart kilde, InstdataKdiDTO.AvbruddStart dest, MappingContext context) {
5661

5762
dest.setNorskident((String) context.getProperty(IDENT));
58-
59-
var miljoe = (String) context.getProperty(MILJOE);
60-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
61-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
6263
}
6364
})
6465
.byDefault()
@@ -70,10 +71,6 @@ public void mapAtoB(RsInstdataKdi.AvbruddStart kilde, InstdataKdiDTO.AvbruddStar
7071
public void mapAtoB(RsInstdataKdi.AvbruddSlutt kilde, InstdataKdiDTO.AvbruddSlutt dest, MappingContext context) {
7172

7273
dest.setNorskident((String) context.getProperty(IDENT));
73-
74-
var miljoe = (String) context.getProperty(MILJOE);
75-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
76-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
7774
}
7875
})
7976
.byDefault()
@@ -85,10 +82,9 @@ public void mapAtoB(RsInstdataKdi.AvbruddSlutt kilde, InstdataKdiDTO.AvbruddSlut
8582
public void mapAtoB(RsInstdataKdi.ForventetLoeslatelse kilde, InstdataKdiDTO.ForventetLoeslatelse dest, MappingContext context) {
8683

8784
dest.setNorskident((String) context.getProperty(IDENT));
88-
89-
var miljoe = (String) context.getProperty(MILJOE);
90-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
91-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
85+
if (isBlank(kilde.getInnmeldingHendelseId())) {
86+
dest.setInnmeldingHendelseId((String) context.getProperty(INNMELDELSE_HENDELSE_ID));
87+
}
9288
}
9389
})
9490
.byDefault()
@@ -100,10 +96,6 @@ public void mapAtoB(RsInstdataKdi.ForventetLoeslatelse kilde, InstdataKdiDTO.For
10096
public void mapAtoB(RsInstdataKdi.Loeslatelse kilde, InstdataKdiDTO.Loeslatelse dest, MappingContext context) {
10197

10298
dest.setNorskident((String) context.getProperty(IDENT));
103-
104-
var miljoe = (String) context.getProperty(MILJOE);
105-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
106-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
10799
}
108100
})
109101
.byDefault()
@@ -115,10 +107,6 @@ public void mapAtoB(RsInstdataKdi.Loeslatelse kilde, InstdataKdiDTO.Loeslatelse
115107
public void mapAtoB(RsInstdataKdi.Annullering kilde, InstdataKdiDTO.Annullering dest, MappingContext context) {
116108

117109
dest.setNorskident((String) context.getProperty(IDENT));
118-
119-
var miljoe = (String) context.getProperty(MILJOE);
120-
dest.setHendelseId(kilde.getVersion().get(miljoe).getHendelseId());
121-
dest.setPubliseringstidspunkt(kilde.getVersion().get(miljoe).getPubliseringstidspunkt());
122110
}
123111
})
124112
.byDefault()

0 commit comments

Comments
 (0)