Skip to content

Commit

Permalink
gjeldendeTilskuddsperiodeJobb
Browse files Browse the repository at this point in the history
Opprett ny jobb for å "bootstrappe" nytt felt
for gjeldende tilskuddsperiode på gamle avtaler.
Denne jobben skal fjernes når databasen er
oppdatert.
  • Loading branch information
Oddsor committed Nov 25, 2024
1 parent e67ca70 commit b179969
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/main/java/no/nav/tag/tiltaksgjennomforing/avtale/Avtale.java
Original file line number Diff line number Diff line change
Expand Up @@ -840,7 +840,7 @@ public void godkjennTilskuddsperiode(NavIdent beslutter, String enhet) {
// Sjekk om samme løpenummer allerede er godkjent og annullert. Trenger da en "ekstra" resendingsnummer
Integer resendingsnummer = finnResendingsNummer(gjeldendePeriode);
gjeldendePeriode.godkjenn(beslutter, enhet);
setGjeldendeTilskuddsperiode(gjeldendeTilskuddsperiodeGammel());
setGjeldendeTilskuddsperiode(finnGjeldendeTilskuddsperiode());
if (!erAvtaleInngått()) {
LocalDateTime tidspunkt = Now.localDateTime();
godkjennForBeslutter(tidspunkt, beslutter);
Expand Down Expand Up @@ -901,16 +901,16 @@ public TilskuddPeriode tilskuddsperiode(int index) {
@Nullable
@JsonProperty
public TilskuddPeriode getGjeldendeTilskuddsperiode() {
var gjeldendePeriode = gjeldendeTilskuddsperiodeGammel();
var gjeldendePeriode = finnGjeldendeTilskuddsperiode();
var gjeldendePeriodeKalkulertId = gjeldendePeriode != null ? gjeldendePeriode.getId() : null;
var gjeldendeFraDbId = this.gjeldendeTilskuddsperiode != null ? this.gjeldendeTilskuddsperiode.getId() : null;
if (!Objects.equals(gjeldendePeriodeKalkulertId, gjeldendeFraDbId)) {
log.debug("Gjeldende tilskuddsperiode ikke oppdatert? Fant {}, men kalkulerte {}", gjeldendeFraDbId, gjeldendePeriodeKalkulertId);
log.warn("Gjeldende tilskuddsperiode ikke oppdatert? Fant {}, men kalkulerte {}", gjeldendeFraDbId, gjeldendePeriodeKalkulertId);
}
return gjeldendePeriode;
}

private TilskuddPeriode gjeldendeTilskuddsperiodeGammel() {
public TilskuddPeriode finnGjeldendeTilskuddsperiode() {
TreeSet<TilskuddPeriode> aktiveTilskuddsperioder = tilskuddPeriode.stream()
.filter(TilskuddPeriode::isAktiv)
.collect(Collectors.toCollection(TreeSet::new));
Expand Down Expand Up @@ -999,7 +999,7 @@ private void forkortTilskuddsperioder(LocalDate nySluttDato) {
}
}
}
setGjeldendeTilskuddsperiode(gjeldendeTilskuddsperiodeGammel());
setGjeldendeTilskuddsperiode(finnGjeldendeTilskuddsperiode());
}

void endreBeløpITilskuddsperioder() {
Expand All @@ -1015,7 +1015,7 @@ public void sendTilbakeTilBeslutter() {
.filter(t -> t.getStatus() == TilskuddPeriodeStatus.AVSLÅTT)
.map(TilskuddPeriode::deaktiverOgLagNyUbehandlet).toList();
tilskuddPeriode.addAll(rettede);
setGjeldendeTilskuddsperiode(gjeldendeTilskuddsperiodeGammel());
setGjeldendeTilskuddsperiode(finnGjeldendeTilskuddsperiode());
}

private void sjekkAtIkkeAvtaleErAnnullertEllerAvbrutt() {
Expand All @@ -1039,7 +1039,7 @@ private List<TilskuddPeriode> beregnTilskuddsperioder(LocalDate startDato, Local

private void nyeTilskuddsperioder() {
this.hentBeregningStrategi().genererNyeTilskuddsperioder(this);
setGjeldendeTilskuddsperiode(gjeldendeTilskuddsperiodeGammel());
setGjeldendeTilskuddsperiode(finnGjeldendeTilskuddsperiode());
}

private boolean sjekkRyddingAvTilskuddsperioder() {
Expand Down Expand Up @@ -1097,7 +1097,7 @@ public boolean nyeTilskuddsperioderEtterMigreringFraArena(LocalDate migreringsDa
fikseLøpenumre(tilskuddsperioder, 1);
if (!dryRun) {
tilskuddPeriode.addAll(tilskuddsperioder);
setGjeldendeTilskuddsperiode(gjeldendeTilskuddsperiodeGammel());
setGjeldendeTilskuddsperiode(finnGjeldendeTilskuddsperiode());
}
return true;
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package no.nav.tag.tiltaksgjennomforing.avtale;

import io.micrometer.core.annotation.Timed;
import jakarta.persistence.LockModeType;
import org.springframework.data.domain.Limit;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Lock;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

Expand Down Expand Up @@ -62,6 +65,9 @@ public interface AvtaleRepository extends JpaRepository<Avtale, UUID>, JpaSpecif

List<Avtale> findAllByGjeldendeInnhold_AvtaleInngåttNotNull();

@Lock(LockModeType.PESSIMISTIC_WRITE)
List<Avtale> findAllByGjeldendeTilskuddsperiodeIsNullAndTiltakstypeIsNot(Tiltakstype tiltakstype, Limit limit);

@Timed(percentiles = {0.5d, 0.75d, 0.9d, 0.99d, 0.999d})
@Override
Avtale save(Avtale entity);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package no.nav.tag.tiltaksgjennomforing.avtale.jobber;

import lombok.extern.slf4j.Slf4j;
import no.nav.tag.tiltaksgjennomforing.Miljø;
import no.nav.tag.tiltaksgjennomforing.avtale.AvtaleRepository;
import no.nav.tag.tiltaksgjennomforing.avtale.Tiltakstype;
import org.springframework.context.annotation.Profile;
import org.springframework.data.domain.Limit;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

@Slf4j
@Component
@Profile({Miljø.DEV_FSS, Miljø.PROD_FSS})
class GjeldendeTilskuddsperiodeJobb {
private final GjeldendeTilskuddsperiodeJobbWorker gjeldendeTilskuddsperiodeJobbWorker;

public GjeldendeTilskuddsperiodeJobb(GjeldendeTilskuddsperiodeJobbWorker gjeldendeTilskuddsperiodeJobbWorker) {
this.gjeldendeTilskuddsperiodeJobbWorker = gjeldendeTilskuddsperiodeJobbWorker;
}

@Scheduled(cron = "0 0/15 * * * *")
public void settGjeldendeTilskuddsperiodeJobb() {
gjeldendeTilskuddsperiodeJobbWorker.settGjeldendeTilskuddsperiodeJobb();
}
}

@Slf4j
@Component
class GjeldendeTilskuddsperiodeJobbWorker {
private final AvtaleRepository avtaleRepository;

public GjeldendeTilskuddsperiodeJobbWorker(AvtaleRepository avtaleRepository) {
this.avtaleRepository = avtaleRepository;
}

@Transactional
public void settGjeldendeTilskuddsperiodeJobb() {
log.info("Starter jobb for å oppdatere gjeldedeTilskuddsperiode-felt");
var avtaler = avtaleRepository.findAllByGjeldendeTilskuddsperiodeIsNullAndTiltakstypeIsNot(
Tiltakstype.ARBEIDSTRENING,
Limit.of(100)
);
if (avtaler.isEmpty()) {
log.info("Ingen avtaler å behandle");
return;
}
avtaler.forEach(avtale -> {
var nyGjeldende = avtale.finnGjeldendeTilskuddsperiode();
if (nyGjeldende == null) {
log.warn("Fant ikke en gjeldende tilskuddsperiode! Har ikke avtalen aktive tilskuddsperioder? (avtale-id: {})", avtale.getId());
}
avtale.setGjeldendeTilskuddsperiode(nyGjeldende);
});
avtaleRepository.saveAll(avtaler);
}
}

0 comments on commit b179969

Please sign in to comment.