Skip to content

Commit 8ddcb2a

Browse files
ramrock93qtips
andauthored
Legger til initiell kontraktforslag for Saksinnhold. (#406)
* Legger til initiell kontrakt forslag for Saksinnhold. * Legger til no-arg constructor med JsonCreator i Saksinnhold. - Tester serdes med JsonUtils. - Refaktorer ut regex pattern for aktørId til RegexUtils. - Formaterer mottattTidspunkt i SøknadInfo. * Tester deserialisering fra jsonString * rename til saksbehandlingstid * utregnings av saksbehandlingsfrist * testfix * Justerer enums for venteårsak og behandlingstatus. * Fikser test. * Bruker Konstant.FORVENTET_SAKSBEHANDLINGSTID. Støtter å overstyre utledSaksbehandlingsfrist. * Legger til dependency for kodeverk * Legger til repo for k9-sak pakker * Bruker READER_TOKEN for å lese private k9-sak pakker. * Bruker diverse kodeverk fra k9-sak. - AktørId - FagsakYtelseType - Saksnummer - BehandlingStatus - Ventekategori - Venteårsak * Bruker Behandling som hovedobjekt istedenfor Saksinnhold. Det er for å unngå å sende hendelser med alle historiske behandlinger unødvendig. andre endringer: pleietrengende er ikke required for alle ytelsestyper. * Renamer Saksinnhold til Fagsak. - Bruker egendefinert BehandlingStatus. * Legger på behandlingsId * Fikser test * Fjerner ventekategori og bruker intern Venteårsak. --------- Co-authored-by: Qadeer Ahmad Khan <[email protected]>
1 parent 3384636 commit 8ddcb2a

File tree

12 files changed

+332
-5
lines changed

12 files changed

+332
-5
lines changed

.github/workflows/build-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ jobs:
2222
- name: Build
2323
run: mvn verify --settings .github/settings.xml -DtrimStackTrace=false
2424
env:
25-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25+
GITHUB_TOKEN: ${{ secrets.READER_TOKEN }}

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ jobs:
2525
run: |
2626
mvn install -e --batch-mode --settings .github/settings.xml --file pom.xml -DtrimStackTrace=false
2727
env:
28-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28+
GITHUB_TOKEN: ${{ secrets.READER_TOKEN }}
2929

innsyn/pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
<artifactId>innsyn</artifactId>
1313
<packaging>jar</packaging>
1414

15+
<properties>
16+
<k9-sak.version>4.1.7</k9-sak.version>
17+
</properties>
18+
1519
<dependencies>
1620
<dependency>
1721
<groupId>com.fasterxml.jackson.core</groupId>
@@ -37,5 +41,15 @@
3741
<groupId>no.nav.k9</groupId>
3842
<artifactId>soknad</artifactId>
3943
</dependency>
44+
<dependency>
45+
<groupId>no.nav.k9</groupId>
46+
<artifactId>konstant</artifactId>
47+
<version>${revision}${sha1}${changelist}</version>
48+
</dependency>
49+
<dependency>
50+
<groupId>no.nav.k9.sak</groupId>
51+
<artifactId>kodeverk</artifactId>
52+
<version>${k9-sak.version}</version>
53+
</dependency>
4054
</dependencies>
4155
</project>
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
package no.nav.k9.innsyn;
22

3-
import jakarta.validation.Valid;
4-
53
import com.fasterxml.jackson.annotation.JsonAutoDetect;
64
import com.fasterxml.jackson.annotation.JsonSubTypes;
75
import com.fasterxml.jackson.annotation.JsonTypeInfo;
86

7+
import jakarta.validation.Valid;
8+
import no.nav.k9.innsyn.sak.Behandling;
9+
910
@Valid
1011
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
1112
@JsonSubTypes(value = {
1213
@JsonSubTypes.Type(name = InnsynHendelseData.PSB_SØKNADSINNHOLD, value = PsbSøknadsinnhold.class),
1314
@JsonSubTypes.Type(name = InnsynHendelseData.OMSORG, value = Omsorg.class),
14-
@JsonSubTypes.Type(name = InnsynHendelseData.SØKNAD_TRUKKET, value = SøknadTrukket.class)
15+
@JsonSubTypes.Type(name = InnsynHendelseData.SØKNAD_TRUKKET, value = SøknadTrukket.class),
16+
@JsonSubTypes.Type(name = InnsynHendelseData.BEHANDLING_INNHOLD, value = Behandling.class),
1517
})
1618
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1719
public interface InnsynHendelseData {
1820
String PSB_SØKNADSINNHOLD = "PSB_SØKNADSINNHOLD";
1921
String OMSORG = "OMSORG";
2022
String SØKNAD_TRUKKET = "SØKNAD_TRUKKET";
23+
String BEHANDLING_INNHOLD = "BEHANDLING_INNHOLD";
2124
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotNull;
6+
7+
public record Aksjonspunkt(
8+
@JsonProperty("venteårsak") @Valid @NotNull Venteårsak venteårsak
9+
) {
10+
11+
public enum Venteårsak {
12+
INNTEKTSMELDING, MEDISINSK_DOKUMENTASJON
13+
}
14+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.fasterxml.jackson.annotation.JsonTypeName;
7+
import jakarta.validation.Valid;
8+
import jakarta.validation.constraints.NotNull;
9+
import no.nav.k9.innsyn.InnsynHendelseData;
10+
import no.nav.k9.konstant.Konstant;
11+
12+
import java.time.Duration;
13+
import java.time.ZonedDateTime;
14+
import java.util.Comparator;
15+
import java.util.Optional;
16+
import java.util.Set;
17+
import java.util.UUID;
18+
19+
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
21+
@JsonTypeName(InnsynHendelseData.BEHANDLING_INNHOLD)
22+
public record Behandling(
23+
@JsonProperty(value = "behandlingsId", required = true)
24+
@Valid
25+
@NotNull
26+
UUID behandlingsId,
27+
28+
@JsonProperty(value = "status", required = true)
29+
@Valid
30+
@NotNull
31+
BehandlingStatus status,
32+
33+
@JsonProperty(value = "søknader", required = true)
34+
@Valid
35+
@NotNull
36+
Set<SøknadInfo> søknader,
37+
38+
@JsonProperty(value = "aksjonspunkter", required = true)
39+
@Valid
40+
@NotNull
41+
Set<Aksjonspunkt> aksjonspunkter,
42+
43+
@JsonProperty(value = "erUtenlands")
44+
boolean erUtenlands,
45+
46+
@JsonProperty(value = "fagsak")
47+
Fagsak fagsak
48+
49+
) implements InnsynHendelseData {
50+
public Optional<ZonedDateTime> utledSaksbehandlingsfrist(Duration overstyrSaksbehandlingstid) {
51+
if (erUtenlands) {
52+
return Optional.empty();
53+
}
54+
55+
var tidligsteMottattDato = søknader.stream()
56+
.min(Comparator.comparing(SøknadInfo::mottattTidspunkt))
57+
.map(SøknadInfo::mottattTidspunkt);
58+
59+
return tidligsteMottattDato.map(it -> {
60+
Duration saksbehandlingstid = overstyrSaksbehandlingstid != null ? overstyrSaksbehandlingstid : Konstant.FORVENTET_SAKSBEHANDLINGSTID;
61+
return it.plus(saksbehandlingstid);
62+
});
63+
}
64+
}
65+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
/**
4+
* @see <a href="https://github.com/navikt/k9-sak/blob/fcaffc46d11cb5cc10738ad5cc34d981b0fbcff1/kodeverk/src/main/java/no/nav/k9/kodeverk/behandling/BehandlingStatus.java">BehandlingStatus i k9-sak</a>
5+
*/
6+
public enum BehandlingStatus {
7+
OPPRETTET, UNDER_BEHANDLING, PAA_VENT, AVSLUTTET
8+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotNull;
6+
import no.nav.k9.kodeverk.behandling.FagsakYtelseType;
7+
import no.nav.k9.sak.typer.AktørId;
8+
import no.nav.k9.sak.typer.Saksnummer;
9+
10+
public record Fagsak(
11+
@JsonProperty(value = "saksnummer", required = true)
12+
@Valid
13+
@NotNull
14+
Saksnummer saksnummer, // NOSONAR
15+
16+
@JsonProperty(value = "søkerAktørId", required = true)
17+
@Valid
18+
AktørId søkerAktørId,
19+
20+
@JsonProperty(value = "pleietrengendeAktørId")
21+
@Valid
22+
AktørId pleietrengendeAktørId,
23+
24+
@JsonProperty(value = "ytelseType", required = true)
25+
@Valid
26+
@NotNull
27+
FagsakYtelseType ytelseType
28+
29+
) {}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
import com.fasterxml.jackson.annotation.JsonFormat;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import jakarta.validation.Valid;
6+
import jakarta.validation.constraints.NotNull;
7+
8+
import java.time.ZonedDateTime;
9+
10+
public record SøknadInfo(
11+
12+
@JsonProperty(value = "status", required = true)
13+
@Valid
14+
@NotNull
15+
SøknadStatus status,
16+
17+
@JsonProperty(value = "søknadId", required = true)
18+
@Valid
19+
@NotNull
20+
String søknadId,
21+
22+
@JsonProperty(value = "mottattTidspunkt", required = true)
23+
@Valid
24+
@NotNull
25+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "UTC")
26+
ZonedDateTime mottattTidspunkt
27+
) {
28+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package no.nav.k9.innsyn.sak;
2+
3+
public enum SøknadStatus {
4+
MOTTATT, BEHANDLET;
5+
}

0 commit comments

Comments
 (0)