Skip to content

Commit aab3238

Browse files
authored
Merge pull request #1602 from navikt/ny_populerere-svar-fra-registrerings-filter
Ny populerere svar fra registrerings filter
2 parents bf8eccc + f212f3b commit aab3238

31 files changed

+643
-197
lines changed

.intelliJ_ddl/DDL.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,8 @@ CREATE TABLE public.fargekategori (
417417
fnr character varying(11) NOT NULL,
418418
verdi character varying(25),
419419
sist_endret timestamp without time zone NOT NULL,
420-
sist_endret_av_veilederident character varying(7)
420+
sist_endret_av_veilederident character varying(7),
421+
enhet_id character varying(4)
421422
);
422423

423424

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package no.nav.pto.veilarbportefolje.arbeidssoeker.v2
2+
3+
import no.nav.common.types.identer.Fnr
4+
import no.nav.pto.veilarbportefolje.database.PostgresTable.OPPLYSNINGER_OM_ARBEIDSSOEKER
5+
import no.nav.pto.veilarbportefolje.database.PostgresTable.OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON
6+
import no.nav.pto.veilarbportefolje.database.PostgresTable.SISTE_ARBEIDSSOEKER_PERIODE
7+
import no.nav.pto.veilarbportefolje.database.PostgresTable.PROFILERING
8+
import no.nav.pto.veilarbportefolje.util.DateUtils
9+
import org.springframework.beans.factory.annotation.Qualifier
10+
import org.springframework.jdbc.core.JdbcTemplate
11+
import org.springframework.stereotype.Repository
12+
13+
@Repository
14+
class ArbeidssoekerDataRepository(
15+
@Qualifier("PostgresJdbcReadOnly") private val db: JdbcTemplate
16+
) {
17+
18+
fun hentOpplysningerOmArbeidssoeker(fnrs: List<Fnr>): Map<String, OpplysningerOmArbeidssoeker> {
19+
val arbeidssoekerDataPaaBruker = mutableMapOf<String, OpplysningerOmArbeidssoeker>()
20+
21+
22+
val fnrsPostgresArray = "{${fnrs.joinToString(",") { it.get() }}}"
23+
val sqlString = """
24+
SELECT
25+
sap.${SISTE_ARBEIDSSOEKER_PERIODE.FNR},
26+
ooa.*,
27+
ooaj.${OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON.JOBBSITUASJON}
28+
FROM ${OPPLYSNINGER_OM_ARBEIDSSOEKER.TABLE_NAME} ooa
29+
INNER JOIN ${SISTE_ARBEIDSSOEKER_PERIODE.TABLE_NAME} sap ON ooa.${OPPLYSNINGER_OM_ARBEIDSSOEKER.PERIODE_ID} = sap.${SISTE_ARBEIDSSOEKER_PERIODE.ARBEIDSSOKER_PERIODE_ID}
30+
INNER JOIN ${OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON.TABLE_NAME} ooaj ON ooa.${OPPLYSNINGER_OM_ARBEIDSSOEKER.OPPLYSNINGER_OM_ARBEIDSSOEKER_ID} = ooaj.${OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON.OPPLYSNINGER_OM_ARBEIDSSOEKER_ID}
31+
WHERE sap.${SISTE_ARBEIDSSOEKER_PERIODE.FNR} = ANY ('$fnrsPostgresArray'::varchar[])
32+
""".trimIndent()
33+
34+
db.query(sqlString) { rs, _ ->
35+
val fnr = rs.getString(SISTE_ARBEIDSSOEKER_PERIODE.FNR)
36+
val opplysningPaaBruker = arbeidssoekerDataPaaBruker[fnr]
37+
if (opplysningPaaBruker != null) {
38+
arbeidssoekerDataPaaBruker[fnr] = opplysningPaaBruker.copy(
39+
jobbsituasjoner = opplysningPaaBruker.jobbsituasjoner + JobbSituasjonBeskrivelse.valueOf(
40+
rs.getString(
41+
OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON.JOBBSITUASJON
42+
)
43+
)
44+
)
45+
} else {
46+
val utdanningBestatt = rs.getString(OPPLYSNINGER_OM_ARBEIDSSOEKER.UTDANNING_BESTATT)
47+
val utdanningGodkjent = rs.getString(OPPLYSNINGER_OM_ARBEIDSSOEKER.UTDANNING_GODKJENT)
48+
arbeidssoekerDataPaaBruker[fnr] = OpplysningerOmArbeidssoeker(
49+
sendtInnTidspunkt = DateUtils.toZonedDateTime(rs.getTimestamp(OPPLYSNINGER_OM_ARBEIDSSOEKER.SENDT_INN_TIDSPUNKT)),
50+
utdanning = mapTilUtdanning(rs.getString(OPPLYSNINGER_OM_ARBEIDSSOEKER.UTDANNING_NUS_KODE)),
51+
utdanningBestatt = if(utdanningBestatt != null) JaNeiVetIkke.valueOf(utdanningBestatt) else null,
52+
utdanningGodkjent = if (utdanningGodkjent != null) JaNeiVetIkke.valueOf(utdanningGodkjent) else null,
53+
jobbsituasjoner = listOf(
54+
JobbSituasjonBeskrivelse.valueOf(
55+
rs.getString(
56+
OPPLYSNINGER_OM_ARBEIDSSOEKER_JOBBSITUASJON.JOBBSITUASJON
57+
)
58+
)
59+
)
60+
)
61+
}
62+
}
63+
return arbeidssoekerDataPaaBruker.toMap()
64+
}
65+
66+
fun hentProfileringsresultatListe(fnrs: List<Fnr>): Map<String, Profilering> {
67+
val profileringsresultatPaaBruker = mutableMapOf<String, Profilering>()
68+
69+
val fnrsPostgresArray = "{${fnrs.joinToString(",") { it.get() }}}"
70+
val sqlString = """
71+
SELECT
72+
sap.${SISTE_ARBEIDSSOEKER_PERIODE.FNR},
73+
p.${PROFILERING.PROFILERING_RESULTAT},
74+
p.${PROFILERING.SENDT_INN_TIDSPUNKT}
75+
FROM ${PROFILERING.TABLE_NAME} p
76+
INNER JOIN ${SISTE_ARBEIDSSOEKER_PERIODE.TABLE_NAME} sap ON p.${PROFILERING.PERIODE_ID} = sap.${SISTE_ARBEIDSSOEKER_PERIODE.ARBEIDSSOKER_PERIODE_ID}
77+
WHERE sap.${SISTE_ARBEIDSSOEKER_PERIODE.FNR} = ANY ('$fnrsPostgresArray'::varchar[])
78+
""".trimIndent()
79+
80+
db.query(sqlString) { rs, _ ->
81+
val fnr = rs.getString(SISTE_ARBEIDSSOEKER_PERIODE.FNR)
82+
profileringsresultatPaaBruker[fnr] = Profilering(
83+
profileringsresultat = Profileringsresultat.valueOf(rs.getString(PROFILERING.PROFILERING_RESULTAT)),
84+
sendtInnTidspunkt = DateUtils.toZonedDateTime(rs.getTimestamp(PROFILERING.SENDT_INN_TIDSPUNKT))
85+
)
86+
}
87+
return profileringsresultatPaaBruker.toMap()
88+
89+
}
90+
91+
92+
}
Lines changed: 22 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,30 @@
11
package no.nav.pto.veilarbportefolje.arbeidssoeker.v2
22

