diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt index 060cad049db..242484a9b62 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt @@ -244,6 +244,7 @@ class BehandlingFactory( Vedtaksloesning.GJENOPPRETTA -> "Manuell gjenopprettelse av opphørt sak i Pesys" else -> opprettMerknad(request.sak, persongalleri) }, + gruppeId = persongalleri.avdoed.firstOrNull(), ) return BehandlingOgOppgave(behandling, oppgave) { behandlingHendelser.sendMeldingForHendelseStatisitkk( @@ -325,6 +326,7 @@ class BehandlingFactory( sakId = nyFoerstegangsbehandling.sak.id, oppgaveKilde = OppgaveKilde.BEHANDLING, merknad = "Omgjøring av førstegangsbehandling", + gruppeId = null, ) oppgaveService.tildelSaksbehandler(oppgave.id, saksbehandler.ident) @@ -363,7 +365,8 @@ class BehandlingFactory( referanse: String, sakId: SakId, oppgaveKilde: OppgaveKilde = OppgaveKilde.BEHANDLING, - merknad: String? = null, + merknad: String?, + gruppeId: String?, ): OppgaveIntern { oppgaveService.avbrytAapneOppgaverMedReferanse(referanse) @@ -373,6 +376,7 @@ class BehandlingFactory( kilde = oppgaveKilde, type = OppgaveType.FOERSTEGANGSBEHANDLING, merknad = merknad, + gruppeId = gruppeId, ) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt index fc4c11003cc..35583d424aa 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt @@ -252,6 +252,7 @@ class RevurderingService( type = OppgaveType.REVURDERING, merknad = begrunnelse, frist = frist, + gruppeId = persongalleri.avdoed.firstOrNull(), ) if (saksbehandlerIdent != null && (prosessType == Prosesstype.MANUELL && saksbehandlerIdent != Fagsaksystem.EY.navn) || diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt index 77b91c97f3a..195f78bb30a 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt @@ -13,6 +13,7 @@ import no.nav.etterlatte.libs.common.oppgave.OppgavebenkStats import no.nav.etterlatte.libs.common.oppgave.Status import no.nav.etterlatte.libs.common.oppgave.VentefristGaarUt import no.nav.etterlatte.libs.common.person.AdressebeskyttelseGradering +import no.nav.etterlatte.libs.common.person.maskerFnr import no.nav.etterlatte.libs.common.sak.SakId import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import no.nav.etterlatte.libs.common.tidspunkt.getTidspunkt @@ -38,6 +39,8 @@ interface OppgaveDao { fun hentOppgaverForReferanse(referanse: String): List + fun hentOppgaverForGruppeId(gruppeId: String): List + fun oppgaveMedTypeFinnes( sakId: SakId, type: OppgaveType, @@ -138,8 +141,8 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - INSERT INTO oppgave(id, status, enhet, sak_id, type, saksbehandler, referanse, merknad, opprettet, saktype, fnr, frist, kilde) - VALUES(?::UUID, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + INSERT INTO oppgave(id, status, enhet, sak_id, type, saksbehandler, referanse, gruppe_id, merknad, opprettet, saktype, fnr, frist, kilde) + VALUES(?::UUID, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """.trimIndent(), ) statement.setObject(1, oppgaveIntern.id) @@ -149,12 +152,13 @@ class OppgaveDaoImpl( statement.setString(5, oppgaveIntern.type.name) statement.setString(6, oppgaveIntern.saksbehandler?.ident) statement.setString(7, oppgaveIntern.referanse) - statement.setString(8, oppgaveIntern.merknad) - statement.setTidspunkt(9, oppgaveIntern.opprettet) - statement.setString(10, oppgaveIntern.sakType.name) - statement.setString(11, oppgaveIntern.fnr) - statement.setTidspunkt(12, oppgaveIntern.frist) - statement.setString(13, oppgaveIntern.kilde?.name) + statement.setString(8, oppgaveIntern.gruppeId) + statement.setString(9, oppgaveIntern.merknad) + statement.setTidspunkt(10, oppgaveIntern.opprettet) + statement.setString(11, oppgaveIntern.sakType.name) + statement.setString(12, oppgaveIntern.fnr) + statement.setTidspunkt(13, oppgaveIntern.frist) + statement.setString(14, oppgaveIntern.kilde?.name) statement.executeUpdate() logger.info("lagret oppgave for ${oppgaveIntern.id} for sakid ${oppgaveIntern.sakId}") } @@ -167,7 +171,7 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - INSERT INTO oppgave(id, status, enhet, sak_id, type, saksbehandler, referanse, merknad, opprettet, saktype, fnr, frist, kilde) + INSERT INTO oppgave(id, status, enhet, sak_id, type, saksbehandler, referanse, gruppe_id, merknad, opprettet, saktype, fnr, frist, kilde) VALUES(?::UUID, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """.trimIndent(), ) @@ -180,12 +184,13 @@ class OppgaveDaoImpl( statement.setString(5, oppgaveIntern.type.name) statement.setString(6, oppgaveIntern.saksbehandler?.ident) statement.setString(7, oppgaveIntern.referanse) - statement.setString(8, oppgaveIntern.merknad) - statement.setTidspunkt(9, oppgaveIntern.opprettet) - statement.setString(10, oppgaveIntern.sakType.name) - statement.setString(11, oppgaveIntern.fnr) - statement.setTidspunkt(12, oppgaveIntern.frist) - statement.setString(13, oppgaveIntern.kilde?.name) + statement.setString(8, oppgaveIntern.gruppeId) + statement.setString(9, oppgaveIntern.merknad) + statement.setTidspunkt(10, oppgaveIntern.opprettet) + statement.setString(11, oppgaveIntern.sakType.name) + statement.setString(12, oppgaveIntern.fnr) + statement.setTidspunkt(13, oppgaveIntern.frist) + statement.setString(14, oppgaveIntern.kilde?.name) statement.addBatch() } @@ -201,8 +206,10 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE o.id = ?::UUID """.trimIndent(), ) @@ -219,8 +226,10 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE o.referanse = ? """.trimIndent(), ) @@ -235,6 +244,33 @@ class OppgaveDaoImpl( } } + override fun hentOppgaverForGruppeId(gruppeId: String): List = + connectionAutoclosing.hentConnection { + with(it) { + val statement = + prepareStatement( + """ + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + WHERE o.gruppe_id = ? + AND o.status = ANY(?) + """.trimIndent(), + ) + statement.setString(1, gruppeId) + statement.setArray(2, createArrayOf("text", Status.entries.map(Status::name).toTypedArray())) + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaver -> + // Bruker [String.maskerFnr] i tilfelle det grupperes på et fnr. + logger.info("Hentet ${oppgaver.size} oppgave(r) for gruppeId: ${gruppeId.maskerFnr()}") + } + } + } + override fun oppgaveMedTypeFinnes( sakId: SakId, type: OppgaveType, @@ -270,8 +306,10 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE o.sak_id = ? and o.type = ANY(?) """.trimIndent(), ) @@ -297,8 +335,11 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o INNER JOIN sak s ON o.sak_id = s.id LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + INNER JOIN sak s ON o.sak_id = s.id + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE (? OR o.status = ANY(?)) AND o.enhet = ANY(?) AND ( @@ -336,8 +377,11 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o INNER JOIN sak s ON o.sak_id = s.id LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + INNER JOIN sak s ON o.sak_id = s.id + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE (? OR o.status = ANY(?)) AND o.sak_id = ANY(?) """.trimIndent(), @@ -375,7 +419,10 @@ class OppgaveDaoImpl( statement .executeQuery() .singleOrNull { - OppgavebenkStats(getLong("antallOppgavelistaOppgaver"), getLong("antallMinOppgavelisteOppgaver")) + OppgavebenkStats( + getLong("antallOppgavelistaOppgaver"), + getLong("antallMinOppgavelisteOppgaver"), + ) }!! .also { logger.info("Henter antall oppgaver") @@ -389,8 +436,11 @@ class OppgaveDaoImpl( val statement = prepareStatement( """ - SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn - FROM oppgave o INNER JOIN sak s ON o.sak_id = s.id LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id + SELECT o.id, o.status, o.enhet, o.sak_id, o.type, o.saksbehandler, o.referanse, o.gruppe_id, + o.merknad, o.opprettet, o.saktype, o.fnr, o.frist, o.kilde, o.forrige_saksbehandler, si.navn + FROM oppgave o + INNER JOIN sak s ON o.sak_id = s.id + LEFT JOIN saksbehandler_info si ON o.saksbehandler = si.id WHERE ((s.adressebeskyttelse = ?) OR (s.adressebeskyttelse = ?)) """.trimIndent(), ) @@ -719,6 +769,7 @@ class OppgaveDaoImpl( kilde = getString("kilde")?.let { OppgaveKilde.valueOf(it) }, type = OppgaveType.valueOf(getString("type")), referanse = getString("referanse"), + gruppeId = getString("gruppe_id"), merknad = getString("merknad"), opprettet = getTidspunkt("opprettet"), sakType = SakType.valueOf(getString("saktype")), diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt index 04347da0c4d..b7f0ee8e55b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt @@ -112,6 +112,8 @@ class OppgaveDaoMedEndringssporingImpl( override fun hentOppgaverForReferanse(referanse: String): List = oppgaveDao.hentOppgaverForReferanse(referanse) + override fun hentOppgaverForGruppeId(gruppeId: String): List = oppgaveDao.hentOppgaverForGruppeId(gruppeId) + override fun oppgaveMedTypeFinnes( sakId: SakId, type: OppgaveType, diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt index 793dd108a6d..47828e4accf 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt @@ -597,6 +597,7 @@ class OppgaveService( merknad: String?, frist: Tidspunkt? = null, saksbehandler: String? = null, + gruppeId: String? = null, ): OppgaveIntern { val sak = sakDao.hentSak(sakId)!! @@ -608,6 +609,7 @@ class OppgaveService( type = type, merknad = merknad, frist = frist, + gruppeId = gruppeId, ) oppgaveDao.opprettOppgave(oppgave) diff --git a/apps/etterlatte-behandling/src/main/resources/db/migration/V198__oppgave_gruppe_id.sql b/apps/etterlatte-behandling/src/main/resources/db/migration/V198__oppgave_gruppe_id.sql new file mode 100644 index 00000000000..9a098d08824 --- /dev/null +++ b/apps/etterlatte-behandling/src/main/resources/db/migration/V198__oppgave_gruppe_id.sql @@ -0,0 +1 @@ +ALTER TABLE oppgave ADD COLUMN gruppe_id TEXT; diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt index 3be4121f23e..73c08cb12a6 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt @@ -74,7 +74,7 @@ import java.time.LocalDateTime import java.time.YearMonth import java.util.UUID -class BehandlingFactoryTest { +internal class BehandlingFactoryTest { private val user = mockk() private val behandlingDaoMock = mockk(relaxUnitFun = true) private val hendelseDaoMock = mockk(relaxUnitFun = true) @@ -211,9 +211,7 @@ class BehandlingFactoryTest { ) } returns Unit coEvery { grunnlagService.leggInnNyttGrunnlag(any(), any()) } returns Unit - every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - } returns mockOppgave + every { oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave val resultat = behandlingFactory @@ -243,8 +241,14 @@ class BehandlingFactoryTest { any(), BehandlingHendelseType.OPPRETTET, ) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave( + referanse = resultat.id.toString(), + sakId = sakId1, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = any(), + gruppeId = "Avdoed", + ) } coVerify(exactly = 1) { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } } @@ -304,9 +308,7 @@ class BehandlingFactoryTest { ) } returns Unit coEvery { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } returns Unit - every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - } returns mockOppgave + every { oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave val foerstegangsbehandling = behandlingFactory @@ -328,8 +330,14 @@ class BehandlingFactoryTest { hendelseDaoMock.behandlingOpprettet(any()) behandlingDaoMock.hentBehandlingerForSak(any()) behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave( + referanse = foerstegangsbehandling.id.toString(), + sakId = sakId1, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = any(), + gruppeId = persongalleri.avdoed.single(), + ) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } } @@ -392,9 +400,7 @@ class BehandlingFactoryTest { ) } returns Unit coEvery { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } returns Unit - every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - } returns mockOppgave + every { oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave every { oppgaveService.avbrytAapneOppgaverMedReferanse(any()) } just runs @@ -436,11 +442,25 @@ class BehandlingFactoryTest { hendelseDaoMock.behandlingOpprettet(any()) behandlingDaoMock.hentBehandlingerForSak(any()) behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } verify { + oppgaveService.opprettOppgave( + referanse = foerstegangsbehandling.id.toString(), + sakId = sakId1, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + 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()) } @@ -591,6 +611,7 @@ class BehandlingFactoryTest { saksbehandler = null, forrigeSaksbehandlerIdent = null, referanse = "", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, @@ -670,6 +691,7 @@ class BehandlingFactoryTest { saksbehandler = null, forrigeSaksbehandlerIdent = null, referanse = "", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, @@ -765,7 +787,7 @@ class BehandlingFactoryTest { oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) } returns mockOppgave every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave every { oppgaveService.tildelSaksbehandler(any(), any()) @@ -840,16 +862,26 @@ class BehandlingFactoryTest { datoNaa.toString(), Vedtaksloesning.GJENNY, behandlingFactory.hentDataForOpprettBehandling(sakId1), - )?.also { it.sendMeldingForHendelse() } - ?.behandling + ).also { it.sendMeldingForHendelse() } + .behandling + Assertions.assertTrue(revurderingsBehandling is Revurdering) verify { oppgaveService.opprettOppgave( - revurderingsBehandling!!.id.toString(), - sakId1, - OppgaveKilde.BEHANDLING, - OppgaveType.FOERSTEGANGSBEHANDLING, - any(), + referanse = foerstegangsbehandling.id.toString(), + sakId = sakId1, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = any(), + gruppeId = persongalleri.avdoed.single(), + ) + oppgaveService.opprettOppgave( + referanse = revurderingsBehandling.id.toString(), + sakId = sakId1, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = any(), + gruppeId = persongalleri.avdoed.single(), ) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } @@ -922,10 +954,10 @@ class BehandlingFactoryTest { } returns Unit coEvery { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } returns Unit every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave every { oppgaveService.oppdaterStatusOgMerknad(any(), any(), any()) @@ -1004,8 +1036,22 @@ class BehandlingFactoryTest { .behandling Assertions.assertTrue(revurderingsBehandling is Revurdering) verify { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave( + referanse = any(), + sakId = any(), + kilde = any(), + type = any(), + merknad = any(), + gruppeId = persongalleri.avdoed.single(), + ) + oppgaveService.opprettOppgave( + referanse = any(), + sakId = any(), + kilde = any(), + type = any(), + merknad = any(), + gruppeId = persongalleri.avdoed.single(), + ) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } verify(exactly = 2) { @@ -1068,9 +1114,7 @@ class BehandlingFactoryTest { every { behandlingDaoMock.opprettBehandling(capture(behandlingOpprettes)) } just Runs every { behandlingDaoMock.hentBehandling(capture(behandlingHentes)) } returns opprettetBehandling every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList() - every { - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - } returns mockOppgave + every { oppgaveService.opprettOppgave(any(), any(), any(), any(), any(), gruppeId = any()) } returns mockOppgave coEvery { pdlTjenesterKlientMock.hentAdressebeskyttelseForPerson(any()) } returns AdressebeskyttelseGradering.UGRADERT @@ -1108,8 +1152,14 @@ class BehandlingFactoryTest { any(), BehandlingHendelseType.OPPRETTET, ) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) - oppgaveService.opprettOppgave(any(), any(), any(), any(), any()) + oppgaveService.opprettOppgave( + referanse = opprettetBehandling.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = any(), + gruppeId = persongalleri.avdoed.single(), + ) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt index bd9f3066a0f..251c9828f31 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt @@ -424,6 +424,7 @@ internal class BehandlingStatusServiceTest { type = OppgaveType.TILBAKEKREVING, saksbehandler = null, referanse = sakId.toString(), + gruppeId = null, merknad = "merknad", opprettet = Tidspunkt.now(), sakType = SakType.BARNEPENSJON, diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktServiceTest.kt index 28eed414bbc..f44309d93fa 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktServiceTest.kt @@ -243,6 +243,7 @@ class AktivitetspliktServiceTest { kilde = OppgaveKilde.BEHANDLING, type = OppgaveType.AKTIVITETSPLIKT, referanse = UUID.randomUUID().toString(), + gruppeId = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, frist = null, @@ -306,6 +307,7 @@ class AktivitetspliktServiceTest { kilde = OppgaveKilde.BEHANDLING, type = OppgaveType.AKTIVITETSPLIKT, referanse = UUID.randomUUID().toString(), + gruppeId = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, frist = null, @@ -1157,6 +1159,7 @@ fun lagNyOppgave( sakId = sak.id, kilde = oppgaveKilde, referanse = "referanse", + gruppeId = null, merknad = "merknad", opprettet = Tidspunkt.now(), sakType = sak.sakType, diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt index c1c94d25a3c..ce7159744a3 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt @@ -196,6 +196,7 @@ class AktivitetspliktAktivitetsgradDaoTest( saksbehandler = null, forrigeSaksbehandlerIdent = null, referanse = behandling.id.toString(), + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt index af45a4891cc..f7faf57a921 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt @@ -177,6 +177,7 @@ class AktivitetspliktUnntakDaoTest( saksbehandler = null, forrigeSaksbehandlerIdent = null, referanse = "", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.OMSTILLINGSSTOENAD, diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt index 04afeaec76b..09e1238382e 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt @@ -156,11 +156,12 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } verify { oppgaveService.opprettOppgave( - revurdering.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.REVURDERING, - null, + referanse = revurdering.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.REVURDERING, + merknad = null, + gruppeId = "avdoed", ) oppgaveService.tildelSaksbehandler(any(), "saksbehandler") oppgaveService.hentOppgaverForSak(sak.id) @@ -267,11 +268,12 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { oppgaveService.hentOppgaverForSak(sak.id) oppgaveService.hentOppgave(any()) oppgaveService.opprettOppgave( - revurdering.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.REVURDERING, - null, + referanse = revurdering.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.REVURDERING, + merknad = null, + gruppeId = "avdoed", ) oppgaveService.tildelSaksbehandler(any(), "saksbehandler") } @@ -389,28 +391,29 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { oppgaveService.hentOppgave(any()) hendelser.sendMeldingForHendelseStatisitkk(any(), BehandlingHendelseType.OPPRETTET) oppgaveService.opprettOppgave( - behandling.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.FOERSTEGANGSBEHANDLING, - "2 søsken", - null, - null, + referanse = behandling.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.FOERSTEGANGSBEHANDLING, + merknad = "2 søsken", + gruppeId = "Avdoed", ) oppgaveService.tildelSaksbehandler(any(), saksbehandler.ident) oppgaveService.opprettOppgave( - revurdering.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.REVURDERING, - null, + referanse = revurdering.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.REVURDERING, + merknad = null, + gruppeId = "avdoed", ) oppgaveService.opprettOppgave( - revurdering.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.REVURDERING, - null, + referanse = revurdering.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.REVURDERING, + merknad = null, + gruppeId = "avdoed", ) oppgaveService.ferdigStillOppgaveUnderBehandling(any(), any(), any()) hendelser.sendMeldingForHendelseStatisitkk( @@ -479,11 +482,12 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } verify { oppgaveService.opprettOppgave( - revurdering.id.toString(), - sak.id, - OppgaveKilde.BEHANDLING, - OppgaveType.REVURDERING, - null, + referanse = revurdering.id.toString(), + sakId = sak.id, + kilde = OppgaveKilde.BEHANDLING, + type = OppgaveType.REVURDERING, + merknad = null, + gruppeId = "avdoed", ) oppgaveService.tildelSaksbehandler(any(), "saksbehandler") oppgaveService.hentOppgaverForSak(sak.id) diff --git a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt index 0c4a9d4d9dd..4238e276e58 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt @@ -148,6 +148,7 @@ internal class BehandlingMetricsOppgaveTest( sakId = sak.id, kilde = OppgaveKilde.BEHANDLING, referanse = "referanse", + gruppeId = null, merknad = "merknad", opprettet = Tidspunkt.now(), sakType = sak.sakType, diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt index 1ce03a8f5b9..2be2356bb79 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt @@ -115,6 +115,7 @@ internal class OppgaveDaoReguleringTest( type = OppgaveType.REVURDERING, saksbehandler = OppgaveSaksbehandler(saksbehandler), referanse = "", + gruppeId = null, merknad = "", opprettet = Tidspunkt.now(), sakType = SakType.BARNEPENSJON, diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt index 29c88efb893..0dc48838d52 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt @@ -329,12 +329,34 @@ internal class OppgaveDaoTest( val oppgaveFinnesIkke = oppgaveDao.oppgaveMedTypeFinnes(sakAalesund.id, OppgaveType.MANGLER_SOEKNAD) assertEquals(true, oppgaveFinnesIkke) } + + @Test + fun `GruppeId fungerer som forventet`() { + val sak = sakSkrivDao.opprettSak("ident", SakType.OMSTILLINGSSTOENAD, Enheter.defaultEnhet.enhetNr) + + repeat(10) { + oppgaveDao.opprettOppgave(lagNyOppgave(sak, gruppeId = null)) + } + + val gruppeId = UUID.randomUUID().toString() + + repeat(3) { + oppgaveDao.opprettOppgave(lagNyOppgave(sak, gruppeId = gruppeId)) + } + + val oppgaver = oppgaveDao.hentOppgaverForSakMedType(sak.id, OppgaveType.entries) + assertEquals(13, oppgaver.size) + + val oppgaverGruppert = oppgaveDao.hentOppgaverForGruppeId(gruppeId) + assertEquals(3, oppgaverGruppert.size) + } } fun lagNyOppgave( sak: Sak, oppgaveKilde: OppgaveKilde = OppgaveKilde.BEHANDLING, oppgaveType: OppgaveType = OppgaveType.FOERSTEGANGSBEHANDLING, + gruppeId: String? = null, ) = OppgaveIntern( id = UUID.randomUUID(), status = Status.NY, @@ -342,6 +364,7 @@ fun lagNyOppgave( sakId = sak.id, kilde = oppgaveKilde, referanse = "referanse", + gruppeId = gruppeId, merknad = "merknad", opprettet = Tidspunkt.now(), sakType = sak.sakType, diff --git a/apps/etterlatte-behandling/src/test/kotlin/sak/SakRoutesTest.kt b/apps/etterlatte-behandling/src/test/kotlin/sak/SakRoutesTest.kt index 9dc28cf1eb3..c85a51fbdae 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/sak/SakRoutesTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/sak/SakRoutesTest.kt @@ -101,6 +101,7 @@ internal class SakRoutesTest { type = OppgaveType.FOERSTEGANGSBEHANDLING, saksbehandler = OppgaveSaksbehandler("Rask Spaghetti"), referanse = "hmm", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.BARNEPENSJON, @@ -116,6 +117,7 @@ internal class SakRoutesTest { type = OppgaveType.KLAGE, saksbehandler = null, referanse = "hmm", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.BARNEPENSJON, @@ -131,6 +133,7 @@ internal class SakRoutesTest { type = OppgaveType.KLAGE, saksbehandler = OppgaveSaksbehandler("Rask Spaghetti"), referanse = "hmm", + gruppeId = null, merknad = null, opprettet = Tidspunkt.now(), sakType = SakType.BARNEPENSJON, diff --git a/apps/etterlatte-saksbehandling-ui/client/src/shared/types/oppgave.ts b/apps/etterlatte-saksbehandling-ui/client/src/shared/types/oppgave.ts index 1589e506e5a..cb14c3e985a 100644 --- a/apps/etterlatte-saksbehandling-ui/client/src/shared/types/oppgave.ts +++ b/apps/etterlatte-saksbehandling-ui/client/src/shared/types/oppgave.ts @@ -9,6 +9,7 @@ export interface OppgaveDTO { type: Oppgavetype kilde: OppgaveKilde referanse: string | null + gruppeId: string | null merknad?: string opprettet: string sakType: SakType diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt index 83e09a575f3..1ae3d4ebf4e 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt @@ -361,6 +361,7 @@ internal class AutomatiskBehandlingRoutesKtTest { type = OppgaveType.FOERSTEGANGSBEHANDLING, saksbehandler = null, referanse = referanse.toString(), + gruppeId = null, merknad = null, sakType = SakType.BARNEPENSJON, fnr = null, diff --git a/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt b/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt index d7a0ed279e7..b131f94f0d5 100644 --- a/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt +++ b/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt @@ -28,6 +28,7 @@ data class OppgaveIntern( val saksbehandler: OppgaveSaksbehandler? = null, val forrigeSaksbehandlerIdent: String? = null, val referanse: String, + val gruppeId: String?, val merknad: String? = null, val opprettet: Tidspunkt, val sakType: SakType, @@ -182,6 +183,7 @@ data class NyOppgaveDto( val referanse: String? = null, val frist: Tidspunkt? = null, val saksbehandler: String? = null, + val gruppeId: String? = null, ) fun opprettNyOppgaveMedReferanseOgSak( @@ -192,6 +194,7 @@ fun opprettNyOppgaveMedReferanseOgSak( merknad: String?, frist: Tidspunkt? = null, saksbehandler: String? = null, + gruppeId: String? = null, ): OppgaveIntern { val opprettet = Tidspunkt.now() @@ -209,6 +212,7 @@ fun opprettNyOppgaveMedReferanseOgSak( kilde = kilde, saksbehandler = saksbehandler?.let { OppgaveSaksbehandler(ident = it) }, referanse = referanse, + gruppeId = gruppeId, merknad = merknad, opprettet = opprettet, sakType = sak.sakType,