Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TFP-5879 sett anke-behandlingresultat fra Trygderettvurdering #6814

Merged
merged 1 commit into from
Oct 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import no.nav.foreldrepenger.behandling.BehandlingEventPubliserer;
import no.nav.foreldrepenger.behandlingslager.behandling.Behandling;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType;
import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingsresultatRepository;
import no.nav.foreldrepenger.behandlingslager.behandling.anke.AnkeRepository;
Expand Down Expand Up @@ -77,7 +78,11 @@ private void lagreAnkeVurderingResultat(Behandling behandling, AnkeVurderingResu
var ankeResultat = hentAnkeResultat(behandling);
var nyttresultat = builder.medAnkeResultat(ankeResultat).build();
ankeRepository.lagreVurderingsResultat(behandling.getId(), nyttresultat);
settBehandlingResultatTypeBasertPaaUtfall(behandling, nyttresultat.getAnkeVurdering(), nyttresultat.getAnkeVurderingOmgjør());
var nyVurdering = nyttresultat.getTrygderettVurdering() == null || AnkeVurdering.UDEFINERT.equals(nyttresultat.getTrygderettVurdering()) ?
nyttresultat.getAnkeVurdering() : nyttresultat.getTrygderettVurdering();
var nyOmgjør = nyttresultat.getTrygderettVurdering() == null || AnkeVurdering.UDEFINERT.equals(nyttresultat.getTrygderettVurdering()) ?
nyttresultat.getAnkeVurderingOmgjør() : nyttresultat.getTrygderettVurderingOmgjør();
settBehandlingResultatTypeBasertPaaUtfall(behandling, nyVurdering, nyOmgjør);
behandlingRepository.lagre(behandling, behandlingRepository.taSkriveLås(behandling));
}

Expand All @@ -94,6 +99,11 @@ private void settBehandlingResultatTypeBasertPaaUtfall(Behandling behandling, An
}
}

public BehandlingResultatType oppdatertBehandlingsResultat(Behandling b) {
var avr = ankeRepository.hentAnkeVurderingResultat(b.getId()).orElseThrow();
return AnkeVurderingBehandlingResultat.tolkBehandlingResultatType(avr.getTrygderettVurdering(), avr.getTrygderettVurderingOmgjør());
}

