Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/en oppgave per behandling #10

Merged
merged 3 commits into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oppgave.model

internal data object FlereOppgaveteksterFormatter {
fun format(oppgavetekster: Set<String>): String {
return oppgavetekster.joinToString(separator = "\n\n")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ sealed class Oppgave {
abstract val meldingId: UUID
abstract val statushistorikk: List<Status>

val status get() = statushistorikk.last()
val mottaker get() = detaljer.mottaker()
val oppgavetekst get() = detaljer.oppgavetekst()
val status: Status get() = statushistorikk.last()
val mottaker: String get() = detaljer.mottaker()
val oppgavetekst: Set<String> get() = detaljer.oppgavetekst()

companion object Oppgavetekster {
fun flereOmsorgsytereMedLikeMyeOmsorgFødselsår(omsorgsmottaker: String): String =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@ import com.fasterxml.jackson.annotation.JsonTypeName
sealed class OppgaveDetaljer {

abstract fun mottaker(): String
abstract fun oppgavetekst(): String
abstract fun oppgavetekst(): Set<String>

@JsonTypeName("MottakerOgTekst")
data class MottakerOgTekst(
val oppgavemottaker: String,
val oppgavetekst: String,
val oppgavetekst: Set<String>,
) : OppgaveDetaljer() {
override fun mottaker(): String {
return oppgavemottaker
}

override fun oppgavetekst(): String {
override fun oppgavetekst(): Set<String> {
return oppgavetekst
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,42 +41,41 @@ 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<Oppgaveopplysninger.Generell>()
.filterNot { oppgaveopplysning -> oppgavemottakerHarOppgaveForÅr(oppgaveopplysning) }
.groupBy { it.oppgavemottaker }
.mapValues { o -> o.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 ->
Expand All @@ -92,7 +91,8 @@ class OppgaveService(
oppgaveKlient.opprettOppgave(
aktoerId = aktørId,
sakId = omsorgssak.sakId,
beskrivelse = oppgave.oppgavetekst,
// TODO: Skal ikke kunne være tom
beskrivelse = FlereOppgaveteksterFormatter.format(oppgave.oppgavetekst),
tildeltEnhetsnr = omsorgssak.enhet
).let { oppgaveId ->
oppgave.ferdig(oppgaveId).also {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ object StatusServiceTest {
"behandlingId" to id,
"opprettet" to opprettet.toString(),
"meldingId" to mottatt.id,
"detaljer" to """{"type":"MottakerOgTekst", "oppgavemottaker":"12345123451", "oppgavetekst":"blah blah"}"""
"detaljer" to """{"type":"MottakerOgTekst", "oppgavemottaker":"12345123451", "oppgavetekst":["blah blah", "blah"]}"""
),
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oppgave.model

import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test

class FlereOppgaveteksterFormatterTest {
@Test
fun `legg på whitespace mellom hver distinkte tekst`() {
assertThat(
FlereOppgaveteksterFormatter.format(
setOf(
"oppgavetekst 1",
"oppgavetekst 2",
"oppgavetekst 3",
)
)
).isEqualTo(
"""
oppgavetekst 1

oppgavetekst 2

oppgavetekst 3
""".trimIndent()
)
}

@Test
fun `ingen tekster blir tomt`() {
assertThat(
FlereOppgaveteksterFormatter.format(
emptySet()
)
).isEqualTo("")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.""")
)
)
}
Expand Down Expand Up @@ -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.""")
)
)
}
Expand Down Expand Up @@ -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.""")
)
)
}
Expand Down Expand Up @@ -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.""")
)
)
}
Expand Down Expand Up @@ -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.""")
)
)
}
Expand Down Expand Up @@ -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.""")
)
)
}
Expand All @@ -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.""")
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down