From a8b75d735806ae8ef231f0a6018ddc03fb64f93f Mon Sep 17 00:00:00 2001 From: Jan Kroken Date: Mon, 14 Oct 2024 13:58:20 +0200 Subject: [PATCH] ekstraherte en ny service fra BanretrygdmottakerService --- ...BarnetrygdmottakerKompletteringsService.kt | 97 +++++++++++++++++++ .../domain/BarnetrygdmottakerService.kt | 82 ++-------------- .../domain/BarnetrygdmottakerServiceTest.kt | 2 - 3 files changed, 105 insertions(+), 76 deletions(-) create mode 100644 src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerKompletteringsService.kt diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerKompletteringsService.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerKompletteringsService.kt new file mode 100644 index 0000000..0b44ace --- /dev/null +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerKompletteringsService.kt @@ -0,0 +1,97 @@ +package no.nav.pensjon.opptjening.omsorgsopptjening.start.innlesning.barnetrygd.domain + +import no.nav.pensjon.opptjening.omsorgsopptjening.felles.domene.kafka.Rådata +import no.nav.pensjon.opptjening.omsorgsopptjening.felles.domene.kafka.RådataFraKilde +import no.nav.pensjon.opptjening.omsorgsopptjening.felles.domene.kafka.messages.domene.PersongrunnlagMelding +import no.nav.pensjon.opptjening.omsorgsopptjening.start.innlesning.barnetrygd.external.barnetrygd.BarnetrygdClient +import no.nav.pensjon.opptjening.omsorgsopptjening.start.innlesning.barnetrygd.external.barnetrygd.HentBarnetrygdResponse +import no.nav.pensjon.opptjening.omsorgsopptjening.start.innlesning.barnetrygd.external.pdl.PdlService +import org.springframework.stereotype.Service + +@Service +class BarnetrygdmottakerKompletteringsService( + val pdlService: PdlService, + private val client: BarnetrygdClient, + private val hjelpestønadService: HjelpestønadService, +) { + + fun kompletter(barnetrygdmottakerUtenPdlData: Barnetrygdmottaker.Mottatt): KomplettertBarnetrygdMottaker { + val filter = GyldigÅrsintervallFilter(barnetrygdmottakerUtenPdlData.år) + + val personId = pdlService.hentPerson(barnetrygdmottakerUtenPdlData.ident) + println("%%% PERSON: $personId") + + val barnetrygdmottaker = barnetrygdmottakerUtenPdlData.withPerson(personId) + + val barnetrygdResponse = hentBarnetrygd(personId, filter) + + val barnetrygdRådata = barnetrygdResponse.map { it.rådataFraKilde } + + val persongrunnlag = barnetrygdResponse.map { + getPersongrunnlag(it) + } + + val hjelpestønadGrunnlag = persongrunnlag.map { + hentHjelpestønadGrunnlag(it, filter) + } + val hjelpestønadPersongrunnlag = hjelpestønadGrunnlag.flatMap { + it.map { it.first } + } + val hjelpestønadRådata = hjelpestønadGrunnlag.flatMap { + it.flatMap { it.second } + } + + val rådata = Rådata(barnetrygdRådata + hjelpestønadRådata) + + val komplettert = KomplettertBarnetrygdMottaker( + barnetrygdmottaker = barnetrygdmottaker, + rådata = rådata, + hjelpestønadPersongrunnlag = hjelpestønadPersongrunnlag, + ) + return komplettert + } + + private fun hentHjelpestønadGrunnlag( + persongrunnlag: List, + filter: GyldigÅrsintervallFilter + ): List>> { + return persongrunnlag.map { persongrunnlagMedHjelpestønader(it, filter) } + } + + private fun hentBarnetrygd( + personId: PersonId, + filter: GyldigÅrsintervallFilter + ): List { + return personId.historiske.map { fnr -> + client.hentBarnetrygd( + ident = fnr, + filter = filter, + ) + } + } + + private fun persongrunnlagMedHjelpestønader( + persongrunnlag: PersongrunnlagMelding.Persongrunnlag, + filter: GyldigÅrsintervallFilter, + ): Pair> { + val hjelpestønad = hjelpestønadService.hentHjelpestønad( + omsorgsmottakere = persongrunnlag.hentOmsorgsmottakere(), + filter = filter + ) + val hjelpestønadRådata = hjelpestønad.map { it.second } + val hjelpestønadsperioder = hjelpestønad.flatMap { it.first } + return Pair(persongrunnlag.medHjelpestønadPerioder(hjelpestønadsperioder), hjelpestønadRådata) + } + + private fun getPersongrunnlag(barnetrygdResponse: HentBarnetrygdResponse) = + barnetrygdResponse.barnetrygdsaker + .groupBy { it.omsorgsyter } + .map { it.value.single() } + + + data class KomplettertBarnetrygdMottaker( + val barnetrygdmottaker: Barnetrygdmottaker.Mottatt, + val rådata: Rådata, + val hjelpestønadPersongrunnlag: List, + ) +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerService.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerService.kt index 967f847..2d806fe 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerService.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerService.kt @@ -28,9 +28,8 @@ class BarnetrygdmottakerService( private val barnetrygdmottakerRepository: BarnetrygdmottakerRepository, private val kafkaProducer: KafkaTemplate, private val transactionTemplate: TransactionTemplate, - private val hjelpestønadService: HjelpestønadService, private val barnetrygdInnlesingRepository: BarnetrygdInnlesingRepository, - private val pdlService: PdlService, + private val barnetrygdmottakerKompletteringsService: BarnetrygdmottakerKompletteringsService, @Value("\${OMSORGSOPPTJENING_TOPIC}") val omsorgsopptjeningTopic: String ) { companion object { @@ -76,7 +75,7 @@ class BarnetrygdmottakerService( } } - private fun prosesserMottattBarnetrygmottaker( + protected fun prosesserMottattBarnetrygmottaker( barnetrygdmottaker: Barnetrygdmottaker.Mottatt ): Barnetrygdmottaker.Mottatt? { return try { @@ -84,45 +83,18 @@ class BarnetrygdmottakerService( transactionTemplate.execute { barnetrygdmottaker.ferdig().also { barnetrygdmottakerUtenPdlData -> - val filter = GyldigÅrsintervallFilter(barnetrygdmottakerUtenPdlData.år) - - val personId = pdlService.hentPerson(barnetrygdmottaker.ident) - // temporary -// val personId = PersonId(barnetrygdmottakerUtenPdlData.ident, setOf(barnetrygdmottakerUtenPdlData.ident)) - println("%%% PERSON: $personId") - - val barnetrygdmottaker = barnetrygdmottakerUtenPdlData.withPerson(personId) - - val barnetrygdResponse = hentBarnetrygd(personId, filter) - - val barnetrygdRådata = barnetrygdResponse.map { it.rådataFraKilde } - - val persongrunnlag = barnetrygdResponse.map { - getPersongrunnlag(it) - } - - val hjelpestønadGrunnlag = persongrunnlag.map { - hentHjelpestønadGrunnlag(it, filter) - } - val hjelpestønadPersongrunnlag = hjelpestønadGrunnlag.flatMap { - it.map { it.first } - } - val hjelpestønadRådata = hjelpestønadGrunnlag.flatMap { - it.flatMap { it.second } - } - - val rådata = Rådata(barnetrygdRådata + hjelpestønadRådata) + val komplettert = barnetrygdmottakerKompletteringsService.kompletter(barnetrygdmottakerUtenPdlData) kafkaProducer.send( createKafkaMessage( - barnetrygdmottaker = barnetrygdmottaker, - persongrunnlag = hjelpestønadPersongrunnlag, - rådata = rådata, + barnetrygdmottaker = komplettert.barnetrygdmottaker, + persongrunnlag = komplettert.hjelpestønadPersongrunnlag, + rådata = komplettert.rådata, ) ).get() - barnetrygdmottakerRepository.updatePersonIdent(barnetrygdmottaker) - barnetrygdmottakerRepository.updateStatus(barnetrygdmottaker) + barnetrygdmottakerRepository.updatePersonIdent(komplettert.barnetrygdmottaker) + barnetrygdmottakerRepository.updateStatus(komplettert.barnetrygdmottaker) log.info("Melding prosessert") } @@ -153,44 +125,6 @@ class BarnetrygdmottakerService( } } - private fun hentHjelpestønadGrunnlag( - persongrunnlag: List, - filter: GyldigÅrsintervallFilter - ): List>> { - return persongrunnlag.map { persongrunnlagMedHjelpestønader(it, filter) } - } - - private fun hentBarnetrygd( -// barnetrygdmottaker: Barnetrygdmottaker.Mottatt, - personId: PersonId, - filter: GyldigÅrsintervallFilter - ): List { - return personId.historiske.map { fnr -> - client.hentBarnetrygd( - ident = fnr, - filter = filter, - ) - } - } - - private fun persongrunnlagMedHjelpestønader( - persongrunnlag: PersongrunnlagMelding.Persongrunnlag, - filter: GyldigÅrsintervallFilter, - ): Pair> { - val hjelpestønad = hjelpestønadService.hentHjelpestønad( - // persongrunnlag = persongrunnlag, - omsorgsmottakere = persongrunnlag.hentOmsorgsmottakere(), - filter = filter - ) - val hjelpestønadRådata = hjelpestønad.map { it.second } - val hjelpestønadsperioder = hjelpestønad.flatMap { it.first } - return Pair(persongrunnlag.medHjelpestønadPerioder(hjelpestønadsperioder), hjelpestønadRådata) - } - - private fun getPersongrunnlag(barnetrygdResponse: HentBarnetrygdResponse) = - barnetrygdResponse.barnetrygdsaker - .groupBy { it.omsorgsyter } - .map { it.value.single() } private fun createKafkaMessage( barnetrygdmottaker: Barnetrygdmottaker, diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerServiceTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerServiceTest.kt index 7de7164..d123888 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerServiceTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/start/innlesning/barnetrygd/domain/BarnetrygdmottakerServiceTest.kt @@ -170,7 +170,6 @@ class BarnetrygdmottakerServiceTest : SpringContextTest.NoKafka() { ) ) ) - wiremock.`hent hjelpestønad ok - ingen hjelpestønad`() assertInstanceOf( @@ -240,7 +239,6 @@ class BarnetrygdmottakerServiceTest : SpringContextTest.NoKafka() { } } - @Test fun `oppdaterer status på flere meldinger der det kastes exception for alle`() { wiremock.`pdl fnr fra query`()