public static HistorikkResultatType konverterAnkeVurderingTilResultatType(AnkeVurdering vurdering, AnkeVurderingOmgjør ankeVurderingOmgjør) {
if (AnkeVurdering.ANKE_AVVIS.equals(vurdering)) {
return HistorikkResultatType.ANKE_AVVIS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,16 @@
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;

import org.hibernate.jpa.HibernateHints;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import no.nav.foreldrepenger.behandling.anke.AnkeVurderingTjeneste;
import no.nav.foreldrepenger.behandlingslager.behandling.Behandling;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingStatus;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingStegType;
import no.nav.foreldrepenger.behandlingslager.behandling.aksjonspunkt.AksjonspunktStatus;
Expand All @@ -37,7 +41,6 @@
import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.OverlappVedtakRepository;
import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakRepository;
import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakStatus;
import no.nav.foreldrepenger.datavarehus.tjeneste.DatavarehusTjeneste;
import no.nav.foreldrepenger.domene.typer.Saksnummer;
import no.nav.foreldrepenger.mottak.vedtak.avstemming.VedtakAvstemPeriodeTask;
import no.nav.foreldrepenger.mottak.vedtak.avstemming.VedtakOverlappAvstemSakTask;
Expand Down Expand Up @@ -66,7 +69,7 @@ public class ForvaltningUttrekkRestTjeneste {
private FagsakRepository fagsakRepository;
private ProsessTaskTjeneste taskTjeneste;
private OverlappVedtakRepository overlappRepository;
private DatavarehusTjeneste datavarehusTjeneste;
private AnkeVurderingTjeneste ankeVurderingTjeneste;

public ForvaltningUttrekkRestTjeneste() {
// For CDI
Expand All @@ -78,13 +81,13 @@ public ForvaltningUttrekkRestTjeneste(EntityManager entityManager,
BehandlingRepository behandlingRepository,
ProsessTaskTjeneste taskTjeneste,
OverlappVedtakRepository overlappRepository,
DatavarehusTjeneste datavarehusTjeneste) {
AnkeVurderingTjeneste ankeVurderingTjeneste) {
this.entityManager = entityManager;
this.fagsakRepository = fagsakRepository;
this.behandlingRepository = behandlingRepository;
this.taskTjeneste = taskTjeneste;
this.overlappRepository = overlappRepository;
this.datavarehusTjeneste = datavarehusTjeneste;
this.ankeVurderingTjeneste = ankeVurderingTjeneste;
}

@POST
Expand Down Expand Up @@ -278,18 +281,28 @@ public Response hentAvstemtSakOverlappTrex(@TilpassetAbacAttributt(supplierClass
@Operation(description = "Kopiering før unmapping", tags = "FORVALTNING-uttrekk")
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.DRIFT)
public Response fikseAnkeBehandlinger1(@BeanParam @Valid ForvaltningBehandlingIdDto dto) {
var behandling = behandlingRepository.hentBehandlingReadOnly(dto.getBehandlingUuid());
var behandlingId = behandling.getId();
entityManager.createNativeQuery("UPDATE behandling_resultat set behandling_resultat_type = 'ANKE_MEDHOLD' where behandling_id = :id").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("UPDATE aksjonspunkt set aksjonspunkt_status = 'AVBR' where behandling_id = :id and aksjonspunkt_def = '7033'").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("UPDATE behandling_steg_tilstand set behandling_steg_status = 'UTFØRT' where behandling_id = :id and behandling_steg = 'ANKE_MERKNADER'").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("INSERT INTO behandling_steg_tilstand (ID, BEHANDLING_ID, BEHANDLING_STEG, BEHANDLING_STEG_STATUS) VALUES (SEQ_BEHANDLING_STEG_TILSTAND.nextval, :id, 'IVEDSTEG', 'UTFØRT')").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("UPDATE behandling set behandling_status = 'AVSLU' where id = :id").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("UPDATE anke_vurdering_resultat set sendt_trygderett_dato = null, anke_vurdering_omgjoer = 'ANKE_TIL_GUNST' where anke_resultat_id in (select id from anke_resultat where anke_behandling_id = :id)").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("UPDATE FPSAK_hist.ANKE_VURDERING_RESULTAT_dvh set TR_OVERSENDT_DATO = null, anke_vurdering_omgjoer = 'ANKE_TIL_GUNST' where anke_behandling_id = :id").setParameter("id", behandlingId).executeUpdate();
var query = entityManager.createNativeQuery("""
select ba.*
from fpsak.behandling ba
join fpsak.ANKE_RESULTAT ar on ba.id = ar.anke_behandling_id
join fpsak.anke_vurdering_resultat on anke_resultat_id = ar.id
where behandling_type = 'BT-008' and behandling_status = 'AVSLU' and tr_vurdering <> '-'
and (tr_vurdering <> ankevurdering or tr_vurdering_omgjoer <> anke_vurdering_omgjoer)
""", Behandling.class)
.setHint(HibernateHints.HINT_READ_ONLY, "true");
List<Behandling> behandlinger = query.getResultList();
behandlinger.forEach(behandling -> oppdaterBehandlingsresultat(behandling));
return Response.ok().build();
}

private void oppdaterBehandlingsresultat(Behandling behandling) {
var nyttresultat = ankeVurderingTjeneste.oppdatertBehandlingsResultat(behandling);
entityManager.createNativeQuery("UPDATE fpsak.behandling_resultat set behandling_resultat_type = :res where behandling_id = :id and behandling_resultat_type <> :res")
.setParameter("id", behandling.getId())
.setParameter("res", nyttresultat.getKode())
.executeUpdate();
}

@POST
@Path("/fikseAnkeBehandlinger2")
@Consumes(MediaType.APPLICATION_JSON)
Expand All @@ -299,7 +312,17 @@ public Response fikseAnkeBehandlinger1(@BeanParam @Valid ForvaltningBehandlingId
public Response fikseAnkeBehandlinger2(@BeanParam @Valid ForvaltningBehandlingIdDto dto) {
var behandling = behandlingRepository.hentBehandlingReadOnly(dto.getBehandlingUuid());
var behandlingId = behandling.getId();
entityManager.createNativeQuery("UPDATE FPSAK_HIST.BEHANDLING_DVH set funksjonell_tid = (select max(funksjonell_tid) from FPSAK_hist.behandling_dvh a where behandling_id = :id and behandling_status = 'IVED') where behandling_id = :id and behandling_status = 'AVSLU'").setParameter("id", behandlingId).executeUpdate();
entityManager.createNativeQuery("""
merge into fpsak_hist.behandling_dvh bdvh
using (select bid, brt from(
select ba.id bid, br.behandling_resultat_type brt
from fpsak.behandling ba join fpsak.behandling_RESULTAT br on ba.id = br.behandling_id
where ba.behandling_type = 'BT-008' and ba.behandling_status = 'AVSLU'
)) utvalg
on (bdvh.behandling_id = utvalg.bid and bdvh.behandling_resultat_type = 'AVSLU')
when matched then
update set bdvh.behandling_resultat_type = utvalg.brt
""").executeUpdate();
return Response.ok().build();
}
}