33
import no.nav.common.types.identer.Fnr
4-
import no.nav.pto.veilarbportefolje.util.DateUtils
54
import java.time.ZonedDateTime
6-
import java.util.UUID
7-
import no.nav.paw.arbeidssokerregisteret.api.v4.OpplysningerOmArbeidssoeker as OpplysningerOmArbeidssoekerKafkaMelding
8-
import no.nav.paw.arbeidssokerregisteret.api.v1.Profilering as ProfileringKafkaMelding
5+
data class ArbeidssoekerData(
6+
val fnr: Fnr,
7+
val opplysningerOmArbeidssoeker: OpplysningerOmArbeidssoeker? = null,
8+
val profilering: Profilering? = null
9+
)
910

1011
data class OpplysningerOmArbeidssoeker(
11-
val opplysningerOmArbeidssoekerId: UUID,
12-
val periodeId: UUID,
1312
val sendtInnTidspunkt: ZonedDateTime,
14-
val utdanningNusKode: String?,
15-
val utdanningBestatt: String?,
16-
val utdanningGodkjent: String?,
17-
val opplysningerOmJobbsituasjon: OpplysningerOmArbeidssoekerJobbsituasjon
13+
val utdanning: Utdanning,
14+
val utdanningBestatt: JaNeiVetIkke? = null,
15+
val utdanningGodkjent: JaNeiVetIkke? = null,
16+
val jobbsituasjoner: List<JobbSituasjonBeskrivelse>
1817
)
1918

