Skip to content

Commit

Permalink
ekstraherte en ny service fra BanretrygdmottakerService
Browse files Browse the repository at this point in the history
  • Loading branch information
jankroken-nav committed Oct 14, 2024
1 parent 4b6bfa1 commit a8b75d7
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 76 deletions.
Original file line number Diff line number Diff line change
@@ -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<PersongrunnlagMelding.Persongrunnlag>,
filter: GyldigÅrsintervallFilter
): List<Pair<PersongrunnlagMelding.Persongrunnlag, List<RådataFraKilde>>> {
return persongrunnlag.map { persongrunnlagMedHjelpestønader(it, filter) }
}

private fun hentBarnetrygd(
personId: PersonId,
filter: GyldigÅrsintervallFilter
): List<HentBarnetrygdResponse> {
return personId.historiske.map { fnr ->
client.hentBarnetrygd(
ident = fnr,
filter = filter,
)
}
}

private fun persongrunnlagMedHjelpestønader(
persongrunnlag: PersongrunnlagMelding.Persongrunnlag,
filter: GyldigÅrsintervallFilter,
): Pair<PersongrunnlagMelding.Persongrunnlag, List<RådataFraKilde>> {
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,
valdata: Rådata,
val hjelpestønadPersongrunnlag: List<PersongrunnlagMelding.Persongrunnlag>,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,8 @@ class BarnetrygdmottakerService(
private val barnetrygdmottakerRepository: BarnetrygdmottakerRepository,
private val kafkaProducer: KafkaTemplate<String, String>,
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 {
Expand Down Expand Up @@ -76,53 +75,26 @@ class BarnetrygdmottakerService(
}
}

private fun prosesserMottattBarnetrygmottaker(
protected fun prosesserMottattBarnetrygmottaker(
barnetrygdmottaker: Barnetrygdmottaker.Mottatt
): Barnetrygdmottaker.Mottatt? {
return try {
log.info("Start prosessering")
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")
}
Expand Down Expand Up @@ -153,44 +125,6 @@ class BarnetrygdmottakerService(
}
}

private fun hentHjelpestønadGrunnlag(
persongrunnlag: List<PersongrunnlagMelding.Persongrunnlag>,
filter: GyldigÅrsintervallFilter
): List<Pair<PersongrunnlagMelding.Persongrunnlag, List<RådataFraKilde>>> {
return persongrunnlag.map { persongrunnlagMedHjelpestønader(it, filter) }
}

private fun hentBarnetrygd(
// barnetrygdmottaker: Barnetrygdmottaker.Mottatt,
personId: PersonId,
filter: GyldigÅrsintervallFilter
): List<HentBarnetrygdResponse> {
return personId.historiske.map { fnr ->
client.hentBarnetrygd(
ident = fnr,
filter = filter,
)
}
}

private fun persongrunnlagMedHjelpestønader(
persongrunnlag: PersongrunnlagMelding.Persongrunnlag,
filter: GyldigÅrsintervallFilter,
): Pair<PersongrunnlagMelding.Persongrunnlag, List<RådataFraKilde>> {
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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ class BarnetrygdmottakerServiceTest : SpringContextTest.NoKafka() {
)
)
)

wiremock.`hent hjelpestønad ok - ingen hjelpestønad`()

assertInstanceOf(
Expand Down Expand Up @@ -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`()
Expand Down

0 comments on commit a8b75d7

Please sign in to comment.