-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #627 from navikt/bigquery-skriv-til-tabell_KMH
Bigquery skriv utkast til tabell
- Loading branch information
Showing
10 changed files
with
366 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
34 changes: 34 additions & 0 deletions
34
src/main/java/no/nav/veilarbvedtaksstotte/domain/statistikk/SakStatistikk.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package no.nav.veilarbvedtaksstotte.domain.statistikk | ||
|
||
import java.math.BigInteger | ||
import java.time.LocalDateTime | ||
import java.util.* | ||
|
||
|
||
data class SakStatistikk( | ||
val behandlingId: BigInteger, | ||
val aktorId: String, | ||
val oppfolgingPeriodeUUID: UUID? = null, | ||
val behandlingUuid: UUID? = null, | ||
val relatertBehandlingId: BigInteger? = null, | ||
val relatertFagsystem: String? = null, | ||
val sakId: String? = null, | ||
val mottattTid: LocalDateTime, | ||
val registrertTid: LocalDateTime? = null, | ||
val ferdigbehandletTid: LocalDateTime? = null, | ||
val endretTid: LocalDateTime? = null, | ||
val tekniskTid: LocalDateTime? = null, | ||
val sakYtelse: String? = null, | ||
val behandlingType: String? = null, | ||
val behandlingStatus: String? = null, | ||
val behandlingResultat: String? = null, | ||
val behandlingMetode: String? = null, | ||
val innsatsgruppe: String? = null, | ||
val hovedmal: String? = null, | ||
val opprettetAv: String? = null, | ||
val saksbehandler: String? = null, | ||
val ansvarligBeslutter: String? = null, | ||
val ansvarligEnhet: String? = null, | ||
val avsender: String? = null, | ||
val versjon: String? = null, | ||
) |
137 changes: 137 additions & 0 deletions
137
src/main/java/no/nav/veilarbvedtaksstotte/repository/SakStatistikkRepository.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
package no.nav.veilarbvedtaksstotte.repository | ||
|
||
import no.nav.veilarbvedtaksstotte.domain.statistikk.SakStatistikk | ||
import org.springframework.jdbc.core.JdbcTemplate | ||
import org.springframework.jdbc.core.RowMapper | ||
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource | ||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate | ||
import org.springframework.stereotype.Repository | ||
import java.math.BigInteger | ||
import java.util.* | ||
|
||
@Repository | ||
class SakStatistikkRepository(val jdbcTemplate: JdbcTemplate) { | ||
|
||
val namedParameterJdbcTemplate = NamedParameterJdbcTemplate(jdbcTemplate) | ||
|
||
val SAK_STATISTIKK_TABLE = "SAK_STATISTIKK" | ||
val AKTOR_ID = "AKTOR_ID" | ||
val OPPFOLGING_PERIODE_UUID = "OPPFOLGING_PERIODE_UUID" | ||
val BEHANDLING_ID = "BEHANDLING_ID" | ||
val BEHANDLING_UUID = "BEHANDLING_UUID" | ||
val RELATERT_BEHANDLING_ID = "RELATERT_BEHANDLING_ID" | ||
val RELATERT_FAGSYSTEM = "RELATERT_FAGSYSTEM" | ||
val SAK_ID = "SAK_ID" | ||
val MOTTATT_TID = "MOTTATT_TID" | ||
val REGISTRERT_TID = "REGISTRERT_TID" | ||
val FERDIGBEHANDLET_TID = "FERDIGBEHANDLET_TID" | ||
val ENDRET_TID = "ENDRET_TID" | ||
val TEKNISK_TID = "TEKNISK_TID" | ||
val SAK_YTELSE = "SAK_YTELSE" | ||
val BEHANDLING_TYPE = "BEHANDLING_TYPE" | ||
val BEHANDLING_STATUS = "BEHANDLING_STATUS" | ||
val BEHANDLING_RESULTAT = "BEHANDLING_RESULTAT" | ||
val BEHANDLING_METODE = "BEHANDLING_METODE" | ||
val INNSATSGRUPPE = "INNSATSGRUPPE" | ||
val HOVEDMAL = "HOVEDMAL" | ||
val OPPRETTET_AV = "OPPRETTET_AV" | ||
val SAKSBEHANDLER = "SAKSBEHANDLER" | ||
val ANSVARLIG_BESLUTTER = "ANSVARLIG_BESLUTTER" | ||
val ANSVARLIG_ENHET = "ANSVARLIG_ENHET" | ||
val AVSENDER = "AVSENDER" | ||
val VERSJON = "VERSJON" | ||
|
||
fun insertSakStatistikkRad(sakStatistikkRad: SakStatistikk) { | ||
val sql = | ||
""" | ||
INSERT INTO $SAK_STATISTIKK_TABLE ($AKTOR_ID, $OPPFOLGING_PERIODE_UUID, $BEHANDLING_ID, $BEHANDLING_UUID, $RELATERT_BEHANDLING_ID, | ||
$RELATERT_FAGSYSTEM, $SAK_ID, $MOTTATT_TID, $REGISTRERT_TID, $FERDIGBEHANDLET_TID, | ||
$ENDRET_TID, $TEKNISK_TID, $SAK_YTELSE, $BEHANDLING_TYPE, $BEHANDLING_STATUS, | ||
$BEHANDLING_RESULTAT, $BEHANDLING_METODE, $INNSATSGRUPPE, $HOVEDMAL, $OPPRETTET_AV, $SAKSBEHANDLER, $ANSVARLIG_BESLUTTER, | ||
$ANSVARLIG_ENHET, $AVSENDER, $VERSJON) | ||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) | ||
""" | ||
|
||
jdbcTemplate.update( | ||
sql, | ||
sakStatistikkRad.aktorId, | ||
sakStatistikkRad.oppfolgingPeriodeUUID, | ||
sakStatistikkRad.behandlingId, | ||
sakStatistikkRad.behandlingUuid, | ||
sakStatistikkRad.relatertBehandlingId, | ||
sakStatistikkRad.relatertFagsystem, | ||
sakStatistikkRad.sakId, | ||
sakStatistikkRad.mottattTid, | ||
sakStatistikkRad.registrertTid, | ||
sakStatistikkRad.ferdigbehandletTid, | ||
sakStatistikkRad.endretTid, | ||
sakStatistikkRad.tekniskTid, | ||
sakStatistikkRad.sakYtelse, | ||
sakStatistikkRad.behandlingType, | ||
sakStatistikkRad.behandlingStatus, | ||
sakStatistikkRad.behandlingResultat, | ||
sakStatistikkRad.behandlingMetode, | ||
sakStatistikkRad.innsatsgruppe, | ||
sakStatistikkRad.hovedmal, | ||
sakStatistikkRad.opprettetAv, | ||
sakStatistikkRad.saksbehandler, | ||
sakStatistikkRad.ansvarligBeslutter, | ||
sakStatistikkRad.ansvarligEnhet, | ||
sakStatistikkRad.avsender, | ||
sakStatistikkRad.versjon | ||
) | ||
} | ||
|
||
fun hentSakStatistikkListeAlt(behandlingId: BigInteger): List<SakStatistikk> { | ||
val parameters = MapSqlParameterSource("behandlingId", behandlingId) | ||
val sql = "SELECT * FROM $SAK_STATISTIKK_TABLE WHERE $BEHANDLING_ID = :behandlingId" | ||
|
||
return namedParameterJdbcTemplate.query(sql, parameters, sakStatistikkRowMapper) | ||
} | ||
|
||
fun hentSakStatistikkListe(aktorId: String): List<SakStatistikk> { | ||
val parameters = MapSqlParameterSource("aktorId", aktorId) | ||
|
||
val sql = "SELECT * FROM $SAK_STATISTIKK_TABLE WHERE $AKTOR_ID = :aktorId" | ||
|
||
return namedParameterJdbcTemplate.query(sql, parameters, sakStatistikkRowMapper) | ||
} | ||
fun hentSakStatistikkListeInnenforOppfolgingsperiode(oppfolgingsperiodeUuid: UUID): List<SakStatistikk> { | ||
val parameters = MapSqlParameterSource("oppfolgingPeriodeUuid", oppfolgingsperiodeUuid) | ||
|
||
val sql = "SELECT * FROM $SAK_STATISTIKK_TABLE WHERE $OPPFOLGING_PERIODE_UUID = :oppfolgingPeriodeUuid" | ||
|
||
return namedParameterJdbcTemplate.query(sql, parameters, sakStatistikkRowMapper) | ||
} | ||
|
||
private val sakStatistikkRowMapper: RowMapper<SakStatistikk> = RowMapper { rs, _ -> | ||
SakStatistikk( | ||
aktorId = rs.getString(AKTOR_ID), | ||
oppfolgingPeriodeUUID = rs.getString(OPPFOLGING_PERIODE_UUID)?.let { UUID.fromString(it) }, | ||
behandlingId = rs.getBigDecimal(BEHANDLING_ID).toBigInteger(), | ||
behandlingUuid = rs.getString(BEHANDLING_UUID)?.let { UUID.fromString(it) }, | ||
relatertBehandlingId = rs.getBigDecimal(RELATERT_BEHANDLING_ID)?.toBigInteger(), | ||
relatertFagsystem = rs.getString(RELATERT_FAGSYSTEM), | ||
sakId = rs.getString(SAK_ID), | ||
mottattTid = rs.getTimestamp(MOTTATT_TID).toLocalDateTime(), | ||
registrertTid = rs.getTimestamp(REGISTRERT_TID).toLocalDateTime(), | ||
ferdigbehandletTid = rs.getTimestamp(FERDIGBEHANDLET_TID)?.toLocalDateTime(), | ||
endretTid = rs.getTimestamp(ENDRET_TID)?.toLocalDateTime(), | ||
tekniskTid = rs.getTimestamp(TEKNISK_TID)?.toLocalDateTime(), | ||
sakYtelse = rs.getString(SAK_YTELSE), | ||
behandlingType = rs.getString(BEHANDLING_TYPE), | ||
behandlingStatus = rs.getString(BEHANDLING_STATUS), | ||
behandlingResultat = rs.getString(BEHANDLING_RESULTAT), | ||
behandlingMetode = rs.getString(BEHANDLING_METODE), | ||
innsatsgruppe = rs.getString(INNSATSGRUPPE), | ||
hovedmal = rs.getString(HOVEDMAL), | ||
opprettetAv = rs.getString(OPPRETTET_AV), | ||
saksbehandler = rs.getString(SAKSBEHANDLER), | ||
ansvarligBeslutter = rs.getString(ANSVARLIG_BESLUTTER), | ||
ansvarligEnhet = rs.getString(ANSVARLIG_ENHET), | ||
avsender = rs.getString(AVSENDER), | ||
versjon = rs.getString(VERSJON) | ||
) | ||
} | ||
} |
68 changes: 68 additions & 0 deletions
68
src/main/java/no/nav/veilarbvedtaksstotte/service/SakStatistikkService.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package no.nav.veilarbvedtaksstotte.service | ||
|
||
import no.nav.common.types.identer.Fnr | ||
import no.nav.veilarbvedtaksstotte.client.veilarboppfolging.VeilarboppfolgingClient | ||
import no.nav.veilarbvedtaksstotte.domain.statistikk.SakStatistikk | ||
import no.nav.veilarbvedtaksstotte.repository.SakStatistikkRepository | ||
import org.springframework.beans.factory.annotation.Autowired | ||
import org.springframework.stereotype.Service | ||
import java.time.LocalDateTime | ||
import io.getunleash.DefaultUnleash | ||
import no.nav.veilarbvedtaksstotte.utils.SAK_STATISTIKK_PAA | ||
import java.util.UUID | ||
|
||
private const val AVSENDER = "Oppfølgingsvedtak § 14 a" | ||
|
||
@Service | ||
class SakStatistikkService @Autowired constructor( | ||
private val sakStatistikkRepository: SakStatistikkRepository, | ||
private val veilarboppfolgingClient: VeilarboppfolgingClient, | ||
private val unleashClient: DefaultUnleash | ||
) { | ||
|
||
fun hentStatistikkRader(oppfolgingsperiodeUuid: UUID): Boolean { | ||
val statistikkListe = | ||
sakStatistikkRepository.hentSakStatistikkListeInnenforOppfolgingsperiode(oppfolgingsperiodeUuid) | ||
val antallUtkast = | ||
statistikkListe.stream().filter { item: SakStatistikk -> item.behandlingMetode == "UTKAST" }.toList().size | ||
return antallUtkast == 0 | ||
} | ||
|
||
fun leggTilStatistikkRadUtkast( | ||
behandlingId: Long, aktorId: String, fnr: Fnr, veilederIdent: String, oppfolgingsenhetId: String | ||
) { | ||
//TODO: Hent mottattTid (som er start oppfølgingsperiode på første vedtak, vi må komme tilbake til hva det er ved seinere vedtak i samme periode. | ||
//TODO: Avsender er en konstant, versjon må hentes fra Docker-image | ||
val statistikkPaa = unleashClient.isEnabled(SAK_STATISTIKK_PAA) | ||
|
||
if (statistikkPaa) { | ||
|
||
val oppfolgingsperiode = veilarboppfolgingClient.hentGjeldendeOppfolgingsperiode(fnr) | ||
oppfolgingsperiode.ifPresent { | ||
val mottattTid = if (hentStatistikkRader(oppfolgingsperiode.get().uuid)) { | ||
LocalDateTime.now() | ||
} else { | ||
veilarboppfolgingClient.hentGjeldendeOppfolgingsperiode(fnr).get().startDato.toLocalDateTime() | ||
} | ||
|
||
|
||
val sakId = veilarboppfolgingClient.hentOppfolgingsperiodeSak(oppfolgingsperiode.get().uuid).sakId | ||
val sakStatistikk = SakStatistikk( | ||
aktorId = aktorId, | ||
oppfolgingPeriodeUUID = oppfolgingsperiode.get().uuid, | ||
behandlingId = behandlingId.toBigInteger(), | ||
sakId = sakId.toString(), | ||
mottattTid = mottattTid, | ||
endretTid = LocalDateTime.now(), | ||
tekniskTid = LocalDateTime.now(), | ||
opprettetAv = veilederIdent, | ||
ansvarligEnhet = oppfolgingsenhetId, | ||
avsender = AVSENDER, | ||
versjon = "Dockerimage_tag_1" | ||
) | ||
sakStatistikkRepository.insertSakStatistikkRad(sakStatistikk) | ||
} | ||
} | ||
} | ||
} | ||
|
Oops, something went wrong.