Skip to content

Commit

Permalink
EY-4905 avbryt annulerte behandlinger (#6747)
Browse files Browse the repository at this point in the history
* Rydder bort "spøkelsesbehandlinger" som kun finnes i statistikk

* Legger på litt ekstra logging for å identifisere nye tilfeller

Av tilbakestilte behandlinger, slik at det er mulig å få med seg at det skjer på nytt.

* annulert -> annullert

* Bruker enum for avbrutt

* Legger på en ekstra try/catch for å unngå spam

I tilfelle noe brekker

* Rekjører rydding med faktisk riktig rydding

* Logger fra gjennomføringen
  • Loading branch information
oyvindsh authored Jan 10, 2025
1 parent 53406ea commit e1f4b4a
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,19 @@ class SakRepository(
}
statement.executeQuery().toList { tilSakRad() }
}

fun slettRad(id: Long) {
datasource.connection.use { connection ->
val statement =
connection.prepareStatement(
"""
DELETE FROM sak WHERE id = ?
""".trimIndent(),
)
statement.setLong(1, id)
statement.executeUpdate()
}
}
}

private fun PreparedStatement.setSakRad(sakRad: SakRad): PreparedStatement =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,22 +94,30 @@ class AvbrytAnnullerteBehandlingerJobb(
.forEach {
try {
val rader = sakRepository.hentRaderForBehandlingId(it)
val aktuellRad = rader.singleOrNull()
if (aktuellRad == null) {
if (rader.size != 2) {
logger.warn(
"Kunne ikke avbryte behandling som er rullet tilbake i behandling, siden vi har " +
"${rader.size} rader registrert for id=$it.",
)
annulerteDao.lagreFikset(it)
return@forEach
}
aktuellRad.copy(
status = BehandlingStatus.AVBRUTT.name,
resultat = BehandlingStatus.AVBRUTT.name,
resultatBegrunnelse = "BEHANDLING_RULLET_TILBAKE",
ferdigbehandletTidspunkt = aktuellRad.tekniskTid,
val aktuellRad = rader.minBy { rad -> rad.id }
val radSomSkalFjernes = rader.maxBy { rad -> rad.id }
val oppdatertRad =
aktuellRad.copy(
status = BehandlingStatus.AVBRUTT.name,
resultat = BehandlingStatus.AVBRUTT.name,
resultatBegrunnelse = "BEHANDLING_RULLET_TILBAKE",
ferdigbehandletTidspunkt = aktuellRad.tekniskTid,
)
logger.info(
"Fant 2 rader for behandling med id $it, med id ${aktuellRad.id} (original) " +
"og ${radSomSkalFjernes.id} (feil oppdatert). Oppdaterer med en ny rad basert " +
"${aktuellRad.id}, og sletter rad med id ${radSomSkalFjernes.id}",
)
sakRepository.lagreRad(aktuellRad)
sakRepository.slettRad(radSomSkalFjernes.id)
sakRepository.lagreRad(oppdatertRad)
annulerteDao.lagreFikset(it)
} catch (e: Exception) {
logger.warn(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- ryddingen må rekjøres med riktig / oppdatert kode, siden den ikke ryddet riktig
update tilbakestilte_behandlinger set ryddet = false where ryddet = true;

0 comments on commit e1f4b4a

Please sign in to comment.