diff --git a/dokument/infrastructure/src/main/kotlin/no/nav/su/se/bakover/dokument/infrastructure/DokumentMetaDataDbJson.kt b/dokument/infrastructure/src/main/kotlin/no/nav/su/se/bakover/dokument/infrastructure/DokumentMetaDataDbJson.kt index 6b8cdc0d3b..bdf6fd304f 100644 --- a/dokument/infrastructure/src/main/kotlin/no/nav/su/se/bakover/dokument/infrastructure/DokumentMetaDataDbJson.kt +++ b/dokument/infrastructure/src/main/kotlin/no/nav/su/se/bakover/dokument/infrastructure/DokumentMetaDataDbJson.kt @@ -8,14 +8,16 @@ import java.util.UUID */ data class DokumentMetaDataDbJson( val sakId: UUID, - val tilbakekrevingsbehandlingId: UUID, + val tilbakekrevingsbehandlingId: UUID?, + val vedtakId: UUID?, val journalpostId: String?, val brevbestillingsId: String?, ) { companion object { fun Dokument.Metadata.toHendelseDbJson(): DokumentMetaDataDbJson = DokumentMetaDataDbJson( sakId = this.sakId, - tilbakekrevingsbehandlingId = this.tilbakekrevingsbehandlingId!!, + tilbakekrevingsbehandlingId = this.tilbakekrevingsbehandlingId, + vedtakId = this.vedtakId, journalpostId = this.journalpostId, brevbestillingsId = this.brevbestillingId, ) diff --git a/tilbakekreving/application/src/main/kotlin/tilbakekreving/application/service/TilbakekrevingServices.kt b/tilbakekreving/application/src/main/kotlin/tilbakekreving/application/service/TilbakekrevingServices.kt index f6711b030c..b3baa57ce5 100644 --- a/tilbakekreving/application/src/main/kotlin/tilbakekreving/application/service/TilbakekrevingServices.kt +++ b/tilbakekreving/application/src/main/kotlin/tilbakekreving/application/service/TilbakekrevingServices.kt @@ -12,6 +12,7 @@ import person.domain.PersonRepo import person.domain.PersonService import tilbakekreving.application.service.avbrutt.AvbrytTilbakekrevingsbehandlingService import tilbakekreving.application.service.consumer.GenererDokumentForForhåndsvarselTilbakekrevingKonsument +import tilbakekreving.application.service.consumer.GenererVedtaksbrevTilbakekrevingKonsument import tilbakekreving.application.service.consumer.KnyttKravgrunnlagTilSakOgUtbetalingKonsument import tilbakekreving.application.service.consumer.LukkOppgaveForTilbakekrevingshendelserKonsument import tilbakekreving.application.service.consumer.OppdaterOppgaveForTilbakekrevingshendelserKonsument @@ -61,6 +62,7 @@ class TilbakekrevingServices( val oppdaterOppgaveForTilbakekrevingshendelserKonsument: OppdaterOppgaveForTilbakekrevingshendelserKonsument, val oppdaterKravgrunnlagService: OppdaterKravgrunnlagService, val notatTilbakekrevingsbehandlingService: NotatTilbakekrevingsbehandlingService, + val vedtaksbrevTilbakekrevingKonsument: GenererVedtaksbrevTilbakekrevingKonsument, ) { companion object { fun create( @@ -212,6 +214,15 @@ class TilbakekrevingServices( tilbakekrevingsbehandlingRepo = tilbakekrevingsbehandlingRepo, clock = clock, ), + vedtaksbrevTilbakekrevingKonsument = GenererVedtaksbrevTilbakekrevingKonsument( + sakService = sakService, + brevService = brevService, + tilbakekrevingsbehandlingRepo = tilbakekrevingsbehandlingRepo, + dokumentHendelseRepo = dokumentHendelseRepo, + hendelsekonsumenterRepo = hendelsekonsumenterRepo, + sessionFactory = sessionFactory, + clock = clock, + ), ) } } diff --git a/tilbakekreving/presentation/src/main/kotlin/tilbakekreving/presentation/job/Tilbakekrevingsjobber.kt b/tilbakekreving/presentation/src/main/kotlin/tilbakekreving/presentation/job/Tilbakekrevingsjobber.kt index ea3bb54714..f7a5f2d4cb 100644 --- a/tilbakekreving/presentation/src/main/kotlin/tilbakekreving/presentation/job/Tilbakekrevingsjobber.kt +++ b/tilbakekreving/presentation/src/main/kotlin/tilbakekreving/presentation/job/Tilbakekrevingsjobber.kt @@ -7,6 +7,7 @@ import no.nav.su.se.bakover.common.infrastructure.jobs.shouldRun import org.jetbrains.kotlin.utils.addToStdlib.ifTrue import org.slf4j.LoggerFactory import tilbakekreving.application.service.consumer.GenererDokumentForForhåndsvarselTilbakekrevingKonsument +import tilbakekreving.application.service.consumer.GenererVedtaksbrevTilbakekrevingKonsument import tilbakekreving.application.service.consumer.KnyttKravgrunnlagTilSakOgUtbetalingKonsument import tilbakekreving.application.service.consumer.LukkOppgaveForTilbakekrevingshendelserKonsument import tilbakekreving.application.service.consumer.OppdaterOppgaveForTilbakekrevingshendelserKonsument @@ -23,6 +24,7 @@ class Tilbakekrevingsjobber( private val lukkOppgaveKonsument: LukkOppgaveForTilbakekrevingshendelserKonsument, private val oppdaterOppgaveKonsument: OppdaterOppgaveForTilbakekrevingshendelserKonsument, private val genererDokumenterForForhåndsvarselKonsument: GenererDokumentForForhåndsvarselTilbakekrevingKonsument, + private val genererVedtaksbrevTilbakekrevingKonsument: GenererVedtaksbrevTilbakekrevingKonsument, private val initialDelay: Duration, private val intervall: Duration, private val runCheckFactory: RunCheckFactory, @@ -61,6 +63,7 @@ class Tilbakekrevingsjobber( genererDokumenterForForhåndsvarselKonsument.genererDokumenter(correlationId) lukkOppgaveKonsument.lukkOppgaver(correlationId) oppdaterOppgaveKonsument.oppdaterOppgaver(correlationId) + genererVedtaksbrevTilbakekrevingKonsument.genererVedtaksbrev(correlationId) } }.mapLeft { // Dette er bare en guard - hver jobb skal håndtere feil selv (og ingen skal kaste videre hit). diff --git a/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingHelpers.kt b/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingHelpers.kt index ed641062f4..6d712bc342 100644 --- a/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingHelpers.kt +++ b/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingHelpers.kt @@ -34,6 +34,7 @@ internal fun AppComponents.kjøreAlleTilbakekrevingskonsumenter() { // --- dokumenter --- this.genererDokumenterForForhåndsvarsel(1) + this.genererDokumenterForVedtaksbrev(1) this.journalførDokumenter(1) this.distribuerDokumenter(1) } @@ -47,6 +48,7 @@ internal fun AppComponents.kjøreAlleVerifiseringer( antallOppdatertOppgaveHendelser: Int = 0, antallLukketOppgaver: Int = 0, antallGenererteForhåndsvarsler: Int = 0, + antallGenererteVedtaksbrev: Int = 0, antallJournalførteDokumenter: Int = 0, antallDistribuertDokumenter: Int = 0, ) { @@ -60,11 +62,12 @@ internal fun AppComponents.kjøreAlleVerifiseringer( ) this.verifiserGenererDokumentForForhåndsvarselKonsument(antallGenererteForhåndsvarsler) + this.verifiserGenererDokumentForVedtaksbrevKonsument(antallGenererteVedtaksbrev) this.verifiserJournalførDokumenterKonsument(antallJournalførteDokumenter) this.verifiserDistribuerteDokumenterKonsument(antallDistribuertDokumenter) this.verifiserDokumentHendelser( sakId = sakId, - antallGenererteDokumenter = antallGenererteForhåndsvarsler, + antallGenererteDokumenter = antallGenererteForhåndsvarsler + antallGenererteVedtaksbrev, antallJournalførteDokumenter = antallJournalførteDokumenter, antallDistribuerteDokumenter = antallDistribuertDokumenter, ) @@ -117,6 +120,13 @@ internal fun AppComponents.genererDokumenterForForhåndsvarsel(saksversjon: Long return saksversjon + 1 } +internal fun AppComponents.genererDokumenterForVedtaksbrev(saksversjon: Long): Long { + this.tilbakekrevingskomponenter.services.vedtaksbrevTilbakekrevingKonsument.genererVedtaksbrev( + correlationId = CorrelationId.generate(), + ) + return saksversjon + 1 +} + /** * Kjører [JournalførDokumentHendelserKonsument]. * @@ -172,12 +182,7 @@ internal fun AppComponents.verifiserDokumentHendelser( antallDistribuerteDokumenter: Int, ) { val dokumentHendelser = this.databaseRepos.dokumentHendelseRepo.hentForSak(UUID.fromString(sakId)).let { - if (antallGenererteDokumenter > 0) { - it.serier.size shouldBe 1 - it.serier[0] - } else { - emptyList() - } + it.flatMap { it.dokumenter } } dokumentHendelser.size shouldBe antallGenererteDokumenter + antallJournalførteDokumenter + antallDistribuerteDokumenter @@ -306,6 +311,17 @@ internal fun AppComponents.verifiserGenererDokumentForForhåndsvarselKonsument(a } } } +internal fun AppComponents.verifiserGenererDokumentForVedtaksbrevKonsument(antallGenerert: Int = 1) { + this.databaseRepos.hendelsekonsumenterRepo.let { + (it as HendelsekonsumenterPostgresRepo).sessionFactory.withSession { + """ + select * from hendelse_konsument where konsumentId = 'GenererVedtaksbrevTilbakekrevingKonsument' + """.trimIndent().hentListe(emptyMap(), it) { + it.string("hendelseId") + }.size shouldBe antallGenerert + } + } +} /** * Sletter ikke selve hendelsen, men kun verifikasjonen på at vi har kjørt konsumenten. diff --git a/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingsbehandlingIT.kt b/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingsbehandlingIT.kt index 065f981016..109bed8aae 100644 --- a/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingsbehandlingIT.kt +++ b/web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/tilbakekreving/TilbakekrevingsbehandlingIT.kt @@ -227,7 +227,23 @@ internal class TilbakekrevingsbehandlingIT { appComponents.verifiserLukketOppgaveKonsument() // TODO jah: sende tilbakekrevingsvedtaket til oppdrag + sende brev hvis det er valgt. // TODO vedtaksbrev - kjør konsument (generering, journalføring, distribuering) + verifisering - verifiserKravgrunnlagPåSak(sakId, client, true, versjonEtterLukking.toInt()) + + val versjonEtterGenereringAvVedtaksbrev = appComponents.genererDokumenterForVedtaksbrev(versjonEtterLukking) + appComponents.verifiserDokumentHendelser( + sakId = sakId, + antallGenererteDokumenter = 2, + antallJournalførteDokumenter = 1, + antallDistribuerteDokumenter = 1, + ) + appComponents.verifiserGenererDokumentForVedtaksbrevKonsument() + val versjonEtterJournalføringAvVedtaksbrev = + appComponents.journalførDokumenter(versjonEtterGenereringAvVedtaksbrev) + appComponents.verifiserJournalførDokumenterKonsument(2) + val versjonEtterDistribusjonAvVedtaksbrev = + appComponents.distribuerDokumenter(versjonEtterJournalføringAvVedtaksbrev) + appComponents.verifiserDistribuerteDokumenterKonsument(2) + + verifiserKravgrunnlagPåSak(sakId, client, true, versjonEtterDistribusjonAvVedtaksbrev.toInt()) // kjører konsumenter en gang til på slutten for å verifisere at dette ikke vil føre til flere hendelser appComponents.kjøreAlleTilbakekrevingskonsumenter() @@ -237,8 +253,9 @@ internal class TilbakekrevingsbehandlingIT { antallOppdatertOppgaveHendelser = 4, antallLukketOppgaver = 1, antallGenererteForhåndsvarsler = 1, - antallJournalførteDokumenter = 1, - antallDistribuertDokumenter = 1, + antallGenererteVedtaksbrev = 1, + antallJournalførteDokumenter = 2, + antallDistribuertDokumenter = 2, ) } } @@ -324,6 +341,7 @@ internal class TilbakekrevingsbehandlingIT { antallOpprettetOppgaver = 1, antallOppdatertOppgaveHendelser = 0, antallLukketOppgaver = 1, + antallGenererteVedtaksbrev = 0, antallGenererteForhåndsvarsler = 0, antallJournalførteDokumenter = 0, antallDistribuertDokumenter = 0, diff --git a/web/src/main/kotlin/no/nav/su/se/bakover/web/JobberOgConsumers.kt b/web/src/main/kotlin/no/nav/su/se/bakover/web/JobberOgConsumers.kt index e2bc232188..228cf7b185 100644 --- a/web/src/main/kotlin/no/nav/su/se/bakover/web/JobberOgConsumers.kt +++ b/web/src/main/kotlin/no/nav/su/se/bakover/web/JobberOgConsumers.kt @@ -293,6 +293,7 @@ fun startJobberOgConsumers( genererDokumenterForForhåndsvarselKonsument = tilbakekrevingskomponenter.services.genererDokumentForForhåndsvarselTilbakekrevingKonsument, lukkOppgaveKonsument = tilbakekrevingskomponenter.services.lukkOppgaveForTilbakekrevingshendelserKonsument, oppdaterOppgaveKonsument = tilbakekrevingskomponenter.services.oppdaterOppgaveForTilbakekrevingshendelserKonsument, + genererVedtaksbrevTilbakekrevingKonsument = tilbakekrevingskomponenter.services.vedtaksbrevTilbakekrevingKonsument, initialDelay = initialDelay.next(), intervall = Duration.ofSeconds(10), runCheckFactory = runCheckFactory, @@ -405,6 +406,7 @@ fun startJobberOgConsumers( genererDokumenterForForhåndsvarselKonsument = tilbakekrevingskomponenter.services.genererDokumentForForhåndsvarselTilbakekrevingKonsument, lukkOppgaveKonsument = tilbakekrevingskomponenter.services.lukkOppgaveForTilbakekrevingshendelserKonsument, oppdaterOppgaveKonsument = tilbakekrevingskomponenter.services.oppdaterOppgaveForTilbakekrevingshendelserKonsument, + genererVedtaksbrevTilbakekrevingKonsument = tilbakekrevingskomponenter.services.vedtaksbrevTilbakekrevingKonsument, initialDelay = initialDelay.next(), intervall = Duration.ofSeconds(10), runCheckFactory = runCheckFactory,