Skip to content

Commit 3fca3b4

Browse files
committed
feature: Add tidspunkt field to InstdataKdiDTO and update related classes for improved event handling
1 parent 157fc87 commit 3fca3b4

6 files changed

Lines changed: 45 additions & 194 deletions

File tree

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,18 @@ private Mono<String> doInstKdiBestilling(RsDollyUtvidetBestilling bestilling, Do
6060

6161
return Mono.just(bestilling)
6262
.filter(bestilling1 -> nonNull(bestilling1.getInstdataKdi()))
63-
.flatMap(bestilling1 -> instdataConsumer.getMiljoer())
64-
.flatMapMany(miljoer -> Flux.fromIterable(miljoer.getKdiEnvironments())
65-
.filter(miljoe -> bestilling.getEnvironments().contains(miljoe))
66-
.flatMap(miljoe -> instKdiHendelseService.getOppdaterBestilling(bestilling, bestillingId,
67-
dollyPerson.getIdent(), miljoe, isOpprettEndre)
68-
.map(instKdiData -> {
63+
.flatMap(bestilling1 -> instKdiHendelseService.getOppdaterBestilling(bestilling1, bestillingId, isOpprettEndre))
64+
.flatMap(instKdiData -> instdataConsumer.getMiljoer()
65+
.flatMapMany(miljoer -> Flux.fromIterable(miljoer.getKdiEnvironments())
66+
.filter(miljoe -> bestilling.getEnvironments().contains(miljoe))
67+
.map(miljoe -> {
6968
var context = MappingContextUtils.getMappingContext();
7069
context.setProperty("ident", dollyPerson.getIdent());
7170
context.setProperty("miljoe", miljoe);
7271
return mapperFacade.map(instKdiData, InstdataKdiDTO.class, context);
7372
}))
74-
.flatMap(instKdiRequest -> postInstdataKdi(instKdiRequest, dollyPerson.getIdent())))
75-
.collect(Collectors.joining(","));
73+
.flatMap(instKdiRequest -> postInstdataKdi(instKdiRequest, dollyPerson.getIdent()))
74+
.collect(Collectors.joining(",")));
7675
}
7776

7877
private Flux<String> doInst2Bestilling(RsDollyUtvidetBestilling bestilling, DollyPerson dollyPerson, boolean isOpprettEndre) {

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import no.nav.dolly.bestilling.instdata.command.InstdataGetCommand;
77
import no.nav.dolly.bestilling.instdata.command.InstdataGetMiljoerCommand;
88
import no.nav.dolly.bestilling.instdata.command.InstdataKdiDeleteCommand;
9-
import no.nav.dolly.bestilling.instdata.command.InstdataKdiGetCommand;
109
import no.nav.dolly.bestilling.instdata.command.InstdataKdiPostCommand;
1110
import no.nav.dolly.bestilling.instdata.command.InstdataPostCommand;
1211
import no.nav.dolly.bestilling.instdata.domain.InstdataKdiDTO;
@@ -60,14 +59,6 @@ public Mono<InstdataResponse> getInstdata(String ident, String environment) {
6059
.flatMap(token -> new InstdataGetCommand(webClient, ident, environment, token.getTokenValue()).call());
6160
}
6261

63-
@Timed(name = "providers", tags = {"operation", "inst_getInstdata"})
64-
public Mono<InstdataKdiResponse> getInstdataKdi(String ident, String environment) {
65-
66-
return tokenService.exchange(serverProperties)
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));
69-
}
70-
7162
@Timed(name = "providers", tags = {"operation", "inst_deleteInstdata"})
7263
public Mono<List<InstdataResponse>> deleteInstdata(List<String> identer) {
7364

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

Lines changed: 0 additions & 52 deletions
This file was deleted.

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

Lines changed: 10 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
import lombok.experimental.SuperBuilder;
1010

1111
import java.time.LocalDateTime;
12-
import java.util.ArrayList;
1312
import java.util.List;
1413

15-
import static java.util.Objects.isNull;
16-
1714
@Data
1815
@Builder
1916
@NoArgsConstructor
@@ -35,54 +32,6 @@ public static class Data {
3532
private List<AvbruddSlutt> avbruddSlutt;
3633
private List<ForventetLoeslatelse> forventetLoeslatelse;
3734
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-
}
8635
}
8736

8837
@lombok.Data
@@ -95,6 +44,7 @@ public static class Innsettelse extends Hendelse{
9544

9645
private String kategori;
9746
private String organisasjonsnummer;
47+
private LocalDateTime tidspunkt;
9848
}
9949

10050
@lombok.Data
@@ -109,6 +59,7 @@ public static class Loeslatelse extends Hendelse{
10959
private String organisasjonsnummer;
11060
private Boolean erOverfoertTilUtlandskfengsel;
11161
private Boolean erOverfoertTilVaretektMedElektroniskKontroll;
62+
private LocalDateTime tidspunkt;
11263
}
11364

11465
@lombok.Data
@@ -122,6 +73,7 @@ public static class AvbruddStart extends Hendelse{
12273
private String kategori;
12374
private String organisasjonsnummer;
12475
private LocalDateTime forventetAvbruddSluttTidspunkt;
76+
private LocalDateTime tidspunkt;
12577
}
12678

12779
@lombok.Data
@@ -134,6 +86,7 @@ public static class AvbruddSlutt extends Hendelse {
13486

13587
private String kategori;
13688
private String organisasjonsnummer;
89+
private LocalDateTime tidspunkt;
13790
}
13891

13992
@lombok.Data
@@ -145,17 +98,18 @@ public static class AvbruddSlutt extends Hendelse {
14598
public static class ForventetLoeslatelse extends Hendelse{
14699

147100
private String innmeldingHendelseId;
101+
private LocalDateTime tidspunkt;
148102
}
149103

150104
@lombok.Data
105+
@ToString(callSuper = true)
106+
@EqualsAndHashCode(callSuper = true)
151107
@SuperBuilder
152108
@NoArgsConstructor
153109
@AllArgsConstructor
154-
public static class Annullering {
110+
public static class Annullering extends Hendelse {
155111

156-
private String hendelseId;
157-
private LocalDateTime publiseringstidspunkt;
158-
private String norskident;
112+
private LocalDateTime annullertMeldingId;
159113
}
160114

161115
@lombok.Data
@@ -164,9 +118,9 @@ public static class Annullering {
164118
@AllArgsConstructor
165119
public abstract static class Hendelse {
166120

121+
private String meldingId;
167122
private String hendelseId;
168123
private LocalDateTime publiseringstidspunkt;
169124
private String norskident;
170-
private LocalDateTime tidspunkt;
171125
}
172126
}
Lines changed: 26 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package no.nav.dolly.bestilling.instdata.service;
22

33
import lombok.RequiredArgsConstructor;
4-
import no.nav.dolly.bestilling.instdata.InstdataConsumer;
5-
import no.nav.dolly.bestilling.instdata.domain.InstdataKdiDTO;
6-
import no.nav.dolly.bestilling.instdata.domain.InstdataKdiResponse;
74
import no.nav.dolly.domain.resultset.RsDollyUtvidetBestilling;
85
import no.nav.dolly.domain.resultset.inst.RsInstdataKdi;
96
import no.nav.dolly.service.TransactionHelperService;
7+
import org.apache.commons.lang3.StringUtils;
108
import org.springframework.stereotype.Service;
119
import reactor.core.publisher.Mono;
1210

1311
import java.time.LocalDateTime;
14-
import java.util.Collection;
1512
import java.util.List;
16-
import java.util.stream.Stream;
13+
import java.util.UUID;
14+
import java.util.concurrent.atomic.AtomicInteger;
1715

1816
import static java.util.Objects.isNull;
17+
import static org.apache.commons.lang3.StringUtils.isBlank;
1918

2019
@Service
2120
@RequiredArgsConstructor
@@ -27,43 +26,27 @@ public class InstKdiHendelseService {
2726
private static final String LOESLATELSE = "D";
2827
private static final String FORVENTET_LOESLATELSE = "E";
2928

30-
private final InstdataConsumer instdataConsumer;
3129
private final TransactionHelperService transactionHelperService;
3230

33-
public Mono<RsInstdataKdi> getOppdaterBestilling(RsDollyUtvidetBestilling bestilling, Long bestillingId, String ident, String miljoe, boolean isOpprettEndre) {
31+
public Mono<RsInstdataKdi> getOppdaterBestilling(RsDollyUtvidetBestilling bestilling, Long bestillingId, boolean isOpprettEndre) {
3432

35-
if (isOpprettEndre || hasEmptyHendelseId(bestilling.getInstdataKdi())) {
36-
37-
return instdataConsumer.getInstdataKdi(ident, miljoe)
38-
.filter(response -> response.getStatus().is2xxSuccessful())
39-
.map(instdataKdiResponse -> getOppdaterBestilling(instdataKdiResponse, bestilling.getInstdataKdi(), bestillingId))
33+
if (isOpprettEndre) {
34+
return Mono.just(getOppdaterBestilling(bestilling.getInstdataKdi(), bestillingId))
4035
.doOnNext(bestilling::setInstdataKdi)
4136
.flatMap(oppdaterBestilling -> transactionHelperService.persister(bestillingId, bestilling)
4237
.then(Mono.just(oppdaterBestilling)));
43-
4438
} else {
4539
return Mono.just(bestilling.getInstdataKdi());
4640
}
4741
}
4842

49-
private RsInstdataKdi getOppdaterBestilling(InstdataKdiResponse instdataKdiResponse, RsInstdataKdi bestilling, Long bestillingId) {
50-
51-
var kdidata = instdataKdiResponse.getInstdataKdi().getData();
52-
53-
var annuleringer = kdidata.getAnnullering().stream()
54-
.map(InstdataKdiDTO.Annullering::getHendelseId)
55-
.toList();
43+
private RsInstdataKdi getOppdaterBestilling(RsInstdataKdi bestilling, Long bestillingId) {
5644

57-
oppdaterHendelser(bestilling.getInnsettelse(), getHendelseId(kdidata.getInnsettelse(),
58-
INNSETTELSE, bestillingId, annuleringer));
59-
oppdaterHendelser(bestilling.getAvbruddStart(), getHendelseId(kdidata.getAvbruddStart(),
60-
AVBRUDD_START, bestillingId, annuleringer));
61-
oppdaterHendelser(bestilling.getAvbruddSlutt(), getHendelseId(kdidata.getAvbruddSlutt(),
62-
AVBRUDD_SLUTT, bestillingId, annuleringer));
63-
oppdaterHendelser(bestilling.getLoeslatelse(), getHendelseId(kdidata.getLoeslatelse(),
64-
LOESLATELSE, bestillingId, annuleringer));
65-
oppdaterHendelser(bestilling.getForventetLoeslatelse(), getHendelseId(kdidata.getForventetLoeslatelse(),
66-
FORVENTET_LOESLATELSE, bestillingId, annuleringer));
45+
oppdaterHendelser(bestilling.getInnsettelse(), INNSETTELSE, bestillingId);
46+
oppdaterHendelser(bestilling.getAvbruddStart(), AVBRUDD_START, bestillingId);
47+
oppdaterHendelser(bestilling.getAvbruddSlutt(), AVBRUDD_SLUTT, bestillingId);
48+
oppdaterHendelser(bestilling.getLoeslatelse(), LOESLATELSE, bestillingId);
49+
oppdaterHendelser(bestilling.getForventetLoeslatelse(), FORVENTET_LOESLATELSE, bestillingId);
6750

6851
bestilling.getAnnullering()
6952
.forEach(annulering -> annulering.setPubliseringstidspunkt(
@@ -73,50 +56,26 @@ private RsInstdataKdi getOppdaterBestilling(InstdataKdiResponse instdataKdiRespo
7356
return bestilling;
7457
}
7558

76-
private static boolean hasEmptyHendelseId(RsInstdataKdi instdataKdi) {
77-
78-
return Stream.of(instdataKdi.getInnsettelse(), instdataKdi.getAvbruddStart(),
79-
instdataKdi.getAvbruddSlutt(), instdataKdi.getLoeslatelse(),
80-
instdataKdi.getForventetLoeslatelse())
81-
.flatMap(Collection::stream)
82-
.anyMatch(hendelse -> isNull(hendelse.getHendelseId()));
83-
}
84-
85-
private static String getHendelseId(List<? extends InstdataKdiDTO.Hendelse> hendelser,
86-
String type,
87-
Long bestillingId,
88-
List<String> annuleringer) {
59+
private static void oppdaterHendelser(List<? extends RsInstdataKdi.Hendelse> hendelser, String type, Long bestillingId) {
8960

90-
var hendelseId = getHendelseId(hendelser, type, bestillingId);
61+
var loepenummer = new AtomicInteger(1);
9162

92-
return !annuleringer.contains(hendelseId) ? hendelseId : getNextHendelseId(hendelseId);
93-
}
94-
95-
private static String getNextHendelseId(String hendelseId) {
63+
hendelser.forEach(hendelse -> {
9664

97-
return hendelseId.substring(0, 21) + String.format("%010d", Long.parseLong(hendelseId.substring(21)) + 1);
65+
if (StringUtils.isBlank(hendelse.getMeldingId())) {
66+
hendelse.setMeldingId(UUID.randomUUID().toString());
67+
}
68+
if (isBlank(hendelse.getHendelseId())) {
69+
hendelse.setHendelseId(makeHendelseId(bestillingId, type, loepenummer.getAndIncrement()));
70+
}
71+
if (isNull(hendelse.getPubliseringstidspunkt())) {
72+
hendelse.setPubliseringstidspunkt(LocalDateTime.now());
73+
}
74+
});
9875
}
9976

10077
private static String makeHendelseId(Long bestillingId, String type, Integer loepenummer) {
10178

10279
return "0x%010d00000%s00%010d".formatted(bestillingId, type, loepenummer);
10380
}
104-
105-
private static String getHendelseId(List<? extends InstdataKdiDTO.Hendelse> hendelser, String type, Long bestillingId) {
106-
107-
return hendelser.stream()
108-
.map(InstdataKdiDTO.Hendelse::getHendelseId)
109-
.max(String::compareTo)
110-
.orElse(makeHendelseId(bestillingId, type, 1));
111-
}
112-
113-
private static void oppdaterHendelser(List<? extends RsInstdataKdi.Hendelse> hendelser, String hendelseId) {
114-
115-
hendelser.forEach(hendelse -> {
116-
hendelse.setHendelseId(hendelseId);
117-
if (isNull(hendelse.getPubliseringstidspunkt())) {
118-
hendelse.setPubliseringstidspunkt(LocalDateTime.now());
119-
}
120-
});
121-
}
12281
}

apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/inst/RsInstdataKdi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,7 @@ public static class ForventetLoeslatelse extends Hendelse {
150150
@AllArgsConstructor
151151
public static class Annullering extends Hendelse {
152152

153-
private String hendelseId;
154-
private LocalDateTime publiseringstidspunkt;
153+
private String annullertMeldingId;
155154
}
156155

157156
@lombok.Data
@@ -160,6 +159,7 @@ public static class Annullering extends Hendelse {
160159
@AllArgsConstructor
161160
public abstract static class Hendelse {
162161

162+
private String meldingId;
163163
private String hendelseId;
164164
private LocalDateTime publiseringstidspunkt;
165165
}

0 commit comments

Comments
 (0)