Skip to content

Commit 5b73209

Browse files
committed
Støtte for uttalelse og svar journalpost
1 parent 9c776e6 commit 5b73209

File tree

7 files changed

+113
-11
lines changed

7 files changed

+113
-11
lines changed

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/etterlysning/EtterlysningEntitet.java

+28-1
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,22 @@
55

66
import org.hibernate.annotations.Immutable;
77

8+
import jakarta.persistence.AttributeOverride;
9+
import jakarta.persistence.AttributeOverrides;
810
import jakarta.persistence.Column;
911
import jakarta.persistence.Embedded;
1012
import jakarta.persistence.Entity;
1113
import jakarta.persistence.GeneratedValue;
1214
import jakarta.persistence.GenerationType;
1315
import jakarta.persistence.Id;
16+
import jakarta.persistence.JoinColumn;
17+
import jakarta.persistence.OneToOne;
1418
import jakarta.persistence.Table;
1519
import no.nav.ung.kodeverk.etterlysning.EtterlysningStatus;
1620
import no.nav.ung.kodeverk.etterlysning.EtterlysningType;
1721
import no.nav.ung.sak.behandlingslager.BaseEntitet;
1822
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
23+
import no.nav.ung.sak.typer.JournalpostId;
1924

2025
@Entity(name = "Etterlysning")
2126
@Table(name = "ETTERLYSNING")
@@ -50,6 +55,14 @@ public class EtterlysningEntitet extends BaseEntitet {
5055
@Column(name = "frist")
5156
private LocalDateTime frist;
5257

58+
@Embedded
59+
@AttributeOverrides(@AttributeOverride(name = "journalpostId", column = @Column(name = "svar_journalpost_id")))
60+
private JournalpostId svarJournalpostId;
61+
62+
@OneToOne
63+
@JoinColumn(name = "id", referencedColumnName = "etterlysning_id")
64+
private UttalelseEntitet uttalelse;
65+
5366
private EtterlysningEntitet() {
5467
// Hibernate
5568
}
@@ -131,10 +144,24 @@ public void skalAvbrytes() {
131144
this.status = EtterlysningStatus.SKAL_AVBRYTES;
132145
}
133146

134-
public void mottattSvar() {
147+
public void mottattSvar(JournalpostId svarJournalpostId) {
135148
if (status != EtterlysningStatus.VENTER) {
136149
throw new IllegalStateException("Kan ikke motta svar på etterlysning som ikke er satt til VENTER. Status er " + status);
137150
}
151+
this.svarJournalpostId = svarJournalpostId;
138152
this.status = EtterlysningStatus.MOTTATT_SVAR;
139153
}
154+
155+
public void mottattUttalelse(String uttalelse, JournalpostId svarJournalpostId) {
156+
mottattSvar(svarJournalpostId);
157+
this.uttalelse = new UttalelseEntitet(uttalelse, this.id);
158+
}
159+
160+
public JournalpostId getSvarJournalpostId() {
161+
return svarJournalpostId;
162+
}
163+
164+
public UttalelseEntitet getUttalelse() {
165+
return uttalelse;
166+
}
140167
}

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/etterlysning/EtterlysningRepository.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ public EtterlysningRepository(EntityManager entityManager) {
2525
}
2626

2727
public EtterlysningEntitet lagre(EtterlysningEntitet etterlysning) {
28+
if (etterlysning.getUttalelse() != null) {
29+
entityManager.persist(etterlysning.getUttalelse());
30+
}
2831
entityManager.persist(etterlysning);
2932
return etterlysning;
3033
}
3134

3235
public List<EtterlysningEntitet> lagre(List<EtterlysningEntitet> etterlysninger) {
33-
etterlysninger.forEach(entityManager::persist);
36+
etterlysninger.forEach(this::lagre);
3437
return etterlysninger;
3538
}
3639

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package no.nav.ung.sak.behandlingslager.etterlysning;
2+
3+
import org.hibernate.annotations.Immutable;
4+
5+
import jakarta.persistence.Column;
6+
import jakarta.persistence.Entity;
7+
import jakarta.persistence.GeneratedValue;
8+
import jakarta.persistence.GenerationType;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.Table;
11+
import no.nav.ung.sak.behandlingslager.BaseEntitet;
12+
13+
@Entity(name = "Uttalelse")
14+
@Table(name = "UTTALELSE")
15+
@Immutable
16+
public class UttalelseEntitet extends BaseEntitet {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_uttalelse")
20+
private Long id;
21+
22+
@Column(name = "uttalelse", updatable = false, nullable = false)
23+
private String uttalelseTekst;
24+
25+
@Column(name = "etterlysning_id", updatable = false, nullable = false)
26+
private long etterlysningId;
27+
28+
29+
private UttalelseEntitet() {
30+
// Hibernate
31+
}
32+
33+
public UttalelseEntitet(String uttalelseTekst, long etterlysningId) {
34+
this.uttalelseTekst = uttalelseTekst;
35+
this.etterlysningId = etterlysningId;
36+
}
37+
38+
39+
public String getUttalelseTekst() {
40+
return uttalelseTekst;
41+
}
42+
43+
}

behandlingslager/domene/src/main/resources/META-INF/pu-default.etterlysning.orm.xml

+1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
<sequence-generator name="SEQ_ETTERLYSNING" allocation-size="50" sequence-name="SEQ_ETTERLYSNING"/>
88

99
<entity class="no.nav.ung.sak.behandlingslager.etterlysning.EtterlysningEntitet"/>
10+
<entity class="no.nav.ung.sak.behandlingslager.etterlysning.UttalelseEntitet"/>
1011

1112
</entity-mappings>

domenetjenester/mottak/src/main/java/no/nav/ung/sak/mottak/dokumentmottak/oppgavebekreftelse/InntektBekreftelseHåndterer.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ public class InntektBekreftelseHåndterer implements BekreftelseHåndterer {
4949
// lagre grunnlag
5050
var abakusTask = lagOppdaterAbakusTask(oppgaveBekreftelseInnhold);
5151

52-
// opprett uttalelse hvis finnes
53-
54-
5552
// ta behandling av vent (lukker autopunkt også)
5653
var fortsettTask = ProsessTaskData.forProsessTask(FortsettBehandlingTask.class);
5754
Behandling behandling = oppgaveBekreftelseInnhold.behandling();
@@ -67,7 +64,12 @@ public class InntektBekreftelseHåndterer implements BekreftelseHåndterer {
6764
// hent tilhørende etterlysning og marker den som løst
6865
UUID oppgaveId = inntektBekreftelse.getOppgaveId();
6966
EtterlysningEntitet etterlysning = etterlysningRepository.hentEtterlysningForEksternReferanse(oppgaveId);
70-
etterlysning.mottattSvar();
67+
68+
if (inntektBekreftelse.getUttalelseFraBruker() != null) {
69+
etterlysning.mottattUttalelse(inntektBekreftelse.getUttalelseFraBruker(), oppgaveBekreftelseInnhold.journalpostId());
70+
} else {
71+
etterlysning.mottattSvar(oppgaveBekreftelseInnhold.journalpostId());
72+
}
7173
etterlysningRepository.lagre(etterlysning);
7274

7375
}

domenetjenester/mottak/src/test/java/no/nav/ung/sak/mottak/dokumentmottak/oppgavebekreftelse/InntektBekreftelseHåndtererTest.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import no.nav.ung.kodeverk.dokument.Brevkode;
3636
import no.nav.ung.kodeverk.etterlysning.EtterlysningStatus;
3737
import no.nav.ung.sak.behandling.prosessering.task.FortsettBehandlingTask;
38-
import no.nav.ung.sak.behandlingskontroll.BehandlingskontrollTjeneste;
3938
import no.nav.ung.sak.behandlingslager.behandling.Behandling;
4039
import no.nav.ung.sak.behandlingslager.etterlysning.EtterlysningEntitet;
4140
import no.nav.ung.sak.behandlingslager.etterlysning.EtterlysningRepository;
@@ -51,8 +50,6 @@ class InntektBekreftelseHåndtererTest {
5150

5251
@Inject
5352
private EntityManager em;
54-
@Inject
55-
private BehandlingskontrollTjeneste behandlingskontrollTjeneste;
5653
private EtterlysningRepository etterlysningRepository;
5754
private ProsessTaskTjeneste prosessTaskTjeneste;
5855

@@ -66,7 +63,7 @@ void setup() {
6663
}
6764

6865
@Test
69-
void skalOppdatereEtterlysningOppdatereIayGrunnlagLagreUttalelseOgSetteBehandlingAvVent() {
66+
void skalOppdatereEtterlysningOppdatereIayGrunnlagOgSetteBehandlingAvVent() {
7067
// Arrange
7168
TestScenarioBuilder scenarioBuilder = TestScenarioBuilder.builderMedSøknad()
7269
.medBehandlingType(BehandlingType.REVURDERING);
@@ -103,7 +100,7 @@ void skalOppdatereEtterlysningOppdatereIayGrunnlagLagreUttalelseOgSetteBehandlin
103100
BigDecimal.valueOf(oppgittInntekt),
104101
BigDecimal.ZERO)),
105102
true,
106-
"uttalelse")
103+
"en uttalelse")
107104
),
108105
LocalDateTime.now(),
109106
Brevkode.UNGDOMSYTELSE_OPPGAVE_BEKREFTELSE
@@ -112,6 +109,7 @@ void skalOppdatereEtterlysningOppdatereIayGrunnlagLagreUttalelseOgSetteBehandlin
112109
// Act
113110
var inntektBekreftelseHåndterer = new InntektBekreftelseHåndterer(etterlysningRepository, prosessTaskTjeneste);
114111
inntektBekreftelseHåndterer.håndter(bekreftelse);
112+
em.flush();
115113