20-
data class OpplysningerOmArbeidssoekerJobbsituasjon(
21-
val opplysningerOmArbeidssoekerId: UUID,
22-
val jobbsituasjon: List<JobbSituasjonBeskrivelse>
23-
)
19+
enum class Utdanning {
20+
INGEN_UTDANNING,
21+
GRUNNSKOLE,
22+
VIDEREGAENDE_GRUNNUTDANNING,
23+
VIDEREGAENDE_FAGBREV_SVENNEBREV,
24+
HOYERE_UTDANNING_1_TIL_4,
25+
HOYERE_UTDANNING_5_ELLER_MER,
26+
INGEN_SVAR
27+
}
2428

2529
enum class JobbSituasjonBeskrivelse {
2630
UKJENT_VERDI,
@@ -37,16 +41,11 @@ enum class JobbSituasjonBeskrivelse {
3741
DELTIDSJOBB_VIL_MER,
3842
NY_JOBB,
3943
KONKURS,
40-
ANNET
44+
ANNET,
45+
INGEN_DATA
4146
}
4247

43-
data class ArbeidssoekerPeriode(
44-
val arbeidssoekerperiodeId: UUID,
45-
val fnr: Fnr
46-
)
47-
4848
data class Profilering(
49-
val periodeId: UUID,
5049
val profileringsresultat: Profileringsresultat,
5150
val sendtInnTidspunkt: ZonedDateTime
5251
)
@@ -59,50 +58,9 @@ enum class Profileringsresultat {
5958
OPPGITT_HINDRINGER
6059
}
6160

62-
data class ProfileringResponse(
63-
val profileringId: UUID,
64-
val periodeId: UUID,
65-
val opplysningerOmArbeidssoekerId: UUID,
66-
val sendtInnAv: MetadataResponse,
67-
val profilertTil: ProfilertTil,
68-
val jobbetSammenhengendeSeksAvTolvSisteManeder: Boolean?,
69-
val alder: Int?
70-
)
7161

72-
fun ProfileringResponse.toProfilering(): Profilering {
73-
return Profilering(
74-
periodeId = this.periodeId,
75-
profileringsresultat = Profileringsresultat.valueOf(this.profilertTil.name),
76-
sendtInnTidspunkt = this.sendtInnAv.tidspunkt
77-
)
78-
}
7962

80-
fun OpplysningerOmArbeidssoekerResponse.toOpplysningerOmArbeidssoeker() = OpplysningerOmArbeidssoeker(
81-
opplysningerOmArbeidssoekerId = this.opplysningerOmArbeidssoekerId,
82-
periodeId = this.periodeId,
83-
sendtInnTidspunkt = this.sendtInnAv.tidspunkt,
84-
utdanningNusKode = this.utdanning?.nus,
85-
utdanningBestatt = this.utdanning?.bestaatt?.name,
86-
utdanningGodkjent = this.utdanning?.godkjent?.name,
87-
opplysningerOmJobbsituasjon = OpplysningerOmArbeidssoekerJobbsituasjon(
88-
this.opplysningerOmArbeidssoekerId,
89-
this.jobbsituasjon.map { JobbSituasjonBeskrivelse.valueOf(it.beskrivelse.name) })
90-
)
9163

92-
fun OpplysningerOmArbeidssoekerKafkaMelding.toOpplysningerOmArbeidssoeker() = OpplysningerOmArbeidssoeker(
93-
opplysningerOmArbeidssoekerId = this.id,
94-
periodeId = this.periodeId,
95-
sendtInnTidspunkt = DateUtils.toZonedDateTime(this.sendtInnAv.tidspunkt),
96-
utdanningNusKode = this.utdanning?.nus?.toString(),
97-
utdanningBestatt = this.utdanning?.bestaatt?.name,
98-
utdanningGodkjent = this.utdanning?.godkjent?.name,
99-
opplysningerOmJobbsituasjon = OpplysningerOmArbeidssoekerJobbsituasjon(
100-
this.id,
101-
this.jobbsituasjon.beskrivelser.map { JobbSituasjonBeskrivelse.valueOf(it.beskrivelse.name) })
102-
)
10364

104-
fun ProfileringKafkaMelding.toProfilering() = Profilering(
105-
periodeId = this.periodeId,
106-
profileringsresultat = Profileringsresultat.valueOf(this.profilertTil.name),
107-
sendtInnTidspunkt = DateUtils.toZonedDateTime(this.sendtInnAv.tidspunkt)
108-
)
65+
66+
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package no.nav.pto.veilarbportefolje.arbeidssoeker.v2
2+
3+
import no.nav.pto.veilarbportefolje.util.DateUtils
4+
import java.sql.Timestamp
5+
import java.util.*
6+
7+
data class OpplysningerOmArbeidssoekerEntity(
8+
val opplysningerOmArbeidssoekerId: UUID,
9+
val periodeId: UUID,
10+
val sendtInnTidspunkt: Timestamp,
11+
val utdanningNusKode: String?,
12+
val utdanningBestatt: String?,
13+
val utdanningGodkjent: String?,
14+
val opplysningerOmJobbsituasjon: OpplysningerOmArbeidssoekerJobbsituasjonEntity
15+
)
16+
17+
data class OpplysningerOmArbeidssoekerJobbsituasjonEntity(
18+
val opplysningerOmArbeidssoekerId: UUID,
19+
val jobbsituasjon: List<String>
20+
)
21+
22+
data class ArbeidssoekerPeriodeEntity(
23+
val arbeidssoekerperiodeId: UUID,
24+
val fnr: String
25+
)
26+
27+
data class ProfileringEntity(
28+
val periodeId: UUID,
29+
val profileringsresultat: String,
30+
val sendtInnTidspunkt: Timestamp
31+
)
32+
33+
34+
fun OpplysningerOmArbeidssoekerResponse.toOpplysningerOmArbeidssoekerEntity() = OpplysningerOmArbeidssoekerEntity(
35+
opplysningerOmArbeidssoekerId = this.opplysningerOmArbeidssoekerId,
36+
periodeId = this.periodeId,
37+
sendtInnTidspunkt = DateUtils.toTimestamp(this.sendtInnAv.tidspunkt),
38+
utdanningNusKode = this.utdanning?.nus,
39+
utdanningBestatt = this.utdanning?.bestaatt?.name,
40+
utdanningGodkjent = this.utdanning?.godkjent?.name,
41+
opplysningerOmJobbsituasjon = OpplysningerOmArbeidssoekerJobbsituasjonEntity(
42+
this.opplysningerOmArbeidssoekerId,
43+
this.jobbsituasjon.map { it.beskrivelse.name })
44+
)
45+
46+
fun no.nav.paw.arbeidssokerregisteret.api.v4.OpplysningerOmArbeidssoeker.toOpplysningerOmArbeidssoekerEntity() = OpplysningerOmArbeidssoekerEntity(
47+
opplysningerOmArbeidssoekerId = this.id,
48+
periodeId = this.periodeId,
49+
sendtInnTidspunkt = Timestamp.from(this.sendtInnAv.tidspunkt),
50+
utdanningNusKode = this.utdanning?.nus.toString(),
51+
utdanningBestatt = this.utdanning?.bestaatt?.name,
52+
utdanningGodkjent = this.utdanning?.godkjent?.name,
53+
opplysningerOmJobbsituasjon = OpplysningerOmArbeidssoekerJobbsituasjonEntity(
54+
this.id,
55+
this.jobbsituasjon.beskrivelser.map { it.beskrivelse.name })
56+
)
57+
58+
fun ProfileringResponse.toProfileringEntity(): ProfileringEntity {
59+
return ProfileringEntity(
60+
periodeId = this.periodeId,
61+
profileringsresultat = this.profilertTil.name,
62+
sendtInnTidspunkt = DateUtils.toTimestamp(this.sendtInnAv.tidspunkt)
63+
)
64+
}
65+
66+
fun no.nav.paw.arbeidssokerregisteret.api.v1.Profilering.toProfileringEntity() = ProfileringEntity(
67+
periodeId = this.periodeId,
68+
profileringsresultat = this.profilertTil.name,
69+
sendtInnTidspunkt = Timestamp.from(this.sendtInnAv.tidspunkt)
70+
)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package no.nav.pto.veilarbportefolje.arbeidssoeker.v2
2+
3+
import no.nav.pto.veilarbportefolje.domene.filtervalg.DinSituasjonSvar
4+
5+
fun mapTilUtdanning(nus: String?): Utdanning {
6+
return when (nus) {
7+
"0" -> Utdanning.INGEN_UTDANNING
8+
"2" -> Utdanning.GRUNNSKOLE
9+
"3" -> Utdanning.VIDEREGAENDE_GRUNNUTDANNING
10+
"4" -> Utdanning.VIDEREGAENDE_FAGBREV_SVENNEBREV
11+
"6" -> Utdanning.HOYERE_UTDANNING_1_TIL_4
12+
"7" -> Utdanning.HOYERE_UTDANNING_5_ELLER_MER
13+
else -> Utdanning.INGEN_SVAR
14+
}
15+
}
16+
17+
fun inkludereSituasjonerFraBadeVeilarbregistreringOgArbeidssoekerregistrering(jobbsituasjon: JobbSituasjonBeskrivelse?): List<String> {
18+
return when(jobbsituasjon) {
19+
JobbSituasjonBeskrivelse.HAR_BLITT_SAGT_OPP -> listOf(JobbSituasjonBeskrivelse.HAR_BLITT_SAGT_OPP.name, DinSituasjonSvar.MISTET_JOBBEN.name, DinSituasjonSvar.OPPSIGELSE.name)
20+
JobbSituasjonBeskrivelse.ER_PERMITTERT -> listOf(JobbSituasjonBeskrivelse.ER_PERMITTERT.name, DinSituasjonSvar.ENDRET_PERMITTERINGSPROSENT.name, DinSituasjonSvar.TILBAKE_TIL_JOBB.name )
21+
JobbSituasjonBeskrivelse.HAR_SAGT_OPP -> listOf(JobbSituasjonBeskrivelse.HAR_SAGT_OPP.name, DinSituasjonSvar.SAGT_OPP.name)
22+
JobbSituasjonBeskrivelse.IKKE_VAERT_I_JOBB_SISTE_2_AAR -> listOf(JobbSituasjonBeskrivelse.IKKE_VAERT_I_JOBB_SISTE_2_AAR.name, DinSituasjonSvar.JOBB_OVER_2_AAR.name)
23+
JobbSituasjonBeskrivelse.ANNET -> listOf(JobbSituasjonBeskrivelse.ANNET.name, DinSituasjonSvar.VIL_FORTSETTE_I_JOBB.name)
24+
else -> if (jobbsituasjon != null) listOf(jobbsituasjon.name) else emptyList()
25+
}
26+
}

0 commit comments

Comments
 (0)