-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Første versjon insert av saksstatistikkrader på utkast.
Co-authored-by: Julie Hill Roa <[email protected]>
- Loading branch information
1 parent
08f345c
commit 645ca1c
Showing
8 changed files
with
362 additions
and
20 deletions.
There are no files selected for viewing
32 changes: 32 additions & 0 deletions
32
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,32 @@ | ||
package no.nav.veilarbvedtaksstotte.domain.statistikk | ||
|
||
import no.nav.common.types.identer.AktorId | ||
import java.math.BigInteger | ||
import java.time.LocalDateTime | ||
import java.util.* | ||
|
||
|
||
data class SakStatistikk( | ||
val behandlingId: BigInteger, | ||
val behandlingUuid: UUID? = null, | ||
val relatertBehandlingId: BigInteger? = null, | ||
val relatertFagsystem: String? = null, | ||
val sakId: String? = null, | ||
val aktorId: String, | ||
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 opprettetAv: String? = null, | ||
val saksbehandler: String? = null, | ||
val ansvarligBeslutter: String? = null, | ||
val ansvarligEnhet: String? = null, | ||
val avsender: String? = null, | ||
val versjon: String? = null, | ||
) |
135 changes: 135 additions & 0 deletions
135
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,135 @@ | ||
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.sql.Types | ||
import java.util.* | ||
|
||
@Repository | ||
class SakStatistikkRepository(val jdbcTemplate: JdbcTemplate) { | ||
|
||
val namedParameterJdbcTemplate = NamedParameterJdbcTemplate(jdbcTemplate) | ||
|
||
val SAK_STATISTIKK_TABLE = "SAK_STATISTIKK" | ||
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 AKTOR_ID = "AKTOR_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 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 ($BEHANDLING_ID, $BEHANDLING_UUID, $RELATERT_BEHANDLING_ID, | ||
$RELATERT_FAGSYSTEM, $SAK_ID, $AKTOR_ID, $MOTTATT_TID, $REGISTRERT_TID, $FERDIGBEHANDLET_TID, | ||
$ENDRET_TID, $TEKNISK_TID, $SAK_YTELSE, $BEHANDLING_TYPE, $BEHANDLING_STATUS, | ||
$BEHANDLING_RESULTAT, $BEHANDLING_METODE, $OPPRETTET_AV, $SAKSBEHANDLER, $ANSVARLIG_BESLUTTER, | ||
$ANSVARLIG_ENHET, $AVSENDER, $VERSJON) | ||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) | ||
""" | ||
|
||
jdbcTemplate.update( | ||
sql, | ||
sakStatistikkRad.behandlingId, | ||
sakStatistikkRad.behandlingUuid, | ||
sakStatistikkRad.relatertBehandlingId, | ||
sakStatistikkRad.relatertFagsystem, | ||
sakStatistikkRad.sakId, | ||
sakStatistikkRad.aktorId, | ||
sakStatistikkRad.mottattTid, | ||
sakStatistikkRad.registrertTid, | ||
sakStatistikkRad.ferdigbehandletTid, | ||
sakStatistikkRad.endretTid, | ||
sakStatistikkRad.tekniskTid, | ||
sakStatistikkRad.sakYtelse, | ||
sakStatistikkRad.behandlingType, | ||
sakStatistikkRad.behandlingStatus, | ||
sakStatistikkRad.behandlingResultat, | ||
sakStatistikkRad.behandlingMetode, | ||
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 insertSakStatistikkRadUtkast(behandlingId: String, aktorId: String, opprettetAv: String, ansvarligEnhet: String) { | ||
val parameters = MapSqlParameterSource() | ||
.addValue("behandlingId", behandlingId.toBigInteger(), Types.BIGINT) | ||
.addValue("aktorId", aktorId, Types.VARCHAR) | ||
.addValue("opprettetAv", opprettetAv, Types.VARCHAR) | ||
.addValue("ansvarligEnhet", ansvarligEnhet, Types.VARCHAR) | ||
.addValue("avsender", "Oppfølgingsvedtak § 14 a", Types.VARCHAR) | ||
.addValue("versjon", "Dockerimage_tag_1", Types.VARCHAR) | ||
val sql = """INSERT INTO $SAK_STATISTIKK_TABLE ($BEHANDLING_ID, $AKTOR_ID, $OPPRETTET_AV, $ANSVARLIG_ENHET, $AVSENDER, $VERSJON) | ||
VALUES (:behandlingId, :aktorId, :opprettetAv, :ansvarligEnhet, :avsender, :versjon)""" | ||
jdbcTemplate.update(sql, parameters) | ||
} | ||
*/ | ||
|
||
private val sakStatistikkRowMapper: RowMapper<SakStatistikk> = RowMapper { rs, _ -> | ||
SakStatistikk( | ||
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), | ||
aktorId = rs.getString(AKTOR_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), | ||
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) | ||
) | ||
} | ||
} |
63 changes: 63 additions & 0 deletions
63
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,63 @@ | ||
package no.nav.veilarbvedtaksstotte.service | ||
|
||
import no.nav.common.client.aktoroppslag.AktorOppslagClient | ||
import org.slf4j.LoggerFactory | ||
import no.nav.common.types.identer.Fnr | ||
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 java.util.Date | ||
|
||
private val log = LoggerFactory.getLogger(SakStatistikkService::class.java) | ||
private val AVSENDER = "Oppfølgingsvedtak § 14 a" | ||
@Service | ||
class SakStatistikkService @Autowired constructor( | ||
private val sakStatistikkRepository: SakStatistikkRepository, | ||
private val authService: AuthService, | ||
private val aktorOppslagClient: AktorOppslagClient, | ||
) { | ||
private fun sjekkOmUtkastRadFinnes(statistikkListe: List<SakStatistikk>?): Boolean { | ||
if (statistikkListe == null) { | ||
return false | ||
} | ||
val antallUtkast = statistikkListe.stream() | ||
.filter { item: SakStatistikk -> item.behandlingMetode == "UTKAST" } | ||
.toList() | ||
.size | ||
return antallUtkast == 0 | ||
} | ||
|
||
fun hentStatistikkRader(fnr: Fnr): List<SakStatistikk> { | ||
val aktorId = aktorOppslagClient.hentAktorId(fnr) | ||
authService.sjekkTilgangTilBrukerOgEnhet(fnr) | ||
return sakStatistikkRepository.hentSakStatistikkListe(aktorId.toString()) | ||
} | ||
|
||
|
||
fun leggTilStatistikkRad(sakStatistikkRad: SakStatistikk): Boolean { | ||
val personFnr = authService.getFnrOrThrow(sakStatistikkRad.aktorId) | ||
val eksisterendeRader = hentStatistikkRader(personFnr) | ||
log.debug("Eksisterende rader: {}", true) | ||
if (sjekkOmUtkastRadFinnes(eksisterendeRader) | ||
) { | ||
log.info("Insert SakStatistikk-rad for bruker: {}", sakStatistikkRad) | ||
sakStatistikkRepository.insertSakStatistikkRad(sakStatistikkRad) | ||
return true | ||
} | ||
return false | ||
} | ||
|
||
fun leggTilStatistikkRadUtkast(behandlingId: Long, aktorId: String, veilederIdent: String, oppfolgingsenhetId: String): Boolean { | ||
//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 sakStatistikk = SakStatistikk(behandlingId = behandlingId.toBigInteger(), aktorId = aktorId, mottattTid = LocalDateTime.now(), endretTid = LocalDateTime.now(), tekniskTid = LocalDateTime.now(), | ||
opprettetAv = veilederIdent, ansvarligEnhet = oppfolgingsenhetId, avsender = AVSENDER, versjon = "Dockerimage_tag_1") | ||
sakStatistikkRepository.insertSakStatistikkRad(sakStatistikk) | ||
return true | ||
} | ||
|
||
|
||
} | ||
|
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
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
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
Oops, something went wrong.