@@ -60,6 +60,7 @@ public class FerdigstillJournalføringTjeneste {
60
60
static final String BRUKER_MANGLER = "Journalpost mangler knyting til bruker - prøv igjen om et halv minutt" ;
61
61
static final String JOURNALPOST_IKKE_INNGÅENDE = "Journalpost ikke Inngående" ;
62
62
private static final Logger LOG = LoggerFactory .getLogger (FerdigstillJournalføringTjeneste .class );
63
+ protected static final String ENDELIG = "ENDELIG" ;
63
64
private VLKlargjører klargjører ;
64
65
private Fagsak fagsak ;
65
66
private PersonInformasjon pdl ;
@@ -89,8 +90,11 @@ public class FerdigstillJournalføringTjeneste {
89
90
this .dokumentRepository = dokumentRepository ;
90
91
}
91
92
92
- public void oppdaterJournalpostOgFerdigstill (String enhetId , String saksnummer , ArkivJournalpost journalpost ,
93
- String nyJournalpostTittel , List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
93
+ public void oppdaterJournalpostOgFerdigstill (String enhetId ,
94
+ String saksnummer ,
95
+ ArkivJournalpost journalpost ,
96
+ String nyJournalpostTittel ,
97
+ List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
94
98
DokumentTypeId nyDokumentTypeId ) {
95
99
96
100
validerJournalposttype (journalpost .getJournalposttype ());
@@ -137,25 +141,29 @@ public void oppdaterJournalpostOgFerdigstill(String enhetId, String saksnummer,
137
141
String eksternReferanseId = null ;
138
142
if (DokumentTypeId .INNTEKTSMELDING .equals (brukDokumentTypeId )) {
139
143
eksternReferanseId =
140
- journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () : arkivTjeneste .hentEksternReferanseId (
141
- journalpost .getOriginalJournalpost ()).orElse (null );
144
+ journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () : arkivTjeneste .hentEksternReferanseId (
145
+ journalpost .getOriginalJournalpost ()).orElse (null );
142
146
}
143
147
144
148
var mottattTidspunkt = Optional .ofNullable (journalpost .getDatoOpprettet ()).orElseGet (LocalDateTime ::now );
145
149
146
150
final var xml = hentDokumentSettMetadata (saksnummer , behandlingTema , aktørIdFagsak , journalpost );
147
- klargjører .klargjør (xml , saksnummer , journalpost .getJournalpostId (), brukDokumentTypeId , mottattTidspunkt , behandlingTema , forsendelseId . orElse ( null ),
148
- dokumentKategori , enhetId , eksternReferanseId );
151
+ klargjører .klargjør (xml , saksnummer , journalpost .getJournalpostId (), brukDokumentTypeId , mottattTidspunkt , behandlingTema ,
152
+ forsendelseId . orElse ( null ), dokumentKategori , enhetId , eksternReferanseId );
149
153
150
154
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka.
151
- dokumentRepository .lagreJournalpostLokal (journalpost .getJournalpostId (), journalpost .getKanal (), "ENDELIG" , journalpost .getEksternReferanseId ());
155
+ dokumentRepository .lagreJournalpostLokal (journalpost .getJournalpostId (), journalpost .getKanal (), ENDELIG ,
156
+ journalpost .getEksternReferanseId ());
152
157
153
158
opprettFerdigstillOppgaveTask (JournalpostId .fra (journalpost .getJournalpostId ()));
154
159
}
155
160
156
- public void oppdaterJournalpostOgFerdigstillGenerellSak (String enhetId , ArkivJournalpost journalpost , String aktørId ,
157
- String nyJournalpostTittel , List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
158
- DokumentTypeId nyDokumentTypeId ) {
161
+ public void oppdaterJournalpostOgFerdigstillGenerellSak (String enhetId ,
162
+ ArkivJournalpost journalpost ,
163
+ String aktørId ,
164
+ String nyJournalpostTittel ,
165
+ List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
166
+ DokumentTypeId nyDokumentTypeId ) {
159
167
160
168
validerJournalposttype (journalpost .getJournalposttype ());
161
169
@@ -171,7 +179,8 @@ public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId, ArkivJou
171
179
172
180
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka - må skje før vi ferdigstiller.
173
181
// Ellers kan kan kafka hendelsen komme tidligere en vi klarer å lagre og oppretter en ny oppgave.
174
- dokumentRepository .lagreJournalpostLokal (journalpost .getJournalpostId (), journalpost .getKanal (), "ENDELIG" , journalpost .getEksternReferanseId ());
182
+ dokumentRepository .lagreJournalpostLokal (journalpost .getJournalpostId (), journalpost .getKanal (), ENDELIG ,
183
+ journalpost .getEksternReferanseId ());
175
184
176
185
if (Journalstatus .MOTTATT .equals (journalpost .getTilstand ())) {
177
186
oppdaterJournalpostMedTittelOgMangler (journalpost , nyJournalpostTittel , dokumenterMedNyTittel , aktørId , behandlingTema );
@@ -189,13 +198,26 @@ public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId, ArkivJou
189
198
}
190
199
191
200
192
- public void oppdaterJournalpostMedTittelOgMangler (ArkivJournalpost journalpost , String nyJournalpostTittel , List <DokumenterMedNyTittel > dokumenterMedNyTittel , String aktørId , BehandlingTema behandlingTema ) {
201
+ public void oppdaterJournalpostMedTittelOgMangler (ArkivJournalpost journalpost ,
202
+ String nyJournalpostTittel ,
203
+ List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
204
+ String aktørId ,
205
+ BehandlingTema behandlingTema ) {
193
206
var journalpostId = journalpost .getJournalpostId ();
194
207
var kanal = journalpost .getKanal ();
195
208
196
- if ((nyJournalpostTittel != null || !dokumenterMedNyTittel .isEmpty ()) && (MottakKanal .SELVBETJENING .getKode ().equals (kanal ) || MottakKanal .ALTINN .getKode ().equals (kanal ))) {
197
- throw new FunksjonellException ("FP-963071" , String .format ("Kan ikke endre tittel på journalpost med id %s som kommer fra Selvbetjening eller Altinn." , journalpostId ),
209
+ if ((nyJournalpostTittel != null || !dokumenterMedNyTittel .isEmpty ()) && List .of (MottakKanal .SELVBETJENING .getKode (),
210
+ MottakKanal .ALTINN .getKode ()).contains (kanal )) {
211
+ // TFP-5791: Det er spesialhåndtering av tilfeller hvor klage/anke journalpost tittel ble endret i gosys uten at man har endret dokument tittel samtidig.
212
+ if (nyJournalpostTittel == null && dokumenterMedNyTittel .size () == 1 ) {
213
+ LOG .info (
214
+ "FPFORDEL RESTJOURNALFØRING: Det endres dokument tittel på et dokument som kommer fra {}. Gjelder journalpost: {}:{}. Ny dokument tittel: {}." ,
215
+ kanal , journalpostId , journalpost .getTittel (), dokumenterMedNyTittel .getFirst ().dokumentTittel ());
216
+ } else {
217
+ throw new FunksjonellException ("FP-963071" ,
218
+ String .format ("Kan ikke endre tittel på journalpost med id %s som kommer fra Selvbetjening eller Altinn." , journalpostId ),
198
219
"Tittel kan ikke endres når journalposten kommer fra selvbetjening eller altinn" );
220
+ }
199
221
}
200
222
201
223
LOG .info ("FPFORDEL RESTJOURNALFØRING: Oppdaterer generelle mangler og titler for journalpostId: {}" , journalpostId );
@@ -210,15 +232,16 @@ public void oppdaterJournalpostMedTittelOgMangler(ArkivJournalpost journalpost,
210
232
211
233
if (!utledetDokType .getTermNavn ().equals (nyJournalpostTittel )) {
212
234
LOG .info ("FPFORDEL RESTJOURNALFØRING: Ny journalpost-tittel: {} avviker fra utledet journalpost-tittel: {} for journalpostId: {}" ,
213
- nyJournalpostTittel , utledetDokType .getTermNavn (), journalpostId );
235
+ nyJournalpostTittel , utledetDokType .getTermNavn (), journalpostId );
214
236
}
215
237
}
216
238
List <OppdaterJournalpostRequest .DokumentInfoOppdater > dokumenterÅOppdatere = new ArrayList <>();
217
239
218
240
if (!dokumenterMedNyTittel .isEmpty ()) {
219
241
dokumenterÅOppdatere = mapDokumenterTilOppdatering (dokumenterMedNyTittel );
220
242
}
221
- arkivTjeneste .oppdaterJournalpostVedManuellJournalføring (journalpostId , nyJournalpostTittel , dokumenterÅOppdatere , journalpost , aktørId , behandlingTema );
243
+ arkivTjeneste .oppdaterJournalpostVedManuellJournalføring (journalpostId , nyJournalpostTittel , dokumenterÅOppdatere , journalpost , aktørId ,
244
+ behandlingTema );
222
245
223
246
}
224
247
@@ -227,13 +250,13 @@ public record DokumenterMedNyTittel(String dokumentId, String dokumentTittel) {
227
250
228
251
private List <no .nav .vedtak .felles .integrasjon .dokarkiv .dto .OppdaterJournalpostRequest .DokumentInfoOppdater > mapDokumenterTilOppdatering (List <DokumenterMedNyTittel > dokumenter ) {
229
252
return dokumenter .stream ()
230
- .filter (dt -> dt .dokumentId () != null && dt .dokumentTittel () != null )
231
- .map (dt -> new no .nav .vedtak .felles .integrasjon .dokarkiv .dto .OppdaterJournalpostRequest .DokumentInfoOppdater (dt .dokumentId (), dt .dokumentTittel (), null ))
232
- .toList ();
253
+ .filter (dt -> dt .dokumentId () != null && dt .dokumentTittel () != null )
254
+ .map (dt -> new no .nav .vedtak .felles .integrasjon .dokarkiv .dto .OppdaterJournalpostRequest .DokumentInfoOppdater (dt .dokumentId (),
255
+ dt .dokumentTittel (), null ))
256
+ .toList ();
233
257
}
234
258
235
- private static Set <DokumentTypeId > utledDokumentTyper (List <DokumenterMedNyTittel > dokumenterMedNyTittel ,
236
- List <DokumentInfo > dokumenterFraArkiv ) {
259
+ private static Set <DokumentTypeId > utledDokumentTyper (List <DokumenterMedNyTittel > dokumenterMedNyTittel , List <DokumentInfo > dokumenterFraArkiv ) {
237
260
Set <DokumentTypeId > dokumentTyper = new HashSet <>();
238
261
Set <String > oppdatereDokIder = dokumenterMedNyTittel .stream ().map (DokumenterMedNyTittel ::dokumentId ).collect (Collectors .toSet ());
239
262
@@ -267,13 +290,15 @@ private static Optional<UUID> asUUID(String eksternReferanseId) {
267
290
268
291
String opprettSak (ArkivJournalpost journalpost , FerdigstillJournalføringRestTjeneste .OpprettSak opprettSakInfo , DokumentTypeId nyDokumentTypeId ) {
269
292
new ManuellOpprettSakValidator (arkivTjeneste ).validerKonsistensMedSakJP (journalpost , opprettSakInfo .ytelseType (), opprettSakInfo .aktørId (),
270
- nyDokumentTypeId );
293
+ nyDokumentTypeId );
271
294
272
295
return fagsak .opprettSak (opprettSakRequest (journalpost .getJournalpostId (), opprettSakInfo )).getSaksnummer ();
273
296
}
274
297
275
298
// Validerer mot eksisterende men sikrer at det opprettes ny sak
276
- String opprettNySak (ArkivJournalpost journalpost , FerdigstillJournalføringRestTjeneste .OpprettSak opprettSakInfo , DokumentTypeId nyDokumentTypeId ) {
299
+ String opprettNySak (ArkivJournalpost journalpost ,
300
+ FerdigstillJournalføringRestTjeneste .OpprettSak opprettSakInfo ,
301
+ DokumentTypeId nyDokumentTypeId ) {
277
302
new ManuellOpprettSakValidator (arkivTjeneste ).validerKonsistensMedSakJP (journalpost , opprettSakInfo .ytelseType (), opprettSakInfo .aktørId (),
278
303
nyDokumentTypeId );
279
304
@@ -319,15 +344,16 @@ public JournalpostId knyttTilAnnenSak(ArkivJournalpost journalpost, String enhet
319
344
var mottattTidspunkt = Optional .ofNullable (journalpost .getDatoOpprettet ()).orElseGet (LocalDateTime ::now );
320
345
String eksternReferanseId = null ;
321
346
if (DokumentTypeId .INNTEKTSMELDING .equals (brukDokumentTypeId )) {
322
- eksternReferanseId = journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () :
323
- arkivTjeneste .hentEksternReferanseId (journalpost .getOriginalJournalpost ()).orElse (null );
347
+ eksternReferanseId =
348
+ journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () : arkivTjeneste .hentEksternReferanseId (
349
+ journalpost .getOriginalJournalpost ()).orElse (null );
324
350
}
325
351
326
352
klargjører .klargjør (xml , saksnummer , nyJournalpostId , brukDokumentTypeId , mottattTidspunkt , behandlingTema , forsendelseId .orElse (null ),
327
353
dokumentKategori , enhetId , eksternReferanseId );
328
354
329
355
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka.
330
- dokumentRepository .lagreJournalpostLokal (nyJournalpostId , journalpost .getKanal (), " ENDELIG" , journalpost .getEksternReferanseId ());
356
+ dokumentRepository .lagreJournalpostLokal (nyJournalpostId , journalpost .getKanal (), ENDELIG , journalpost .getEksternReferanseId ());
331
357
332
358
return Optional .ofNullable (nyJournalpostId ).map (JournalpostId ::fra ).orElse (null );
333
359
}
@@ -351,12 +377,13 @@ public JournalpostId knyttTilAnnenSak(ArkivJournalpost journalpost, String enhet
351
377
var mottattTidspunkt = Optional .ofNullable (journalpost .getDatoOpprettet ()).orElseGet (LocalDateTime ::now );
352
378
String eksternReferanseId = null ;
353
379
if (DokumentTypeId .INNTEKTSMELDING .equals (brukDokumentTypeId )) {
354
- eksternReferanseId = journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () :
355
- arkivTjeneste .hentEksternReferanseId (journalpost .getOriginalJournalpost ()).orElse (null );
380
+ eksternReferanseId =
381
+ journalpost .getEksternReferanseId () != null ? journalpost .getEksternReferanseId () : arkivTjeneste .hentEksternReferanseId (
382
+ journalpost .getOriginalJournalpost ()).orElse (null );
356
383
}
357
384
358
- klargjører .klargjør (xml , saksnummer , journalpost .getJournalpostId (), brukDokumentTypeId , mottattTidspunkt , behandlingTema , forsendelseId . orElse ( null ),
359
- dokumentKategori , null , eksternReferanseId );
385
+ klargjører .klargjør (xml , saksnummer , journalpost .getJournalpostId (), brukDokumentTypeId , mottattTidspunkt , behandlingTema ,
386
+ forsendelseId . orElse ( null ), dokumentKategori , null , eksternReferanseId );
360
387
}
361
388
362
389
@@ -373,10 +400,10 @@ private static BehandlingTema validerOgVelgBehandlingTema(BehandlingTema behandl
373
400
return behandlingTemaFagsak ;
374
401
}
375
402
if ((gjelderForeldrepenger (behandlingTemaFagsak ) && !gjelderForeldrepenger (behandlingTemaDok )) || (
376
- BehandlingTema .gjelderEngangsstønad (behandlingTemaFagsak ) && !BehandlingTema .gjelderEngangsstønad (behandlingTemaDok )) || (
377
- BehandlingTema .gjelderSvangerskapspenger (behandlingTemaFagsak ) && !BehandlingTema .gjelderSvangerskapspenger (behandlingTemaDok ))) {
403
+ BehandlingTema .gjelderEngangsstønad (behandlingTemaFagsak ) && !BehandlingTema .gjelderEngangsstønad (behandlingTemaDok )) || (
404
+ BehandlingTema .gjelderSvangerskapspenger (behandlingTemaFagsak ) && !BehandlingTema .gjelderSvangerskapspenger (behandlingTemaDok ))) {
378
405
throw new FunksjonellException ("FP-963079" , "Dokumentet samsvarer ikke med sakens type - kan ikke journalføre" ,
379
- "Journalfør på annen sak eller opprett ny sak" );
406
+ "Journalfør på annen sak eller opprett ny sak" );
380
407
}
381
408
return BehandlingTema .ikkeSpesifikkHendelse (behandlingTemaDok ) ? behandlingTemaFagsak : behandlingTemaDok ;
382
409
}
@@ -385,9 +412,9 @@ private static BehandlingTema validerOgVelgBehandlingTema(BehandlingTema behandl
385
412
DokumentTypeId dokumentTypeId ,
386
413
DokumentKategori dokumentKategori ) {
387
414
if (BehandlingTema .UDEFINERT .equals (behandlingTema ) && (DokumentTypeId .KLAGE_DOKUMENT .equals (dokumentTypeId )
388
- || DokumentKategori .KLAGE_ELLER_ANKE .equals (dokumentKategori ))) {
415
+ || DokumentKategori .KLAGE_ELLER_ANKE .equals (dokumentKategori ))) {
389
416
throw new FunksjonellException ("FP-963074" , "Klager må journalføres på sak med tidligere behandling" ,
390
- "Journalføre klagen på sak med avsluttet behandling" );
417
+ "Journalføre klagen på sak med avsluttet behandling" );
391
418
}
392
419
}
393
420
@@ -401,21 +428,21 @@ private static void validerDokumentData(MottakMeldingDataWrapper dataWrapper,
401
428
if (gjelderForeldrepenger (behandlingTemaFraIM )) {
402
429
if (dataWrapper .getInntektsmeldingStartDato ().isEmpty ()) { // Kommer ingen vei uten startdato
403
430
throw new FunksjonellException ("FP-963076" , "Inntektsmelding mangler startdato - kan ikke journalføre" ,
404
- "Be om ny Inntektsmelding med startdato" );
431
+ "Be om ny Inntektsmelding med startdato" );
405
432
406
433
} else if (!gjelderForeldrepenger (behandlingTema )) { // Prøver journalføre på annen
407
434
// fagsak - ytelsetype
408
435
throw new FunksjonellException ("FP-963075" , "Inntektsmelding årsak samsvarer ikke med sakens type - kan ikke journalføre" ,
409
- "Be om ny Inntektsmelding for Foreldrepenger" );
436
+ "Be om ny Inntektsmelding for Foreldrepenger" );
410
437
}
411
438
} else if (!behandlingTemaFraIM .equals (behandlingTema )) {
412
439
throw new FunksjonellException ("FP-963075" , "Inntektsmelding årsak samsvarer ikke med sakens type - kan ikke journalføre" ,
413
- "Be om ny Inntektsmelding for Foreldrepenger" );
440
+ "Be om ny Inntektsmelding for Foreldrepenger" );
414
441
}
415
442
}
416
443
if (gjelderForeldrepenger (behandlingTema ) && startDato .isBefore (KonfigVerdier .ENDRING_BEREGNING_DATO )) {
417
444
throw new FunksjonellException ("FP-963077" , "For tidlig uttak" ,
418
- "Søknad om uttak med oppstart i 2018 skal journalføres mot sak i Infotrygd" );
445
+ "Søknad om uttak med oppstart i 2018 skal journalføres mot sak i Infotrygd" );
419
446
}
420
447
}
421
448
@@ -428,11 +455,11 @@ private FagsakInfomasjonDto hentOgValiderFagsak(String saksnummer, ArkivJournalp
428
455
final var brukerAktørId = journalpost .getBrukerAktørId ();
429
456
430
457
final var fagsakFraRequestSomTrefferRettAktør = hentFagsakInfo (saksnummer ).filter (
431
- f -> brukerAktørId .isEmpty () || Objects .equals (f .getAktørId (), brukerAktørId .get ()));
458
+ f -> brukerAktørId .isEmpty () || Objects .equals (f .getAktørId (), brukerAktørId .get ()));
432
459
433
460
if (fagsakFraRequestSomTrefferRettAktør .isEmpty ()) {
434
461
throw new FunksjonellException ("FP-963070" , "Kan ikke journalføre på saksnummer: " + saksnummer ,
435
- "Journalføre dokument på annen sak i VL" );
462
+ "Journalføre dokument på annen sak i VL" );
436
463
}
437
464
438
465
LOG .info ("FPFORDEL RESTJOURNALFØRING: Fant en FP-sak med saksnummer {} som har rett aktør" , saksnummer );
0 commit comments