116114
// Assert
117115
//abakus er oppdatert
@@ -130,5 +128,12 @@ void skalOppdatereEtterlysningOppdatereIayGrunnlagLagreUttalelseOgSetteBehandlin
130128
//etterlysning er oppdatert
131129
var oppdatertEtterlysning = etterlysningRepository.hentEtterlysning(etterlysning.getId());
132130
assertThat(oppdatertEtterlysning.getStatus()).isEqualTo(EtterlysningStatus.MOTTATT_SVAR);
131+
assertThat(oppdatertEtterlysning.getSvarJournalpostId().getJournalpostId().getVerdi()).isEqualTo(String.valueOf(journalpostId));
132+
assertThat(oppdatertEtterlysning.getUttalelse().getUttalelseTekst()).isEqualTo("en uttalelse");
133+
}
134+
135+
@Test
136+
void skalIkkeOppdatereGrunnlagVedUttalelse(){
137+
133138
}
134139
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
create table uttalelse
2+
(
3+
id bigint not null primary key,
4+
uttalelse text not null,
5+
etterlysning_id bigint not null references etterlysning (id),
6+
opprettet_tid timestamp default CURRENT_TIMESTAMP not null,
7+
opprettet_av varchar(20) not null default 'VL',
8+
endret_av varchar(20),
9+
endret_tid timestamp
10+
);
11+
12+
create sequence if not exists seq_uttalelse increment by 50 minvalue 1000000;
13+
14+
comment on table uttalelse is 'Inneholder uttalelser typisk ved uenigheter på etterlysninger';
15+
comment on column uttalelse.uttalelse is 'Uttalelsetekst';
16+
17+
alter table etterlysning add svar_journalpost_id varchar(20);
18+
comment on column etterlysning.svar_journalpost_id is 'journalpost_id for svar på etterlysning';
19+
20+
create unique index idx_etterlysning_ekstern_ref on etterlysning (ekstern_ref);
21+

0 commit comments

Comments
 (0)