Skip to content

Commit 3761e4d

Browse files
authoredMar 7, 2025··
Feature/gjenny sakid (#336)
* t - Legger til mock av gjennyfinnes kallet i tester * b - Legger inn sjekk av gjennysak der vi filtrerer vekk ugyldige saksnumre funnet i seder i bucen * t - Legger til mock for hent fra GcpStorageService * b - Sjekker om bucket inneholder gjennysakId, og legger til denne fra Sed, dersom den er null * b - Legger til nullsjekk * b - Bruker hentFraGjenny i stedet for hent i SedListenerBase * b - Legger inn gjennysak i sed i bucket
1 parent fed1454 commit 3761e4d

File tree

7 files changed

+91
-7
lines changed

7 files changed

+91
-7
lines changed
 

‎src/main/kotlin/no/nav/eessi/pensjon/gcp/GcpStorageService.kt

+25-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package no.nav.eessi.pensjon.gcp
33
import com.google.cloud.storage.BlobId
44
import com.google.cloud.storage.BlobInfo
55
import com.google.cloud.storage.Storage
6+
import no.nav.eessi.pensjon.eux.model.SedHendelse
7+
import no.nav.eessi.pensjon.eux.model.buc.SakType.BARNEP
8+
import no.nav.eessi.pensjon.eux.model.buc.SakType.OMSORG
69
import no.nav.eessi.pensjon.utils.toJson
710
import org.slf4j.LoggerFactory
811
import org.springframework.beans.factory.annotation.Value
@@ -45,13 +48,15 @@ class GcpStorageService(
4548
logger.info("Melding for $storageKey finnes ikke for $bucketName")
4649
return false
4750
}
51+
fun hentBlobId(bucketName: String, storageKey: String): BlobId =
52+
gcpStorage.get(BlobId.of(bucketName, storageKey)).blobId
4853

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

54-
private fun hent(storageKey: String, bucketName: String): String? {
59+
fun hent(storageKey: String, bucketName: String): String? {
5560
try {
5661
logger.info("storageKey: $storageKey og bucketName: $bucketName")
5762
val jsonHendelse = gcpStorage.get(BlobId.of(bucketName, storageKey))
@@ -76,4 +81,23 @@ class GcpStorageService(
7681
if (gjennysak != null) logger.info("Lagret info på S3 med rinaID: $euxCaseId for gjenny: ${gjennysak.toJson()}")
7782
}
7883
}
84+
85+
fun oppdaterGjennysak(sedHendelse: SedHendelse, gcpstorageObject: GjennySak, gjennysakFraSed: String) : String {
86+
val blobId = hentBlobId(gjennyBucket, sedHendelse.rinaSakId)
87+
slettJournalpostDetaljer(blobId)
88+
logger.warn("Gjennysak finnes for rinaSakId: ${sedHendelse.rinaSakId}")
89+
90+
val saksType = if (gcpstorageObject.sakType == "OMSORG") OMSORG else BARNEP
91+
lagre(sedHendelse.rinaSakId, GjennySak(gjennysakFraSed, saksType.name))
92+
return saksType.name
93+
}
94+
95+
fun slettJournalpostDetaljer(blobId: BlobId) {
96+
try {
97+
logger.info("Sletter journalpostdetaljer for rinaSakId: $blobId")
98+
gcpStorage.delete(blobId).also { logger.info("Slett av journalpostdetaljer utført: $it") }
99+
} catch (ex: Exception) {
100+
logger.warn("En feil oppstod under sletting av objekt: $blobId i bucket")
101+
}
102+
}
79103
}

‎src/main/kotlin/no/nav/eessi/pensjon/listeners/SedListenerBase.kt

+24-2
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import no.nav.eessi.pensjon.eux.model.BucType
44
import no.nav.eessi.pensjon.eux.model.SedHendelse
55
import no.nav.eessi.pensjon.eux.model.buc.SakStatus.AVSLUTTET
66
import no.nav.eessi.pensjon.eux.model.buc.SakType
7-
import no.nav.eessi.pensjon.eux.model.buc.SakType.GJENLEV
8-
import no.nav.eessi.pensjon.eux.model.buc.SakType.UFOREP
7+
import no.nav.eessi.pensjon.eux.model.buc.SakType.*
98
import no.nav.eessi.pensjon.eux.model.sed.SED
109
import no.nav.eessi.pensjon.gcp.GcpStorageService
10+
import no.nav.eessi.pensjon.gcp.GjennySak
1111
import no.nav.eessi.pensjon.listeners.fagmodul.FagmodulService
1212
import no.nav.eessi.pensjon.listeners.pesys.BestemSakService
1313
import no.nav.eessi.pensjon.models.SaksInfoSamlet
1414
import no.nav.eessi.pensjon.oppgaverouting.HendelseType
1515
import no.nav.eessi.pensjon.oppgaverouting.SakInformasjon
1616
import no.nav.eessi.pensjon.personidentifisering.IdentifisertPDLPerson
1717
import no.nav.eessi.pensjon.personoppslag.pdl.model.IdentifisertPerson
18+
import no.nav.eessi.pensjon.utils.mapJsonToAny
1819
import org.slf4j.LoggerFactory
1920
import org.springframework.kafka.support.Acknowledgment
2021

@@ -74,7 +75,16 @@ abstract class SedListenerBase(
7475
hendelseType: HendelseType,
7576
currentSed: SED?
7677
): SaksInfoSamlet {
78+
val erGjennysak = gcpStorageService.gjennyFinnes(sedHendelse.rinaSakId)
79+
if(erGjennysak) {
80+
val gjennySakId = fagmodulService.hentGjennySakIdFraSed(currentSed)
81+
if (gjennySakId != null) {
82+
oppdaterGjennySak(sedHendelse, gjennySakId).also { logger.info("Gjennysak oppdatert med sakId: $it") }
83+
}
84+
return SaksInfoSamlet(gjennySakId, null, null)
85+
}
7786
val saksIdFraSed = fagmodulService.hentSakIdFraSED(alleSedIBucList, currentSed)
87+
7888
val sakTypeFraSED = euxService.hentSaktypeType(sedHendelse, alleSedIBucList)
7989
.takeIf { bucType == BucType.P_BUC_10 || bucType == BucType.R_BUC_02 }
8090

@@ -91,6 +101,18 @@ abstract class SedListenerBase(
91101
return SaksInfoSamlet(saksIdFraSed, sakInformasjon, saktypeFraSedEllerPesys)
92102
}
93103

104+
private fun oppdaterGjennySak(sedHendelse: SedHendelse, gjennysakFraSed: String) : String? {
105+
val gcpGjennysak = gcpStorageService.hentFraGjenny(sedHendelse.rinaSakId)?.let { mapJsonToAny<GjennySak>(it) }
106+
val gjennyFinnes = gcpStorageService.gjennyFinnes(sedHendelse.rinaSakId)
107+
108+
return if (gjennyFinnes && gcpGjennysak?.sakId == null && gcpGjennysak != null) {
109+
gcpStorageService.oppdaterGjennysak(sedHendelse, gcpGjennysak, gjennysakFraSed)
110+
}
111+
else null
112+
113+
}
114+
115+
94116
fun skippingOffsett(offset: Long, offsetsToSkip : List<Long>): Boolean {
95117
return if (offset !in offsetsToSkip) {
96118
false

‎src/main/kotlin/no/nav/eessi/pensjon/listeners/SedMottattListener.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ class SedMottattListener(
123123
bucType,
124124
identifisertPerson,
125125
MOTTATT,
126-
null // trenger ikke å sende med currentSed for MOTTATT, da det dette kommer fra utlandet
126+
null
127+
// trenger ikke å sende med currentSed for MOTTATT, da det dette kommer fra utlandet
127128
)
128129

129130
val currentSed = alleSedMedGyldigStatus.firstOrNull { it.first == sedHendelse.rinaDokumentId }?.second

‎src/main/kotlin/no/nav/eessi/pensjon/listeners/SedSendtListener.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class SedSendtListener(
110110
bucType,
111111
identifisertPerson,
112112
SENDT,
113-
currentSed
113+
currentSed,
114114
)
115115

116116

‎src/main/kotlin/no/nav/eessi/pensjon/listeners/fagmodul/FagmodulService.kt

+11-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class FagmodulService(private val fagmodulKlient: FagmodulKlient) {
5757
.map { id -> trimSakidString(id) }
5858
.filter { it.erGyldigPesysNummer() }
5959
.distinct()
60-
.also { sakId -> logger.info("Fant sakId i SED: $sakId") }
60+
.also { sakId -> logger.info("Fant sakId i SED: $sakId.") }
6161

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

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

84+
fun hentGjennySakIdFraSed(currentSed: SED?): String? {
85+
val sakIdFraSed = currentSed?.nav?.eessisak?.mapNotNull { it.saksnummer }
86+
?.map { id -> trimSakidString(id) }
87+
?.distinct()
88+
.also { sakId -> logger.info("Fant gjenny sakId i SED: $sakId. Antall gjennysaker funnet: ${sakId?.size}") }
89+
90+
if (sakIdFraSed?.isEmpty() == true) logger.warn("Fant ingen gjenny sakId i SEDen")
91+
return sakIdFraSed?.firstOrNull().also { logger.info("Gjenny sakId fra SED: $it") }
92+
}
93+
8494
private fun filterEESSIsak(sed: SED): String? {
8595
val sak = sed.nav?.eessisak ?: return null
8696
logger.info("Sak fra SED: ${sak.toJson()}")

‎src/test/kotlin/no/nav/eessi/pensjon/integrasjonstest/saksflyt/PBuc02IntegrationTest.kt

+16-1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ internal class PBuc02IntegrationTest : JournalforingTestBase() {
113113
@Test
114114
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`() {
115115
val allDocuemtActions = listOf(ForenkletSED("10001212", P2100, SedStatus.RECEIVED))
116+
val gjennysakIBucket = """
117+
{
118+
"sakId" : "123456",
119+
"sakType" : "OMSORG"
120+
}
121+
""".trimIndent()
122+
123+
every { gcpStorageService.hent(any(), any()) } returns gjennysakIBucket
116124
every { gcpStorageService.gjennyFinnes(any()) } returns true
117125

118126
testRunnerVoksen(
@@ -134,8 +142,15 @@ internal class PBuc02IntegrationTest : JournalforingTestBase() {
134142
@Test
135143
fun `Sjekker om identifisert person er barn i en mottatt P2100 og setter den til gjennysak med tema eybarnep`() {
136144
val allDocuemtActions = listOf(ForenkletSED("10001212", P2100, SedStatus.RECEIVED))
145+
val gjennysakIBucket = """
146+
{
147+
"sakId" : "123456",
148+
"sakType" : "BARNEP"
149+
}
150+
""".trimIndent()
151+
137152
every { gcpStorageService.gjennyFinnes(any()) } returns true
138-
every { gcpStorageService.hentFraGjenny(any()) } returns "BARNEP"
153+
every { gcpStorageService.hentFraGjenny(any()) } returns gjennysakIBucket
139154

140155
testRunnerVoksen(
141156
FNR_VOKSEN_2,

‎src/test/kotlin/no/nav/eessi/pensjon/listeners/SedMottattListenerTest.kt

+12
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,23 @@ internal class SedMottattListenerTest {
3636
)
3737
@Test
3838
fun `gitt en gyldig sedHendelse når sedMottatt hendelse konsumeres så ack melding`() {
39+
every { gcpStorageService.gjennyFinnes(any()) } returns false
3940
sedListener.consumeSedMottatt(String(Files.readAllBytes(Paths.get("src/test/resources/eux/hendelser/P_BUC_01_P2000.json"))), cr, acknowledgment)
4041

4142
verify(exactly = 1) { acknowledgment.acknowledge() }
4243
}
4344

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

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

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

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

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

0 commit comments

Comments
 (0)
Please sign in to comment.