-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
NAV-22311: Sørger for at BehandleSak-oppgave opprettes med korrekt ko…
…mbinasjon av saksbehandler og enhet (#4760) Favro: [NAV-22311](https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-22311) ### 💰 Hva skal gjøres, og hvorfor? Som en følge av kommende endring i `OppgaveSystemet` (OS), er vi nødt til å sikre at kombinasjonen av saksbehandler (tilordnetRessurs) og enhet (tildeltEnhetsnr) er korrekt. Altså at saksbehandler som settes som ansvarlig på en oppgave har tilgang til å behandle barnetrygd-saker på vegne av enheten som settes. Denne valideringen i OS har ikke eksistert tidligere, men skapte en del feil for oss da den ble rullet ut. Endringen i OS er rullet tilbake i påvente av at vi gjør nødvendige justeringer på vår side. For å løse dette har vi laget servicen `NavIdentOgEnhetService` som henter saksbehandlers enhets-tilganger (Axsys) og sjekker disse opp mot den geografiske behandlende enheten arbeidsfordelings-tjenesten (NORG2) mener at skal stå som behandlende enhet. Resultatet er en gyldig kombinasjon av saksbehandler/nav-ident og enhetsnummer. * Enheter som 2103 (Vikafossen) og 4863 (Midlertidig enhet) håndteres etter "spesial"-regler (se Favro) * Øvrige enheter håndteres likt (se Favro) Fordi vi potensielt overstyrer enheten arbeidsfordelings-tjenesten (NORG2) har satt, sørger vi for å oppdatere `arbeidsfordelingPåBehandling` ved endringer. Når saksbehandler manuelt endrer behandlende enhet, sørger vi også for at saksbehandler på oppgave blir nullstilt. ### ✅ Checklist - [x] Jeg har testet mine endringer i henhold til akseptansekriteriene 🕵️ - [ ] Jeg har config- eller sql-endringer. - [ ] Jeg har skrevet tester. ### 💬 Ønsker du en muntlig gjennomgang? - [ ] Ja - [x] Nei, endringene er utviklet i gruppe på 3. --------- Co-authored-by: thoalm <[email protected]>
- Loading branch information
1 parent
a30f6ff
commit ff51522
Showing
15 changed files
with
1,052 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
122 changes: 122 additions & 0 deletions
122
...main/kotlin/no/nav/familie/ba/sak/integrasjoner/oppgave/OppgaveArbeidsfordelingService.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
package no.nav.familie.ba.sak.integrasjoner.oppgave | ||
|
||
import no.nav.familie.ba.sak.common.Feil | ||
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient | ||
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.BarnetrygdEnhet | ||
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.BarnetrygdEnhet.Companion.erGyldigBehandlendeBarnetrygdEnhet | ||
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.ArbeidsfordelingPåBehandling | ||
import no.nav.familie.kontrakter.felles.NavIdent | ||
import org.springframework.stereotype.Service | ||
|
||
@Service | ||
class OppgaveArbeidsfordelingService( | ||
private val integrasjonClient: IntegrasjonClient, | ||
) { | ||
fun finnArbeidsfordelingForOppgave( | ||
arbeidsfordelingPåBehandling: ArbeidsfordelingPåBehandling, | ||
navIdent: NavIdent?, | ||
): OppgaveArbeidsfordeling = | ||
when (arbeidsfordelingPåBehandling.behandlendeEnhetId) { | ||
BarnetrygdEnhet.MIDLERTIDIG_ENHET.enhetsnummer -> håndterMidlertidigEnhet4863(navIdent) | ||
BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer -> håndterVikafossenEnhet2103(navIdent) | ||
else -> håndterAndreEnheter(navIdent, arbeidsfordelingPåBehandling) | ||
} | ||
|
||
private fun håndterMidlertidigEnhet4863( | ||
navIdent: NavIdent?, | ||
): OppgaveArbeidsfordeling { | ||
if (navIdent == null) { | ||
throw Feil("Kan ikke sette ${BarnetrygdEnhet.MIDLERTIDIG_ENHET} om man mangler NAV-ident") | ||
} | ||
val enheterNavIdentHarTilgangTil = | ||
integrasjonClient | ||
.hentEnheterSomNavIdentHarTilgangTil(navIdent) | ||
.filter { erGyldigBehandlendeBarnetrygdEnhet(it.enhetsnummer) } | ||
.filter { it.enhetsnummer != BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer } | ||
if (enheterNavIdentHarTilgangTil.isEmpty()) { | ||
throw Feil("Fant ingen passende enhetsnummer for nav-ident $navIdent") | ||
} | ||
// Velger bare det første enhetsnummeret i tilfeller hvor man har flere, avklart med fag | ||
val nyBehandlendeEnhet = enheterNavIdentHarTilgangTil.first() | ||
return OppgaveArbeidsfordeling( | ||
navIdent, | ||
nyBehandlendeEnhet.enhetsnummer, | ||
nyBehandlendeEnhet.enhetsnavn, | ||
) | ||
} | ||
|
||
private fun håndterVikafossenEnhet2103( | ||
navIdent: NavIdent?, | ||
): OppgaveArbeidsfordeling { | ||
if (navIdent == null) { | ||
throw Feil("Kan ikke sette ${BarnetrygdEnhet.VIKAFOSSEN} om man mangler NAV-ident") | ||
} | ||
val harTilgangTilVikafossenEnhet2103 = | ||
integrasjonClient | ||
.hentEnheterSomNavIdentHarTilgangTil(navIdent) | ||
.filter { erGyldigBehandlendeBarnetrygdEnhet(it.enhetsnummer) } | ||
.any { it.enhetsnummer == BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer } | ||
if (!harTilgangTilVikafossenEnhet2103) { | ||
return OppgaveArbeidsfordeling( | ||
null, | ||
BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer, | ||
BarnetrygdEnhet.VIKAFOSSEN.enhetsnavn, | ||
) | ||
} | ||
return OppgaveArbeidsfordeling( | ||
navIdent, | ||
BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer, | ||
BarnetrygdEnhet.VIKAFOSSEN.enhetsnavn, | ||
) | ||
} | ||
|
||
private fun håndterAndreEnheter( | ||
navIdent: NavIdent?, | ||
arbeidsfordelingPåBehandling: ArbeidsfordelingPåBehandling, | ||
): OppgaveArbeidsfordeling { | ||
if (navIdent == null) { | ||
// navIdent er null ved automatisk journalføring | ||
return OppgaveArbeidsfordeling( | ||
null, | ||
arbeidsfordelingPåBehandling.behandlendeEnhetId, | ||
arbeidsfordelingPåBehandling.behandlendeEnhetNavn, | ||
) | ||
} | ||
val enheterNavIdentHarTilgangTil = | ||
integrasjonClient | ||
.hentEnheterSomNavIdentHarTilgangTil(navIdent) | ||
.filter { erGyldigBehandlendeBarnetrygdEnhet(it.enhetsnummer) } | ||
.filter { it.enhetsnummer != BarnetrygdEnhet.VIKAFOSSEN.enhetsnummer } | ||
if (enheterNavIdentHarTilgangTil.isEmpty()) { | ||
throw Feil("Fant ingen passende enhetsnummer for NAV-ident $navIdent") | ||
} | ||
val harTilgangTilBehandledeEnhet = | ||
enheterNavIdentHarTilgangTil.any { | ||
it.enhetsnummer == arbeidsfordelingPåBehandling.behandlendeEnhetId | ||
} | ||
if (!harTilgangTilBehandledeEnhet) { | ||
// Velger bare det første enhetsnummeret i tilfeller hvor man har flere, avklart med fag | ||
val nyBehandlendeEnhet = enheterNavIdentHarTilgangTil.first() | ||
return OppgaveArbeidsfordeling( | ||
navIdent, | ||
nyBehandlendeEnhet.enhetsnummer, | ||
nyBehandlendeEnhet.enhetsnavn, | ||
) | ||
} | ||
return OppgaveArbeidsfordeling( | ||
navIdent, | ||
arbeidsfordelingPåBehandling.behandlendeEnhetId, | ||
arbeidsfordelingPåBehandling.behandlendeEnhetNavn, | ||
) | ||
} | ||
} | ||
|
||
data class OppgaveArbeidsfordeling( | ||
val navIdent: NavIdent?, | ||
val enhetsnummer: String, | ||
val enhetsnavn: String, | ||
) { | ||
init { | ||
require(enhetsnummer.length == 4) { "Enhetsnummer må være 4 siffer" } | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
src/main/kotlin/no/nav/familie/ba/sak/kjerne/arbeidsfordeling/BarnetrygdEnhet.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package no.nav.familie.ba.sak.kjerne.arbeidsfordeling | ||
|
||
enum class BarnetrygdEnhet( | ||
val enhetsnummer: String, | ||
val enhetsnavn: String, | ||
) { | ||
VIKAFOSSEN("2103", "NAV Vikafossen"), | ||
DRAMMEN("4806", "NAV Familie- og pensjonsytelser Drammen"), | ||
VADSØ("4820", "NAV Familie- og pensjonsytelser Vadsø"), | ||
OSLO("4833", "NAV Familie- og pensjonsytelser Oslo 1"), | ||
STORD("4842", "NAV Familie- og pensjonsytelser Stord"), | ||
STEINKJER("4817", "NAV Familie- og pensjonsytelser Steinkjer"), | ||
MIDLERTIDIG_ENHET("4863", "Midlertidig enhet"), | ||
; | ||
|
||
override fun toString(): String = "$enhetsnavn ($enhetsnummer)" | ||
|
||
companion object { | ||
private val GYLDIGE_BEHANDLENDE_BARNETRYGD_ENHETER: List<BarnetrygdEnhet> = | ||
listOf( | ||
VIKAFOSSEN, | ||
DRAMMEN, | ||
VADSØ, | ||
OSLO, | ||
STORD, | ||
STEINKJER, | ||
) | ||
|
||
fun erGyldigBehandlendeBarnetrygdEnhet(enhetsnummer: String): Boolean = | ||
GYLDIGE_BEHANDLENDE_BARNETRYGD_ENHETER.any { it.enhetsnummer == enhetsnummer } | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
...v/familie/ba/sak/kjerne/arbeidsfordeling/domene/ArbeidsfordelingPåBehandlingRepository.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,14 @@ | ||
package no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene | ||
|
||
import no.nav.familie.ba.sak.common.Feil | ||
import org.springframework.data.jpa.repository.JpaRepository | ||
import org.springframework.data.jpa.repository.Query | ||
|
||
interface ArbeidsfordelingPåBehandlingRepository : JpaRepository<ArbeidsfordelingPåBehandling, Long> { | ||
@Query(value = "SELECT apb FROM ArbeidsfordelingPåBehandling apb WHERE apb.behandlingId = :behandlingId") | ||
fun finnArbeidsfordelingPåBehandling(behandlingId: Long): ArbeidsfordelingPåBehandling? | ||
} | ||
|
||
// Extension-function fordi default methods for JPA ikke er støttet uten @JvmDefaultWithCompatibility | ||
fun ArbeidsfordelingPåBehandlingRepository.hentArbeidsfordelingPåBehandling(behandlingId: Long): ArbeidsfordelingPåBehandling = | ||
finnArbeidsfordelingPåBehandling(behandlingId) ?: throw Feil("Finner ikke tilknyttet arbeidsfordelingsenhet på behandling $behandlingId") |
Oops, something went wrong.