Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Legg til tester for OLP igjen #1241

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
4 changes: 0 additions & 4 deletions nais/dev-fss.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@ spec:
value: api://dev-fss.teamdokumenthandtering.dokarkiv-q1/.default

# Integrasjoner (Kafka)
- name: K9_RAPID_TOPIC
value: "omsorgspenger.k9-rapid-v2"
- name: SEND_AKSJONSPUNKTHENDELSE_TIL_K9LOS
value: "k9saksbehandling.punsj-aksjonspunkthendelse-v1"
- name: SEND_BREVBESTILLING_TIL_K9_FORMIDLING
Expand All @@ -156,8 +154,6 @@ spec:
value: "k9saksbehandling.k9-punsj-til-los"
- name: K9_FORDEL_TOPIC
value: "k9saksbehandling.fordel-journalforing"
- name: K9_PUNSJBOLLE_TOPIC
value: "k9saksbehandling.punsjbar-journalpost"

# Div
- name: SETT_PAA_VENT_TID
Expand Down
4 changes: 0 additions & 4 deletions nais/prod-fss.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,6 @@ spec:
value: api://prod-fss.teamdokumenthandtering.dokarkiv/.default

# Integrasjoner (Kafka)
- name: K9_RAPID_TOPIC
value: "omsorgspenger.k9-rapid-v2"
- name: SEND_AKSJONSPUNKTHENDELSE_TIL_K9LOS
value: "k9saksbehandling.punsj-aksjonspunkthendelse-v1"
- name: SEND_BREVBESTILLING_TIL_K9_FORMIDLING
Expand All @@ -149,8 +147,6 @@ spec:
value: "k9saksbehandling.k9-punsj-til-los"
- name: K9_FORDEL_TOPIC
value: "k9saksbehandling.fordel-journalforing"
- name: K9_PUNSJBOLLE_TOPIC
value: "k9saksbehandling.punsjbar-journalpost"

# Feature toggles
- name: FERDIGSTILL_GOSYSOPPGAVE_ENABLED
Expand Down
6 changes: 0 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
<k9-sak.version>4.2.0</k9-sak.version>
<k9-formidling.version>10.1.0</k9-formidling.version>
<k9-format.version>9.5.2</k9-format.version>
<k9-rapid.version>1.20240510083323-9f05ca1</k9-rapid.version>

<!-- database -->
<postgresql.version>42.7.4</postgresql.version>
Expand Down Expand Up @@ -126,11 +125,6 @@
<artifactId>soknad</artifactId>
<version>${k9-format.version}</version>
</dependency>
<dependency>
<groupId>no.nav.k9.rapid</groupId>
<artifactId>behov</artifactId>
<version>${k9-rapid.version}</version>
</dependency>

