Skip to content

Commit b2e84dd

Browse files
Legg til endepunkt for å kunne hente uncached inntekt
1 parent d05e92d commit b2e84dd

File tree

1 file changed

+104
-44
lines changed

1 file changed

+104
-44
lines changed

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/api/v1/UklassifisertInntektRoute.kt

Lines changed: 104 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ import no.nav.dagpenger.inntekt.db.Inntektparametre
2929
import no.nav.dagpenger.inntekt.db.ManueltRedigert
3030
import no.nav.dagpenger.inntekt.db.RegelKontekst
3131
import no.nav.dagpenger.inntekt.db.StoreInntektCommand
32-
import no.nav.dagpenger.inntekt.db.StoredInntektMedMetadata
3332
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
3433
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
34+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
3535
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
3636
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
3737
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
@@ -294,55 +294,68 @@ fun Route.uklassifisertInntekt(
294294
val inntektId = InntektId(call.parameters["inntektId"]!!)
295295
logger.info { "Henter nye inntekt for $inntektId" }
296296

297-
call.withInntektRequest("GET /uklassifisert/uncached/") {
298-
inntektStore
299-
.getStoredInntektMedMetadata(inntektId)
300-
.let { storedInntektMedMetadata ->
301-
logger.info { "Henter stored inntekt: ${storedInntektMedMetadata.inntektId}" }
302-
val person = personOppslag.hentPerson(storedInntektMedMetadata.fødselsnummer)
303-
val opptjeningsperiode = Opptjeningsperiode(storedInntektMedMetadata.beregningsdato)
297+
inntektStore
298+
.getStoredInntektMedMetadata(inntektId)
299+
.let { storedInntektMedMetadata ->
300+
logger.info { "Henter stored inntekt: ${storedInntektMedMetadata.inntektId}" }
301+
val person = personOppslag.hentPerson(storedInntektMedMetadata.fødselsnummer)
302+
val opptjeningsperiode = Opptjeningsperiode(storedInntektMedMetadata.beregningsdato)
304303

305-
toInntektskomponentRequest(person, opptjeningsperiode)
306-
.let {
307-
logger.info { "Henter nye inntekter fra inntektskomponenten" }
308-
inntektskomponentClient.getInntekt(it, callId = callId)
309-
}.let {
310-
logger.info { "Fikk nye inntekter fra inntektskomponenten" }
311-
val inntektsmottaker =
312-
Inntektsmottaker(person.fødselsnummer, person.sammensattNavn())
313-
val organisasjoner =
314-
hentOrganisasjoner(
315-
enhetsregisterClient,
316-
it.arbeidsInntektMaaned
317-
?.flatMap { it.arbeidsInntektInformasjon?.inntektListe.orEmpty() }
318-
?.filter { inntekt ->
319-
inntekt.virksomhet?.aktoerType == AktoerType.ORGANISASJON &&
320-
(inntekt.opptjeningsland == "NO" || inntekt.opptjeningsland == null)
321-
}?.mapNotNull { it.virksomhet?.identifikator }
322-
?.toTypedArray()
323-
?.toList() ?: emptyList(),
324-
)
304+
toInntektskomponentRequest(person, opptjeningsperiode)
305+
.let {
306+
logger.info { "Henter nye inntekter fra inntektskomponenten" }
307+
inntektskomponentClient.getInntekt(it, callId = callId)
308+
}.let {
309+
logger.info { "Fikk nye inntekter fra inntektskomponenten" }
310+
val inntektsmottaker =
311+
Inntektsmottaker(person.fødselsnummer, person.sammensattNavn())
312+
val organisasjoner =
313+
hentOrganisasjoner(
314+
enhetsregisterClient,
315+
it.arbeidsInntektMaaned
316+
?.flatMap { it.arbeidsInntektInformasjon?.inntektListe.orEmpty() }
317+
?.filter { inntekt ->
318+
inntekt.virksomhet?.aktoerType == AktoerType.ORGANISASJON &&
319+
(inntekt.opptjeningsland == "NO" || inntekt.opptjeningsland == null)
320+
}?.mapNotNull { it.virksomhet?.identifikator }
321+
?.toTypedArray()
322+
?.toList() ?: emptyList(),
323+
)
325324

325+
val kombinerFraInntektskomponentenOgStoredInntekt =
326+
kombinerInntektFraInntektskomponentenOgStoredInntekt(
327+
it,
328+
storedInntektMedMetadata.inntekt,
329+
)
330+
331+
logger.info {
332+
kombinerFraInntektskomponentenOgStoredInntekt.arbeidsInntektMaaned?.joinToString(
333+
separator = "\n",
334+
prefix = "Kombinert inntekt before mapping:\n",
335+
) { it.toString() } ?: "Ingen inntekter funnet"
336+
}
337+
338+
val oppdatertInntekt =
339+
storedInntektMedMetadata.copy(
340+
inntekt = kombinerFraInntektskomponentenOgStoredInntekt,
341+
)
342+
343+
logger.info("UpdatedStoredInntekt: $oppdatertInntekt")
344+
345+
val mapToFrontend =
326346
it.mapToFrontend(
327347
person = inntektsmottaker,
328348
organisasjoner = organisasjoner,
329-
storedInntektMedMetadata =
330-
StoredInntektMedMetadata(
331-
inntektId = inntektId,
332-
fødselsnummer = storedInntektMedMetadata.fødselsnummer,
333-
inntekt = it,
334-
manueltRedigert = false,
335-
timestamp = storedInntektMedMetadata.timestamp,
336-
beregningsdato = storedInntektMedMetadata.beregningsdato,
337-
storedInntektPeriode = storedInntektMedMetadata.storedInntektPeriode,
338-
begrunnelse = "",
339-
),
349+
storedInntektMedMetadata = oppdatertInntekt,
340350
)
341-
}.let {
342-
call.respond(HttpStatusCode.OK, it)
343-
}.also { inntektOppfriskingCounter.inc() }
344-
} ?: throw InntektNotFoundException("Inntekt with id $inntektId not found.")
345-
}
351+
352+
logger.info { "Kombinert inntekt after mapping: $mapToFrontend" }
353+
354+
mapToFrontend
355+
}.let {
356+
call.respond(HttpStatusCode.OK, it)
357+
}.also { inntektOppfriskingCounter.inc() }
358+
} ?: throw InntektNotFoundException("Inntekt with id $inntektId not found.")
346359
}
347360
}
348361
}
@@ -354,6 +367,53 @@ fun Route.uklassifisertInntekt(
354367
}
355368
}
356369

