Skip to content

Commit

Permalink
NAV-22311: Bestemmer arbeidsfordelingsenhet utenfor OpprettOppgave-ta…
Browse files Browse the repository at this point in the history
…sk (#4799)

Favro:
[NAV-22311](https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-22311)

### 💰 Hva skal gjøres, og hvorfor?
Tidligere tilpasset/justerte vi arbeidsfordeling på behandling i
`OpprettOppgaveTask` slik at BehandleSak-oppgave fikk korrekt
kombinasjon av enhet og saksbehandler. I og med at `OpprettOppgaveTask`,
kjøres asynkront, blir ikke arbeidsfordeling på behandling oppdatert før
saksbehandler blir rutet til "Registrer søknad"-steget. Dette fører til
at det ser ut som at behandlingen er satt på feil enhet, selv om den
egentlig er riktig (dukket opp korrekt dersom saksbehandler oppdaterer
siden).

Tilpasser derfor arbeidsfordelingen i henhold til saksbehandlers
tilganger tidligere, og utenfor `OpprettOppgaveTask` i
`fastsettBehandlendeEnhet`-metoden i `ArbeidsfordelingService`. Dette
gir også mer mening da det er i `fastsettBehandlendeEnhet` vi henter
"geografisk behandlende enhet", som vi nå validerer tilgangen til.

### ✅ Checklist
- [x] Jeg har testet mine endringer i henhold til akseptansekriteriene
🕵️
- [ ] Jeg har config- eller sql-endringer.
- [ ] Jeg har skrevet tester.
  • Loading branch information
bragejahren authored Oct 8, 2024
1 parent 0d1a6b6 commit 171f085
Show file tree
Hide file tree
Showing 14 changed files with 740 additions and 688 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.familie.ba.sak.integrasjoner.journalføring.domene.LogiskVedleggRe
import no.nav.familie.ba.sak.integrasjoner.journalføring.domene.LogiskVedleggResponse
import no.nav.familie.ba.sak.integrasjoner.journalføring.domene.OppdaterJournalpostRequest
import no.nav.familie.ba.sak.integrasjoner.journalføring.domene.OppdaterJournalpostResponse
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.BarnetrygdEnhet.Companion.erGyldigBehandlendeBarnetrygdEnhet
import no.nav.familie.ba.sak.kjerne.brev.mottaker.ManuellAdresseInfo
import no.nav.familie.ba.sak.kjerne.personident.Aktør
import no.nav.familie.ba.sak.task.DistribuerDokumentDTO
Expand Down Expand Up @@ -235,15 +236,15 @@ class IntegrasjonClient(
}
}

