Skip to content

Commit 757ee2a

Browse files
authored
TFP-6044 journalpost sikkerhetsnett (#2589)
* TFP-6044 journalpost sikkerhetsnett * Fikse path og begynn med kort intervall for test * Mer logging under utprøving
1 parent 2a40390 commit 757ee2a

File tree

6 files changed

+127
-1
lines changed

6 files changed

+127
-1
lines changed

domene/src/main/java/no/nav/foreldrepenger/mottak/behandlendeenhet/EnhetsTjeneste.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public String hentFordelingEnhetId(Optional<String> enhetInput, String aktørId)
3333
}
3434

3535
public static String enhetEllerNasjonalEnhet(String enhet) {
36-
return SPESIALENHETER.contains(enhet) ? enhet : NASJONAL_ENHET_ID;
36+
return enhet != null && SPESIALENHETER.contains(enhet) ? enhet : NASJONAL_ENHET_ID;
3737
}
3838

3939
private String hentEnhetId(String aktørId) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package no.nav.foreldrepenger.mottak.task;
2+
3+
import java.util.stream.Collectors;
4+
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import jakarta.enterprise.context.Dependent;
9+
import jakarta.inject.Inject;
10+
import no.nav.foreldrepenger.journalføring.domene.JournalpostId;
11+
import no.nav.foreldrepenger.journalføring.oppgave.Journalføringsoppgave;
12+
import no.nav.foreldrepenger.journalføring.oppgave.domene.NyOppgave;
13+
import no.nav.foreldrepenger.journalføring.oppgave.lager.AktørId;
14+
import no.nav.foreldrepenger.mottak.behandlendeenhet.EnhetsTjeneste;
15+
import no.nav.foreldrepenger.mottak.journal.ArkivTjeneste;
16+
import no.nav.foreldrepenger.mottak.task.sikkerhetsnett.SikkerhetsnettKlient;
17+
import no.nav.foreldrepenger.mottak.task.sikkerhetsnett.SikkerhetsnettResponse;
18+
import no.nav.vedtak.felles.prosesstask.api.ProsessTask;
19+
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
20+
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskHandler;
21+
22+
@Dependent
23+
@ProsessTask(value = "vedlikehold.tasks.sikkerhetsnett", cronExpression = "0 29 6 * * *", maxFailedRuns = 1) // Endre siste asterisk til WED
24+
public class SikkerhetsnettTask implements ProsessTaskHandler {
25+
26+
private static final Logger LOG = LoggerFactory.getLogger(SikkerhetsnettTask.class);
27+
28+
private final ArkivTjeneste arkivTjeneste;
29+
private final EnhetsTjeneste enhetsTjeneste;
30+
private final Journalføringsoppgave journalføringsoppgave;
31+
private final SikkerhetsnettKlient sikkerhetsnettKlient;
32+
33+
@Inject
34+
public SikkerhetsnettTask(ArkivTjeneste arkivTjeneste,
35+
EnhetsTjeneste enhetsTjeneste,
36+
Journalføringsoppgave journalføringsoppgave,
37+
SikkerhetsnettKlient sikkerhetsnettKlient) {
38+
this.arkivTjeneste = arkivTjeneste;
39+
this.enhetsTjeneste = enhetsTjeneste;
40+
this.journalføringsoppgave = journalføringsoppgave;
41+
this.sikkerhetsnettKlient = sikkerhetsnettKlient;
42+
}
43+
44+
@Override
45+
public void doTask(ProsessTaskData prosessTaskData) {
46+
var åpneJournalposter = sikkerhetsnettKlient.hentÅpneJournalposterEldreEnn(1).stream()
47+
.filter(jp -> jp.mottaksKanal() == null || !"EESSI".equals(jp.mottaksKanal()))
48+
.toList();
49+
LOG.info("FPFORDEL SIKKERHETSNETT fant {} journalposter: {}", åpneJournalposter.size(),
50+
åpneJournalposter.stream().map(SikkerhetsnettResponse::journalpostId).collect(Collectors.joining(",")));
51+
var åpneJournalposterUtenOppgave = åpneJournalposter.stream()
52+
.filter(jp -> !journalføringsoppgave.finnesÅpeneJournalføringsoppgaverFor(JournalpostId.fra(jp.journalpostId())))
53+
.toList();
54+
LOG.info("FPFORDEL SIKKERHETSNETT fant {} journalposter uten oppgave: {}", åpneJournalposterUtenOppgave.size(),
55+
åpneJournalposterUtenOppgave.stream().map(SikkerhetsnettResponse::journalpostId).collect(Collectors.joining(",")));
56+
åpneJournalposterUtenOppgave.forEach(this::opprettOppgave);
57+
}
58+
59+
private void opprettOppgave(SikkerhetsnettResponse jp) {
60+
var journalpostId = JournalpostId.fra(jp.journalpostId());
61+
var journalpost = arkivTjeneste.hentArkivJournalpost(journalpostId.getVerdi());
62+
var aktørId = journalpost.getBrukerAktørId().map(AktørId::new).orElse(null);
63+
var aktørIdString = journalpost.getBrukerAktørId().orElse(null);
64+
var enhet = enhetsTjeneste.hentFordelingEnhetId(journalpost.getJournalfoerendeEnhet(), aktørIdString);
65+
var nyoppgave = new NyOppgave(journalpostId, enhet, aktørId, null, journalpost.getBehandlingstema(), "Journalføring");
66+
if (EnhetsTjeneste.NK_ENHET_ID.equals(enhet)) {
67+
journalføringsoppgave.opprettGosysJournalføringsoppgaveFor(nyoppgave);
68+
} else {
69+
journalføringsoppgave.opprettJournalføringsoppgaveFor(nyoppgave);
70+
}
71+
}
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package no.nav.foreldrepenger.mottak.task.sikkerhetsnett;
2+
3+
import java.util.List;
4+
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import jakarta.enterprise.context.Dependent;
9+
import jakarta.ws.rs.core.UriBuilder;
10+
import no.nav.foreldrepenger.fordel.kodeverdi.Tema;
11+
import no.nav.vedtak.felles.integrasjon.rest.RestClient;
12+
import no.nav.vedtak.felles.integrasjon.rest.RestClientConfig;
13+
import no.nav.vedtak.felles.integrasjon.rest.RestConfig;
14+
import no.nav.vedtak.felles.integrasjon.rest.RestRequest;
15+
import no.nav.vedtak.felles.integrasjon.rest.TokenFlow;
16+
17+
@Dependent
18+
@RestClientConfig(tokenConfig = TokenFlow.ADAPTIVE, endpointProperty = "sikkerhetsnett.url",
19+
endpointDefault = "http://dokarkiv.teamdokumenthandtering/rest/journalpostapi/v1/finnMottatteJournalposter",
20+
scopesProperty = "dokarkiv.scopes", scopesDefault = "api://prod-fss.teamdokumenthandtering.dokarkiv/.default")
21+
public class SikkerhetsnettKlient {
22+
23+
private final RestClient restKlient;
24+
private final RestConfig restConfig;
25+
26+
protected SikkerhetsnettKlient() {
27+
this(RestClient.client());
28+
}
29+
30+
protected SikkerhetsnettKlient(RestClient client) {
31+
this.restKlient = client;
32+
this.restConfig = RestConfig.forClient(this.getClass());
33+
}
34+
35+
36+
public List<SikkerhetsnettResponse> hentÅpneJournalposterEldreEnn(int antallDagerGamle) {
37+
var opprett = UriBuilder.fromUri(restConfig.endpoint())
38+
.queryParam("tema", Tema.FORELDRE_OG_SVANGERSKAPSPENGER.getOffisiellKode())
39+
.queryParam("antallDagerGamle", String.valueOf(antallDagerGamle))
40+
.build();
41+
var restRequest = RestRequest.newGET(opprett, restConfig);
42+
return restKlient.sendReturnList(restRequest, SikkerhetsnettResponse.class);
43+
}
44+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package no.nav.foreldrepenger.mottak.task.sikkerhetsnett;
2+
3+
public record SikkerhetsnettResponse(String journalpostId,
4+
String mottaksKanal,
5+
String behandlingstema,
6+
String journalforendeEnhet) {
7+
8+
}

web/src/main/resources/application.properties

+1
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ oppgave.rs.uri=http://oppgave.oppgavehandtering/api/v1/oppgaver
2323
saf.base.url=http://saf.teamdokumenthandtering
2424
# Klienter (lokal)
2525
dokarkiv.base.url=http://dokarkiv.teamdokumenthandtering/rest/journalpostapi/v1/journalpost
26+
sikkerhetsnett.url=http://dokarkiv.teamdokumenthandtering/rest/journalpostapi/v1/finnMottatteJournalposter

web/src/test/resources/application-vtp.properties

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ server.port=8090
44
oppgave.rs.uri=https://localhost:8063/rest/oppgave/api/v1/oppgaver
55
oppgave.scopes=testscope
66
dokarkiv.base.url=https://localhost:8063/rest/dokarkiv/rest/journalpostapi/v1/journalpost
7+
sikkerhetsnett.url=https://localhost:8063/rest/dokarkiv/rest/journalpostapi/v1/finnMottatteJournalposter
78
dokarkiv.scopes=testscope
89
saf.base.url=https://localhost:8063/rest/api/saf
910
saf.scopes=testscope

0 commit comments

Comments
 (0)