diff --git a/src/main/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingService.kt b/src/main/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingService.kt index 07b92a58..1a2beab0 100644 --- a/src/main/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingService.kt +++ b/src/main/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingService.kt @@ -65,6 +65,10 @@ class JournalforingService( @Value("\${namespace}") lateinit var nameSpace: String + companion object { + val BUC_SOM_SENDES_DIREKTE = listOf(R_BUC_02, P_BUC_06, P_BUC_09) + } + init { journalforOgOpprettOppgaveForSed = metricsHelper.init("journalforOgOpprettOppgaveForSed") journalforOgOpprettOppgaveForSedMedUkjentPerson = metricsHelper.init("journalforOgOpprettOppgaveForSed") @@ -169,10 +173,19 @@ class JournalforingService( currentSed ) - if (journalpostRequest.bruker == null) { - if (behandleJournalpostUtenBruker(sedHendelse, journalpostRequest, env, hendelseType, navAnsattInfo)) return@measure + val skalSendesDirekte = sedHendelse.bucType in BUC_SOM_SENDES_DIREKTE || journalpostRequest.tema in listOf(OMSTILLING, EYBARNEP) + val testMiljo = env != null && env in listOf("q2", "q1") + + if (journalpostRequest.bruker == null && !skalSendesDirekte && !testMiljo) { + logger.info("Journalpost for rinanr: ${sedHendelse.rinaSakId} mangler bruker og settes på vent") + vurderBrukerInfo.lagreJournalPostUtenBruker(journalpostRequest, sedHendelse, hendelseType) + return@measure } else { + if(journalpostRequest.bruker == null) { + logger.info("Journalpost for rinanr: ${sedHendelse.rinaSakId} mangler bruker, men miljøet er $env og sendes direkte") + } + val journalPostResponse = journalpostService.sendJournalPost( journalpostRequest, sedHendelse, @@ -180,15 +193,17 @@ class JournalforingService( navAnsattInfo?.first ) - vurderBrukerInfo.journalpostMedBruker( - journalpostRequest, - sedHendelse, - identifisertPerson, - journalpostRequest.bruker, - navAnsattInfo?.first - ) + if(journalpostRequest.bruker != null) { + vurderBrukerInfo.finnLagretSedUtenBrukerForRinaNr( + journalpostRequest, + sedHendelse, + identifisertPerson, + journalpostRequest.bruker, + navAnsattInfo?.first + ) + } - settAvbruttOglagOppgave( + vurderSettAvbruttOgLagOppgave( identifisertPerson?.personRelasjon?.fnr, hendelseType, sedHendelse, @@ -237,7 +252,7 @@ class JournalforingService( } } - fun settAvbruttOglagOppgave( + fun vurderSettAvbruttOgLagOppgave( fnr: Fodselsnummer?, hendelseType: HendelseType, sedHendelse: SedHendelse, @@ -301,32 +316,6 @@ class JournalforingService( ) } - private fun behandleJournalpostUtenBruker( - sedHendelse: SedHendelse, - journalpostRequest: OpprettJournalpostRequest, - env: String?, - hendelseType: HendelseType, - navAnsattInfo: Pair? - ): Boolean { - val skalSendesDirekte = sedHendelse.bucType in listOf(R_BUC_02, P_BUC_06, P_BUC_09) || journalpostRequest.tema in listOf(OMSTILLING, EYBARNEP) - val testMiljo = env != null && env in listOf("q2", "q1") - - val logMelding = when { - skalSendesDirekte || testMiljo -> { - journalpostService.sendJournalPost(JournalpostMedSedInfo(journalpostRequest, sedHendelse, hendelseType), navAnsattInfo?.first) - "Journalpost for rinanr: ${sedHendelse.rinaSakId} mangler bruker, men miljøet er $env og sendes direkte" - } - - else -> { - vurderBrukerInfo.lagreJournalPostUtenBruker(journalpostRequest, sedHendelse, hendelseType) - "Journalpost for rinanr: ${sedHendelse.rinaSakId} mangler bruker og settes på vent" - } - } - - logger.warn("$logMelding, buc: ${sedHendelse.bucType}, sed: ${sedHendelse.sedType}") - return true - } - fun loggDersomIkkeBehSedOppgaveOpprettes( bucType: BucType?, sedHendelse: SedHendelse, diff --git a/src/main/kotlin/no/nav/eessi/pensjon/journalforing/journalpost/JournalpostService.kt b/src/main/kotlin/no/nav/eessi/pensjon/journalforing/journalpost/JournalpostService.kt index f2df9a18..90c4cd80 100644 --- a/src/main/kotlin/no/nav/eessi/pensjon/journalforing/journalpost/JournalpostService.kt +++ b/src/main/kotlin/no/nav/eessi/pensjon/journalforing/journalpost/JournalpostService.kt @@ -162,6 +162,7 @@ class JournalpostService(private val journalpostKlient: JournalpostKlient) { sedHendelse: SedHendelse, journalpostId: String? ): Boolean { + logger.info("Vurderer avbrutt for journalpostId: $journalpostId, rinaNr: ${sedHendelse.rinaSakId}, buc: ${sedHendelse.bucType}") if (journalpostId == null) { logger.warn("Ingen gyldig journalpost; setter ikke avbrutt") return false diff --git a/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingAvbruttTest.kt b/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingAvbruttTest.kt index 294033de..406404d9 100644 --- a/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingAvbruttTest.kt +++ b/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingAvbruttTest.kt @@ -51,34 +51,26 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() { fun `SED med ukjent fnr settes til avbrutt gitt at den ikke er i listen bucIkkeTilAvbrutt`(buc: BucType) { val sedHendelse = createMockSedHendelse(SedType.P8000, buc) - justRun { journalpostKlient.oppdaterJournalpostMedAvbrutt(any()) } - every { journalpostKlient.opprettJournalpost(any(), any(), any()) } returns mockk() - - journalManueltMedAvbrutt(sedHendelse, HendelseType.SENDT) - verify(atLeast = 1) { journalpostKlient.oppdaterJournalpostMedAvbrutt(any()) } - } - - @Test - fun `Gitt JournalpostId og ukjent bruker så patcher vi journalposten til Avbrutt`() { - val jpId = "12345" - val hendelse = javaClass.getResource("/eux/hendelser/P_BUC_03_P2200.json")!!.readText() - val sedHendelse = SedHendelse.fromJson(hendelse) - val identifisertPerson = identifisertPDLPerson() - - justRun { journalpostKlient.oppdaterJournalpostMedAvbrutt(eq("12345")) } - - journalpostService.journalpostSattTilAvbrutt( - identifisertPerson.personRelasjon?.fnr, - HendelseType.SENDT, - sedHendelse, - jpId - ) + // buc som sendes direkte (uten lagring) + if(buc in JournalforingService.BUC_SOM_SENDES_DIREKTE) { + every { journalpostKlient.opprettJournalpost(any(), any(), any()) } returns + mockk(relaxed = true).apply { + every { journalpostId } returns "12345" + every { journalpostferdigstilt } returns false + } + //benytter ordinær journalforing for buc som sendes direkte + journalfor(sedHendelse, HendelseType.SENDT) + } + else { + every { journalpostKlient.opprettJournalpost(any(), any(), any()) } returns mockk() + journalManueltMedAvbrutt(sedHendelse, HendelseType.SENDT) + } - verify(exactly = 1) { journalpostKlient.oppdaterJournalpostMedAvbrutt(jpId) } + verify(exactly = 1) { journalpostKlient.oppdaterJournalpostMedAvbrutt(any()) } } @Test - fun `Sendt sed P2200 med ukjent fnr skal sette status avbrutt`() { + fun `Sendt P2200 med ukjent fnr skal sette status avbrutt`() { val hendelse = javaClass.getResource("/eux/hendelser/P_BUC_03_P2200.json")!!.readText() val sedHendelse = SedHendelse.fromJson(hendelse) val journapostId = "112233" @@ -239,18 +231,14 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() { saksInfoSamlet: SaksInfoSamlet? = null ) { - journalforingService.journalfor( - sedHendelse, - HendelseType.SENDT, - identer.first(), - LocalDate.of(1973, 11, 22), - identifisertePersoner = 1, - navAnsattInfo = null, - saksInfoSamlet = saksInfoSamlet, - currentSed = SED(type = SedType.P2200) + journalfor( + sedHendelse = sedHendelse, + hendelseType = hendelseType, + identer = identer, + saksInfoSamlet = saksInfoSamlet ) - journalforingService.settAvbruttOglagOppgave( + journalforingService.vurderSettAvbruttOgLagOppgave( fnr = identer[0].fnr, hendelseType = hendelseType, sedHendelse = sedHendelse, @@ -263,6 +251,26 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() { ) } + private fun journalfor( + sedHendelse: SedHendelse, + hendelseType: HendelseType = HendelseType.SENDT, + identer: List = listOf(identifisertPDLPerson()), + saksInfoSamlet: SaksInfoSamlet? = null + ) { + + journalforingService.journalfor( + sedHendelse, + hendelseType, + identer.first(), + LocalDate.of(1973, 11, 22), + identifisertePersoner = 1, + navAnsattInfo = null, + saksInfoSamlet = saksInfoSamlet, + currentSed = SED(type = SedType.P2200) + ) + } + + private fun identifisertPDLPerson(): IdentifisertPDLPerson { val identifisertPerson = identifisertPersonPDL( AKTOERID, @@ -274,6 +282,7 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() { fun createMockSedHendelse(sed: SedType, buc: BucType, bruker: Fodselsnummer = LEALAUS_KAKE): SedHendelse { return mockk(relaxed = true).apply { + every { rinaSakId } returns "223344" every { bucType } returns buc every { sedType } returns sed every { navBruker } returns bruker diff --git a/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingServiceMedJournalpostTest.kt b/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingServiceMedJournalpostTest.kt index a53beb15..eff0ea00 100644 --- a/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingServiceMedJournalpostTest.kt +++ b/src/test/kotlin/no/nav/eessi/pensjon/journalforing/JournalforingServiceMedJournalpostTest.kt @@ -108,6 +108,7 @@ internal class JournalforingServiceMedJournalpostTest : JournalforingServiceBase val forsoekFerdigstillSlot = slot() every { journalpostKlient.opprettJournalpost(any(), capture(forsoekFerdigstillSlot), any()) } returns mockk(relaxed = true) + justRun { journalpostKlient.oppdaterJournalpostMedAvbrutt(any()) } journalforingService.journalfor( sedHendelse = generiskSED, @@ -120,6 +121,7 @@ internal class JournalforingServiceMedJournalpostTest : JournalforingServiceBase ) verify(exactly = 1) { journalpostKlient.opprettJournalpost(any(), any(), any()) } + verify(exactly = 1) { journalpostKlient.oppdaterJournalpostMedAvbrutt(any())} assertEquals(false, forsoekFerdigstillSlot.captured) }