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

EY-4598 avbrudd skal sende melding til statistikk #6603

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
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 @@ -25,6 +25,7 @@ import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak
import no.nav.etterlatte.libs.common.behandling.TidligereFamiliepleier
import no.nav.etterlatte.libs.common.behandling.Utlandstilknytning
import no.nav.etterlatte.libs.common.behandling.Virkningstidspunkt
import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException
import no.nav.etterlatte.libs.common.feilhaandtering.checkInternFeil
import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning
import no.nav.etterlatte.libs.common.gyldigSoeknad.GyldighetsResultat
Expand Down Expand Up @@ -290,10 +291,16 @@ class BehandlingDao(
}

fun lagreStatus(lagretBehandling: Behandling) {
if (lagretBehandling.status == BehandlingStatus.AVBRUTT) {
throw InternfeilException(
"Behandlinger skal ikke avbrytes med status direkte, siden vi da mangler " +
oyvindsh marked this conversation as resolved.
Show resolved Hide resolved
"utsending av statistikkmelding og lagring av behandlingshendelse.",
)
}
lagreStatus(lagretBehandling.id, lagretBehandling.status, lagretBehandling.sistEndret)
}

fun lagreStatus(
private fun lagreStatus(
behandlingId: UUID,
status: BehandlingStatus,
sistEndret: LocalDateTime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,17 @@ class BehandlingFactory(
): BehandlingOgOppgave {
logger.info("Starter behandling i sak $sakId")
val prosessType = Prosesstype.MANUELL
val harBehandlingUnderbehandling =
oyvindsh marked this conversation as resolved.
Show resolved Hide resolved
request.alleBehandlingerISak.filter { behandling ->
BehandlingStatus.underBehandling().find { it == behandling.status } != null
}
if (harBehandlingUnderbehandling.isNotEmpty()) {
throw UgyldigForespoerselException(
"HAR_AAPEN_BEHANDLING",
"Sak $sakId har allerede en åpen " +
"behandling. Denne må avbrytes eller ferdigbehandles før ny behandling kan opprettes.",
)
}
return if (request.harIverksattBehandling()) {
if (kilde == Vedtaksloesning.PESYS || kilde == Vedtaksloesning.GJENOPPRETTA) {
throw ManuellMigreringHarEksisterendeIverksattBehandling()
Expand All @@ -210,10 +221,6 @@ class BehandlingFactory(
).oppdater()
.let { BehandlingOgOppgave(it, null) }
} else {
val harBehandlingUnderbehandling =
request.alleBehandlingerISak.filter { behandling ->
BehandlingStatus.underBehandling().find { it == behandling.status } != null
}
val behandling =
opprettFoerstegangsbehandling(
harBehandlingUnderbehandling,
Expand Down Expand Up @@ -452,9 +459,11 @@ class BehandlingFactory(
kilde: Vedtaksloesning,
prosessType: Prosesstype,
): Behandling {
behandlingerUnderBehandling.forEach {
behandlingDao.lagreStatus(it.id, BehandlingStatus.AVBRUTT, LocalDateTime.now())
oppgaveService.avbrytAapneOppgaverMedReferanse(it.id.toString())
if (behandlingerUnderBehandling.isNotEmpty()) {
throw InternfeilException(
"Det skal ikke være mulig å komme til opprettelse av førstegangsbehandling med " +
"åpne behandlinger i saken.",
)
}

return OpprettBehandling(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,13 @@ import no.nav.etterlatte.libs.common.oppgave.OppgaveType
import no.nav.etterlatte.libs.common.oppgave.VedtakEndringDTO
import no.nav.etterlatte.libs.common.sak.SakIDListe
import no.nav.etterlatte.libs.common.sak.SakslisteDTO
import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt
import no.nav.etterlatte.libs.common.tidspunkt.toLocalDatetimeUTC
import no.nav.etterlatte.libs.common.vedtak.VedtakType
import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo
import no.nav.etterlatte.libs.ktor.token.Saksbehandler
import no.nav.etterlatte.libs.ktor.token.Systembruker
import no.nav.etterlatte.oppgave.OppgaveService
import no.nav.etterlatte.vedtaksvurdering.VedtakHendelse
import org.slf4j.LoggerFactory
import java.time.LocalDateTime
import java.util.UUID

interface BehandlingStatusService {
Expand Down Expand Up @@ -121,7 +118,7 @@ class BehandlingStatusServiceImpl(
val behandling = hentBehandling(behandlingId).tilOpprettet()

if (!dryRun) {
behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret)
behandlingDao.lagreStatus(behandling)
behandlingService.registrerBehandlingHendelse(behandling, brukerTokenInfo.ident())
}
}
Expand All @@ -134,7 +131,7 @@ class BehandlingStatusServiceImpl(
val behandling = hentBehandling(behandlingId).tilVilkaarsvurdert()

if (!dryRun) {
behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret)
behandlingDao.lagreStatus(behandling)
behandlingService.registrerBehandlingHendelse(behandling, brukerTokenInfo.ident())
}
}
Expand Down Expand Up @@ -263,7 +260,7 @@ class BehandlingStatusServiceImpl(
vedtakHendelse: VedtakHendelse,
) {
val behandling = hentBehandling(behandlingId)
lagreNyBehandlingStatus(behandling.tilTilSamordning(), Tidspunkt.now().toLocalDatetimeUTC())
lagreNyBehandlingStatus(behandling.tilTilSamordning())
registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.TIL_SAMORDNING)
}

Expand All @@ -272,7 +269,7 @@ class BehandlingStatusServiceImpl(
vedtakHendelse: VedtakHendelse,
) {
val behandling = hentBehandling(behandlingId)
lagreNyBehandlingStatus(behandling.tilSamordnet(), Tidspunkt.now().toLocalDatetimeUTC())
lagreNyBehandlingStatus(behandling.tilSamordnet())
registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.SAMORDNET)
}

Expand All @@ -281,7 +278,7 @@ class BehandlingStatusServiceImpl(
vedtakHendelse: VedtakHendelse,
) {
val behandling = hentBehandling(behandlingId)
lagreNyBehandlingStatus(behandling.tilIverksatt(), Tidspunkt.now().toLocalDatetimeUTC())
lagreNyBehandlingStatus(behandling.tilIverksatt())
registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.IVERKSATT)
haandterUtland(behandling)
haandterFeilutbetaling(behandling)
Expand Down Expand Up @@ -383,13 +380,7 @@ class BehandlingStatusServiceImpl(
behandlingService.registrerBehandlingHendelse(this, saksbehandler)
}

private fun lagreNyBehandlingStatus(
behandling: Behandling,
sistEndret: LocalDateTime,
) = behandlingDao.lagreStatus(behandling.id, behandling.status, sistEndret)

private fun lagreNyBehandlingStatus(behandling: Behandling) =
behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret)
private fun lagreNyBehandlingStatus(behandling: Behandling) = behandlingDao.lagreStatus(behandling)

private fun hentBehandling(behandlingId: UUID): Behandling =
behandlingService.hentBehandling(behandlingId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ internal class BehandlingDaoTest(
assertEquals(false, behandling.first().status == BehandlingStatus.AVBRUTT)

val avbruttbehandling = (behandling.first() as Foerstegangsbehandling).copy(status = BehandlingStatus.AVBRUTT)
behandlingRepo.lagreStatus(avbruttbehandling)
behandlingRepo.avbrytBehandling(avbruttbehandling.id, null, null)
behandling = behandlingRepo.hentBehandlingerForSak(sak1)
assertEquals(1, behandling.size)
assertEquals(true, behandling.first().status == BehandlingStatus.AVBRUTT)
Expand Down Expand Up @@ -608,7 +608,7 @@ internal class BehandlingDaoTest(
behandlingRepo.lagreNyttVirkningstidspunkt(it.id, it.virkningstidspunkt!!)
behandlingRepo.lagreGyldighetsproeving(it.id, it.gyldighetsproeving())
kommerBarnetTilGodeDao.lagreKommerBarnetTilGode(it.kommerBarnetTilgode!!)
behandlingRepo.lagreStatus(it.id, it.status, it.sistEndret)
behandlingRepo.lagreStatus(it)
}

with(behandlingRepo.hentBehandling(foerstegangsbehandling.id) as Foerstegangsbehandling) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import no.nav.etterlatte.libs.common.behandling.Prosesstype
import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak
import no.nav.etterlatte.libs.common.behandling.SakType
import no.nav.etterlatte.libs.common.behandling.Virkningstidspunkt
import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException
import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning
import no.nav.etterlatte.libs.common.oppgave.OppgaveIntern
import no.nav.etterlatte.libs.common.oppgave.OppgaveKilde
Expand Down Expand Up @@ -203,7 +204,7 @@ internal class BehandlingFactoryTest {
every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit
every { behandlingDaoMock.lagreGyldighetsproeving(any(), any()) } returns Unit
every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList()
every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit
every { behandlingDaoMock.lagreStatus(any()) } returns Unit
every {
behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(
any(),
Expand Down Expand Up @@ -391,7 +392,7 @@ internal class BehandlingFactoryTest {
every {
behandlingDaoMock.hentBehandlingerForSak(any())
} returns emptyList()
every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit
every { behandlingDaoMock.lagreStatus(any()) } returns Unit
every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit
every {
behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(
Expand Down Expand Up @@ -423,24 +424,24 @@ internal class BehandlingFactoryTest {
behandlingDaoMock.hentBehandlingerForSak(any())
} returns listOf(underArbeidBehandling)

val nyfoerstegangsbehandling =
assertThrows<UgyldigForespoerselException> {
behandlingFactory
.opprettBehandling(
sakId1,
persongalleri,
datoNaa.toString(),
Vedtaksloesning.GJENNY,
behandlingFactory.hentDataForOpprettBehandling(sakId1),
)?.also { it.sendMeldingForHendelse() }
?.behandling
Assertions.assertTrue(nyfoerstegangsbehandling is Foerstegangsbehandling)

)
}
verify(exactly = 2) {
sakServiceMock.finnSak(any())
behandlingDaoMock.hentBehandling(any())
behandlingDaoMock.hentBehandlingerForSak(any())
}
verify(exactly = 1) {
behandlingDaoMock.opprettBehandling(any())
behandlingDaoMock.hentBehandling(any())
hendelseDaoMock.behandlingOpprettet(any())
behandlingDaoMock.hentBehandlingerForSak(any())
behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(any(), any())
}
coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) }
Expand All @@ -453,16 +454,6 @@ internal class BehandlingFactoryTest {
merknad = null,
gruppeId = persongalleri.avdoed.single(),
)
oppgaveService.opprettOppgave(
referanse = nyfoerstegangsbehandling!!.id.toString(),
sakId = sakId1,
kilde = OppgaveKilde.BEHANDLING,
type = OppgaveType.FOERSTEGANGSBEHANDLING,
merknad = null,
gruppeId = persongalleri.avdoed.single(),
)
behandlingDaoMock.lagreStatus(any(), BehandlingStatus.AVBRUTT, any())
oppgaveService.avbrytAapneOppgaverMedReferanse(nyfoerstegangsbehandling!!.id.toString())
}
}

Expand Down Expand Up @@ -774,7 +765,7 @@ internal class BehandlingFactoryTest {
every {
behandlingDaoMock.hentBehandlingerForSak(any())
} returns emptyList()
every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit
every { behandlingDaoMock.lagreStatus(any()) } returns Unit
every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit
every {
behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(
Expand Down Expand Up @@ -944,7 +935,7 @@ internal class BehandlingFactoryTest {
every {
behandlingDaoMock.hentBehandlingerForSak(any())
} returns emptyList()
every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit
every { behandlingDaoMock.lagreStatus(any()) } returns Unit
every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit
every {
behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1009,7 +1009,7 @@ internal class BehandlingServiceImplTest {
coEvery { grunnlagKlientMock.hentPersongalleri(behandling.id, TOKEN) } returns mockPersongalleri()
coEvery { grunnlagServiceMock.leggTilNyeOpplysninger(behandling.id, any(), any()) } just runs
coEvery { grunnlagServiceMock.oppdaterGrunnlag(behandling.id, behandling.sak.id, any()) } just runs
every { behandlingDaoMock.lagreStatus(any(), any(), any()) } just runs
every { behandlingDaoMock.lagreStatus(any()) } just runs
every { behandlingDaoMock.lagreStatus(any()) } just runs

val annenForelderInRequest =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class BehandlingStatusServiceImplTest {
vedtakType = VedtakType.ENDRING,
)

every { behandlingDao.lagreStatus(any(), any(), any()) } just runs
every { behandlingDao.lagreStatus(any()) } just runs
every { behandlingService.registrerVedtakHendelse(any(), any(), any()) } just runs
every { oppgaveService.tilUnderkjent(any(), any(), any()) } returns mockk()
every { behandlingService.endreProsesstype(any(), any()) } just runs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.FATTET_VEDTAK, any())
behandlingdao.lagreStatus(any())
behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.FATTET)
oppgaveService.tilAttestering(
behandlingId.toString(),
Expand All @@ -166,7 +166,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any())
behandlingdao.lagreStatus(any())
behandlingService.hentBehandling(behandlingId)
behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT)
behandlingInfoDao.hentBrevutfall(behandlingId)
Expand All @@ -190,7 +190,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.RETURNERT, any())
behandlingdao.lagreStatus(any())
behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.UNDERKJENT)
oppgaveService.tilUnderkjent(behandlingId.toString(), OppgaveType.FOERSTEGANGSBEHANDLING, any())
}
Expand Down Expand Up @@ -231,7 +231,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any())
behandlingdao.lagreStatus(any())
behandlingService.hentBehandling(behandlingId)
behandlingService.registrerVedtakHendelse(behandlingId, iverksattVedtak, HendelseType.IVERKSATT)
generellBehandlingService.opprettBehandling(any(), any())
Expand Down Expand Up @@ -276,7 +276,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.AVSLAG, any())
behandlingdao.lagreStatus(any())
behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.ATTESTERT)
generellBehandlingService.opprettBehandling(any(), any())
oppgaveService.ferdigStillOppgaveUnderBehandling(
Expand Down Expand Up @@ -318,7 +318,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.ATTESTERT, any())
behandlingdao.lagreStatus(any())
behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.ATTESTERT)
oppgaveService.ferdigStillOppgaveUnderBehandling(
behandlingId.toString(),
Expand Down Expand Up @@ -358,7 +358,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any())
behandlingdao.lagreStatus(any())
behandlingService.hentBehandling(behandlingId)
behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT)
behandlingInfoDao.hentBrevutfall(behandlingId)
Expand Down Expand Up @@ -401,7 +401,7 @@ internal class BehandlingStatusServiceTest {
}

verify {
behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any())
behandlingdao.lagreStatus(any())
behandlingService.hentBehandling(behandlingId)
behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT)
behandlingInfoDao.hentBrevutfall(behandlingId)
Expand Down
Loading
Loading