Skip to content

Commit

Permalink
Fix fetching of legact id
Browse files Browse the repository at this point in the history
  • Loading branch information
tu55eladd committed Mar 7, 2024
1 parent 63f811d commit ac50af2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,11 @@ class DeletedMessagesFixSchedule(
}

fun HistoriskDeltakelse.utledFixMetode(): FixMetode {
val datoStatusEndring = this.dato_statusendring?.asBackwardsFormattedLocalDateTime("dato_statusendring")
val arenaDataDeltakelser =
historiskDeltakelseRepo.finnEksisterendeDeltakelserForGjennomforing(person_id, tiltakgjennomforing_id) // alle deltakelser vi har i våre data for denne person-gjennomføring
val matchMedFilter = arenaDataDeltakelser
.filter { it.lastestStatusEndretDato == this.dato_statusendring?.asBackwardsFormattedLocalDateTime("dato_statusendring") } // er det noen av våre deltakelser som matcher med denne historisk deltakelsen?
.filter { it.lastestStatusEndretDato == datoStatusEndring } // er det noen av våre deltakelser som matcher med denne historisk deltakelsen?

return when {
arenaDataDeltakelser.isEmpty() -> {
Expand All @@ -107,7 +108,7 @@ class DeletedMessagesFixSchedule(
// Alt som kommer på relast er ikke slettet, hvis vi har bare 1, har den også kommet på relast
arenaDataDeltakelser.size == 1 -> {
log.info("Fant bare 1 eksisterende arenadeltakelse for historisk deltakelse ${this.hist_tiltakdeltaker_id}")
val legacyId = historiskDeltakelseRepo.getLegacyId(this.person_id, this.tiltakgjennomforing_id)
val legacyId = datoStatusEndring?.let { historiskDeltakelseRepo.getLegacyId(this.person_id, this.tiltakgjennomforing_id, it) }
when {
legacyId != null -> OpprettMedLegacyId(legacyId.deltakerId, this, legacyId.funksjonellId, generertPos = hentPosFraHullet())
else -> Opprett(genererDeltakelseId(), this, generertPos = hentPosFraHullet())
Expand All @@ -119,7 +120,7 @@ class DeletedMessagesFixSchedule(
matchMedFilter.size == 0 -> {
// Her kan det hende vi har den likevel, men dato_statusendring er ikke oppdatert hos oss. (hullet)
log.info("Fant ingen eksisterende arenadeltakelse for historisk deltakelse ${this.hist_tiltakdeltaker_id}")
val legacyId = historiskDeltakelseRepo.getLegacyId(this.person_id, this.tiltakgjennomforing_id) // Jovisst, vi hadde den likevel - OK
val legacyId = datoStatusEndring?.let { historiskDeltakelseRepo.getLegacyId(this.person_id, this.tiltakgjennomforing_id, it) } // Jovisst, vi hadde den likevel - OK
// hvis legacy id finnes i arena_data -> Oppdater
when {
legacyId != null -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ import no.nav.arena_tiltak_aktivitet_acl.utils.getLocalDateTime
import no.nav.arena_tiltak_aktivitet_acl.utils.getNullableLocalDateTime
import org.slf4j.LoggerFactory
import org.springframework.dao.EmptyResultDataAccessException
import org.springframework.dao.IncorrectResultSizeDataAccessException
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
import org.springframework.stereotype.Component
import java.sql.ResultSet
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*

@Component
Expand Down Expand Up @@ -94,16 +96,16 @@ class HistoriskDeltakelseRepo(
return result
}

fun getLegacyId(personId: Long, gjennomforingId: Long /*datoStatusEndring: String?*/): LegacyId? {
fun getLegacyId(personId: Long, gjennomforingId: Long, datoStatusEndring: LocalDateTime): LegacyId? {
val sql = """
select translation.arena_id as deltakerId, translation.aktivitet_id as funksjonellId
from hist_tiltakdeltaker
join dobledeltakelser on hist_tiltakdeltaker.person_id = dobledeltakelser.person_id
join translation on dobledeltakelser.tiltakdeltaker_id = translation.arena_id
and hist_tiltakdeltaker.tiltakgjennomforing_id = dobledeltakelser.tiltakgjennomforing_id
and dobledeltakelser.jn_operation = 'DEL'
join translation on dobledeltakelser.tiltakdeltaker_id = translation.arena_id and hist_tiltakdeltaker.tiltakgjennomforing_id = dobledeltakelser.tiltakgjennomforing_id
where dobledeltakelser.jn_operation = 'DEL'
and dobledeltakelser.person_id = :person_id
and dobledeltakelser.tiltakgjennomforing_id = :gjennomforing_id
and dobledeltakelser.dato_statusendring = :date_statusendring
and (
(dobledeltakelser.dato_statusendring is null and hist_tiltakdeltaker.dato_statusendring is null)
or to_timestamp(dobledeltakelser.dato_statusendring, 'YYYY-MM-DD HH24:MI:SS')
Expand All @@ -112,11 +114,15 @@ class HistoriskDeltakelseRepo(
val params = mapOf(
"person_id" to personId,
"gjennomforing_id" to gjennomforingId,
// "datoStatusEndring" to datoStatusEndring
"date_statusendring" to datoStatusEndring.format(arenaYearfirstFormat)
)
return runCatching { template.queryForObject(sql, params)
{ rs, _ -> LegacyId(UUID.fromString(rs.getString("funksjonellId")), DeltakelseId(rs.getLong("deltakerId"))) }
}.getOrNull()

val ids = template.query(sql, params) { rs, _ -> LegacyId(UUID.fromString(rs.getString("funksjonellId")), DeltakelseId(rs.getLong("deltakerId"))) }
return when {
ids.size > 1 -> throw IncorrectResultSizeDataAccessException("Skal ikke få flere legacy id-er i translation person:$personId gjennomforing:$gjennomforingId", ids.size)
ids.size == 1 -> ids.first()
else -> null
}
}


Expand Down Expand Up @@ -198,3 +204,5 @@ data class LegacyId(
val funksjonellId: UUID,
val deltakerId: DeltakelseId
)

val arenaYearfirstFormat = DateTimeFormatter.ofPattern("YYYY-MM-DD HH:mm:ss")
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.delay
import no.nav.arena_tiltak_aktivitet_acl.domain.kafka.aktivitet.*
import no.nav.arena_tiltak_aktivitet_acl.domain.kafka.arena.tiltak.DeltakelseId
import no.nav.arena_tiltak_aktivitet_acl.historiserteDeltakerFix.arenaYearfirstFormat
import no.nav.arena_tiltak_aktivitet_acl.integration.IntegrationTestBase
import no.nav.arena_tiltak_aktivitet_acl.repositories.AdvisoryLockRepository
import no.nav.arena_tiltak_aktivitet_acl.repositories.AktivitetDbo
Expand Down Expand Up @@ -201,4 +202,10 @@ class AktivitetServiceTest : IntegrationTestBase() {
finishOrder shouldContainInOrder listOf(1, 2)

}

@Test
fun `Test date formatter` () {
LocalDateTime.of(2024, 1,31,13,21,31)
.format(arenaYearfirstFormat) shouldBe "2024-01-31 13:21:31"
}
}

0 comments on commit ac50af2

Please sign in to comment.