Skip to content

Commit 3db670a

Browse files
authored
Frikobler fagsak og behandling fra eksternIder då EmbeddedCollection ikke helt virker i spring 3.2.0 (#128)
1 parent 335934a commit 3db670a

25 files changed

+196
-137
lines changed

src/main/kotlin/no/nav/tilleggsstonader/sak/behandling/BehandlingService.kt

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import no.nav.tilleggsstonader.sak.behandling.domain.BehandlingType
1515
import no.nav.tilleggsstonader.sak.behandling.domain.Behandlingsjournalpost
1616
import no.nav.tilleggsstonader.sak.behandling.domain.BehandlingsjournalpostRepository
1717
import no.nav.tilleggsstonader.sak.behandling.domain.BehandlingÅrsak
18+
import no.nav.tilleggsstonader.sak.behandling.domain.EksternBehandlingId
19+
import no.nav.tilleggsstonader.sak.behandling.domain.EksternBehandlingIdRepository
1820
import no.nav.tilleggsstonader.sak.behandling.domain.Journalposttype
1921
import no.nav.tilleggsstonader.sak.behandling.domain.Saksbehandling
2022
import no.nav.tilleggsstonader.sak.behandling.dto.HenlagtDto
@@ -42,6 +44,7 @@ import java.util.UUID
4244
class BehandlingService(
4345
private val behandlingsjournalpostRepository: BehandlingsjournalpostRepository,
4446
private val behandlingRepository: BehandlingRepository,
47+
private val eksternBehandlingIdRepository: EksternBehandlingIdRepository,
4548
private val behandlingshistorikkService: BehandlingshistorikkService,
4649
// private val taskService: TaskService,
4750
) {
@@ -132,6 +135,7 @@ class BehandlingService(
132135
kategori = BehandlingKategori.NASJONAL,
133136
),
134137
)
138+
eksternBehandlingIdRepository.insert(EksternBehandlingId(behandlingId = behandling.id))
135139

136140
behandlingshistorikkService.opprettHistorikkInnslag(
137141
behandlingshistorikk = Behandlingshistorikk(

src/main/kotlin/no/nav/tilleggsstonader/sak/behandling/domain/Behandling.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import no.nav.tilleggsstonader.sak.infrastruktur.exception.brukerfeilHvis
66
import org.springframework.data.annotation.Id
77
import org.springframework.data.relational.core.mapping.Column
88
import org.springframework.data.relational.core.mapping.Embedded
9-
import org.springframework.data.relational.core.mapping.MappedCollection
109
import org.springframework.data.relational.core.mapping.Table
1110
import java.time.LocalDate
1211
import java.time.LocalDateTime
@@ -20,8 +19,6 @@ data class Behandling(
2019
val id: UUID = UUID.randomUUID(),
2120
val fagsakId: UUID,
2221
val forrigeBehandlingId: UUID? = null,
23-
@MappedCollection(idColumn = "behandling_id")
24-
val eksternId: EksternBehandlingId = EksternBehandlingId(),
2522
// @Version ?
2623
val versjon: Int = 0,
2724

@@ -111,4 +108,5 @@ enum class BehandlingStatus {
111108
data class EksternBehandlingId(
112109
@Id
113110
val id: Long = 0,
111+
val behandlingId: UUID,
114112
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package no.nav.tilleggsstonader.sak.behandling.domain
2+
3+
import no.nav.tilleggsstonader.sak.infrastruktur.database.repository.InsertUpdateRepository
4+
import no.nav.tilleggsstonader.sak.infrastruktur.database.repository.RepositoryInterface
5+
import org.springframework.stereotype.Repository
6+
import java.util.UUID
7+
8+
@Repository
9+
interface EksternBehandlingIdRepository :
10+
RepositoryInterface<EksternBehandlingId, Long>,
11+
InsertUpdateRepository<EksternBehandlingId> {
12+
13+
fun findByBehandlingId(behandlingId: UUID): EksternBehandlingId
14+
}

src/main/kotlin/no/nav/tilleggsstonader/sak/fagsak/FagsakService.kt

+14-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ import no.nav.tilleggsstonader.kontrakter.felles.Stønadstype
44
import no.nav.tilleggsstonader.sak.behandling.BehandlingService
55
import no.nav.tilleggsstonader.sak.behandling.domain.Behandling
66
import no.nav.tilleggsstonader.sak.behandling.dto.tilDto
7+
import no.nav.tilleggsstonader.sak.fagsak.domain.EksternFagsakId
8+
import no.nav.tilleggsstonader.sak.fagsak.domain.EksternFagsakIdRepository
79
import no.nav.tilleggsstonader.sak.fagsak.domain.Fagsak
810
import no.nav.tilleggsstonader.sak.fagsak.domain.FagsakDomain
911
import no.nav.tilleggsstonader.sak.fagsak.domain.FagsakPerson
1012
import no.nav.tilleggsstonader.sak.fagsak.domain.FagsakPersonService
1113
import no.nav.tilleggsstonader.sak.fagsak.domain.FagsakRepository
1214
import no.nav.tilleggsstonader.sak.fagsak.domain.Fagsaker
15+
import no.nav.tilleggsstonader.sak.fagsak.domain.PersonIdent
1316
import no.nav.tilleggsstonader.sak.fagsak.domain.tilFagsakMedPerson
1417
import no.nav.tilleggsstonader.sak.fagsak.dto.FagsakDto
1518
import no.nav.tilleggsstonader.sak.fagsak.dto.tilDto
@@ -27,6 +30,7 @@ import java.util.UUID
2730
class FagsakService(
2831
private val fagsakPersonService: FagsakPersonService,
2932
private val fagsakRepository: FagsakRepository,
33+
private val eksternFagsakIdRepository: EksternFagsakIdRepository,
3034
private val personService: PersonService,
3135
private val behandlingService: BehandlingService,
3236
) {
@@ -119,7 +123,7 @@ class FagsakService(
119123
?: throw Feil("Finner ikke fagsak til behandlingId=$behandlingId")
120124
}
121125

122-
fun hentEksternId(fagsakId: UUID): Long = fagsakRepository.findByIdOrThrow(fagsakId).eksternId.id
126+
fun hentEksternId(fagsakId: UUID): Long = eksternFagsakIdRepository.findByFagsakId(fagsakId).id
123127

124128
fun hentFagsakPåEksternId(eksternFagsakId: Long): Fagsak =
125129
fagsakRepository.finnMedEksternId(eksternFagsakId)
@@ -150,16 +154,23 @@ class FagsakService(
150154
}
151155

152156
private fun opprettFagsak(stønadstype: Stønadstype, fagsakPerson: FagsakPerson): FagsakDomain {
153-
return fagsakRepository.insert(
157+
val fagsak = fagsakRepository.insert(
154158
FagsakDomain(
155159
stønadstype = stønadstype,
156160
fagsakPersonId = fagsakPerson.id,
157161
),
158162
)
163+
eksternFagsakIdRepository.insert(EksternFagsakId(fagsakId = fagsak.id))
164+
return fagsak
159165
}
160166

161-
fun FagsakDomain.tilFagsakMedPerson(): Fagsak {
167+
private fun FagsakDomain.tilFagsakMedPerson(): Fagsak {
162168
val personIdenter = fagsakPersonService.hentIdenter(this.fagsakPersonId)
163169
return this.tilFagsakMedPerson(personIdenter)
164170
}
171+
172+
private fun FagsakDomain.tilFagsakMedPerson(personIdenter: Set<PersonIdent>): Fagsak {
173+
val eksternId = eksternFagsakIdRepository.findByFagsakId(this.id)
174+
return this.tilFagsakMedPerson(personIdenter, eksternId)
175+
}
165176
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package no.nav.tilleggsstonader.sak.fagsak.domain
2+
3+
import no.nav.tilleggsstonader.sak.infrastruktur.database.repository.InsertUpdateRepository
4+
import no.nav.tilleggsstonader.sak.infrastruktur.database.repository.RepositoryInterface
5+
import org.springframework.stereotype.Repository
6+
import java.util.UUID
7+
8+
@Repository
9+
interface EksternFagsakIdRepository : RepositoryInterface<EksternFagsakId, Long>, InsertUpdateRepository<EksternFagsakId> {
10+
11+
fun findByFagsakId(fagsakId: UUID): EksternFagsakId
12+
}

src/main/kotlin/no/nav/tilleggsstonader/sak/fagsak/domain/Fagsak.kt

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import no.nav.tilleggsstonader.sak.infrastruktur.database.Sporbar
55
import org.springframework.data.annotation.Id
66
import org.springframework.data.relational.core.mapping.Column
77
import org.springframework.data.relational.core.mapping.Embedded
8-
import org.springframework.data.relational.core.mapping.MappedCollection
98
import org.springframework.data.relational.core.mapping.Table
109
import java.util.UUID
1110

@@ -35,8 +34,6 @@ data class FagsakDomain(
3534
@Id
3635
val id: UUID = UUID.randomUUID(),
3736
val fagsakPersonId: UUID,
38-
@MappedCollection(idColumn = "fagsak_id")
39-
val eksternId: EksternFagsakId = EksternFagsakId(),
4037
@Column("stonadstype")
4138
val stønadstype: Stønadstype,
4239
@Embedded(onEmpty = Embedded.OnEmpty.USE_EMPTY)
@@ -47,14 +44,15 @@ data class FagsakDomain(
4744
data class EksternFagsakId(
4845
@Id
4946
val id: Long = 0,
47+
val fagsakId: UUID,
5048
)
5149

52-
fun FagsakDomain.tilFagsakMedPerson(personIdenter: Set<PersonIdent>): Fagsak =
50+
fun FagsakDomain.tilFagsakMedPerson(personIdenter: Set<PersonIdent>, eksternFagsakId: EksternFagsakId): Fagsak =
5351
Fagsak(
5452
id = id,
5553
fagsakPersonId = fagsakPersonId,
5654
personIdenter = personIdenter,
57-
eksternId = eksternId,
55+
eksternId = eksternFagsakId,
5856
stønadstype = stønadstype,
5957
sporbar = sporbar,
6058
)

src/test/kotlin/no/nav/tilleggsstonader/sak/behandling/BehandlingControllerTest.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ internal class BehandlingControllerTest : IntegrationTest() {
3636
@Test
3737
internal fun `Skal returnere 403 dersom man ikke har tilgang til brukeren`() {
3838
val fagsak = testoppsettService.lagreFagsak(fagsak(identer = setOf(PersonIdent("ikkeTilgang"))))
39-
val behandling = behandlingRepository.insert(behandling(fagsak))
39+
val behandling = testoppsettService.lagre(behandling(fagsak))
4040
val respons = catchThrowableOfType<HttpClientErrorException.Forbidden> { hentBehandling(behandling.id) }
4141

4242
assertThat(respons.statusCode).isEqualTo(HttpStatus.FORBIDDEN)
@@ -45,7 +45,7 @@ internal class BehandlingControllerTest : IntegrationTest() {
4545
@Test
4646
internal fun `Skal henlegge behandling`() {
4747
val fagsak = testoppsettService.lagreFagsak(fagsak(identer = setOf(PersonIdent("12345678901"))))
48-
val behandling = behandlingRepository.insert(behandling(fagsak, type = BehandlingType.FØRSTEGANGSBEHANDLING))
48+
val behandling = testoppsettService.lagre(behandling(fagsak, type = BehandlingType.FØRSTEGANGSBEHANDLING))
4949
val respons = henlegg(behandling.id, HenlagtDto(årsak = HenlagtÅrsak.FEILREGISTRERT))
5050

5151
assertThat(respons.statusCode).isEqualTo(HttpStatus.OK)
@@ -56,7 +56,7 @@ internal class BehandlingControllerTest : IntegrationTest() {
5656
@Test
5757
internal fun `Skal henlegge FØRSTEGANGSBEHANDLING`() {
5858
val fagsak = testoppsettService.lagreFagsak(fagsak(identer = setOf(PersonIdent("12345678901"))))
59-
val behandling = behandlingRepository.insert(behandling(fagsak, type = BehandlingType.FØRSTEGANGSBEHANDLING))
59+
val behandling = testoppsettService.lagre(behandling(fagsak, type = BehandlingType.FØRSTEGANGSBEHANDLING))
6060
val respons = henlegg(behandling.id, HenlagtDto(årsak = HenlagtÅrsak.FEILREGISTRERT))
6161

6262
assertThat(respons.statusCode).isEqualTo(HttpStatus.OK)

src/test/kotlin/no/nav/tilleggsstonader/sak/behandling/BehandlingServiceIntegrationTest.kt

+17-17
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
2727
@Test
2828
internal fun `opprettBehandling skal ikke være mulig å opprette en revurdering om forrige behandling ikke er ferdigstilt`() {
2929
val fagsak = testoppsettService.lagreFagsak(fagsak())
30-
behandlingRepository.insert(
30+
testoppsettService.lagre(
3131
behandling(
3232
fagsak = fagsak,
3333
status = BehandlingStatus.UTREDES,
@@ -64,16 +64,16 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
6464
@Test
6565
internal fun `hentBehandlinger - skal returnere behandlinger`() {
6666
val fagsak = testoppsettService.lagreFagsak(fagsak())
67-
val behandling = behandlingRepository.insert(behandling(fagsak, status = BehandlingStatus.FERDIGSTILT))
68-
val behandling2 = behandlingRepository.insert(behandling(fagsak))
67+
val behandling = testoppsettService.lagre(behandling(fagsak, status = BehandlingStatus.FERDIGSTILT))
68+
val behandling2 = testoppsettService.lagre(behandling(fagsak))
6969

7070
assertThat(behandlingService.hentBehandlinger(setOf(behandling.id, behandling2.id))).hasSize(2)
7171
}
7272

7373
@Test
7474
internal fun `skal finne siste behandling med avslåtte hvis kun avslått`() {
7575
val fagsak = testoppsettService.lagreFagsak(fagsak())
76-
val behandling = behandlingRepository.insert(
76+
val behandling = testoppsettService.lagre(
7777
behandling(fagsak, resultat = BehandlingResultat.AVSLÅTT, status = BehandlingStatus.FERDIGSTILT),
7878
)
7979
val sisteBehandling = behandlingService.finnSisteIverksatteBehandlingMedEventuellAvslått(fagsak.id)
@@ -83,10 +83,10 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
8383
@Test
8484
internal fun `skal finne siste behandling med avslåtte hvis avslått og henlagt`() {
8585
val fagsak = testoppsettService.lagreFagsak(fagsak())
86-
val avslag = behandlingRepository.insert(
86+
val avslag = testoppsettService.lagre(
8787
behandling(fagsak, resultat = BehandlingResultat.AVSLÅTT, status = BehandlingStatus.FERDIGSTILT),
8888
)
89-
behandlingRepository.insert(
89+
testoppsettService.lagre(
9090
behandling(fagsak, resultat = BehandlingResultat.HENLAGT, status = BehandlingStatus.FERDIGSTILT),
9191
)
9292
val sisteBehandling = behandlingService.finnSisteIverksatteBehandlingMedEventuellAvslått(fagsak.id)
@@ -96,13 +96,13 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
9696
@Test
9797
internal fun `skal plukke ut førstegangsbehandling hvis det finnes førstegangsbehandling, avslått og henlagt`() {
9898
val fagsak = testoppsettService.lagreFagsak(fagsak())
99-
val førstegang = behandlingRepository.insert(
99+
val førstegang = testoppsettService.lagre(
100100
behandling(fagsak, resultat = BehandlingResultat.INNVILGET, status = BehandlingStatus.FERDIGSTILT),
101101
)
102-
behandlingRepository.insert(
102+
testoppsettService.lagre(
103103
behandling(fagsak, resultat = BehandlingResultat.AVSLÅTT, status = BehandlingStatus.FERDIGSTILT),
104104
)
105-
behandlingRepository.insert(
105+
testoppsettService.lagre(
106106
behandling(fagsak, resultat = BehandlingResultat.HENLAGT, status = BehandlingStatus.FERDIGSTILT),
107107
)
108108
val sisteBehandling = behandlingService.finnSisteIverksatteBehandlingMedEventuellAvslått(fagsak.id)
@@ -132,16 +132,16 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
132132
),
133133
)
134134
135-
behandlingRepository.insert(
135+
testoppsettService.lagre(
136136
behandling(fagsakOs, resultat = BehandlingResultat.HENLAGT, status = BehandlingStatus.FERDIGSTILT),
137137
)
138-
val førstegangBt = behandlingRepository.insert(
138+
val førstegangBt = testoppsettService.lagre(
139139
behandling(fagsakBt, resultat = BehandlingResultat.INNVILGET, status = BehandlingStatus.FERDIGSTILT),
140140
)
141-
val førstegangSp = behandlingRepository.insert(
141+
val førstegangSp = testoppsettService.lagre(
142142
behandling(fagsakSp, resultat = BehandlingResultat.INNVILGET, status = BehandlingStatus.FERDIGSTILT),
143143
)
144-
val revurderingUnderArbeidSP = behandlingRepository.insert(
144+
val revurderingUnderArbeidSP = testoppsettService.lagre(
145145
behandling(fagsakSp, resultat = BehandlingResultat.IKKE_SATT, status = BehandlingStatus.UTREDES),
146146
)
147147
@@ -156,7 +156,7 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
156156
@Test
157157
internal fun `opprettBehandling av førstegangsbehandling er ikke mulig hvis det finnes en førstegangsbehandling på vent`() {
158158
val fagsak = testoppsettService.lagreFagsak(fagsak())
159-
behandlingRepository.insert(behandling(fagsak, BehandlingStatus.SATT_PÅ_VENT))
159+
testoppsettService.lagre(behandling(fagsak, BehandlingStatus.SATT_PÅ_VENT))
160160
assertThatThrownBy {
161161
behandlingService.opprettBehandling(
162162
BehandlingType.FØRSTEGANGSBEHANDLING,
@@ -169,7 +169,7 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
169169
@Test
170170
internal fun `opprettBehandling av revurdering er ikke mulig hvis det finnes en førstegangsbehandling på vent`() {
171171
val fagsak = testoppsettService.lagreFagsak(fagsak())
172-
behandlingRepository.insert(behandling(fagsak, BehandlingStatus.SATT_PÅ_VENT))
172+
testoppsettService.lagre(behandling(fagsak, BehandlingStatus.SATT_PÅ_VENT))
173173
assertThatThrownBy {
174174
behandlingService.opprettBehandling(
175175
BehandlingType.REVURDERING,
@@ -182,8 +182,8 @@ internal class BehandlingServiceIntegrationTest : IntegrationTest() {
182182
@Test
183183
internal fun `opprettBehandling er mulig hvis det finnes en revurdering på vent`() {
184184
val fagsak = testoppsettService.lagreFagsak(fagsak())
185-
behandlingRepository.insert(behandling(fagsak, BehandlingStatus.FERDIGSTILT))
186-
behandlingRepository.insert(
185+
testoppsettService.lagre(behandling(fagsak, BehandlingStatus.FERDIGSTILT))
186+
testoppsettService.lagre(
187187
behandling(fagsak, BehandlingStatus.SATT_PÅ_VENT, type = BehandlingType.REVURDERING),
188188
)
189189
behandlingService.opprettBehandling(

src/test/kotlin/no/nav/tilleggsstonader/sak/behandling/BehandlingServiceTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ internal class BehandlingServiceTest {
5050
BehandlingService(
5151
mockk(),
5252
behandlingRepository,
53+
mockk(),
5354
behandlingshistorikkService,
5455
// taskService,
5556
)

0 commit comments

Comments
 (0)