Skip to content

Commit

Permalink
Ferdigstill journalpost send med referanse istedenfor dokumentfil (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 authored Sep 1, 2023
1 parent 8a37df3 commit e7fa870
Show file tree
Hide file tree
Showing 16 changed files with 188 additions and 130 deletions.
3 changes: 2 additions & 1 deletion .nais/feature.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: bidrag-dokument-forsendelse-feature
bucket_name: bidrag-dokument-forsendelse-feature
min_replicas: 1
ingresses:
- https://bidrag-dokument-forsendelse-feature.intern.dev.nav.no
env:
Expand Down Expand Up @@ -32,7 +33,7 @@ env:

KODEVERK_URL: https://kodeverk.dev-fss-pub.nais.io

JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xmx1500m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0
JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0 -XX:+UseContainerSupport

LAGRE_DIST_INFO_PAGE_SIZE: 100
LAGRE_DIST_INFO_CRON: "0 */5 * * * ?"
Expand Down
3 changes: 2 additions & 1 deletion .nais/main.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: bidrag-dokument-forsendelse
bucket_name: bidrag-dokument-forsendelse-main
min_replicas: 1
ingresses:
- https://bidrag-dokument-forsendelse.intern.dev.nav.no
env:
Expand Down Expand Up @@ -42,7 +43,7 @@ env:
GCP_BUCKET_DOCUMENT_KMS_KEY_PATH: projects/bidrag-dev-45a9/locations/europe-north1/keyRings/bidrag-dokument-forsendelse-feature/cryptoKeys/bucket-dokument-encryption
GCP_DOCUMENT_CLIENTSIDE_KMS_KEY_PATH: gcp-kms://projects/bidrag-dev-45a9/locations/europe-north1/keyRings/bidrag-dokument-forsendelse-feature/cryptoKeys/clientside_document_encryption

JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xmx1500m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0
JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0 -XX:+UseContainerSupport
database:
dbname: bidrag-dokument-forsendelse-main
autoResize: false
Expand Down
14 changes: 9 additions & 5 deletions .nais/nais.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
labels:
team: bidrag
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "256m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-body-size: "256m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
spec:
azure:
application:
Expand Down Expand Up @@ -64,10 +64,14 @@ spec:
- name: bidrag-dokument-forsendelse
envVarPrefix: DB
resources:
limits:
memory: 3000Mi
requests:
memory: 1500Mi
cpu: 1000m
memory: 1024Mi
limits:
memory: 4096Mi
replicas:
min: {{min_replicas}}
max: 4
ingresses:
{{#each ingresses as |url|}}
- {{url}}
Expand Down
3 changes: 2 additions & 1 deletion .nais/prod.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: bidrag-dokument-forsendelse
bucket_name: bidrag-dokument-forsendelse-prod
min_replicas: 2
ingresses:
- https://bidrag-dokument-forsendelse.intern.nav.no
env:
Expand Down Expand Up @@ -40,7 +41,7 @@ env:
OPPDATER_DIST_STATUS_ENABLED: true
GCP_DOCUMENT_CLIENTSIDE_KMS_KEY_PATH: gcp-kms://projects/bidrag-prod-8f72/locations/europe-north1/keyRings/bidrag-dokument-forsendelse/cryptoKeys/clientside_document_encryption

JAVA_OPTS: -Xmx1500m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0
JAVA_OPTS: -Xmx1028m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:MaxRAMPercentage=80.0
database:
dbname: bidrag-dokument-forsendelse
autoResize: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,21 @@ class DokumentKontroller(val fysiskDokumentService: FysiskDokumentService) {
.body(fysiskDokumentService.hentDokument(forsendelseIdMedPrefix.numerisk, dokumentreferanse))
}

@GetMapping("/dokumentreferanse/{dokumentreferanse}")
@Operation(
summary = "Hent fysisk dokument som byte",
security = [SecurityRequirement(name = "bearer-key")]
)
fun hentDokumentForReferanse(@PathVariable dokumentreferanse: String): ResponseEntity<ByteArray> {
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.header(
HttpHeaders.CONTENT_DISPOSITION,
"inline; filename=$dokumentreferanse.pdf"
)
.body(fysiskDokumentService.hentDokument(dokumentreferanse))
}

@RequestMapping(
*["/dokument/{forsendelseIdMedPrefix}/{dokumentreferanse}", "/dokument/{forsendelseIdMedPrefix}"],
method = [RequestMethod.OPTIONS]
Expand All @@ -48,4 +63,16 @@ class DokumentKontroller(val fysiskDokumentService: FysiskDokumentService) {
): List<DokumentMetadata> {
return fysiskDokumentService.hentDokumentMetadata(forsendelseIdMedPrefix.numerisk, dokumentreferanse)
}

@RequestMapping(
*["/dokumentreferanse/{dokumentreferanse}"],
method = [RequestMethod.OPTIONS]
)
@Operation(
summary = "Hent metadata om dokument",
security = [SecurityRequirement(name = "bearer-key")]
)
fun hentDokumentMetadataForReferanse(@PathVariable dokumentreferanse: String): List<DokumentMetadata> {
return fysiskDokumentService.hentDokumentMetadataForReferanse(dokumentreferanse)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.bidrag.dokument.forsendelse.api.dto

import com.fasterxml.jackson.annotation.JsonFormat
import com.fasterxml.jackson.annotation.JsonInclude
import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.dokument.dto.DokumentArkivSystemDto
Expand Down Expand Up @@ -66,6 +67,7 @@ data class OpprettDokumentForespørsel(
@Schema(description = "Dokumentets tittel") override val tittel: String = "",
@Schema(description = "Språket på inneholdet i dokumentet.") val språk: String? = null,
@Schema(description = "Arkivsystem hvor dokument er lagret", enumAsRef = true) override val arkivsystem: DokumentArkivSystemDto? = null,
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy-HH-mm-ss")
@Schema(description = "Dato dokument ble opprettet") override val dokumentDato: LocalDateTime? = null,
@Schema(description = "Referansen til dokumentet hvis det er allerede er lagret i arkivsystem. Hvis dette ikke settes opprettes det en ny dokumentreferanse som kan brukes ved opprettelse av dokument") override val dokumentreferanse: String? = null,
@Schema(description = "JournalpostId til dokumentet hvis det er allerede er lagret i arkivsystem") override val journalpostId: JournalpostId? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Import
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder


@Configuration
@EnableSecurityConfiguration
@Import(RestOperationsAzure::class)
Expand All @@ -21,4 +22,5 @@ class RestConfig {
.failOnUnknownProperties(false)
.serializationInclusion(JsonInclude.Include.NON_NULL)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ interface DokumentRepository : CrudRepository<Dokument, Long> {
@Query("select d from dokument d where d.dokumentreferanseOriginal = :dokumentreferanse or d.dokumentId = :dokumentId")
fun hentDokumenterMedDokumentreferanse(dokumentreferanse: String, dokumentId: Long?): List<Dokument>

fun findByDokumentId(dokumentId: Long?): Dokument?

@Query("select d from dokument d where d.dokumentStatus = 'BESTILLING_FEILET' and d.slettetTidspunkt is null and d.forsendelse.status = 'UNDER_PRODUKSJON'")
fun hentDokumenterSomHarStatusBestillingFeilet(): List<Dokument>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class FerdigstillForsendelseService(
OpprettDokumentDto(
brevkode = it.dokumentmalId,
tittel = if (it.tilknyttetSom === DokumentTilknyttetSom.HOVEDDOKUMENT) hovedtittelMedBeskjed else it.tittel,
fysiskDokument = fysiskDokumentService.hentFysiskDokument(it)
dokumentreferanse = it.dokumentreferanse,
)
},
tilknyttSaker = listOf(forsendelse.saksnummer),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ class FysiskDokumentService(
throw FantIkkeDokument("Kan ikke hente dokument $dokumentreferanse med forsendelseId $forsendelseId fra arkivsystem = $arkivSystem")
}

fun hentDokument(dokumentreferanse: String): ByteArray {
val dokument = dokumentTjeneste.hentDokument(dokumentreferanse)
?: fantIkkeDokument(-1, dokumentreferanse)
val forsendelse = dokument.forsendelse

tilgangskontrollService.sjekkTilgangForsendelse(forsendelse)

if (dokument.dokumentStatus == DokumentStatus.KONTROLLERT) {
return dokumentStorageService.hentFil(dokument.filsti)
}

val arkivSystem = dokument.arkivsystem
throw FantIkkeDokument("Kan ikke hente dokument $dokumentreferanse med forsendelseId ${forsendelse.forsendelseId} fra arkivsystem = $arkivSystem")
}

fun hentFysiskDokument(dokumentMetadata: DokumentMetadata): ByteArray {
return if (dokumentMetadata.arkivsystem == DokumentArkivSystemDto.BIDRAG) {
hentDokument(
Expand Down Expand Up @@ -107,6 +122,17 @@ class FysiskDokumentService(
return listOf(mapTilDokumentMetadata(dokument))
}

fun hentDokumentMetadataForReferanse(dokumentreferanse: String): List<DokumentMetadata> {
val dokument = dokumentTjeneste.hentDokument(dokumentreferanse) ?: throw FantIkkeDokument("Fant ikke dokumentreferanse=$dokumentreferanse")

if (dokument.arkivsystem == DokumentArkivSystem.FORSENDELSE) {
log.info { "Dokument $dokumentreferanse er symlink til dokument ${dokument.dokumentreferanseOriginal} i forsendelse ${dokument.journalpostIdOriginal}" }
return hentDokumentMetadata(dokument.forsendelseId!!, dokument.dokumentreferanseOriginal)
}

return listOf(mapTilDokumentMetadata(dokument))
}

private fun mapTilDokumentMetadata(dokument: Dokument): DokumentMetadata {
val dokumentreferanse = if (dokument.erFraAnnenKilde) dokument.dokumentreferanseOriginal else dokument.dokumentreferanse
return if (dokument.dokumentStatus == DokumentStatus.KONTROLLERT) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ class DokumentTjeneste(
return dokumentRepository.hentDokumenterMedDokumentreferanse(dokumentreferanse, dokumentreferanse.utenPrefiks.toLong())
}

fun hentDokument(dokumentreferanse: String): Dokument? {
return dokumentRepository.findByDokumentId(dokumentreferanse.utenPrefiks.toLong())
}

fun hentDokumenterSomHarStatusBestillingFeilet(): List<Dokument> {
return dokumentRepository.hentDokumenterSomHarStatusBestillingFeilet()
}
Expand Down
Loading

0 comments on commit e7fa870

Please sign in to comment.