fun hentEnheterSomNavIdentHarTilgangTil(navIdent: NavIdent): List<Enhet> {
fun hentBehandlendeEnheterSomNavIdentHarTilgangTil(navIdent: NavIdent): List<Enhet> {
val uri = URI.create("$integrasjonUri/enhetstilganger")
return kallEksternTjenesteRessurs(
return kallEksternTjenesteRessurs<List<Enhet>>(
tjeneste = "enhetstilganger",
uri = uri,
formål = "Hent enheter en NAV-ident har tilgang til",
) {
postForEntity(uri, HentEnheterNavIdentHarTilgangTilRequest(navIdent, Tema.BAR))
}
}.filter { erGyldigBehandlendeBarnetrygdEnhet(it.enhetsnummer) }
}

fun opprettOppgave(opprettOppgave: OpprettOppgaveRequest): OppgaveResponse {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import no.nav.familie.ba.sak.config.FeatureToggleConfig
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.integrasjoner.oppgave.domene.DbOppgave
import no.nav.familie.ba.sak.integrasjoner.oppgave.domene.OppgaveRepository
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.TilpassArbeidsfordelingService
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.ArbeidsfordelingPåBehandlingRepository
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.hentArbeidsfordelingPåBehandling
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.tilArbeidsfordelingsenhet
import no.nav.familie.ba.sak.kjerne.behandling.BehandlingHentOgPersisterService
import no.nav.familie.ba.sak.kjerne.behandling.domene.Behandling
import no.nav.familie.ba.sak.kjerne.behandling.domene.BehandlingRepository
Expand Down Expand Up @@ -45,7 +47,7 @@ class OppgaveService(
private val opprettTaskService: OpprettTaskService,
private val loggService: LoggService,
private val behandlingHentOgPersisterService: BehandlingHentOgPersisterService,
private val oppgaveArbeidsfordelingService: OppgaveArbeidsfordelingService,
private val tilpassArbeidsfordelingService: TilpassArbeidsfordelingService,
private val arbeidsfordelingPåBehandlingRepository: ArbeidsfordelingPåBehandlingRepository,
private val unleashService: UnleashService,
) {
Expand Down Expand Up @@ -74,24 +76,19 @@ class OppgaveService(

eksisterendeOppgave.gsakId
} else {
val arbeidsfordelingPåBehandling =
val arbeidsfordelingsenhet =
arbeidsfordelingPåBehandlingRepository
.hentArbeidsfordelingPåBehandling(behandlingId)
.tilArbeidsfordelingsenhet()

val opprettSakPåRiktigEnhetOgSaksbehandlerToggleErPå = unleashService.isEnabled(FeatureToggleConfig.OPPRETT_SAK_PÅ_RIKTIG_ENHET_OG_SAKSBEHANDLER, false)

val oppgaveArbeidsfordeling =
val navIdent = tilordnetNavIdent?.let { NavIdent(it) }
val tilordnetRessurs =
if (opprettSakPåRiktigEnhetOgSaksbehandlerToggleErPå) {
oppgaveArbeidsfordelingService.finnArbeidsfordelingForOppgave(
arbeidsfordelingPåBehandling = arbeidsfordelingPåBehandling,
navIdent = tilordnetNavIdent?.let { NavIdent(it) },
)
tilpassArbeidsfordelingService.bestemTilordnetRessursPåOppgave(arbeidsfordelingsenhet, navIdent)
} else {
OppgaveArbeidsfordeling(
navIdent = tilordnetNavIdent?.let { NavIdent(it) },
enhetsnummer = arbeidsfordelingPåBehandling.behandlendeEnhetId,
enhetsnavn = arbeidsfordelingPåBehandling.behandlendeEnhetNavn,
)
navIdent
}

val opprettOppgave =
Expand All @@ -102,10 +99,10 @@ class OppgaveService(
oppgavetype = oppgavetype,
fristFerdigstillelse = fristForFerdigstillelse,
beskrivelse = lagOppgaveTekst(fagsakId, beskrivelse),
enhetsnummer = oppgaveArbeidsfordeling.enhetsnummer,
enhetsnummer = arbeidsfordelingsenhet.enhetId,
behandlingstema = behandling.tilOppgaveBehandlingTema().value,
behandlingstype = behandling.kategori.tilOppgavebehandlingType().value,
tilordnetRessurs = oppgaveArbeidsfordeling.navIdent?.ident,
tilordnetRessurs = tilordnetRessurs?.ident,
behandlesAvApplikasjon =
when {
oppgavetyperSomBehandlesAvBaSak.contains(oppgavetype) -> "familie-ba-sak"
Expand All @@ -120,20 +117,6 @@ class OppgaveService(

økTellerForAntallOppgaveTyper(oppgavetype)

if (opprettSakPåRiktigEnhetOgSaksbehandlerToggleErPå) {
val erEnhetsnummerEndret = arbeidsfordelingPåBehandling.behandlendeEnhetId != oppgaveArbeidsfordeling.enhetsnummer

if (erEnhetsnummerEndret) {
arbeidsfordelingPåBehandlingRepository.save(
arbeidsfordelingPåBehandling.copy(
behandlendeEnhetId = oppgaveArbeidsfordeling.enhetsnummer,
behandlendeEnhetNavn = oppgaveArbeidsfordeling.enhetsnavn,
manueltOverstyrt = false,
),
)
}
}

opprettetOppgaveId
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,26 @@ package no.nav.familie.ba.sak.kjerne.arbeidsfordeling
import no.nav.familie.ba.sak.common.Feil
import no.nav.familie.ba.sak.common.PdlPersonKanIkkeBehandlesIFagsystem
import no.nav.familie.ba.sak.common.secureLogger
import no.nav.familie.ba.sak.config.FeatureToggleConfig
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.domene.Arbeidsfordelingsenhet
import no.nav.familie.ba.sak.integrasjoner.oppgave.OppgaveService
import no.nav.familie.ba.sak.integrasjoner.pdl.PersonopplysningerService
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.ArbeidsfordelingPåBehandling
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.ArbeidsfordelingPåBehandlingRepository
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.hentArbeidsfordelingPåBehandling
import no.nav.familie.ba.sak.kjerne.arbeidsfordeling.domene.tilArbeidsfordelingsenhet
import no.nav.familie.ba.sak.kjerne.behandling.domene.Behandling
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonopplysningGrunnlagRepository
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.barn
import no.nav.familie.ba.sak.kjerne.logg.LoggService
import no.nav.familie.ba.sak.kjerne.personident.Aktør
import no.nav.familie.ba.sak.kjerne.personident.PersonidentService
import no.nav.familie.ba.sak.sikkerhet.SikkerhetContext
import no.nav.familie.ba.sak.statistikk.saksstatistikk.SaksstatistikkEventPublisher
import no.nav.familie.kontrakter.felles.NavIdent
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING
import no.nav.familie.unleash.UnleashService
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -32,6 +37,8 @@ class ArbeidsfordelingService(
private val integrasjonClient: IntegrasjonClient,
private val personopplysningerService: PersonopplysningerService,
private val saksstatistikkEventPublisher: SaksstatistikkEventPublisher,
private val tilpassArbeidsfordelingService: TilpassArbeidsfordelingService,
private val unleashService: UnleashService,
) {
@Transactional
fun manueltOppdaterBehandlendeEnhet(
Expand Down Expand Up @@ -73,15 +80,7 @@ class ArbeidsfordelingService(
val aktivArbeidsfordelingPåBehandling =
arbeidsfordelingPåBehandlingRepository.finnArbeidsfordelingPåBehandling(behandling.id)

val forrigeArbeidsfordelingsenhet =
if (aktivArbeidsfordelingPåBehandling != null) {
Arbeidsfordelingsenhet(
enhetId = aktivArbeidsfordelingPåBehandling.behandlendeEnhetId,
enhetNavn = aktivArbeidsfordelingPåBehandling.behandlendeEnhetNavn,
)
} else {
null
}
val forrigeArbeidsfordelingsenhet = aktivArbeidsfordelingPåBehandling?.tilArbeidsfordelingsenhet()

val oppdatertArbeidsfordelingPåBehandling =
if (behandling.erSatsendring()) {
Expand All @@ -91,7 +90,13 @@ class ArbeidsfordelingService(
aktivArbeidsfordelingPåBehandling,
)
} else {
val arbeidsfordelingsenhet = hentArbeidsfordelingsenhet(behandling)
val arbeidsfordelingsenhet =
if (unleashService.isEnabled(FeatureToggleConfig.OPPRETT_SAK_PÅ_RIKTIG_ENHET_OG_SAKSBEHANDLER, false)) {
val arbeidsfordelingsenhet = hentArbeidsfordelingsenhet(behandling)
tilpassArbeidsfordelingService.tilpassArbeidsfordelingsenhetTilSaksbehandler(arbeidsfordelingsenhet, NavIdent(SikkerhetContext.hentSaksbehandler()))
} else {
hentArbeidsfordelingsenhet(behandling)
}

when (aktivArbeidsfordelingPåBehandling) {
null -> {
Expand Down
Loading

0 comments on commit 171f085

Please sign in to comment.