370+
fun kombinerInntektFraInntektskomponentenOgStoredInntekt(
371+
inntektKomponentFraAInntekt: InntektkomponentResponse,
372+
inntektKomponentFraDB: InntektkomponentResponse,
373+
): InntektkomponentResponse {
374+
logger.info { "Kombinerer data fra A-Inntekt og fra databasen" }
375+
var inntektMånederFraAInntekt = inntektKomponentFraAInntekt.arbeidsInntektMaaned ?: emptyList()
376+
377+
logger.info("Antall fra A-Inntekt: ${inntektMånederFraAInntekt.size}")
378+
logger.info("Antall fra Db: ${inntektKomponentFraDB.arbeidsInntektMaaned?.size ?: 0}")
379+
380+
inntektKomponentFraDB.arbeidsInntektMaaned?.map { storedInntektMåned ->
381+
val inntektKomponentMåned = inntektMånederFraAInntekt.find { it.aarMaaned == storedInntektMåned.aarMaaned }
382+
if (inntektKomponentMåned != null) {
383+
inntektKomponentMåned.arbeidsInntektInformasjon?.inntektListe.orEmpty().forEach { inntekt ->
384+
val matchIndex =
385+
storedInntektMåned.arbeidsInntektInformasjon
386+
?.inntektListe
387+
?.indexOfFirst {
388+
it.virksomhet?.identifikator == inntekt.virksomhet?.identifikator &&
389+
it.utbetaltIMaaned == inntekt.utbetaltIMaaned &&
390+
it.beskrivelse == inntekt.beskrivelse
391+
}
392+
if (matchIndex != null && matchIndex >= 0) {
393+
storedInntektMåned.arbeidsInntektInformasjon.inntektListe.let {
394+
it.toMutableList()[matchIndex] = inntekt
395+
}
396+
}
397+
}
398+
inntektMånederFraAInntekt =
399+
inntektMånederFraAInntekt.filter { it.aarMaaned != storedInntektMåned.aarMaaned }
400+
}
401+
}
402+
403+
inntektKomponentFraDB.copy(
404+
arbeidsInntektMaaned =
405+
(inntektKomponentFraDB.arbeidsInntektMaaned ?: emptyList()) +
406+
inntektMånederFraAInntekt.map {
407+
it.copy(
408+
arbeidsInntektInformasjon = it.arbeidsInntektInformasjon?.copy(inntektListe = emptyList()),
409+
)
410+
},
411+
)
412+
logger.info("Total antall inntektsmåneder etter kombinasjon: ${inntektKomponentFraDB.arbeidsInntektMaaned?.size ?: 0}")
413+
414+
return inntektKomponentFraDB
415+
}
416+
357417
private suspend fun hentOrganisasjoner(
358418
enhetsregisterClient: EnhetsregisterClient,
359419
organisasjonsNummerListe: List<String>?,

0 commit comments

Comments
 (0)