diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjening.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjening.kt index fee179ab..1c4cb811 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjening.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjening.kt @@ -49,7 +49,7 @@ sealed class GodskrivOpptjening { Oppgave.Transient( detaljer = OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = omsorgsyter, - oppgavetekst = Oppgave.kunneIkkeBehandlesAutomatisk() + oppgavetekst = setOf(Oppgave.kunneIkkeBehandlesAutomatisk()) ), behandlingId = behandlingId, meldingId = meldingId, diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt index d1cd73d9..e718c596 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt @@ -16,7 +16,7 @@ sealed class Oppgave { val status get() = statushistorikk.last() val mottaker get() = detaljer.mottaker() - val oppgavetekst get() = detaljer.oppgavetekst() + val oppgavetekst : Set get() = detaljer.oppgavetekst().toSet() companion object Oppgavetekster { fun flereOmsorgsytereMedLikeMyeOmsorgFødselsår(omsorgsmottaker: String): String = diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveDetaljer.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveDetaljer.kt index 12ad01fc..79886af3 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveDetaljer.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveDetaljer.kt @@ -2,6 +2,8 @@ package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.op import com.fasterxml.jackson.annotation.JsonTypeInfo import com.fasterxml.jackson.annotation.JsonTypeName +import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import com.fasterxml.jackson.databind.annotation.JsonSerialize @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, @@ -11,18 +13,21 @@ import com.fasterxml.jackson.annotation.JsonTypeName sealed class OppgaveDetaljer { abstract fun mottaker(): String - abstract fun oppgavetekst(): String + abstract fun oppgavetekst(): Set @JsonTypeName("MottakerOgTekst") data class MottakerOgTekst( val oppgavemottaker: String, - val oppgavetekst: String, + val oppgavetekst: Set, ) : OppgaveDetaljer() { override fun mottaker(): String { return oppgavemottaker } - override fun oppgavetekst(): String { + // TODO: Fikse serialiseringen + @JsonDeserialize(`as` = Set::class) + @JsonSerialize(`as` = Set::class) + override fun oppgavetekst(): Set { return oppgavetekst } } diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveService.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveService.kt index 715a110b..6cb62129 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveService.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveService.kt @@ -41,48 +41,48 @@ class OppgaveService( @Transactional(rollbackFor = [Throwable::class], propagation = Propagation.REQUIRED) fun opprettOppgaveHvisNødvendig(behandling: FullførtBehandling) { - behandling.hentOppgaveopplysninger().map { oppgaveopplysning -> - //TODO legg alle oppgavetekster for den samme behandlingen i en og samme oppgave - when (oppgaveopplysning) { - is Oppgaveopplysninger.Generell -> { - val oppgavemottakerHarOppgaveForÅr = - oppgaveEksistererForOmsorgsyterOgÅr( - oppgaveopplysning.oppgavemottaker, - behandling.omsorgsAr - ) - val omsorgsMottakerHarOppgaveForÅr = - oppgaveEksistererForOmsorgsmottakerOgÅr( - behandling.omsorgsmottaker, - behandling.omsorgsAr - ) + val omsorgsMottakerHarOppgaveForÅr = + oppgaveEksistererForOmsorgsmottakerOgÅr( + behandling.omsorgsmottaker, + behandling.omsorgsAr + ) - if (!oppgavemottakerHarOppgaveForÅr && !omsorgsMottakerHarOppgaveForÅr) { - opprett( - Oppgave.Transient( - behandlingId = behandling.id, - meldingId = behandling.meldingId, - detaljer = OppgaveDetaljer.MottakerOgTekst( - oppgavemottaker = oppgaveopplysning.oppgavemottaker, - oppgavetekst = oppgaveopplysning.oppgaveTekst - ) + fun oppgavemottakerHarOppgaveForÅr(oppgaveopplysning: Oppgaveopplysninger.Generell): Boolean { + return oppgaveEksistererForOmsorgsyterOgÅr( + oppgaveopplysning.oppgavemottaker, + behandling.omsorgsAr + ) + } + if (!omsorgsMottakerHarOppgaveForÅr) { + behandling.hentOppgaveopplysninger() + .filterIsInstance() + .filter { oppgaveopplysning -> oppgavemottakerHarOppgaveForÅr(oppgaveopplysning) } + .groupBy { it.oppgavemottaker } + .mapValues { it.value.map { it.oppgaveTekst }.toSet() } + .forEach { (oppgavemottaker, oppgaveTekster) -> + //TODO legg alle oppgavetekster for den samme behandlingen i en og samme oppgave + opprett( + Oppgave.Transient( + behandlingId = behandling.id, + meldingId = behandling.meldingId, + detaljer = OppgaveDetaljer.MottakerOgTekst( + oppgavemottaker = oppgavemottaker, + oppgavetekst = oppgaveTekster ) ) - } + ) } - - Oppgaveopplysninger.Ingen -> { - //noop - } - } } } + fun process(): Oppgave? { return transactionTemplate.execute { oppgaveRepo.finnNesteUprosesserte()?.let { oppgave -> Mdc.scopedMdc(oppgave.correlationId) { Mdc.scopedMdc(oppgave.innlesingId) { try { + val oppgaveTekst : Set = oppgave.oppgavetekst transactionTemplate.execute { log.info("Oppretter oppgave") personOppslag.hentAktørId(oppgave.mottaker).let { aktørId -> @@ -92,7 +92,8 @@ class OppgaveService( oppgaveKlient.opprettOppgave( aktoerId = aktørId, sakId = omsorgssak.sakId, - beskrivelse = oppgave.oppgavetekst, + // TODO: Skal ikke kunne være tom + beskrivelse = oppgaveTekst.first(), tildeltEnhetsnr = omsorgssak.enhet ).let { oppgaveId -> oppgave.ferdig(oppgaveId).also { diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMelding.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMelding.kt index 2a880616..92c5e6e9 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMelding.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMelding.kt @@ -47,7 +47,7 @@ sealed class PersongrunnlagMelding { Oppgave.Transient( detaljer = OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = innhold.omsorgsyter, - oppgavetekst = Oppgave.kunneIkkeBehandlesAutomatisk() + oppgavetekst = setOf(Oppgave.kunneIkkeBehandlesAutomatisk()) ), behandlingId = null, meldingId = id, diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjeningServiceTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjeningServiceTest.kt index 56fc8587..14d82dd0 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjeningServiceTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/godskriv/model/GodskrivOpptjeningServiceTest.kt @@ -311,7 +311,7 @@ class GodskrivOpptjeningServiceTest : SpringContextTest.NoKafka() { assertEquals( OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = behandling.omsorgsyter, - oppgavetekst = """Godskriving omsorgspoeng: Manuell behandling. Godskrivingen kunne ikke behandles av batch.""" + oppgavetekst = setOf("""Godskriving omsorgspoeng: Manuell behandling. Godskrivingen kunne ikke behandles av batch.""") ), oppgave.detaljer ) diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt index 25542d5a..c2b8cc9b 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt @@ -152,7 +152,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "04010012797", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 12345678910 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 12345678910 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -225,7 +225,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -306,7 +306,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "04010012797", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer som har mottatt barnetrygd samme år for barnet med fnr 01052012345 i barnets fødselsår. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer som har mottatt barnetrygd samme år for barnet med fnr 01052012345 i barnets fødselsår. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -370,7 +370,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -502,7 +502,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -595,7 +595,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } @@ -609,7 +609,7 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { assertEquals( oppgave.detaljer, OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""" + oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer har mottatt barnetrygd samme år for barnet under 6 år med fnr 07081812345. Den bruker som oppgaven gjelder mottok barnetrygd i minst seks måneder, og hadde barnetrygd i desember måned. Bruker med fnr 04010012797 mottok også barnetrygd for 6 måneder i samme år. Vurder hvem som skal ha omsorgspoengene.""") ) ) } diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingProsesseringTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingProsesseringTest.kt index 5bdec701..68624bfc 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingProsesseringTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingProsesseringTest.kt @@ -384,7 +384,7 @@ class PersongrunnlagMeldingProsesseringTest : SpringContextTest.NoKafka() { assertEquals( OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "12345678910", - oppgavetekst = """Godskriving omsorgspoeng: Manuell behandling. Godskrivingen kunne ikke behandles av batch.""" + oppgavetekst = setOf("""Godskriving omsorgspoeng: Manuell behandling. Godskrivingen kunne ikke behandles av batch.""") ), oppgave.detaljer )