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

Feature/gjenny sakid #336

Merged
merged 7 commits into from
Mar 7, 2025
Merged
26 changes: 25 additions & 1 deletion src/main/kotlin/no/nav/eessi/pensjon/gcp/GcpStorageService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package no.nav.eessi.pensjon.gcp
import com.google.cloud.storage.BlobId
import com.google.cloud.storage.BlobInfo
import com.google.cloud.storage.Storage
import no.nav.eessi.pensjon.eux.model.SedHendelse
import no.nav.eessi.pensjon.eux.model.buc.SakType.BARNEP
import no.nav.eessi.pensjon.eux.model.buc.SakType.OMSORG
import no.nav.eessi.pensjon.utils.toJson
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
Expand Down Expand Up @@ -45,13 +48,15 @@ class GcpStorageService(
logger.info("Melding for $storageKey finnes ikke for $bucketName")
return false
}
fun hentBlobId(bucketName: String, storageKey: String): BlobId =
gcpStorage.get(BlobId.of(bucketName, storageKey)).blobId

fun hentFraGjenny(storageKey: String): String? {
logger.debug("Henter gjennydetaljer for rinaSakId: $storageKey")
return hent(storageKey, gjennyBucket)
}

private fun hent(storageKey: String, bucketName: String): String? {
fun hent(storageKey: String, bucketName: String): String? {
try {
logger.info("storageKey: $storageKey og bucketName: $bucketName")
val jsonHendelse = gcpStorage.get(BlobId.of(bucketName, storageKey))
Expand All @@ -76,4 +81,23 @@ class GcpStorageService(
if (gjennysak != null) logger.info("Lagret info på S3 med rinaID: $euxCaseId for gjenny: ${gjennysak.toJson()}")
}
}

fun oppdaterGjennysak(sedHendelse: SedHendelse, gcpstorageObject: GjennySak, gjennysakFraSed: String) : String {
val blobId = hentBlobId(gjennyBucket, sedHendelse.rinaSakId)
slettJournalpostDetaljer(blobId)
logger.warn("Gjennysak finnes for rinaSakId: ${sedHendelse.rinaSakId}")

val saksType = if (gcpstorageObject.sakType == "OMSORG") OMSORG else BARNEP
lagre(sedHendelse.rinaSakId, GjennySak(gjennysakFraSed, saksType.name))
return saksType.name
}

fun slettJournalpostDetaljer(blobId: BlobId) {
try {
logger.info("Sletter journalpostdetaljer for rinaSakId: $blobId")
gcpStorage.delete(blobId).also { logger.info("Slett av journalpostdetaljer utført: $it") }
} catch (ex: Exception) {
logger.warn("En feil oppstod under sletting av objekt: $blobId i bucket")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@ import no.nav.eessi.pensjon.eux.model.BucType
import no.nav.eessi.pensjon.eux.model.SedHendelse
import no.nav.eessi.pensjon.eux.model.buc.SakStatus.AVSLUTTET
import no.nav.eessi.pensjon.eux.model.buc.SakType
import no.nav.eessi.pensjon.eux.model.buc.SakType.GJENLEV
import no.nav.eessi.pensjon.eux.model.buc.SakType.UFOREP
import no.nav.eessi.pensjon.eux.model.buc.SakType.*
import no.nav.eessi.pensjon.eux.model.sed.SED
import no.nav.eessi.pensjon.gcp.GcpStorageService
import no.nav.eessi.pensjon.gcp.GjennySak
import no.nav.eessi.pensjon.listeners.fagmodul.FagmodulService
import no.nav.eessi.pensjon.listeners.pesys.BestemSakService
import no.nav.eessi.pensjon.models.SaksInfoSamlet
import no.nav.eessi.pensjon.oppgaverouting.HendelseType
import no.nav.eessi.pensjon.oppgaverouting.SakInformasjon
import no.nav.eessi.pensjon.personidentifisering.IdentifisertPDLPerson
import no.nav.eessi.pensjon.personoppslag.pdl.model.IdentifisertPerson
import no.nav.eessi.pensjon.utils.mapJsonToAny
import org.slf4j.LoggerFactory
import org.springframework.kafka.support.Acknowledgment

Expand Down Expand Up @@ -74,7 +75,16 @@ abstract class SedListenerBase(
hendelseType: HendelseType,
currentSed: SED?
): SaksInfoSamlet {
val erGjennysak = gcpStorageService.gjennyFinnes(sedHendelse.rinaSakId)
if(erGjennysak) {
val gjennySakId = fagmodulService.hentGjennySakIdFraSed(currentSed)
if (gjennySakId != null) {
oppdaterGjennySak(sedHendelse, gjennySakId).also { logger.info("Gjennysak oppdatert med sakId: $it") }
}
return SaksInfoSamlet(gjennySakId, null, null)
}
val saksIdFraSed = fagmodulService.hentSakIdFraSED(alleSedIBucList, currentSed)

val sakTypeFraSED = euxService.hentSaktypeType(sedHendelse, alleSedIBucList)
.takeIf { bucType == BucType.P_BUC_10 || bucType == BucType.R_BUC_02 }

Expand All @@ -91,6 +101,18 @@ abstract class SedListenerBase(
return SaksInfoSamlet(saksIdFraSed, sakInformasjon, saktypeFraSedEllerPesys)
}

private fun oppdaterGjennySak(sedHendelse: SedHendelse, gjennysakFraSed: String) : String? {
val gcpGjennysak = gcpStorageService.hentFraGjenny(sedHendelse.rinaSakId)?.let { mapJsonToAny<GjennySak>(it) }
val gjennyFinnes = gcpStorageService.gjennyFinnes(sedHendelse.rinaSakId)

return if (gjennyFinnes && gcpGjennysak?.sakId == null && gcpGjennysak != null) {
gcpStorageService.oppdaterGjennysak(sedHendelse, gcpGjennysak, gjennysakFraSed)
}
else null

}


fun skippingOffsett(offset: Long, offsetsToSkip : List<Long>): Boolean {
return if (offset !in offsetsToSkip) {
false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ class SedMottattListener(
bucType,
identifisertPerson,
MOTTATT,
null // trenger ikke å sende med currentSed for MOTTATT, da det dette kommer fra utlandet
null
// trenger ikke å sende med currentSed for MOTTATT, da det dette kommer fra utlandet
)

val currentSed = alleSedMedGyldigStatus.firstOrNull { it.first == sedHendelse.rinaDokumentId }?.second
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class SedSendtListener(
bucType,
identifisertPerson,
SENDT,
currentSed
currentSed,
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class FagmodulService(private val fagmodulKlient: FagmodulKlient) {
.map { id -> trimSakidString(id) }
.filter { it.erGyldigPesysNummer() }
.distinct()
.also { sakId -> logger.info("Fant sakId i SED: $sakId") }
.also { sakId -> logger.info("Fant sakId i SED: $sakId.") }

if (sakerFraSed.isEmpty()) logger.warn("Fant ingen sakId i SED")

Expand All @@ -81,6 +81,16 @@ class FagmodulService(private val fagmodulKlient: FagmodulKlient) {
return sakerFraSed.firstOrNull().also { logger.info("Pesys sakId fra SED: $it") }
}

fun hentGjennySakIdFraSed(currentSed: SED?): String? {
val sakIdFraSed = currentSed?.nav?.eessisak?.mapNotNull { it.saksnummer }
?.map { id -> trimSakidString(id) }
?.distinct()
.also { sakId -> logger.info("Fant gjenny sakId i SED: $sakId. Antall gjennysaker funnet: ${sakId?.size}") }

if (sakIdFraSed?.isEmpty() == true) logger.warn("Fant ingen gjenny sakId i SEDen")
return sakIdFraSed?.firstOrNull().also { logger.info("Gjenny sakId fra SED: $it") }
}

private fun filterEESSIsak(sed: SED): String? {
val sak = sed.nav?.eessisak ?: return null
logger.info("Sak fra SED: ${sak.toJson()}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,14 @@ internal class PBuc02IntegrationTest : JournalforingTestBase() {
@Test
fun `Sjekker om identifisert person er under 67 aar dersom han er det skal vi sette det til gjennysak og tema omstilling returneres i dette tilfellet`() {
val allDocuemtActions = listOf(ForenkletSED("10001212", P2100, SedStatus.RECEIVED))
val gjennysakIBucket = """
{
"sakId" : "123456",
"sakType" : "OMSORG"
}
""".trimIndent()

every { gcpStorageService.hent(any(), any()) } returns gjennysakIBucket
every { gcpStorageService.gjennyFinnes(any()) } returns true

testRunnerVoksen(
Expand All @@ -134,8 +142,15 @@ internal class PBuc02IntegrationTest : JournalforingTestBase() {
@Test
fun `Sjekker om identifisert person er barn i en mottatt P2100 og setter den til gjennysak med tema eybarnep`() {
val allDocuemtActions = listOf(ForenkletSED("10001212", P2100, SedStatus.RECEIVED))
val gjennysakIBucket = """
{
"sakId" : "123456",
"sakType" : "BARNEP"
}
""".trimIndent()

every { gcpStorageService.gjennyFinnes(any()) } returns true
every { gcpStorageService.hentFraGjenny(any()) } returns "BARNEP"
every { gcpStorageService.hentFraGjenny(any()) } returns gjennysakIBucket

testRunnerVoksen(
FNR_VOKSEN_2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,23 @@ internal class SedMottattListenerTest {
)
@Test
fun `gitt en gyldig sedHendelse når sedMottatt hendelse konsumeres så ack melding`() {
every { gcpStorageService.gjennyFinnes(any()) } returns false
sedListener.consumeSedMottatt(String(Files.readAllBytes(Paths.get("src/test/resources/eux/hendelser/P_BUC_01_P2000.json"))), cr, acknowledgment)

verify(exactly = 1) { acknowledgment.acknowledge() }
}

@Test
fun `Gitt en P_BUC_02 som er en gjenny buc saa skal den lagres i gjenny bucketen`() {
val gjennysakIBucket = """
{
"sakId" : "123456",
"sakType" : "OMSORG"
}
""".trimIndent()
every { gcpStorageService.gjennyFinnes(any()) } returns true
every { gcpStorageService.oppdaterGjennysak(any(), any(), any()) } returns "123546"
every { gcpStorageService.hentFraGjenny(any()) } returns gjennysakIBucket
sedListener.consumeSedMottatt(String(Files.readAllBytes(Paths.get("src/test/resources/eux/hendelser/P_BUC_02_P2100.json"))), cr, acknowledgment)

verify(exactly = 1) { gcpStorageService.lagre(any(), any()) }
Expand All @@ -51,6 +61,7 @@ internal class SedMottattListenerTest {

@Test
fun `Gitt en P_BUC_02 som ikke er P2100 saa skal den ikke lagres i gjenny bucketen`() {
every { gcpStorageService.gjennyFinnes(any()) } returns false
sedListener.consumeSedMottatt(String(Files.readAllBytes(Paths.get("src/test/resources/eux/hendelser/P_BUC_02_P10000.json"))), cr, acknowledgment)

verify(exactly = 0) { gcpStorageService.lagre(any(), any()) }
Expand All @@ -59,6 +70,7 @@ internal class SedMottattListenerTest {

@Test
fun `gitt en ugyldig sedHendelse av type R_BUC_02 når sedMottatt hendelse konsumeres, skal melding ackes`() {
every { gcpStorageService.gjennyFinnes(any()) } returns false
val hendelse = String(Files.readAllBytes(Paths.get("src/test/resources/eux/hendelser/R_BUC_02_R005.json")))
sedListener.consumeSedMottatt(hendelse, cr, acknowledgment)

Expand Down
Loading