Skip to content

Commit

Permalink
F - Forenkler vurdering om sed mangler bruker, hvor den skal sendes o…
Browse files Browse the repository at this point in the history
…g logging av steg i prosessen
  • Loading branch information
dskarpas committed Nov 18, 2024
1 parent 8f5ac8d commit d2f7155
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -169,26 +173,37 @@ 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,
hendelseType,
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,
Expand Down Expand Up @@ -237,7 +252,7 @@ class JournalforingService(
}
}

fun settAvbruttOglagOppgave(
fun vurderSettAvbruttOgLagOppgave(
fnr: Fodselsnummer?,
hendelseType: HendelseType,
sedHendelse: SedHendelse,
Expand Down Expand Up @@ -301,32 +316,6 @@ class JournalforingService(
)
}

private fun behandleJournalpostUtenBruker(
sedHendelse: SedHendelse,
journalpostRequest: OpprettJournalpostRequest,
env: String?,
hendelseType: HendelseType,
navAnsattInfo: Pair<String, Enhet?>?
): 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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<OpprettJournalPostResponse>(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"
Expand Down Expand Up @@ -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,
Expand All @@ -263,6 +251,26 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() {
)
}

private fun journalfor(
sedHendelse: SedHendelse,
hendelseType: HendelseType = HendelseType.SENDT,
identer: List<IdentifisertPDLPerson> = 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,
Expand All @@ -274,6 +282,7 @@ internal class JournalforingAvbruttTest : JournalforingServiceBase() {

fun createMockSedHendelse(sed: SedType, buc: BucType, bruker: Fodselsnummer = LEALAUS_KAKE): SedHendelse {
return mockk<SedHendelse>(relaxed = true).apply {
every { rinaSakId } returns "223344"
every { bucType } returns buc
every { sedType } returns sed
every { navBruker } returns bruker
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ internal class JournalforingServiceMedJournalpostTest : JournalforingServiceBase

val forsoekFerdigstillSlot = slot<Boolean>()
every { journalpostKlient.opprettJournalpost(any(), capture(forsoekFerdigstillSlot), any()) } returns mockk(relaxed = true)
justRun { journalpostKlient.oppdaterJournalpostMedAvbrutt(any()) }

journalforingService.journalfor(
sedHendelse = generiskSED,
Expand All @@ -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)
}

Expand Down

0 comments on commit d2f7155

Please sign in to comment.