Skip to content

Commit

Permalink
Legger til driftendepunkt for å ferdigstille ikke-ferdigstilte journa…
Browse files Browse the repository at this point in the history
…lposter med sakstilknytning (#1078)

* Legger til driftendepunkt for å ferdigstille journalposter med sakstilknytning

* Logger response body.

* Private class for drift

* Fjerner JournalpostIdKey.

Info mottas i requestbody.
  • Loading branch information
ramrock93 authored Jan 18, 2024
1 parent 876798f commit d6c10dc
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import no.nav.k9punsj.SaksbehandlerRoutes
import no.nav.k9punsj.akjonspunkter.AksjonspunktService
import no.nav.k9punsj.felles.IkkeStøttetJournalpost
import no.nav.k9punsj.felles.IkkeTilgang
import no.nav.k9punsj.integrasjoner.dokarkiv.DokarkivGateway
import no.nav.k9punsj.integrasjoner.dokarkiv.SafDtos
import no.nav.k9punsj.journalpost.dto.ResultatDto
import no.nav.k9punsj.tilgangskontroll.AuthenticationHandler
Expand All @@ -23,13 +24,15 @@ import org.springframework.web.reactive.function.server.bodyValueAndAwait
import org.springframework.web.reactive.function.server.buildAndAwait
import org.springframework.web.reactive.function.server.json
import kotlin.coroutines.coroutineContext
import kotlin.math.log

@Configuration
internal class JournalpostDriftRoutes(
private val authenticationHandler: AuthenticationHandler,
private val journalpostService: JournalpostService,
private val aksjonspunktService: AksjonspunktService,
private val azureGraphService: IAzureGraphService
private val dokarkivGateway: DokarkivGateway,
private val azureGraphService: IAzureGraphService,
) {

private companion object {
Expand All @@ -43,6 +46,7 @@ internal class JournalpostDriftRoutes(
internal const val HentHvaSomHarBlittSendtInn = "/journalpost/hentForDebugg/{$JournalpostIdKey}"
internal const val LukkJournalposterDebugg = "/journalpost/lukkDebugg"
internal const val LukkJournalpostDebugg = "/journalpost/lukkDebugg/{$JournalpostIdKey}"
internal const val FerdigstillJournalpostForDebugg = "/journalpost/ferdigstillDebugg"
}

@Bean
Expand Down Expand Up @@ -134,7 +138,7 @@ internal class JournalpostDriftRoutes(
.bodyValueAndAwait(
ResultatDto(
"Alle er ferdig behandlet i punsj eller finnes ikke i punsj: " +
"$alleredeLukketIPunsjTekst $fantIkkeIPunsjTekst"
"$alleredeLukketIPunsjTekst $fantIkkeIPunsjTekst"
)
)
}
Expand All @@ -153,7 +157,7 @@ internal class JournalpostDriftRoutes(
.bodyValueAndAwait(
ResultatDto(
"Alle er ferdig behandlet i punsj, finnes ikke i punsj eller ikke lukket i SAF. " +
"$ikkeLukketISafTekst. $fantIkkeIPunsjTekst $alleredeLukketIPunsjTekst"
"$ikkeLukketISafTekst. $fantIkkeIPunsjTekst $alleredeLukketIPunsjTekst"
)
)
}
Expand All @@ -171,6 +175,45 @@ internal class JournalpostDriftRoutes(
}
}

POST("/api${Urls.FerdigstillJournalpostForDebugg}") { request ->
RequestContext(coroutineContext, request) {
val journalpostIder = request.journalpostIder().journalpostIder.toSet()
logger.info("Forsøker å ferdigstille journalposter: {}", journalpostIder)

val journalposterIDb = journalpostService.hentHvisJournalpostMedIder(journalpostIder.toList())
if (journalposterIDb.isEmpty()) {
logger.info("Fant ingen journalposter i punsj med id {}", journalpostIder)
return@RequestContext ServerResponse.notFound().buildAndAwait()
}

val (ferdigstilte, ikkeFerdigstilte) = journalposterIDb
.map { journalpostService.hentSafJournalPost(it.key.journalpostId)!! } // Hent saf journalpost
.partition { it.journalstatus == SafDtos.Journalstatus.FERDIGSTILT.name } // Del i ferdigstilte og ikke ferdigstilte

val (medSakstilknytning, utenSakstilknytning) = ikkeFerdigstilte
.partition { it.sak?.fagsakId != null } // Del i med og uten sakstilknytning

val ferdigstillJournalposterResponse = medSakstilknytning
.map { dokarkivGateway.ferdigstillJournalpost(it.journalpostId, "9999") } // Ferdigstill journalposter

val (vellykkedeFerdigstillinger, feiledeFerdigstillinger) = ferdigstillJournalposterResponse
.partition { it.statusCode.is2xxSuccessful } // Del i vellykkede og feilede ferdigstillinger

val ferdigstillJournalpostResponseDto = FerdigstillJournalpostResponseDto(
vellykketFerdigstilteJournalposter = vellykkedeFerdigstillinger.map { it.toString() },
feiledeFerdigstillinger = feiledeFerdigstillinger.map { it.toString() },
ikkeFerdigstiltUtenSakstilknytning = utenSakstilknytning.map { it.journalpostId },
alleredeFerdigstilteJournalposter = ferdigstilte.map { it.journalpostId }
)
logger.info("Response: {}", ferdigstillJournalpostResponseDto)
return@RequestContext ServerResponse
.status(HttpStatus.OK)
.bodyValueAndAwait(
ferdigstillJournalpostResponseDto
)
}
}

GET("/api${Urls.HentHvaSomHarBlittSendtInn}") { request ->
RequestContext(coroutineContext, request) {
val journalpostId = request.journalpostId()
Expand Down Expand Up @@ -208,6 +251,13 @@ internal class JournalpostDriftRoutes(
}
}

private data class FerdigstillJournalpostResponseDto(
val vellykketFerdigstilteJournalposter: List<String?>,
val alleredeFerdigstilteJournalposter: List<String?>,
val feiledeFerdigstillinger: List<String?>,
val ikkeFerdigstiltUtenSakstilknytning: List<String?>,
)

private fun diffTekst(setA: Set<String>, setB: Set<String>, prefix: String): String {
val diff = setA.minus(setB)
return if (diff.isNotEmpty()) "$prefix: $diff" else ""
Expand Down
27 changes: 27 additions & 0 deletions src/main/kotlin/no/nav/k9punsj/journalpost/JournalpostOpenApi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -301,4 +301,31 @@ internal class JournalpostOpenApi {
@RequestBody body: IdentOgJournalpost
) {
}

@PostMapping(JournalpostDriftRoutes.Urls.FerdigstillJournalpostForDebugg, produces = ["application/json"])
@ApiResponses(
value = [
ApiResponse(
responseCode = "200",
description = "Hvis en eller flere journalposter har blitt ferdigstilt"
),
ApiResponse(
responseCode = "400",
description = "Journalposter som ikke ble funnet i punsj."
),
ApiResponse(
responseCode = "404",
description = "Ingen av journalpostene eksisterer i punsj"
)
]
)
@Operation(
summary = "Ferdigstiller journalposter som ikke ferdigstilt og som har sakstilknytning",
security = [SecurityRequirement(name = "BearerAuth")],
tags = ["Drift"]
)
fun FerdigstillJournalposterDebugg(
@RequestBody body: JournalpostRoutes.JournalpostIderRequest
) {
}
}

0 comments on commit d6c10dc

Please sign in to comment.