<!-- kotlin -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class SoknadService(

val journalposter = safGateway.hentJournalposter(journalpostIdListe)
val journalposterMedTypeUtgaaende = journalposter.filterNotNull()
.filter { it.journalposttype == SafDtos.JournalpostType.U.toString() }
.filter { it.journalposttype == SafDtos.JournalpostType.UTGAAENDE.kode }
.map { it.journalpostId }
.toSet()
if (journalposterMedTypeUtgaaende.isNotEmpty()) {
Expand Down Expand Up @@ -339,7 +339,7 @@ class SoknadService(
private suspend fun hentOgSjekkJournalpostene(journalpostIdListe: List<String>): Pair<List<SafDtos.Journalpost?>, Set<String>> {
val journalposter = safGateway.hentJournalposter(journalpostIdListe)
val journalposterMedTypeUtgaaende = journalposter.filterNotNull()
.filter { it.journalposttype == SafDtos.JournalpostType.U.toString() }
.filter { it.journalposttype == SafDtos.JournalpostType.UTGAAENDE.kode }
.map { it.journalpostId }
.toSet()
return Pair(journalposter, journalposterMedTypeUtgaaende)
Expand Down
12 changes: 12 additions & 0 deletions src/main/kotlin/no/nav/k9punsj/felles/PunsjFagsakYtelseType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,17 @@ enum class PunsjFagsakYtelseType(@JsonValue val kode: String, val navn: String,
fun fraNavn(navn: String): PunsjFagsakYtelseType {
return values().firstOrNull { it.name == navn } ?: UDEFINERT
}

fun FagsakYtelseType.somPunsjFagsakYtelseType(): PunsjFagsakYtelseType = when(this) {
FagsakYtelseType.PLEIEPENGER_SYKT_BARN -> PLEIEPENGER_SYKT_BARN
FagsakYtelseType.PLEIEPENGER_NÆRSTÅENDE -> PLEIEPENGER_LIVETS_SLUTTFASE
FagsakYtelseType.OMSORGSPENGER -> OMSORGSPENGER
FagsakYtelseType.OMSORGSPENGER_KS -> OMSORGSPENGER_KRONISK_SYKT_BARN
FagsakYtelseType.OMSORGSPENGER_MA -> OMSORGSPENGER_MIDLERTIDIG_ALENE
FagsakYtelseType.OMSORGSPENGER_AO -> OMSORGSPENGER_ALENE_OMSORGEN
FagsakYtelseType.OPPLÆRINGSPENGER -> OPPLÆRINGSPENGER
FagsakYtelseType.UDEFINERT -> UKJENT
else -> throw IllegalStateException("Ikke støttet fagsakytelsetype: $this")
}
}
}
69 changes: 0 additions & 69 deletions src/main/kotlin/no/nav/k9punsj/innsending/InnsendingClient.kt

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,8 @@ import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity
import org.springframework.stereotype.Service
import org.springframework.web.reactive.function.BodyInserters
import org.springframework.web.reactive.function.client.ClientResponse
import org.springframework.web.reactive.function.client.ExchangeStrategies
import org.springframework.web.reactive.function.client.WebClient
import org.springframework.web.reactive.function.client.toEntity
import java.net.URI
import java.util.*
import kotlin.coroutines.coroutineContext
Expand Down Expand Up @@ -208,6 +206,56 @@ class DokarkivGateway(
}
}

internal suspend fun knyttTilAnnenSak(
journalpostId: JournalpostId,
identitetsnummer: Identitetsnummer,
saksnummer: String
): JournalpostId {
val accessToken = cachedAccessTokenClient
.getAccessToken(
scopes = dokarkivScope,
onBehalfOf = coroutineContext.hentAuthentication().accessToken
)

@Language("JSON")
val dto = """
{
"sakstype": "${SafDtos.Sakstype.FAGSAK}",
"fagsaksystem": "${FagsakSystem.K9}",
"fagsakId": "$saksnummer",
"journalfoerendeEnhet": "9999",
"tema": "${Tema.OMS}",
"bruker": {
"idType": "${IdType.FNR}",
"id": "$identitetsnummer"
}
}
""".trimIndent()
val body = BodyInserters.fromValue(dto)
val url = URI.create(knyttTilAnnenSakUrl(journalpostId))

val response = client
.put()
.uri(url)
.header(ConsumerIdHeaderKey, ConsumerIdHeaderValue)
.header(CorrelationIdHeader, coroutineContext.hentCorrelationId())
.header(HttpHeaders.AUTHORIZATION, accessToken.asAuthoriationHeader())
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.body(body)
.retrieve()
.toEntity(String::class.java)
.awaitFirst()

check(response.statusCode.is2xxSuccessful) {
"Feil ved kopiering av journalpost. HttpStatus=[${response.statusCode.value()}, Response=[${response.body}], Url=[$url]"
}

val nyJournalpostId = JSONObject(response.body).get("nyJournalpostId").toString().somJournalpostId()

return nyJournalpostId
}

private companion object {
private val logger: Logger = LoggerFactory.getLogger(DokarkivGateway::class.java)
private const val ConsumerIdHeaderKey = "Nav-Consumer-Id"
Expand All @@ -233,6 +281,8 @@ class DokarkivGateway(
private fun String.oppdaterJournalpostUrl() = "$baseUrl/rest/journalpostapi/v1/journalpost/$this"
private val opprettOgFerdigstillJournalpostUrl = "$baseUrl/rest/journalpostapi/v1/journalpost?forsoekFerdigstill=true"
private fun String.ferdigstillJournalpostUrl() = "$baseUrl/rest/journalpostapi/v1/journalpost/$this/ferdigstill"
private fun knyttTilAnnenSakUrl(journalpostId: JournalpostId) =
"$baseUrl/rest/journalpostapi/v1/journalpost/$journalpostId/knyttTilAnnenSak"

private fun JSONObject.stringOrNull(key: String) = when (notNullNotBlankString(key)) {
true -> getString(key)
Expand Down Expand Up @@ -371,6 +421,7 @@ data class JournalPostRequest(
}

enum class Tema { OMS }
enum class IdType { FNR }
enum class JournalpostType { NOTAT }
enum class DokumentKategori { IS }
enum class FagsakSystem { K9 }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ internal object SafDtos {
tema
tittel
journalposttype
datoOpprettet
relevanteDatoer {
dato
datotype
Expand Down Expand Up @@ -89,8 +90,8 @@ internal object SafDtos {
OMS
}

enum class JournalpostType {
I, N, U
enum class JournalpostType(val kode: String) {
INNGAAENDE("I"), NOTAT("N"), UTGAAENDE("U")
}

internal enum class AvsenderType {
Expand All @@ -117,6 +118,9 @@ internal object SafDtos {
GENERELL_SAK, FAGSAK
}

internal enum class K9Type { SØKNAD, ETTERSENDELSE }
internal enum class K9Kilde { DIGITAL }

internal data class Bruker(
val id: String?,
val type: String?
Expand Down Expand Up @@ -164,18 +168,24 @@ internal object SafDtos {
val avsenderMottaker: AvsenderMottaker?,
val dokumenter: List<Dokument>,
val relevanteDatoer: List<RelevantDato>,
val datoOpprettet: LocalDateTime,
private val tilleggsopplysninger: List<Tilleggsopplysning> = emptyList()
) {
val k9Kilde = tilleggsopplysninger.firstOrNull { it.nokkel == "k9.kilde" }?.verdi
val k9Type = tilleggsopplysninger.firstOrNull { it.nokkel == "k9.type" }?.verdi
private val erDigital = "DIGITAL" == k9Kilde
private val erEttersendelse = "ETTERSENDELSE" == k9Type
private val erSøknad = "SØKNAD" == k9Type
val erUtgående = journalposttype == JournalpostType.UTGAAENDE.kode
private val erDigital = K9Kilde.DIGITAL.name == k9Kilde
val erEttersendelse = K9Type.ETTERSENDELSE.name == k9Type
private val erSøknad = K9Type.SØKNAD.name == k9Type
val erIkkeStøttetDigitalJournalpost = when (erDigital) {
true -> !(erEttersendelse || erSøknad)
false -> false
}
val ikkeErTemaOMS = tema?.let { Tema.OMS.name != it } ?: false

private val erInngående = journalposttype == JournalpostType.INNGAAENDE.kode
private val erNotat = journalposttype == JournalpostType.NOTAT.kode
internal val kanKopieres = erInngående || erNotat
}

internal data class Tilleggsopplysning(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ class SafGateway(
}

// Kan ikke oppdatere eller ferdigstille Notater som er under redigering.
if (journalpost?.journalposttype == "N" &&
if (journalpost?.journalposttype == SafDtos.JournalpostType.NOTAT.kode &&
journalpost.journalstatus?.equals("UNDER_ARBEID") == true
) throw NotatUnderArbeidFeil().also {
logger.warn("Ikke støttet journalpost: Type NOTAT med status UNDER_ARBEID")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ internal class GosysService(
?: return ServerResponse.status(HttpStatus.NOT_FOUND).buildAndAwait()
.also { logger.warn("Kunne ikke finne journalpost med id {}", oppgaveRequest.journalpostId) }

if (!(journalpostInfo.journalpostType == SafDtos.JournalpostType.I.name
if (!(journalpostInfo.journalpostType == SafDtos.JournalpostType.INNGAAENDE.kode
&& journalpostInfo.journalpostStatus == SafDtos.Journalstatus.MOTTATT.name)
) {
logger.warn(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.k9punsj.felles.dto.PeriodeDto
import no.nav.k9punsj.felles.dto.SaksnummerDto
import no.nav.k9punsj.felles.dto.SøknadEntitet
import no.nav.k9punsj.integrasjoner.k9sak.dto.Fagsak
import no.nav.k9punsj.integrasjoner.k9sak.dto.HentK9SaksnummerGrunnlag
import no.nav.k9punsj.integrasjoner.k9sak.dto.ReservertSaksnummerDto
import no.nav.k9punsj.integrasjoner.k9sak.dto.ReserverSaksnummerDto

Expand Down Expand Up @@ -42,6 +43,10 @@ interface K9SakService {
punsjFagsakYtelseType: PunsjFagsakYtelseType
): Pair<String?, String?>

suspend fun hentEllerOpprettSaksnummer(
hentK9SaksnummerGrunnlag: HentK9SaksnummerGrunnlag
): String

suspend fun sendInnSoeknad(
soknad: Søknad,
journalpostId: String,
Expand Down
Loading