Skip to content

Commit 205f978

Browse files
authored
TFP-5972 saksnummer obligatorisk, rydding (#2676)
1 parent 3314640 commit 205f978

File tree

16 files changed

+260
-443
lines changed

16 files changed

+260
-443
lines changed

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/ArbeidsforholdRestTjeneste.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,6 @@ public Response hentArbeidsforholdOgPermisjonerForEnPeriode(@NotNull @TilpassetA
6868

6969
public static class AktørDatoRequestAbacDataSupplier implements Function<Object, AbacDataAttributter> {
7070

71-
public AktørDatoRequestAbacDataSupplier() {
72-
}
73-
7471
@Override
7572
public AbacDataAttributter apply(Object obj) {
7673
AktørDatoRequest req = (AktørDatoRequest) obj;

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/GrunnlagRestTjeneste.java

Lines changed: 63 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
package no.nav.foreldrepenger.abakus.iay.tjeneste;
22

33

4-
import java.util.EnumSet;
54
import java.util.Objects;
65
import java.util.Optional;
7-
import java.util.Set;
86
import java.util.UUID;
9-
10-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
11-
import com.fasterxml.jackson.annotation.JsonCreator;
12-
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
13-
import com.fasterxml.jackson.annotation.JsonInclude;
14-
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import java.util.function.Function;
158

169
import jakarta.enterprise.context.ApplicationScoped;
1710
import jakarta.inject.Inject;
@@ -26,13 +19,9 @@
2619
import jakarta.ws.rs.core.MediaType;
2720
import jakarta.ws.rs.core.Response;
2821
import no.nav.abakus.iaygrunnlag.Periode;
29-
import no.nav.abakus.iaygrunnlag.PersonIdent;
30-
import no.nav.abakus.iaygrunnlag.arbeidsforhold.v1.ArbeidsforholdInformasjon;
31-
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseType;
32-
import no.nav.abakus.iaygrunnlag.request.Dataset;
3322
import no.nav.abakus.iaygrunnlag.request.InntektArbeidYtelseGrunnlagRequest;
3423
import no.nav.abakus.iaygrunnlag.request.KopierGrunnlagRequest;
35-
import no.nav.abakus.iaygrunnlag.v1.InntektArbeidYtelseAggregatOverstyrtDto;
24+
import no.nav.abakus.iaygrunnlag.request.OverstyrGrunnlagRequest;
3625
import no.nav.abakus.iaygrunnlag.v1.OverstyrtInntektArbeidYtelseDto;
3726
import no.nav.foreldrepenger.abakus.domene.iay.GrunnlagReferanse;
3827
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseGrunnlag;
@@ -49,8 +38,9 @@
4938
import no.nav.foreldrepenger.abakus.typer.AktørId;
5039
import no.nav.foreldrepenger.abakus.typer.Saksnummer;
5140
import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;
52-
import no.nav.vedtak.sikkerhet.abac.AbacDto;
5341
import no.nav.vedtak.sikkerhet.abac.BeskyttetRessurs;
42+
import no.nav.vedtak.sikkerhet.abac.StandardAbacAttributtType;
43+
import no.nav.vedtak.sikkerhet.abac.TilpassetAbacAttributt;
5444
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
5545
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
5646

@@ -71,10 +61,6 @@ public GrunnlagRestTjeneste(InntektArbeidYtelseTjeneste iayTjeneste, KoblingTjen
7161
this.koblingTjeneste = koblingTjeneste;
7262
}
7363

74-
private static AbacDataAttributter lagAbacAttributter(PersonIdent person) {
75-
return IdentDataAttributter.abacAttributterForPersonIdent(person);
76-
}
77-
7864
/**
7965
* Hent ett enkelt IAY Grunnlag for angitt spesifikasjon. Spesifikasjonen kan angit hvilke data som ønskes
8066
* @param spesifikasjon InntektArbeidYtelseGrunnlagRequestAbacDto
@@ -87,7 +73,8 @@ private static AbacDataAttributter lagAbacAttributter(PersonIdent person) {
8773
@Produces(MediaType.APPLICATION_JSON)
8874
@BeskyttetRessurs(actionType = ActionType.READ, resourceType = ResourceType.FAGSAK, sporingslogg = false)
8975
@SuppressWarnings({"findsecbugs:JAXRS_ENDPOINT", "resource"})
90-
public Response hentIayGrunnlag(@NotNull @Valid InntektArbeidYtelseGrunnlagRequestAbacDto spesifikasjon) {
76+
public Response hentIayGrunnlag(@TilpassetAbacAttributt(supplierClass = InntektArbeidYtelseGrunnlagRequestAbacDataSupplier.class)
77+
@NotNull @Valid InntektArbeidYtelseGrunnlagRequest spesifikasjon) {
9178
Response response;
9279

9380
LoggUtil.setupLogMdc(spesifikasjon.getYtelseType(), spesifikasjon.getSaksnummer(), spesifikasjon.getKoblingReferanse());
@@ -128,7 +115,8 @@ public Response hentIayGrunnlag(@NotNull @Valid InntektArbeidYtelseGrunnlagReque
128115
@Produces(MediaType.APPLICATION_JSON)
129116
@BeskyttetRessurs(actionType = ActionType.UPDATE, resourceType = ResourceType.FAGSAK, sporingslogg = true)
130117
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
131-
public Response oppdaterOgLagreOverstyring(@NotNull @Valid OverstyrtInntektArbeidYtelseAbacDto dto) {
118+
public Response oppdaterOgLagreOverstyring(@TilpassetAbacAttributt(supplierClass = OverstyrtInntektArbeidYtelseDtoAbacDataSupplier.class)
119+
@NotNull @Valid OverstyrtInntektArbeidYtelseDto dto) {
132120

133121
var aktørId = new AktørId(dto.getPerson().getIdent());
134122
var koblingReferanse = getKoblingReferanse(aktørId, dto.getKoblingReferanse(), dto.getGrunnlagReferanse());
@@ -145,6 +133,35 @@ public Response oppdaterOgLagreOverstyring(@NotNull @Valid OverstyrtInntektArbei
145133
return Response.ok().build();
146134
}
147135

136+
/**
137+
* Lagrer siste versjon
138+
* @param dto OverstyrtInntektArbeidYtelseDto
139+
* @return 200 ok
140+
*/
141+
@PUT
142+
@Path("/overstyr-grunnlag")
143+
@Consumes(MediaType.APPLICATION_JSON)
144+
@Produces(MediaType.APPLICATION_JSON)
145+
@BeskyttetRessurs(actionType = ActionType.UPDATE, resourceType = ResourceType.FAGSAK, sporingslogg = true)
146+
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
147+
public Response overstyrGrunnlag(@TilpassetAbacAttributt(supplierClass = OverstyrGrunnlagRequestAbacDataSupplier.class)
148+
@NotNull @Valid OverstyrGrunnlagRequest dto) {
149+
150+
var aktørId = new AktørId(dto.getAktør().getIdent());
151+
var koblingReferanse = getKoblingReferanse(aktørId, dto.getKoblingReferanse(), dto.getGrunnlagReferanse());
152+
153+
setupLogMdcFraKoblingReferanse(koblingReferanse);
154+
155+
var nyttGrunnlagBuilder = InntektArbeidYtelseGrunnlagBuilder.oppdatere(iayTjeneste.hentGrunnlagFor(koblingReferanse));
156+
157+
new IAYFraDtoMapper(iayTjeneste, aktørId, koblingReferanse).mapOverstyringerTilGrunnlagBuilder(dto.getOverstyrt(),
158+
dto.getArbeidsforholdInformasjon(), nyttGrunnlagBuilder);
159+
160+
iayTjeneste.lagre(koblingReferanse, nyttGrunnlagBuilder);
161+
162+
return Response.ok().build();
163+
}
164+
148165
/**
149166
* Koperer grunnlaget
150167
* @param request KopierGrunnlagRequest
@@ -156,7 +173,8 @@ public Response oppdaterOgLagreOverstyring(@NotNull @Valid OverstyrtInntektArbei
156173
@Produces(MediaType.APPLICATION_JSON)
157174
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.FAGSAK, sporingslogg = true)
158175
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
159-
public Response kopierOgLagreGrunnlagUtenInntektsmeldinger(@NotNull @Valid KopierGrunnlagRequestAbac request) {
176+
public Response kopierOgLagreGrunnlagUtenInntektsmeldinger(@TilpassetAbacAttributt(supplierClass = KopierGrunnlagRequestAbacDataSupplier.class)
177+
@NotNull @Valid KopierGrunnlagRequest request) {
160178
kopierOgLagreGrunnlag(request, false);
161179
return Response.ok().build();
162180
}
@@ -172,12 +190,13 @@ public Response kopierOgLagreGrunnlagUtenInntektsmeldinger(@NotNull @Valid Kopie
172190
@Produces(MediaType.APPLICATION_JSON)
173191
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.FAGSAK, sporingslogg = true)
174192
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
175-
public Response kopierOgLagreGrunnlagBeholdIM(@NotNull @Valid KopierGrunnlagRequestAbac request) {
193+
public Response kopierOgLagreGrunnlagBeholdIM(@TilpassetAbacAttributt(supplierClass = KopierGrunnlagRequestAbacDataSupplier.class)
194+
@NotNull @Valid KopierGrunnlagRequest request) {
176195
kopierOgLagreGrunnlag(request, true);
177196
return Response.ok().build();
178197
}
179198

180-
private void kopierOgLagreGrunnlag(KopierGrunnlagRequestAbac request, boolean beholdInntektsmeldinger) {
199+
private void kopierOgLagreGrunnlag(KopierGrunnlagRequest request, boolean beholdInntektsmeldinger) {
181200
var koblingReferanse = new KoblingReferanse(request.getNyReferanse());
182201
var koblingLås = Optional.ofNullable(koblingTjeneste.taSkrivesLås(koblingReferanse));
183202

@@ -191,7 +210,7 @@ private void kopierOgLagreGrunnlag(KopierGrunnlagRequestAbac request, boolean be
191210
koblingLås.ifPresent(lås -> koblingTjeneste.oppdaterLåsVersjon(lås));
192211
}
193212

194-
private UUID utledSisteKjenteGrunnlagReferanseFraSpesifikasjon(InntektArbeidYtelseGrunnlagRequestAbacDto spesifikasjon) {
213+
private UUID utledSisteKjenteGrunnlagReferanseFraSpesifikasjon(InntektArbeidYtelseGrunnlagRequest spesifikasjon) {
195214
final var sisteKjenteGrunnlagReferanse = spesifikasjon.getSisteKjenteGrunnlagReferanse();
196215
final var forespurtGrunnlagReferanse = spesifikasjon.getGrunnlagReferanse();
197216

@@ -269,72 +288,39 @@ private void setupLogMdcFraKoblingReferanse(KoblingReferanse koblingReferanse) {
269288
koblingReferanse.getReferanse())); // legger til saksnummer i MDC
270289
}
271290

272-
/**
273-
* Json bean med Abac.
274-
*/
275-
@JsonIgnoreProperties(ignoreUnknown = true)
276-
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
277-
@JsonInclude(value = JsonInclude.Include.NON_ABSENT, content = JsonInclude.Include.NON_EMPTY)
278-
public static class InntektArbeidYtelseGrunnlagRequestAbacDto extends InntektArbeidYtelseGrunnlagRequest implements AbacDto {
279-
280-
@JsonCreator
281-
public InntektArbeidYtelseGrunnlagRequestAbacDto(@JsonProperty(value = "personIdent", required = true) @Valid @NotNull PersonIdent person) {
282-
super(person);
283-
}
291+
public static class InntektArbeidYtelseGrunnlagRequestAbacDataSupplier implements Function<Object, AbacDataAttributter> {
284292

285293
@Override
286-
public AbacDataAttributter abacAttributter() {
287-
return lagAbacAttributter(getPerson());
294+
public AbacDataAttributter apply(Object obj) {
295+
var req = (InntektArbeidYtelseGrunnlagRequest) obj;
296+
return AbacDataAttributter.opprett().leggTil(StandardAbacAttributtType.SAKSNUMMER, req.getSaksnummer());
288297
}
289-
290298
}
291299

292-
/**
293-
* Json bean med Abac.
294-
*/
295-
@JsonIgnoreProperties(ignoreUnknown = true)
296-
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
297-
@JsonInclude(value = JsonInclude.Include.NON_ABSENT, content = JsonInclude.Include.NON_EMPTY)
298-
public static class KopierGrunnlagRequestAbac extends KopierGrunnlagRequest implements AbacDto {
299-
300-
@JsonCreator
301-
public KopierGrunnlagRequestAbac(@JsonProperty(value = "saksnummer", required = true) @Valid @NotNull String saksnummer,
302-
@JsonProperty(value = "nyReferanse", required = true) @Valid @NotNull UUID nyReferanse,
303-
@JsonProperty(value = "gammelReferanse", required = true) @Valid @NotNull UUID gammelReferanse,
304-
@JsonProperty(value = "ytelseType", required = true) @Valid @NotNull no.nav.abakus.iaygrunnlag.kodeverk.YtelseType ytelseType,
305-
@JsonProperty(value = "aktør", required = true) @NotNull @Valid PersonIdent aktør,
306-
@JsonProperty(value = "dataset", required = false) @Valid Set<Dataset> dataset) {
307-
308-
super(saksnummer, nyReferanse, gammelReferanse, ytelseType, aktør, dataset == null ? EnumSet.allOf(Dataset.class) : dataset);
309-
}
300+
public static class KopierGrunnlagRequestAbacDataSupplier implements Function<Object, AbacDataAttributter> {
310301

311302
@Override
312-
public AbacDataAttributter abacAttributter() {
313-
return lagAbacAttributter(getAktør());
303+
public AbacDataAttributter apply(Object obj) {
304+
var req = (KopierGrunnlagRequest) obj;
305+
return AbacDataAttributter.opprett().leggTil(StandardAbacAttributtType.SAKSNUMMER, req.getSaksnummer());
314306
}
315307
}
316308

317-
/**
318-
* Json bean med Abac.
319-
*/
320-
@JsonIgnoreProperties(ignoreUnknown = true)
321-
@JsonInclude(value = JsonInclude.Include.NON_ABSENT, content = JsonInclude.Include.NON_EMPTY)
322-
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
323-
public static class OverstyrtInntektArbeidYtelseAbacDto extends OverstyrtInntektArbeidYtelseDto implements AbacDto {
324-
325-
@JsonCreator
326-
public OverstyrtInntektArbeidYtelseAbacDto(@JsonProperty(value = "personIdent", required = true) PersonIdent person,
327-
@JsonProperty(value = "grunnlagReferanse") @Valid @NotNull UUID grunnlagReferanse,
328-
@JsonProperty(value = "koblingReferanse") @Valid @NotNull UUID koblingReferanse,
329-
@JsonProperty(value = "ytelseType") YtelseType ytelseType,
330-
@JsonProperty(value = "arbeidsforholdInformasjon") ArbeidsforholdInformasjon arbeidsforholdInformasjon,
331-
@JsonProperty(value = "overstyrt") InntektArbeidYtelseAggregatOverstyrtDto overstyrt) {
332-
super(person, grunnlagReferanse, koblingReferanse, ytelseType, arbeidsforholdInformasjon, overstyrt);
309+
public static class OverstyrtInntektArbeidYtelseDtoAbacDataSupplier implements Function<Object, AbacDataAttributter> {
310+
311+
@Override
312+
public AbacDataAttributter apply(Object obj) {
313+
var req = (OverstyrtInntektArbeidYtelseDto) obj;
314+
return IdentDataAttributter.abacAttributterForPersonIdent(req.getPerson());
333315
}
316+
}
317+
318+
public static class OverstyrGrunnlagRequestAbacDataSupplier implements Function<Object, AbacDataAttributter> {
334319

335320
@Override
336-
public AbacDataAttributter abacAttributter() {
337-
return lagAbacAttributter(getPerson());
321+
public AbacDataAttributter apply(Object obj) {
322+
var req = (OverstyrGrunnlagRequest) obj;
323+
return AbacDataAttributter.opprett().leggTil(StandardAbacAttributtType.SAKSNUMMER, req.getSaksnummer());
338324
}
339325
}
340326
}

0 commit comments

Comments
 (0)