Skip to content

Commit 1682714

Browse files
authored
TFP-6037: Fjerner alle Oppgitt Opptjening aggregat uten referanse til grunnlag (#2642)
* TFP-6037: Fjerner alle Oppgitt Opptjening aggregat uten referanse til grunnlag * Refactor: Kjører rydding 1 gang i uken, eller ved behov gjannom swagger.
1 parent 724d609 commit 1682714

21 files changed

+468
-147
lines changed

web/src/main/java/no/nav/foreldrepenger/abakus/app/vedlikehold/ForvaltningRestTjeneste.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,7 @@ public Response oppdaterAktoerId(@TilpassetAbacAttributt(supplierClass = Forvalt
141141
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.DRIFT, sporingslogg = true)
142142
public Response ryddOppGrunnlagUtenReferanse() {
143143
LOG.info("FORVALTNING ABAKUS ryddOppGrunnlagUtenReferanse");
144-
oppryddingTjeneste.fjernAlleIayAggregatUtenReferanse();
145-
oppryddingTjeneste.fjernAlleIayInformasjontUtenReferanse();
146-
oppryddingTjeneste.fjernAlleIayInntektsmeldingerUtenReferanse();
144+
oppryddingTjeneste.fjernAlleInaktiveAggregaterUtenReferanse();
147145
return Response.ok().build();
148146
}
149147

Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package no.nav.foreldrepenger.abakus.rydding.task;
1+
package no.nav.foreldrepenger.abakus.rydding;
22

33
import jakarta.enterprise.context.ApplicationScoped;
44
import jakarta.inject.Inject;
5-
import no.nav.foreldrepenger.abakus.rydding.OppryddingTjeneste;
65
import no.nav.vedtak.felles.prosesstask.api.ProsessTask;
76
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
87
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler;
98

109
@ApplicationScoped
11-
@ProsessTask(value = "opprydding.grunnlag.uten.referanse", cronExpression = "0 0 3 * * *", maxFailedRuns = 1)
10+
// Kjører kl 02:00 hver Søndag
11+
@ProsessTask(value = "opprydding.grunnlag.uten.referanse", cronExpression = "0 0 2 * * 0", maxFailedRuns = 1)
1212
public class FjernAlleGrunnlagUtenReferanseBatchTask implements ProsessTaskHandler {
1313

1414
private final OppryddingTjeneste oppryddingTjeneste;
@@ -20,8 +20,6 @@ public FjernAlleGrunnlagUtenReferanseBatchTask(OppryddingTjeneste oppryddingTjen
2020

2121
@Override
2222
public void doTask(ProsessTaskData prosessTaskData) {
23-
oppryddingTjeneste.fjernAlleIayAggregatUtenReferanse();
24-
oppryddingTjeneste.fjernAlleIayInformasjontUtenReferanse();
25-
oppryddingTjeneste.fjernAlleIayInntektsmeldingerUtenReferanse();
23+
oppryddingTjeneste.fjernAlleInaktiveAggregaterUtenReferanse();
2624
}
2725
}

web/src/main/java/no/nav/foreldrepenger/abakus/rydding/OppryddingTjeneste.java

+20-15
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import jakarta.enterprise.context.ApplicationScoped;
44
import jakarta.inject.Inject;
5-
import no.nav.foreldrepenger.abakus.rydding.task.FjernIayGrunnlagUtenReferanseTask;
6-
import no.nav.foreldrepenger.abakus.rydding.task.FjernIayInformasjonUtenReferanseTask;
7-
import no.nav.foreldrepenger.abakus.rydding.task.FjernIayInntektsmeldingerUtenReferanseTask;
5+
import no.nav.foreldrepenger.abakus.rydding.arbeidsforhold.FjernIayInformasjonUtenReferanseTask;
6+
import no.nav.foreldrepenger.abakus.rydding.grunnlag.FjernIayGrunnlagUtenReferanseTask;
7+
import no.nav.foreldrepenger.abakus.rydding.inntektsmelding.FjernIayInntektsmeldingerUtenReferanseTask;
8+
import no.nav.foreldrepenger.abakus.rydding.opptjening.FjernIayOppgittOpptjeningUtenReferanseTask;
89
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
910
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTjeneste;
1011
import org.slf4j.Logger;
1112
import org.slf4j.LoggerFactory;
1213

13-
1414
@ApplicationScoped
1515
public class OppryddingTjeneste {
1616
private static final Logger LOG = LoggerFactory.getLogger(OppryddingTjeneste.class);
@@ -25,33 +25,38 @@ public OppryddingTjeneste(ProsessTaskTjeneste taskTjeneste) {
2525
this.taskTjeneste = taskTjeneste;
2626
}
2727

28-
public void fjernAlleIayAggregatUtenReferanse() {
29-
opprettFjernIayAggregatTask();
30-
}
31-
32-
public void fjernAlleIayInformasjontUtenReferanse() {
28+
/**
29+
* Fjerner alle inaktive aggregater uten referanse.
30+
* Oppretter fire tasker som sletter aggregater asynkront
31+
*/
32+
public void fjernAlleInaktiveAggregaterUtenReferanse() {
33+
opprettFjernIayInntektArbeidYtelseAggregatTask();
3334
opprettFjernIayInformasjonTask();
34-
}
35-
36-
public void fjernAlleIayInntektsmeldingerUtenReferanse() {
3735
opprettFjernIayInntektsmeldingerTask();
36+
opprettFjernIayOppgittOpptjeningTask();
3837
}
3938

40-
private void opprettFjernIayAggregatTask() {
39+
public void opprettFjernIayInntektArbeidYtelseAggregatTask() {
4140
LOG.info("Oppretter task for å fjerne IAY-aggregater uten referanse.");
4241
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayGrunnlagUtenReferanseTask.class);
4342
taskTjeneste.lagre(prosessTaskData);
4443
}
4544

46-
private void opprettFjernIayInformasjonTask() {
45+
public void opprettFjernIayInformasjonTask() {
4746
LOG.info("Oppretter task for å fjerne IAY-Informasjon uten referanse.");
4847
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayInformasjonUtenReferanseTask.class);
4948
taskTjeneste.lagre(prosessTaskData);
5049
}
5150

52-
private void opprettFjernIayInntektsmeldingerTask() {
51+
public void opprettFjernIayInntektsmeldingerTask() {
5352
LOG.info("Oppretter task for å fjerne IAY-Inntektsmeldinger uten referanse.");
5453
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayInntektsmeldingerUtenReferanseTask.class);
5554
taskTjeneste.lagre(prosessTaskData);
5655
}
56+
57+
public void opprettFjernIayOppgittOpptjeningTask() {
58+
LOG.info("Oppretter task for å fjerne IAY-Oppgitt Opptjening uten referanse.");
59+
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayOppgittOpptjeningUtenReferanseTask.class);
60+
taskTjeneste.lagre(prosessTaskData);
61+
}
5762
}
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
package no.nav.foreldrepenger.abakus.rydding.task;
1+
package no.nav.foreldrepenger.abakus.rydding.arbeidsforhold;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
25

36
import jakarta.enterprise.context.ApplicationScoped;
47
import jakarta.inject.Inject;
5-
import no.nav.foreldrepenger.abakus.rydding.OppryddingIayInformasjonRepository;
8+
import no.nav.foreldrepenger.abakus.rydding.OppryddingTjeneste;
69
import no.nav.vedtak.felles.prosesstask.api.ProsessTask;
710
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
811
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler;
9-
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTjeneste;
10-
import org.slf4j.Logger;
11-
import org.slf4j.LoggerFactory;
1212

1313
@ApplicationScoped
1414
@ProsessTask(value = "opprydding.iayInformasjon.uten.referanse", maxFailedRuns = 2)
1515
public class FjernIayInformasjonUtenReferanseTask implements ProsessTaskHandler {
16-
public static final int IAY_ARBEIDSFORHOLD_INFORMASJON_BATCH_SIZE = 750;
16+
static final int IAY_ARBEIDSFORHOLD_INFORMASJON_BATCH_SIZE = 1000;
1717

1818
private static final Logger LOG = LoggerFactory.getLogger(FjernIayInformasjonUtenReferanseTask.class);
1919

2020
private final OppryddingIayInformasjonRepository oppryddingIayInformasjonRepository;
21-
private final ProsessTaskTjeneste taskTjeneste;
21+
private final OppryddingTjeneste oppryddingTjeneste;
2222

2323
@Inject
24-
public FjernIayInformasjonUtenReferanseTask(OppryddingIayInformasjonRepository oppryddingIayInformasjonRepository, ProsessTaskTjeneste taskTjeneste) {
24+
public FjernIayInformasjonUtenReferanseTask(OppryddingIayInformasjonRepository oppryddingIayInformasjonRepository, OppryddingTjeneste oppryddingTjeneste) {
2525
this.oppryddingIayInformasjonRepository = oppryddingIayInformasjonRepository;
26-
this.taskTjeneste = taskTjeneste;
26+
this.oppryddingTjeneste = oppryddingTjeneste;
2727
}
2828

2929
@Override
@@ -34,13 +34,7 @@ public void doTask(ProsessTaskData unused) {
3434
LOG.info("Slettet {} IAY-Informasjon uten referanse", iayInformasjonUtenReferanse.size());
3535

3636
if (iayInformasjonUtenReferanse.size() >= IAY_ARBEIDSFORHOLD_INFORMASJON_BATCH_SIZE) {
37-
opprettFjernInformasjonAggregatTask();
37+
oppryddingTjeneste.opprettFjernIayInformasjonTask();
3838
}
3939
}
40-
41-
private void opprettFjernInformasjonAggregatTask() {
42-
LOG.info("Oppretter en ny task for å fjerne IAY-Informasjon uten referanse.");
43-
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayInformasjonUtenReferanseTask.class);
44-
taskTjeneste.lagre(prosessTaskData);
45-
}
4640
}

web/src/main/java/no/nav/foreldrepenger/abakus/rydding/OppryddingIayInformasjonRepository.java web/src/main/java/no/nav/foreldrepenger/abakus/rydding/arbeidsforhold/OppryddingIayInformasjonRepository.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
package no.nav.foreldrepenger.abakus.rydding;
1+
package no.nav.foreldrepenger.abakus.rydding.arbeidsforhold;
22

3-
import jakarta.enterprise.context.ApplicationScoped;
4-
import jakarta.inject.Inject;
5-
import jakarta.persistence.EntityManager;
6-
import no.nav.foreldrepenger.abakus.domene.iay.arbeidsforhold.ArbeidsforholdInformasjon;
7-
import org.slf4j.Logger;
8-
import org.slf4j.LoggerFactory;
3+
import static java.util.Collections.emptyList;
94

105
import java.util.List;
116
import java.util.Objects;
127

13-
import static java.util.Collections.emptyList;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
import jakarta.enterprise.context.ApplicationScoped;
12+
import jakarta.inject.Inject;
13+
import jakarta.persistence.EntityManager;
14+
import no.nav.foreldrepenger.abakus.domene.iay.arbeidsforhold.ArbeidsforholdInformasjon;
1415

1516
@ApplicationScoped
1617
public class OppryddingIayInformasjonRepository {
@@ -28,7 +29,7 @@ public OppryddingIayInformasjonRepository(EntityManager entityManager) {
2829
this.entityManager = entityManager;
2930
}
3031

31-
public List<Long> hentIayInformasjonUtenReferanse(Integer maxResults) {
32+
List<Long> hentIayInformasjonUtenReferanse(Integer maxResults) {
3233
@SuppressWarnings("unchecked") List<Number> result = entityManager.createNativeQuery("select distinct id from iay_informasjon info where "
3334
+ "not exists (select 1 from gr_arbeid_inntekt gr where info.id = gr.informasjon_id)").setMaxResults(maxResults).getResultList();
3435
if (result.isEmpty()) {
@@ -39,7 +40,7 @@ public List<Long> hentIayInformasjonUtenReferanse(Integer maxResults) {
3940
return result.stream().map(Number::longValue).toList();
4041
}
4142

42-
public void slettIayInformasjon(Long id) {
43+
void slettIayInformasjon(Long id) {
4344
var arbeidsforholdInformasjon = entityManager.find(ArbeidsforholdInformasjon.class, id);
4445
if (arbeidsforholdInformasjon != null) {
4546
slettArbeidsforholdInformasjon(id);
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
1-
package no.nav.foreldrepenger.abakus.rydding.task;
1+
package no.nav.foreldrepenger.abakus.rydding.grunnlag;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55

66
import jakarta.enterprise.context.ApplicationScoped;
77
import jakarta.inject.Inject;
8-
import no.nav.foreldrepenger.abakus.rydding.OppryddingIayAggregatRepository;
8+
import no.nav.foreldrepenger.abakus.rydding.OppryddingTjeneste;
99
import no.nav.vedtak.felles.prosesstask.api.ProsessTask;
1010
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
1111
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler;
12-
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTjeneste;
1312

1413
@ApplicationScoped
1514
@ProsessTask(value = "opprydding.iayGrunnlag.uten.referanse", maxFailedRuns = 2)
1615
public class FjernIayGrunnlagUtenReferanseTask implements ProsessTaskHandler {
17-
18-
public static final int IAY_GRUNNLAG_BATCH_SIZE = 500;
16+
static final int IAY_GRUNNLAG_BATCH_SIZE = 500;
1917

2018
private static final Logger LOG = LoggerFactory.getLogger(FjernIayGrunnlagUtenReferanseTask.class);
2119

2220
private final OppryddingIayAggregatRepository iayAggregatRepository;
23-
private final ProsessTaskTjeneste taskTjeneste;
21+
private final OppryddingTjeneste oppryddingTjeneste;
2422

2523
@Inject
26-
public FjernIayGrunnlagUtenReferanseTask(OppryddingIayAggregatRepository iayAggregatRepository, ProsessTaskTjeneste taskTjeneste) {
24+
public FjernIayGrunnlagUtenReferanseTask(OppryddingIayAggregatRepository iayAggregatRepository, OppryddingTjeneste oppryddingTjeneste) {
2725
this.iayAggregatRepository = iayAggregatRepository;
28-
this.taskTjeneste = taskTjeneste;
26+
this.oppryddingTjeneste = oppryddingTjeneste;
2927
}
3028

3129
@Override
@@ -36,13 +34,7 @@ public void doTask(ProsessTaskData unused) {
3634
LOG.info("Slettet {} IAY-aggregater uten referanse", iayAggregatUtenReferanse.size());
3735

3836
if (iayAggregatUtenReferanse.size() >= IAY_GRUNNLAG_BATCH_SIZE) {
39-
opprettFjernIayAggregatTask();
37+
oppryddingTjeneste.opprettFjernIayInntektArbeidYtelseAggregatTask();
4038
}
4139
}
42-
43-
private void opprettFjernIayAggregatTask() {
44-
LOG.info("Oppretter en ny task for å fjerne IAY-aggregater uten referanse.");
45-
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayGrunnlagUtenReferanseTask.class);
46-
taskTjeneste.lagre(prosessTaskData);
47-
}
4840
}

web/src/main/java/no/nav/foreldrepenger/abakus/rydding/OppryddingIayAggregatRepository.java web/src/main/java/no/nav/foreldrepenger/abakus/rydding/grunnlag/OppryddingIayAggregatRepository.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.foreldrepenger.abakus.rydding;
1+
package no.nav.foreldrepenger.abakus.rydding.grunnlag;
22

33

44
import static java.util.Collections.emptyList;
@@ -32,7 +32,7 @@ public OppryddingIayAggregatRepository(EntityManager entityManager) {
3232
this.entityManager = entityManager;
3333
}
3434

35-
public List<Long> hentIayAggregaterUtenReferanse(Integer maxResults) {
35+
List<Long> hentIayAggregaterUtenReferanse(Integer maxResults) {
3636
@SuppressWarnings("unchecked") List<Number> result = entityManager.createNativeQuery(
3737
"select distinct id from iay_inntekt_arbeid_ytelser iay where "
3838
+ "not exists (select 1 from gr_arbeid_inntekt gr where iay.id = gr.register_id or iay.id = gr.saksbehandlet_id)")
@@ -46,7 +46,7 @@ public List<Long> hentIayAggregaterUtenReferanse(Integer maxResults) {
4646
return result.stream().map(Number::longValue).toList();
4747
}
4848

49-
public void slettIayAggregat(Long id) {
49+
void slettIayAggregat(Long id) {
5050
var iay = entityManager.find(InntektArbeidYtelseAggregat.class, id);
5151
if (iay != null) {
5252
slettIayAktørIntekt(id);
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,30 @@
1-
package no.nav.foreldrepenger.abakus.rydding.task;
1+
package no.nav.foreldrepenger.abakus.rydding.inntektsmelding;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55

66
import jakarta.enterprise.context.ApplicationScoped;
77
import jakarta.inject.Inject;
8-
import no.nav.foreldrepenger.abakus.rydding.OppryddingIayInntektsmeldingerRepository;
8+
import no.nav.foreldrepenger.abakus.rydding.OppryddingTjeneste;
99
import no.nav.vedtak.felles.prosesstask.api.ProsessTask;
1010
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
1111
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler;
12-
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTjeneste;
1312

1413
@ApplicationScoped
1514
@ProsessTask(value = "opprydding.iayInntektsmelding.uten.referanse", maxFailedRuns = 2)
1615
public class FjernIayInntektsmeldingerUtenReferanseTask implements ProsessTaskHandler {
17-
public static final int IAY_INNTEKTSMELDING_BATCH_SIZE = 500;
16+
static final int IAY_INNTEKTSMELDING_BATCH_SIZE = 500;
1817

1918
private static final Logger LOG = LoggerFactory.getLogger(FjernIayInntektsmeldingerUtenReferanseTask.class);
2019

2120
private final OppryddingIayInntektsmeldingerRepository oppryddingIayInntektsmeldingerRepository;
22-
private final ProsessTaskTjeneste taskTjeneste;
21+
private final OppryddingTjeneste oppryddingTjeneste;
2322

2423
@Inject
2524
public FjernIayInntektsmeldingerUtenReferanseTask(OppryddingIayInntektsmeldingerRepository oppryddingIayInntektsmeldingerRepository,
26-
ProsessTaskTjeneste taskTjeneste) {
25+
OppryddingTjeneste oppryddingTjeneste) {
2726
this.oppryddingIayInntektsmeldingerRepository = oppryddingIayInntektsmeldingerRepository;
28-
this.taskTjeneste = taskTjeneste;
27+
this.oppryddingTjeneste = oppryddingTjeneste;
2928
}
3029

3130
@Override
@@ -37,13 +36,7 @@ public void doTask(ProsessTaskData unused) {
3736
LOG.info("Slettet {} IAY-Inntektsmeldinger uten referanse", iayInntektsmeldingerUtenReferanse.size());
3837

3938
if (iayInntektsmeldingerUtenReferanse.size() >= IAY_INNTEKTSMELDING_BATCH_SIZE) {
40-
opprettFjernInntektsmeldingAggregatTask();
39+
oppryddingTjeneste.opprettFjernIayInntektsmeldingerTask();
4140
}
4241
}
43-
44-
private void opprettFjernInntektsmeldingAggregatTask() {
45-
LOG.info("Oppretter en ny task for å fjerne IAY-Inntektsmeldinger uten referanse.");
46-
var prosessTaskData = ProsessTaskData.forProsessTask(FjernIayInntektsmeldingerUtenReferanseTask.class);
47-
taskTjeneste.lagre(prosessTaskData);
48-
}
4942
}

web/src/main/java/no/nav/foreldrepenger/abakus/rydding/OppryddingIayInntektsmeldingerRepository.java web/src/main/java/no/nav/foreldrepenger/abakus/rydding/inntektsmelding/OppryddingIayInntektsmeldingerRepository.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.foreldrepenger.abakus.rydding;
1+
package no.nav.foreldrepenger.abakus.rydding.inntektsmelding;
22

33
import static java.util.Collections.emptyList;
44

@@ -29,7 +29,7 @@ public OppryddingIayInntektsmeldingerRepository(EntityManager entityManager) {
2929
this.entityManager = entityManager;
3030
}
3131

32-
public List<Long> hentIayInntektsmeldingerUtenReferanse(Integer maxResults) {
32+
List<Long> hentIayInntektsmeldingerUtenReferanse(Integer maxResults) {
3333
@SuppressWarnings("unchecked") List<Number> result = entityManager.createNativeQuery("select distinct id from iay_inntektsmeldinger im where "
3434
+ "not exists (select 1 from gr_arbeid_inntekt gr where im.id = gr.inntektsmeldinger_id)").setMaxResults(maxResults).getResultList();
3535
if (result.isEmpty()) {
@@ -40,7 +40,7 @@ public List<Long> hentIayInntektsmeldingerUtenReferanse(Integer maxResults) {
4040
return result.stream().map(Number::longValue).toList();
4141
}
4242

43-
public void slettIayInntektsmeldinger(Long id) {
43+
void slettIayInntektsmeldinger(Long id) {
4444
var inntektsmeldingAggregat = entityManager.find(InntektsmeldingAggregat.class, id);
4545
if (inntektsmeldingAggregat != null) {
4646
slettInntektsmeldingFor(id);

0 commit comments

Comments
 (0)