From 69ceb9652599453a9c44c3206556277e0877760a Mon Sep 17 00:00:00 2001 From: Jens-Otto Larsen Date: Thu, 24 Oct 2024 21:32:01 +0200 Subject: [PATCH] TFP-5879 sett anke-behandlingresultat fra Trygderettvurdering --- .../anke/AnkeVurderingTjeneste.java | 12 ++++- .../ForvaltningUttrekkRestTjeneste.java | 51 ++++++++++++++----- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/domenetjenester/behandling-klage/src/main/java/no/nav/foreldrepenger/behandling/anke/AnkeVurderingTjeneste.java b/domenetjenester/behandling-klage/src/main/java/no/nav/foreldrepenger/behandling/anke/AnkeVurderingTjeneste.java index 6b39ad51d43..8a4bb11c4bb 100644 --- a/domenetjenester/behandling-klage/src/main/java/no/nav/foreldrepenger/behandling/anke/AnkeVurderingTjeneste.java +++ b/domenetjenester/behandling-klage/src/main/java/no/nav/foreldrepenger/behandling/anke/AnkeVurderingTjeneste.java @@ -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; @@ -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)); } @@ -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; diff --git a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/ForvaltningUttrekkRestTjeneste.java b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/ForvaltningUttrekkRestTjeneste.java index 91ef4d05caf..20006d5e6ce 100644 --- a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/ForvaltningUttrekkRestTjeneste.java +++ b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/forvaltning/ForvaltningUttrekkRestTjeneste.java @@ -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; @@ -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; @@ -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 @@ -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 @@ -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 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) @@ -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(); } }