From f395c1c6e4b2060817a185d0dd00840d71437b10 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Wed, 27 Sep 2023 16:57:03 +0200 Subject: [PATCH 01/35] WIP: Added support for Innholdsfortegnelse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../DokumenterUnderArbeidController.kt | 30 +++++++ .../dokument/api/mapper/DokumentMapper.kt | 74 +++++++++++++++- .../kabaljsontopdf/KabalJsonToPdfClient.kt | 33 +++++++ .../Innholdsfortegnelse.kt | 49 +++++++++++ .../InnholdsfortegnelseRepository.kt | 12 +++ .../service/DokumentUnderArbeidService.kt | 86 ++++++++++++------- .../service/InnholdsfortegnelseService.kt | 69 +++++++++++++++ .../kabaldocument/KabalDocumentMapper.kt | 31 +++++-- .../V87__Create_innholdsfortegnelse.sql | 11 +++ 9 files changed, 359 insertions(+), 36 deletions(-) create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/Innholdsfortegnelse.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/InnholdsfortegnelseRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt create mode 100644 src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index 35bb1dfb5..64d846933 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -137,6 +137,36 @@ class DokumentUnderArbeidController( ) } + @GetMapping("/{dokumentId}/innholdsfortegnelse") + fun getMetadataForInnholdsfortegnelse( + @PathVariable("behandlingId") behandlingId: UUID, + @PathVariable("dokumentId") dokumentId: UUID, + ): DokumentUnderArbeidMetadata { + logger.debug("Kall mottatt på getMetadataForInnholdsfortegnelse for {}", dokumentId) + + return DokumentUnderArbeidMetadata( + behandlingId = behandlingId, + documentId = dokumentId, + title = "Innholdsfortegnelse" + ) + } + + @GetMapping("/{hoveddokumentId}/innholdsfortegnelse/pdf") + @ResponseBody + fun getInnholdsfortegnelsePdf( + @PathVariable("behandlingId") behandlingId: UUID, + @PathVariable("hoveddokumentId") hoveddokumentId: UUID, + ): ResponseEntity { + logger.debug("Kall mottatt på getInnholdsfortegnelsePdf for {}", hoveddokumentId) + return dokumentMapper.mapToByteArray( + dokumentUnderArbeidService.getInnholdsfortegnelseAsFysiskDokument( + behandlingId = behandlingId, + hoveddokumentId = hoveddokumentId, + innloggetIdent = innloggetSaksbehandlerService.getInnloggetIdent() + ) + ) + } + @DeleteMapping("/{dokumentId}") fun deleteDokument( @PathVariable("behandlingId") behandlingId: UUID, diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 74b0e2481..cbe8dd695 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -4,23 +4,28 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import no.nav.klage.dokument.api.view.DokumentView import no.nav.klage.dokument.api.view.DokumentViewWithList import no.nav.klage.dokument.api.view.SmartEditorDocumentView +import no.nav.klage.dokument.clients.kabaljsontopdf.InnholdsfortegnelseRequest import no.nav.klage.dokument.clients.kabalsmarteditorapi.model.response.DocumentOutput import no.nav.klage.dokument.domain.FysiskDokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.Fagsystem import no.nav.klage.kodeverk.Tema import no.nav.klage.oppgave.api.view.DokumentReferanse import no.nav.klage.oppgave.clients.saf.graphql.* import no.nav.klage.oppgave.domain.klage.Behandling import no.nav.klage.oppgave.domain.klage.Saksdokument +import no.nav.klage.oppgave.service.BehandlingService import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity import org.springframework.stereotype.Component +import java.time.LocalDate @Component class DokumentMapper( private val safClient: SafGraphQlClient, + private val behandlingService: BehandlingService, ) { fun mapToByteArray(fysiskDokument: FysiskDokument): ResponseEntity { @@ -43,8 +48,73 @@ class DokumentMapper( } return dokumenterUnderArbeid.sortedByDescending { it.created } - .map { mapToDokumentView(it) } + journalfoerteDokumenterUnderArbeid.map { mapToDokumentView(it) } - .sortedByDescending { it.journalfoertDokumentReference?.datoOpprettet } + .map { mapToDokumentView(it) } + .plus(journalfoerteDokumenterUnderArbeid + .map { mapToDokumentView(it) } + .sortedByDescending { it.journalfoertDokumentReference?.datoOpprettet }) + } + + fun getSortedDokumentViewListForInnholdsfortegnelse( + allDokumenterUnderArbeid: List, + mottakere: List + ): List { + val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { + it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT + } + + return dokumenterUnderArbeid.sortedByDescending { it.created } + .map { mapToInnholdsfortegnelseRequestDocument(it, mottakere) } + .plus(journalfoerteDokumenterUnderArbeid + .map { mapToInnholdsfortegnelseRequestDocument(it) } + .sortedByDescending { it.dato }) + } + + fun mapToInnholdsfortegnelseRequestDocument(dokumentUnderArbeid: DokumentUnderArbeid, mottakere: List = emptyList()): InnholdsfortegnelseRequest.Document { + val behandling = behandlingService.getBehandlingForReadWithoutCheckForAccess(dokumentUnderArbeid.behandlingId) + + val (journalpost, dokumentInDokarkiv) = if (dokumentUnderArbeid.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { + val journalpostInDokarkiv = + safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) + val dokumentInDokarkiv = + journalpostInDokarkiv.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.journalfoertDokumentReference.dokumentInfoId } + ?: throw RuntimeException("Document not found in Dokarkiv") + + journalpostInDokarkiv to dokumentInDokarkiv + } else null to null + + val tittel = if (dokumentInDokarkiv != null) { + (dokumentInDokarkiv.tittel ?: "Tittel ikke funnet i SAF") + } else dokumentUnderArbeid.name + + val tema = if (dokumentInDokarkiv != null) { + Tema.fromNavn(journalpost?.tema?.name).navn + } else behandling.ytelse.toTema().navn + + val type = if (dokumentInDokarkiv != null) { + (journalpost?.journalposttype?.name ?: "Type ikke funnet i SAF") + } else if (dokumentUnderArbeid.dokumentType == DokumentType.NOTAT) "N" else "U" + + val saksnummer = if (dokumentInDokarkiv != null) { + (journalpost?.sak?.fagsakId ?: "Saksnummer ikke funnet i SAF") + } else behandling.fagsakId + + //TODO check Gosys if we can get other dates, such as 'ferdigstilt' etc. + val dato = if (dokumentInDokarkiv != null) { + journalpost!!.datoOpprettet.toLocalDate() + } else LocalDate.now() + + val avsenderMottaker = if (dokumentInDokarkiv != null) { + journalpost?.avsenderMottaker?.navn ?: "N/A" + } else mottakere.joinToString() + + return InnholdsfortegnelseRequest.Document( + tittel = tittel, + tema = tema, + dato = dato, + avsenderMottaker = avsenderMottaker, + saksnummer = saksnummer, + type = type + ) } fun mapToDokumentView(dokumentUnderArbeid: DokumentUnderArbeid): DokumentView { diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt index 5e743d3ea..6d75b9b74 100644 --- a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt +++ b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt @@ -8,6 +8,7 @@ import org.springframework.http.MediaType import org.springframework.stereotype.Component import org.springframework.web.reactive.function.client.WebClient import org.springframework.web.reactive.function.client.bodyToMono +import java.time.LocalDate @Component @@ -39,6 +40,25 @@ class KabalJsonToPdfClient( .block() ?: throw RuntimeException("PDF could not be created") } + fun getInnholdsfortegnelse(innholdsfortegnelseRequest: InnholdsfortegnelseRequest): PDFDocument { + logger.debug("Getting innholdsfortegnelse from kabalJsontoPdf.") + return kabalJsonToPdfWebClient.post() + .uri { it.path("/toinnholdsfortegnelse").build() } + .contentType(MediaType.APPLICATION_JSON) + .bodyValue(innholdsfortegnelseRequest) + .retrieve() + .toEntity(ByteArray::class.java) + .map { + val filename = it.headers["filename"]?.first() + PDFDocument( + filename = filename + ?: "somefilename", + bytes = it.body ?: throw RuntimeException("Could not get PDF data") + ) + } + .block() ?: throw RuntimeException("PDF could not be created") + } + fun validateJsonDocument(json: String): DocumentValidationResponse { return kabalJsonToPdfWebClient.post() .uri { it.path("/validate").build() } @@ -48,4 +68,17 @@ class KabalJsonToPdfClient( .bodyToMono() .block() ?: throw RuntimeException("Response null") } +} + +data class InnholdsfortegnelseRequest( + val documentList: List, +) { + data class Document( + val tittel: String, + val tema: String, + val dato: LocalDate, + val avsenderMottaker: String, + val saksnummer: String, + val type: String, + ) } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/Innholdsfortegnelse.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/Innholdsfortegnelse.kt new file mode 100644 index 000000000..c8f0accb1 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/Innholdsfortegnelse.kt @@ -0,0 +1,49 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import org.hibernate.annotations.DynamicUpdate +import java.time.LocalDateTime +import java.util.* + +@Entity +@Table(name = "innholdsfortegnelse", schema = "klage") +@DynamicUpdate +open class Innholdsfortegnelse( + @Id + val id: UUID = UUID.randomUUID(), + @Column(name = "mellomlager_id") + open var mellomlagerId: String?, + @Column(name = "hoveddokument_id") + open var hoveddokumentId: UUID? = null, + @Column(name = "created") + open var created: LocalDateTime = LocalDateTime.now(), + @Column(name = "modified") + open var modified: LocalDateTime = LocalDateTime.now(), +) : Comparable { + + override fun compareTo(other: Innholdsfortegnelse): Int = + created.compareTo(other.created) + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Innholdsfortegnelse + + if (id != other.id) return false + + return true + } + + override fun hashCode(): Int { + return id.hashCode() + } + + override fun toString(): String { + return "Innholdsfortegnelse(id=$id)" + } + +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/InnholdsfortegnelseRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/InnholdsfortegnelseRepository.kt new file mode 100644 index 000000000..94e80b023 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/InnholdsfortegnelseRepository.kt @@ -0,0 +1,12 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface InnholdsfortegnelseRepository : JpaRepository { + + fun findByHoveddokumentId(hoveddokumentId: UUID): Innholdsfortegnelse? +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 36d40d5af..694a7a59e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -12,13 +12,13 @@ import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidJou import no.nav.klage.dokument.exceptions.DokumentValidationException import no.nav.klage.dokument.exceptions.JsonToPdfValidationException import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.kodeverk.Template import no.nav.klage.oppgave.clients.ereg.EregClient import no.nav.klage.oppgave.clients.kabaldocument.KabalDocumentGateway import no.nav.klage.oppgave.clients.kabaldocument.KabalDocumentMapper -import no.nav.klage.oppgave.clients.kabaldocument.model.request.BrevmottakerInput import no.nav.klage.oppgave.clients.saf.graphql.Journalpost import no.nav.klage.oppgave.clients.saf.graphql.SafGraphQlClient import no.nav.klage.oppgave.domain.events.BehandlingEndretEvent @@ -55,6 +55,8 @@ class DokumentUnderArbeidService( private val dokumentService: DokumentService, private val kabalDocumentMapper: KabalDocumentMapper, private val eregClient: EregClient, + private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, + private val innholdsfortegnelseService: InnholdsfortegnelseService, ) { companion object { @Suppress("JAVA_CLASS_ON_COMPANION") @@ -111,6 +113,7 @@ class DokumentUnderArbeidService( tidspunkt = document.created, dokumentId = document.id, ) + return document } @@ -168,6 +171,7 @@ class DokumentUnderArbeidService( tidspunkt = hovedDokument.created, dokumentId = hovedDokument.id, ) + return hovedDokument } @@ -312,6 +316,7 @@ class DokumentUnderArbeidService( tidspunkt = dokumentUnderArbeid.modified, dokumentId = dokumentUnderArbeid.id, ) + return dokumentUnderArbeid } @@ -373,10 +378,15 @@ class DokumentUnderArbeidService( when (dokument.creatorRole) { BehandlingRole.KABAL_SAKSBEHANDLING -> { - if (behandlingRole !in listOf(BehandlingRole.KABAL_SAKSBEHANDLING, BehandlingRole.KABAL_MEDUNDERSKRIVER)) { + if (behandlingRole !in listOf( + BehandlingRole.KABAL_SAKSBEHANDLING, + BehandlingRole.KABAL_MEDUNDERSKRIVER + ) + ) { throw MissingTilgangException("Kun saksbehandler eller medunderskriver kan skrive i dette dokumentet.") } } + BehandlingRole.KABAL_ROL -> { if (behandlingRole != BehandlingRole.KABAL_ROL) { throw MissingTilgangException("Kun ROL kan skrive i dette dokumentet.") @@ -496,28 +506,33 @@ class DokumentUnderArbeidService( hovedDokument = hovedDokument, behandling = behandling, ) + val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + + if (hovedDokument.smartEditorId != null && hovedDokument.isStaleSmartEditorDokument()) { + mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(hovedDokument) + } + vedlegg.forEach { + if (it.smartEditorId != null && it.isStaleSmartEditorDokument()) { + mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(it) + } + } val now = LocalDateTime.now() - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) hovedDokument.markerFerdigHvisIkkeAlleredeMarkertFerdig(tidspunkt = now, saksbehandlerIdent = ident) - hovedDokument.brevmottakerIdents = brevmottakerInputs( - brevmottakerIdents = brevmottakerIdents, + val mapBrevmottakerIdentToBrevmottakerInput = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( behandling = behandling, - hovedDokument = hovedDokument, - ).map { + brevmottakerIdents = brevmottakerIdents, + dokumentType = hovedDokument.dokumentType!! + ) + hovedDokument.brevmottakerIdents = mapBrevmottakerIdentToBrevmottakerInput.map { it.partId.value }.toSet() + vedlegg.forEach { it.markerFerdigHvisIkkeAlleredeMarkertFerdig(tidspunkt = now, saksbehandlerIdent = ident) } - //Etter at et dokument er markert som ferdig skal det ikke kunne endres. Vi henter derfor en snapshot av tilstanden slik den er nå - if (hovedDokument.smartEditorId != null) { - mellomlagreNyVersjonAvSmartEditorDokument(hovedDokument) - } - vedlegg.forEach { - if (it.smartEditorId != null) { - mellomlagreNyVersjonAvSmartEditorDokument(it) - } - } + innholdsfortegnelseService.saveInnholdsfortegnelse( + dokumentId, + mapBrevmottakerIdentToBrevmottakerInput.map { it.navn }) behandling.publishEndringsloggEvent( saksbehandlerident = ident, @@ -567,7 +582,12 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke markere et vedlegg som ferdig") } - val mottakere = brevmottakerInputs(brevmottakerIdents, behandling, hovedDokument) + + val mottakere = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( + behandling = behandling, + brevmottakerIdents = brevmottakerIdents, + dokumentType = hovedDokument.dokumentType!! + ) val invalidProperties = mutableListOf() @@ -597,16 +617,23 @@ class DokumentUnderArbeidService( } } - private fun brevmottakerInputs( - brevmottakerIdents: Set?, - behandling: Behandling, - hovedDokument: DokumentUnderArbeid, - ): List { + fun getInnholdsfortegnelseAsFysiskDokument( + behandlingId: UUID, //Kan brukes i finderne for å "være sikker", men er egentlig overflødig.. + hoveddokumentId: UUID, + innloggetIdent: String + ): FysiskDokument { + //Sjekker tilgang på behandlingsnivå: + behandlingService.getBehandling(behandlingId) - return kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( - behandling = behandling, - brevmottakerIdents = brevmottakerIdents, - dokumentType = hovedDokument.dokumentType!! + val title = "Innholdsfortegnelse" + + return FysiskDokument( + title = title, + content = dokumentService.changeTitleInPDF( + documentBytes = innholdsfortegnelseService.getInnholdsfortegnelseAsPdf(hoveddokumentId), + title = title + ), + contentType = MediaType.APPLICATION_PDF ) } @@ -628,7 +655,7 @@ class DokumentUnderArbeidService( DokumentUnderArbeid.DokumentUnderArbeidType.SMART -> { if (dokument.isStaleSmartEditorDokument()) { - mellomlagreNyVersjonAvSmartEditorDokument(dokument).bytes to dokument.name + mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(dokument).bytes to dokument.name } else mellomlagerService.getUploadedDocument(dokument.mellomlagerId!!) to dokument.name } @@ -800,6 +827,7 @@ class DokumentUnderArbeidService( } vedlegg.parentId = null + return vedlegg } @@ -903,7 +931,7 @@ class DokumentUnderArbeidService( ?: throw DokumentValidationException("$dokumentId er ikke et smarteditor dokument") } - private fun mellomlagreNyVersjonAvSmartEditorDokument(dokument: DokumentUnderArbeid): PDFDocument { + private fun mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(dokument: DokumentUnderArbeid): PDFDocument { val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId!!) val pdfDocument = kabalJsonToPdfClient.getPDFDocument(documentJson) val mellomlagerId = @@ -924,7 +952,7 @@ class DokumentUnderArbeidService( } private fun DokumentUnderArbeid.isStaleSmartEditorDokument() = - this.smartEditorId != null && !this.erMarkertFerdig() && smartEditorApiGateway.isMellomlagretDokumentStale( + this.smartEditorId != null && smartEditorApiGateway.isMellomlagretDokumentStale( smartEditorId = this.smartEditorId!!, sistOpplastet = this.opplastet ) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt new file mode 100644 index 000000000..91ef1d600 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -0,0 +1,69 @@ +package no.nav.klage.dokument.service + +import no.nav.klage.dokument.api.mapper.DokumentMapper +import no.nav.klage.dokument.clients.kabaljsontopdf.InnholdsfortegnelseRequest +import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient +import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse +import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository +import no.nav.klage.oppgave.util.getLogger +import org.springframework.stereotype.Service +import java.time.LocalDateTime +import java.util.* + +@Service +class InnholdsfortegnelseService( + private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val dokumentMapper: DokumentMapper, + private val mellomlagerService: MellomlagerService, + private val kabalJsonToPdfClient: KabalJsonToPdfClient, + private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, + + ) { + + companion object { + @Suppress("JAVA_CLASS_ON_COMPANION") + private val logger = getLogger(javaClass.enclosingClass) + } + + fun saveInnholdsfortegnelse(dokumentUnderArbeidId: UUID, mottakere: List) { + logger.debug("Received saveInnholdsfortegnelse") + + val content = getInnholdsfortegnelseAsPdf(dokumentUnderArbeidId = dokumentUnderArbeidId, mottakere = mottakere) + + val mellomlagerId = + mellomlagerService.uploadByteArray( + tittel = "Innholdsfortegnelse", + content = content, + ) + + innholdsfortegnelseRepository.save( + Innholdsfortegnelse( + mellomlagerId = mellomlagerId, + hoveddokumentId = dokumentUnderArbeidId, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), + ) + ) + } + + fun getInnholdsfortegnelseAsPdf(dokumentUnderArbeidId: UUID, mottakere: List = emptyList()): ByteArray { + logger.debug("Received getInnholdsfortegnelseAsPdf") + + val document = dokumentUnderArbeidRepository.getReferenceById(dokumentUnderArbeidId) + + if (document.parentId != null) { + throw IllegalArgumentException("must be hoveddokument") + } + + val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentUnderArbeidId) + + val documentList = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse(vedlegg.toList(), mottakere) + + //TODO implement + val pdfDocument = + kabalJsonToPdfClient.getInnholdsfortegnelse(InnholdsfortegnelseRequest(documentList = documentList)) + + return pdfDocument.bytes + } +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 2f4e5ee6f..aba3a0100 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -1,6 +1,7 @@ package no.nav.klage.oppgave.clients.kabaldocument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.oppgave.clients.ereg.EregClient @@ -20,6 +21,7 @@ class KabalDocumentMapper( private val pdlFacade: PdlFacade, private val eregClient: EregClient, private val safClient: SafGraphQlClient, + private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, ) { companion object { @@ -38,6 +40,29 @@ class KabalDocumentMapper( hovedDokument: DokumentUnderArbeid, vedlegg: SortedSet ): DokumentEnhetWithDokumentreferanserInput { + + val innholdsfortegnelseDocument = if (vedlegg.size > 1) { + val innholdsfortegnelse = + innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId = hovedDokument.id) + DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( + mellomlagerId = innholdsfortegnelse?.mellomlagerId!!, + opplastet = innholdsfortegnelse.modified, + size = 0, + name = "Innholdsfortegnelse" + ) + } else null + + val vedleggMapped = vedlegg.filter { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } + .sortedByDescending { it.created } + .map { currentVedlegg -> + mapDokumentUnderArbeidToDokumentReferanse( + dokument = currentVedlegg, + ) + }.toMutableList() + if (innholdsfortegnelseDocument != null) { + vedleggMapped.add(0, innholdsfortegnelseDocument) + } + return DokumentEnhetWithDokumentreferanserInput( brevMottakere = mapBrevmottakerIdentToBrevmottakerInput(behandling, hovedDokument.brevmottakerIdents, hovedDokument.dokumentType!!), journalfoeringData = JournalfoeringDataInput( @@ -61,11 +86,7 @@ class KabalDocumentMapper( ), dokumentreferanser = DokumentEnhetWithDokumentreferanserInput.DokumentInput( hoveddokument = mapDokumentUnderArbeidToDokumentReferanse(hovedDokument), - vedlegg = vedlegg.filter { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - .sortedByDescending { it.created } - .map { currentVedlegg -> mapDokumentUnderArbeidToDokumentReferanse( - dokument = currentVedlegg, - ) }, + vedlegg = vedleggMapped, journalfoerteVedlegg = vedlegg.filter { it.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } .sortedByDescending { val journalpostInDokarkiv = diff --git a/src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql b/src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql new file mode 100644 index 000000000..f5a10378b --- /dev/null +++ b/src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql @@ -0,0 +1,11 @@ +CREATE TABLE klage.innholdsfortegnelse +( + id UUID PRIMARY KEY, + mellomlager_id TEXT NOT NULL, + hoveddokument_id UUID, + created TIMESTAMP NOT NULL, + modified TIMESTAMP NOT NULL, + CONSTRAINT fk_innholdsfortegnelse_dokument_under_arbeid + FOREIGN KEY (hoveddokument_id) + REFERENCES klage.dokument_under_arbeid (id) +); From 6e8b1aa89ec951cebd8ef3c63caead3d830563e3 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 09:40:53 +0200 Subject: [PATCH 02/35] WIP: Added support for Innholdsfortegnelse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../klage/dokument/service/DokumentUnderArbeidService.kt | 5 ++--- .../klage/dokument/service/InnholdsfortegnelseService.kt | 6 ++++++ .../oppgave/clients/kabaldocument/KabalDocumentGateway.kt | 7 +++++-- .../oppgave/clients/kabaldocument/KabalDocumentMapper.kt | 8 +++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 694a7a59e..e1753d849 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -12,7 +12,6 @@ import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidJou import no.nav.klage.dokument.exceptions.DokumentValidationException import no.nav.klage.dokument.exceptions.JsonToPdfValidationException import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository -import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.kodeverk.Template @@ -55,7 +54,6 @@ class DokumentUnderArbeidService( private val dokumentService: DokumentService, private val kabalDocumentMapper: KabalDocumentMapper, private val eregClient: EregClient, - private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, private val innholdsfortegnelseService: InnholdsfortegnelseService, ) { companion object { @@ -859,7 +857,8 @@ class DokumentUnderArbeidService( val dokumentEnhetId = kabalDocumentGateway.createKomplettDokumentEnhet( behandling = behandling, hovedDokument = hovedDokument, - vedlegg = vedlegg + vedlegg = vedlegg, + innholdsfortegnelse = innholdsfortegnelseService.getInnholdsfortegnelse(hovedDokumentId) ) hovedDokument.dokumentEnhetId = dokumentEnhetId } diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 91ef1d600..ee4306d63 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -8,10 +8,12 @@ import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.oppgave.util.getLogger import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional import java.time.LocalDateTime import java.util.* @Service +@Transactional class InnholdsfortegnelseService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, private val dokumentMapper: DokumentMapper, @@ -26,6 +28,10 @@ class InnholdsfortegnelseService( private val logger = getLogger(javaClass.enclosingClass) } + fun getInnholdsfortegnelse(hoveddokumentId: UUID): Innholdsfortegnelse? { + return innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId) + } + fun saveInnholdsfortegnelse(dokumentUnderArbeidId: UUID, mottakere: List) { logger.debug("Received saveInnholdsfortegnelse") diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt index e5fed7689..2154634e0 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt @@ -1,6 +1,7 @@ package no.nav.klage.oppgave.clients.kabaldocument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.oppgave.clients.kabaldocument.model.request.UpdateTitleInput import no.nav.klage.oppgave.clients.kabaldocument.model.response.BrevmottakerWithJoarkAndDokDistInfo import no.nav.klage.oppgave.domain.klage.Behandling @@ -24,14 +25,16 @@ class KabalDocumentGateway( fun createKomplettDokumentEnhet( behandling: Behandling, hovedDokument: DokumentUnderArbeid, - vedlegg: SortedSet + vedlegg: SortedSet, + innholdsfortegnelse: Innholdsfortegnelse?, ): UUID { return UUID.fromString( kabalDocumentClient.createDokumentEnhetWithDokumentreferanser( kabalDocumentMapper.mapBehandlingToDokumentEnhetWithDokumentreferanser( behandling = behandling, hovedDokument = hovedDokument, - vedlegg = vedlegg + vedlegg = vedlegg, + innholdsfortegnelse = innholdsfortegnelse, ) ).id ) diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index aba3a0100..4c02b500b 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -1,7 +1,7 @@ package no.nav.klage.oppgave.clients.kabaldocument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid -import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository +import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.oppgave.clients.ereg.EregClient @@ -21,7 +21,6 @@ class KabalDocumentMapper( private val pdlFacade: PdlFacade, private val eregClient: EregClient, private val safClient: SafGraphQlClient, - private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, ) { companion object { @@ -38,12 +37,11 @@ class KabalDocumentMapper( fun mapBehandlingToDokumentEnhetWithDokumentreferanser( behandling: Behandling, hovedDokument: DokumentUnderArbeid, - vedlegg: SortedSet + vedlegg: SortedSet, + innholdsfortegnelse: Innholdsfortegnelse?, ): DokumentEnhetWithDokumentreferanserInput { val innholdsfortegnelseDocument = if (vedlegg.size > 1) { - val innholdsfortegnelse = - innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId = hovedDokument.id) DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( mellomlagerId = innholdsfortegnelse?.mellomlagerId!!, opplastet = innholdsfortegnelse.modified, From bb0c73b559b25c957e2ee3042e1aa7d64ddc79b3 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 09:48:39 +0200 Subject: [PATCH 03/35] WIP: Added support for Innholdsfortegnelse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../dokument/api/mapper/DokumentMapper.kt | 16 +++++++----- .../kabaljsontopdf/KabalJsonToPdfClient.kt | 15 +---------- .../domain/DocumentValidationResponse.kt | 10 ------- .../kabaljsontopdf/domain/RequestResponse.kt | 26 +++++++++++++++++++ .../service/InnholdsfortegnelseService.kt | 15 ++++++++--- 5 files changed, 47 insertions(+), 35 deletions(-) delete mode 100644 src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/DocumentValidationResponse.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index cbe8dd695..4541775e1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -4,7 +4,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import no.nav.klage.dokument.api.view.DokumentView import no.nav.klage.dokument.api.view.DokumentViewWithList import no.nav.klage.dokument.api.view.SmartEditorDocumentView -import no.nav.klage.dokument.clients.kabaljsontopdf.InnholdsfortegnelseRequest +import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest import no.nav.klage.dokument.clients.kabalsmarteditorapi.model.response.DocumentOutput import no.nav.klage.dokument.domain.FysiskDokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid @@ -57,19 +57,21 @@ class DokumentMapper( fun getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid: List, mottakere: List - ): List { + ): Pair, List> { val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } return dokumenterUnderArbeid.sortedByDescending { it.created } - .map { mapToInnholdsfortegnelseRequestDocument(it, mottakere) } - .plus(journalfoerteDokumenterUnderArbeid - .map { mapToInnholdsfortegnelseRequestDocument(it) } - .sortedByDescending { it.dato }) + .map { mapToInnholdsfortegnelseRequestDocument(it, mottakere) } to journalfoerteDokumenterUnderArbeid + .map { mapToInnholdsfortegnelseRequestDocument(it) } + .sortedByDescending { it.dato } } - fun mapToInnholdsfortegnelseRequestDocument(dokumentUnderArbeid: DokumentUnderArbeid, mottakere: List = emptyList()): InnholdsfortegnelseRequest.Document { + fun mapToInnholdsfortegnelseRequestDocument( + dokumentUnderArbeid: DokumentUnderArbeid, + mottakere: List = emptyList() + ): InnholdsfortegnelseRequest.Document { val behandling = behandlingService.getBehandlingForReadWithoutCheckForAccess(dokumentUnderArbeid.behandlingId) val (journalpost, dokumentInDokarkiv) = if (dokumentUnderArbeid.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt index 6d75b9b74..bd29ac809 100644 --- a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt +++ b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/KabalJsonToPdfClient.kt @@ -2,13 +2,13 @@ package no.nav.klage.dokument.clients.kabaljsontopdf import io.micrometer.tracing.Tracer import no.nav.klage.dokument.clients.kabaljsontopdf.domain.DocumentValidationResponse +import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest import no.nav.klage.dokument.domain.PDFDocument import no.nav.klage.oppgave.util.getLogger import org.springframework.http.MediaType import org.springframework.stereotype.Component import org.springframework.web.reactive.function.client.WebClient import org.springframework.web.reactive.function.client.bodyToMono -import java.time.LocalDate @Component @@ -68,17 +68,4 @@ class KabalJsonToPdfClient( .bodyToMono() .block() ?: throw RuntimeException("Response null") } -} - -data class InnholdsfortegnelseRequest( - val documentList: List, -) { - data class Document( - val tittel: String, - val tema: String, - val dato: LocalDate, - val avsenderMottaker: String, - val saksnummer: String, - val type: String, - ) } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/DocumentValidationResponse.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/DocumentValidationResponse.kt deleted file mode 100644 index 98b5d085d..000000000 --- a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/DocumentValidationResponse.kt +++ /dev/null @@ -1,10 +0,0 @@ -package no.nav.klage.dokument.clients.kabaljsontopdf.domain - -data class DocumentValidationResponse( - val errors: List = emptyList() -) { - data class DocumentValidationError( - val type: String, - val paths: List> = emptyList() - ) -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt new file mode 100644 index 000000000..04e8f5854 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt @@ -0,0 +1,26 @@ +package no.nav.klage.dokument.clients.kabaljsontopdf.domain + +import java.time.LocalDate + +data class DocumentValidationResponse( + val errors: List = emptyList() +) { + data class DocumentValidationError( + val type: String, + val paths: List> = emptyList() + ) +} + +data class InnholdsfortegnelseRequest( + val dokumenterUnderArbeid: List, + val journalfoerteDokumenter: List, +) { + data class Document( + val tittel: String, + val tema: String, + val dato: LocalDate, + val avsenderMottaker: String, + val saksnummer: String, + val type: String, + ) +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index ee4306d63..eb6fef09e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -1,8 +1,8 @@ package no.nav.klage.dokument.service import no.nav.klage.dokument.api.mapper.DokumentMapper -import no.nav.klage.dokument.clients.kabaljsontopdf.InnholdsfortegnelseRequest import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient +import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository @@ -64,11 +64,18 @@ class InnholdsfortegnelseService( val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentUnderArbeidId) - val documentList = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse(vedlegg.toList(), mottakere) + val (dokumenterUnderArbeid, journalfoerteDokumenter) = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse( + allDokumenterUnderArbeid = vedlegg.toList(), + mottakere = mottakere, + ) - //TODO implement val pdfDocument = - kabalJsonToPdfClient.getInnholdsfortegnelse(InnholdsfortegnelseRequest(documentList = documentList)) + kabalJsonToPdfClient.getInnholdsfortegnelse( + InnholdsfortegnelseRequest( + dokumenterUnderArbeid = dokumenterUnderArbeid, + journalfoerteDokumenter = journalfoerteDokumenter + ) + ) return pdfDocument.bytes } From 626de9658d596c684f2c2ebe9d3076efdc397602 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 11:05:16 +0200 Subject: [PATCH 04/35] WIP: Added support for Innholdsfortegnelse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../api/controller/DokumenterUnderArbeidController.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index 64d846933..9f549b9b1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -137,7 +137,7 @@ class DokumentUnderArbeidController( ) } - @GetMapping("/{dokumentId}/innholdsfortegnelse") + @GetMapping("/{dokumentId}/vedleggsoversikt") fun getMetadataForInnholdsfortegnelse( @PathVariable("behandlingId") behandlingId: UUID, @PathVariable("dokumentId") dokumentId: UUID, @@ -151,7 +151,7 @@ class DokumentUnderArbeidController( ) } - @GetMapping("/{hoveddokumentId}/innholdsfortegnelse/pdf") + @GetMapping("/{hoveddokumentId}/vedleggsoversikt/pdf") @ResponseBody fun getInnholdsfortegnelsePdf( @PathVariable("behandlingId") behandlingId: UUID, From 42a4416da9cd0d5ef3269695523e3728fcb0222f Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 11:43:04 +0200 Subject: [PATCH 05/35] Fix circular dependency. --- .../dokument/api/mapper/DokumentMapper.kt | 18 ++++++++++-------- .../service/InnholdsfortegnelseService.kt | 4 +++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 4541775e1..74e5caba4 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -15,7 +15,6 @@ import no.nav.klage.oppgave.api.view.DokumentReferanse import no.nav.klage.oppgave.clients.saf.graphql.* import no.nav.klage.oppgave.domain.klage.Behandling import no.nav.klage.oppgave.domain.klage.Saksdokument -import no.nav.klage.oppgave.service.BehandlingService import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity @@ -25,7 +24,6 @@ import java.time.LocalDate @Component class DokumentMapper( private val safClient: SafGraphQlClient, - private val behandlingService: BehandlingService, ) { fun mapToByteArray(fysiskDokument: FysiskDokument): ResponseEntity { @@ -56,24 +54,28 @@ class DokumentMapper( fun getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid: List, - mottakere: List + mottakere: List, + behandling: Behandling, ): Pair, List> { val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } return dokumenterUnderArbeid.sortedByDescending { it.created } - .map { mapToInnholdsfortegnelseRequestDocument(it, mottakere) } to journalfoerteDokumenterUnderArbeid - .map { mapToInnholdsfortegnelseRequestDocument(it) } + .map { mapToInnholdsfortegnelseRequestDocument( + dokumentUnderArbeid = it, + mottakere = mottakere, + behandling = behandling + ) } to journalfoerteDokumenterUnderArbeid + .map { mapToInnholdsfortegnelseRequestDocument(dokumentUnderArbeid = it, behandling = behandling) } .sortedByDescending { it.dato } } fun mapToInnholdsfortegnelseRequestDocument( dokumentUnderArbeid: DokumentUnderArbeid, - mottakere: List = emptyList() + mottakere: List = emptyList(), + behandling: Behandling, ): InnholdsfortegnelseRequest.Document { - val behandling = behandlingService.getBehandlingForReadWithoutCheckForAccess(dokumentUnderArbeid.behandlingId) - val (journalpost, dokumentInDokarkiv) = if (dokumentUnderArbeid.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { val journalpostInDokarkiv = safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index eb6fef09e..0572080a6 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -6,6 +6,7 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRe import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository +import no.nav.klage.oppgave.service.BehandlingService import no.nav.klage.oppgave.util.getLogger import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -20,7 +21,7 @@ class InnholdsfortegnelseService( private val mellomlagerService: MellomlagerService, private val kabalJsonToPdfClient: KabalJsonToPdfClient, private val innholdsfortegnelseRepository: InnholdsfortegnelseRepository, - + private val behandlingService: BehandlingService, ) { companion object { @@ -67,6 +68,7 @@ class InnholdsfortegnelseService( val (dokumenterUnderArbeid, journalfoerteDokumenter) = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid = vedlegg.toList(), mottakere = mottakere, + behandling = behandlingService.getBehandlingForReadWithoutCheckForAccess(document.behandlingId), ) val pdfDocument = From 9fe06a22dcb479138689906e1c903144d1c2ff10 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 13:24:56 +0200 Subject: [PATCH 06/35] Changed 'dato' to 'opprettet' and type to `LocalDateTime`. Refactor. Use correct `type`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../dokument/api/mapper/DokumentMapper.kt | 82 +++++++++---------- .../kabaljsontopdf/domain/RequestResponse.kt | 4 +- .../service/InnholdsfortegnelseService.kt | 1 + 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 74e5caba4..bf018231c 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -19,7 +19,7 @@ import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity import org.springframework.stereotype.Component -import java.time.LocalDate +import java.time.LocalDateTime @Component class DokumentMapper( @@ -56,68 +56,60 @@ class DokumentMapper( allDokumenterUnderArbeid: List, mottakere: List, behandling: Behandling, + hoveddokument: DokumentUnderArbeid, ): Pair, List> { val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } return dokumenterUnderArbeid.sortedByDescending { it.created } - .map { mapToInnholdsfortegnelseRequestDocument( + .map { mapToInnholdsfortegnelseRequestDocumentFromDokumentUnderArbeid( dokumentUnderArbeid = it, mottakere = mottakere, - behandling = behandling + behandling = behandling, + hoveddokument = hoveddokument, ) } to journalfoerteDokumenterUnderArbeid - .map { mapToInnholdsfortegnelseRequestDocument(dokumentUnderArbeid = it, behandling = behandling) } - .sortedByDescending { it.dato } + .map { mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument(dokumentUnderArbeid = it, behandling = behandling) } + .sortedByDescending { it.opprettet } } - fun mapToInnholdsfortegnelseRequestDocument( + fun mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument( dokumentUnderArbeid: DokumentUnderArbeid, mottakere: List = emptyList(), behandling: Behandling, ): InnholdsfortegnelseRequest.Document { - val (journalpost, dokumentInDokarkiv) = if (dokumentUnderArbeid.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { - val journalpostInDokarkiv = - safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) - val dokumentInDokarkiv = - journalpostInDokarkiv.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.journalfoertDokumentReference.dokumentInfoId } - ?: throw RuntimeException("Document not found in Dokarkiv") - - journalpostInDokarkiv to dokumentInDokarkiv - } else null to null - - val tittel = if (dokumentInDokarkiv != null) { - (dokumentInDokarkiv.tittel ?: "Tittel ikke funnet i SAF") - } else dokumentUnderArbeid.name - - val tema = if (dokumentInDokarkiv != null) { - Tema.fromNavn(journalpost?.tema?.name).navn - } else behandling.ytelse.toTema().navn - - val type = if (dokumentInDokarkiv != null) { - (journalpost?.journalposttype?.name ?: "Type ikke funnet i SAF") - } else if (dokumentUnderArbeid.dokumentType == DokumentType.NOTAT) "N" else "U" - - val saksnummer = if (dokumentInDokarkiv != null) { - (journalpost?.sak?.fagsakId ?: "Saksnummer ikke funnet i SAF") - } else behandling.fagsakId - - //TODO check Gosys if we can get other dates, such as 'ferdigstilt' etc. - val dato = if (dokumentInDokarkiv != null) { - journalpost!!.datoOpprettet.toLocalDate() - } else LocalDate.now() + if (dokumentUnderArbeid.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { + error("Document must be JOURNALFOERT") + } + val journalpost = + safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) + val dokumentInDokarkiv = + journalpost.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.journalfoertDokumentReference.dokumentInfoId } + ?: throw RuntimeException("Document not found in Dokarkiv") - val avsenderMottaker = if (dokumentInDokarkiv != null) { - journalpost?.avsenderMottaker?.navn ?: "N/A" - } else mottakere.joinToString() + return InnholdsfortegnelseRequest.Document( + tittel = dokumentInDokarkiv.tittel ?: "Tittel ikke funnet i SAF", + tema = Tema.fromNavn(journalpost.tema?.name).navn, + opprettet = journalpost.datoOpprettet, + avsenderMottaker = journalpost.avsenderMottaker?.navn ?: "", + saksnummer = journalpost.sak?.fagsakId ?: "Saksnummer ikke funnet i SAF", + type = journalpost.journalposttype?.name ?: "Type ikke funnet i SAF" + ) + } + fun mapToInnholdsfortegnelseRequestDocumentFromDokumentUnderArbeid( + dokumentUnderArbeid: DokumentUnderArbeid, + mottakere: List = emptyList(), + behandling: Behandling, + hoveddokument: DokumentUnderArbeid, + ): InnholdsfortegnelseRequest.Document { return InnholdsfortegnelseRequest.Document( - tittel = tittel, - tema = tema, - dato = dato, - avsenderMottaker = avsenderMottaker, - saksnummer = saksnummer, - type = type + tittel = dokumentUnderArbeid.name, + tema = behandling.ytelse.toTema().navn, + opprettet = LocalDateTime.now(), + avsenderMottaker = mottakere.joinToString(), + saksnummer = behandling.fagsakId, + type = if (hoveddokument.dokumentType == DokumentType.NOTAT) "N" else "U" ) } diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt index 04e8f5854..b45fc16ac 100644 --- a/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt +++ b/src/main/kotlin/no/nav/klage/dokument/clients/kabaljsontopdf/domain/RequestResponse.kt @@ -1,6 +1,6 @@ package no.nav.klage.dokument.clients.kabaljsontopdf.domain -import java.time.LocalDate +import java.time.LocalDateTime data class DocumentValidationResponse( val errors: List = emptyList() @@ -18,7 +18,7 @@ data class InnholdsfortegnelseRequest( data class Document( val tittel: String, val tema: String, - val dato: LocalDate, + val opprettet: LocalDateTime, val avsenderMottaker: String, val saksnummer: String, val type: String, diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 0572080a6..96e6d05d1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -69,6 +69,7 @@ class InnholdsfortegnelseService( allDokumenterUnderArbeid = vedlegg.toList(), mottakere = mottakere, behandling = behandlingService.getBehandlingForReadWithoutCheckForAccess(document.behandlingId), + hoveddokument = document, ) val pdfDocument = From 532f21eab7a5682c930d3a0dbdeb7f62460b4bb2 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 15:15:45 +0200 Subject: [PATCH 07/35] Sorting dokumenterUnderArbeid by date and name. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../dokument/api/mapper/DokumentMapper.kt | 30 ++++++++----- .../kabaldocument/KabalDocumentMapper.kt | 45 +++++++++++++++---- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index bf018231c..b1e59260d 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -45,11 +45,12 @@ class DokumentMapper( it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - return dokumenterUnderArbeid.sortedByDescending { it.created } + return dokumenterUnderArbeid.sortedWith(compareBy({ it.created }, { it.name })).reversed() .map { mapToDokumentView(it) } .plus(journalfoerteDokumenterUnderArbeid .map { mapToDokumentView(it) } - .sortedByDescending { it.journalfoertDokumentReference?.datoOpprettet }) + .sortedWith(compareBy({it.journalfoertDokumentReference?.datoOpprettet}, {it.tittel})).reversed() + ) } fun getSortedDokumentViewListForInnholdsfortegnelse( @@ -62,15 +63,22 @@ class DokumentMapper( it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - return dokumenterUnderArbeid.sortedByDescending { it.created } - .map { mapToInnholdsfortegnelseRequestDocumentFromDokumentUnderArbeid( - dokumentUnderArbeid = it, - mottakere = mottakere, - behandling = behandling, - hoveddokument = hoveddokument, - ) } to journalfoerteDokumenterUnderArbeid - .map { mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument(dokumentUnderArbeid = it, behandling = behandling) } - .sortedByDescending { it.opprettet } + return dokumenterUnderArbeid.sortedWith(compareBy({ it.created }, { it.name })).reversed() + .map { + mapToInnholdsfortegnelseRequestDocumentFromDokumentUnderArbeid( + dokumentUnderArbeid = it, + mottakere = mottakere, + behandling = behandling, + hoveddokument = hoveddokument, + ) + } to journalfoerteDokumenterUnderArbeid + .map { + mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument( + dokumentUnderArbeid = it, + behandling = behandling + ) + } + .sortedWith(compareBy({it.opprettet}, {it.tittel})).reversed() } fun mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument( diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 4c02b500b..8dfc70583 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -51,18 +51,50 @@ class KabalDocumentMapper( } else null val vedleggMapped = vedlegg.filter { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - .sortedByDescending { it.created } + .sortedWith(compareBy({ it.created }, { it.name })).reversed() .map { currentVedlegg -> mapDokumentUnderArbeidToDokumentReferanse( dokument = currentVedlegg, ) }.toMutableList() if (innholdsfortegnelseDocument != null) { - vedleggMapped.add(0, innholdsfortegnelseDocument) + vedleggMapped.add(0, innholdsfortegnelseDocument) } + val journalfoerteVedlegg = + vedlegg.filter { it.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } + .sortedWith { document1, document2 -> + val journalpostInDokarkiv1 = + safClient.getJournalpostAsSystembruker(document1.journalfoertDokumentReference!!.journalpostId) + + val journalpostInDokarkiv2 = + safClient.getJournalpostAsSystembruker(document2.journalfoertDokumentReference!!.journalpostId) + + val dokumentInDokarkiv1 = + journalpostInDokarkiv1.dokumenter?.find { it.dokumentInfoId == document1.journalfoertDokumentReference.dokumentInfoId } + ?: throw RuntimeException("Document not found in Dokarkiv") + + val dokumentInDokarkiv2 = + journalpostInDokarkiv2.dokumenter?.find { it.dokumentInfoId == document2.journalfoertDokumentReference.dokumentInfoId } + ?: throw RuntimeException("Document not found in Dokarkiv") + + val dateCompare = + journalpostInDokarkiv2.datoOpprettet.compareTo(journalpostInDokarkiv1.datoOpprettet) + if (dateCompare != 0) { + dateCompare + } else { + (dokumentInDokarkiv2.tittel ?: "Tittel ikke funnet i SAF").compareTo( + dokumentInDokarkiv1.tittel ?: "Tittel ikke funnet i SAF" + ) + } + } + return DokumentEnhetWithDokumentreferanserInput( - brevMottakere = mapBrevmottakerIdentToBrevmottakerInput(behandling, hovedDokument.brevmottakerIdents, hovedDokument.dokumentType!!), + brevMottakere = mapBrevmottakerIdentToBrevmottakerInput( + behandling, + hovedDokument.brevmottakerIdents, + hovedDokument.dokumentType!! + ), journalfoeringData = JournalfoeringDataInput( sakenGjelder = PartIdInput( partIdTypeId = behandling.sakenGjelder.partId.type.id, @@ -85,12 +117,7 @@ class KabalDocumentMapper( dokumentreferanser = DokumentEnhetWithDokumentreferanserInput.DokumentInput( hoveddokument = mapDokumentUnderArbeidToDokumentReferanse(hovedDokument), vedlegg = vedleggMapped, - journalfoerteVedlegg = vedlegg.filter { it.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - .sortedByDescending { - val journalpostInDokarkiv = - safClient.getJournalpostAsSystembruker(it.journalfoertDokumentReference!!.journalpostId) - journalpostInDokarkiv.datoOpprettet - } + journalfoerteVedlegg = journalfoerteVedlegg .map { currentVedlegg -> DokumentEnhetWithDokumentreferanserInput.DokumentInput.JournalfoertDokument( kildeJournalpostId = currentVedlegg.journalfoertDokumentReference!!.journalpostId, From eb921bdf6a8971ba59baebb7834e3e45a1a712c2 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 15:26:22 +0200 Subject: [PATCH 08/35] Fixed "delete behandling" used by e2e-tests. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../service/InnholdsfortegnelseService.kt | 4 ++++ .../nav/klage/oppgave/service/AdminService.kt | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 96e6d05d1..100053e62 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -82,4 +82,8 @@ class InnholdsfortegnelseService( return pdfDocument.bytes } + + fun deleteInnholdsfortegnelse(hoveddokumentId: UUID) { + innholdsfortegnelseRepository.delete(innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId)!!) + } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt index 792c6c047..5b5f02333 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt @@ -7,6 +7,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import no.nav.klage.dokument.clients.kabalsmarteditorapi.KabalSmartEditorApiClient import no.nav.klage.dokument.clients.klagefileapi.FileApiClient import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.service.InnholdsfortegnelseService import no.nav.klage.kodeverk.Type import no.nav.klage.kodeverk.hjemmel.ytelseTilRegistreringshjemlerV2 import no.nav.klage.oppgave.clients.skjermede.SkjermedeApiClient @@ -44,6 +45,7 @@ class AdminService( private val endringsloggRepository: EndringsloggRepository, private val skjermedeApiClient: SkjermedeApiClient, private val kabalSmartEditorApiClient: KabalSmartEditorApiClient, + private val innholdsfortegnelseService: InnholdsfortegnelseService, ) { companion object { @@ -83,17 +85,25 @@ class AdminService( /** only for use in dev */ fun deleteBehandlingInDev(behandlingId: UUID) { logger.debug("Delete test data in dev: attempt to delete behandling with id {}", behandlingId) - val dokumenterUnderBehandling = dokumentUnderArbeidRepository.findByBehandlingId(behandlingId) + val dokumenterUnderArbeid = dokumentUnderArbeidRepository.findByBehandlingId(behandlingId) - for (dub in dokumenterUnderBehandling) { + for (dua in dokumenterUnderArbeid) { try { - fileApiClient.deleteDocument(id = dub.mellomlagerId!!, systemUser = true) + fileApiClient.deleteDocument(id = dua.mellomlagerId!!, systemUser = true) } catch (e: Exception) { logger.warn("Delete test data in dev: Could not delete from file api") } + + try { + if (dua.parentId == null) { + innholdsfortegnelseService.deleteInnholdsfortegnelse(dua.id) + } + } catch (e: Exception) { + logger.warn("Couldn't delete innholdsfortegnelse. May be b/c there never was one.") + } } - dokumentUnderArbeidRepository.deleteAll(dokumenterUnderBehandling) + dokumentUnderArbeidRepository.deleteAll(dokumenterUnderArbeid) endringsloggRepository.deleteAll(endringsloggRepository.findByBehandlingIdOrderByTidspunktDesc(behandlingId)) From 4a3b81bebb9190bdbec81c336ba09aaa76700b69 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 28 Sep 2023 15:42:00 +0200 Subject: [PATCH 09/35] Fixed sorting. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../no/nav/klage/dokument/api/mapper/DokumentMapper.kt | 8 ++++---- .../oppgave/clients/kabaldocument/KabalDocumentMapper.kt | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index b1e59260d..0be933bd9 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -45,11 +45,11 @@ class DokumentMapper( it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - return dokumenterUnderArbeid.sortedWith(compareBy({ it.created }, { it.name })).reversed() + return dokumenterUnderArbeid.sortedByDescending { it.created } .map { mapToDokumentView(it) } .plus(journalfoerteDokumenterUnderArbeid .map { mapToDokumentView(it) } - .sortedWith(compareBy({it.journalfoertDokumentReference?.datoOpprettet}, {it.tittel})).reversed() + .sortedWith(compareByDescending { it.journalfoertDokumentReference?.datoOpprettet }.thenBy { it.tittel }) ) } @@ -63,7 +63,7 @@ class DokumentMapper( it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - return dokumenterUnderArbeid.sortedWith(compareBy({ it.created }, { it.name })).reversed() + return dokumenterUnderArbeid.sortedByDescending { it.created } .map { mapToInnholdsfortegnelseRequestDocumentFromDokumentUnderArbeid( dokumentUnderArbeid = it, @@ -78,7 +78,7 @@ class DokumentMapper( behandling = behandling ) } - .sortedWith(compareBy({it.opprettet}, {it.tittel})).reversed() + .sortedWith(compareByDescending { it.opprettet }.thenBy { it.tittel }) } fun mapToInnholdsfortegnelseRequestDocumentFromJournalfoertDokument( diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 8dfc70583..879020b4f 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -51,7 +51,7 @@ class KabalDocumentMapper( } else null val vedleggMapped = vedlegg.filter { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } - .sortedWith(compareBy({ it.created }, { it.name })).reversed() + .sortedByDescending { it.created } .map { currentVedlegg -> mapDokumentUnderArbeidToDokumentReferanse( dokument = currentVedlegg, @@ -83,8 +83,8 @@ class KabalDocumentMapper( if (dateCompare != 0) { dateCompare } else { - (dokumentInDokarkiv2.tittel ?: "Tittel ikke funnet i SAF").compareTo( - dokumentInDokarkiv1.tittel ?: "Tittel ikke funnet i SAF" + (dokumentInDokarkiv1.tittel ?: "Tittel ikke funnet i SAF").compareTo( + dokumentInDokarkiv2.tittel ?: "Tittel ikke funnet i SAF" ) } } From 20ab6375ac821a8b371404f135f647a74f948040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Fri, 29 Sep 2023 15:45:21 +0200 Subject: [PATCH 10/35] WIP: Divide DokumentUnderArbeid. Co-authored-by: Andreas Jonsson --- .../DokumentUnderArbeid.kt | 50 +------------- .../JournalfoertDokumentUnderArbeid.kt | 46 +++++++++++++ .../OpplastetDokumentUnderArbeid.kt | 65 ++++++++++++++++++ .../SmartdokumentUnderArbeid.kt | 68 +++++++++++++++++++ .../kabaldocument/KabalDocumentMapper.kt | 4 -- .../model/request/DokumentEnhetInput.kt | 4 -- .../V88__Divide_dokument_under_arbeid.sql | 5 ++ 7 files changed, 186 insertions(+), 56 deletions(-) create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt create mode 100644 src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index c49921841..83ff54f32 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -1,39 +1,25 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.* -import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.domain.klage.BehandlingRole -import no.nav.klage.oppgave.domain.klage.DokumentTypeConverter -import org.hibernate.annotations.BatchSize import org.hibernate.annotations.DynamicUpdate -import org.hibernate.annotations.Fetch -import org.hibernate.annotations.FetchMode import java.time.LocalDateTime import java.util.* @Entity +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Table(name = "dokument_under_arbeid", schema = "klage") @DynamicUpdate +@DiscriminatorColumn(name = "dokument_under_arbeid_type") open class DokumentUnderArbeid( @Id val id: UUID = UUID.randomUUID(), @Column(name = "mellomlager_id") open var mellomlagerId: String?, - @Column(name = "opplastet") - open var opplastet: LocalDateTime?, - @Column(name = "size") - open var size: Long?, @Column(name = "name") open var name: String, - @Column(name = "smarteditor_id") - open var smartEditorId: UUID?, - @Column(name = "smarteditor_template_id") - open var smartEditorTemplateId: String?, @Column(name = "behandling_id") open var behandlingId: UUID, - @Column(name = "dokument_type_id") - @Convert(converter = DokumentTypeConverter::class) - open var dokumentType: DokumentType?, @Column(name = "created") open var created: LocalDateTime = LocalDateTime.now(), @Column(name = "modified") @@ -44,31 +30,8 @@ open class DokumentUnderArbeid( open var markertFerdigBy: String? = null, @Column(name = "ferdigstilt") open var ferdigstilt: LocalDateTime? = null, - @Column(name = "dokument_enhet_id") - open var dokumentEnhetId: UUID? = null, - @ElementCollection - @CollectionTable( - schema = "klage", - name = "dokument_under_arbeid_brevmottaker_ident", - joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] - ) - @Column(name="identifikator") - open var brevmottakerIdents: Set = setOf(), @Column(name = "parent_id") open var parentId: UUID? = null, - @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) - @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) - @Fetch(FetchMode.SELECT) - @BatchSize(size = 5) - open val journalposter: MutableSet = mutableSetOf(), - @Embedded - @AttributeOverrides( - value = [ - AttributeOverride(name = "journalpostId", column = Column(name = "journalfoert_dokument_journalpost_id")), - AttributeOverride(name = "dokumentInfoId", column = Column(name = "journalfoert_dokument_dokument_info_id")), - ] - ) - val journalfoertDokumentReference: JournalfoertDokumentReference?, @Column(name = "creator_ident") open var creatorIdent: String, @Column(name = "creator_role") @@ -126,13 +89,4 @@ open class DokumentUnderArbeid( SMART, JOURNALFOERT } - - fun getType(): DokumentUnderArbeidType { - return when { - smartEditorId != null -> DokumentUnderArbeidType.SMART - journalfoertDokumentReference != null -> DokumentUnderArbeidType.JOURNALFOERT - else -> DokumentUnderArbeidType.UPLOADED - } - } - } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt new file mode 100644 index 000000000..ae1cc2bf1 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt @@ -0,0 +1,46 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.Column +import jakarta.persistence.DiscriminatorValue +import jakarta.persistence.Entity +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + +@Entity +@DiscriminatorValue("journalfoertdokument") +class JournalfoertDokumentUnderArbeid ( + @Column(name = "opprettet") + var opprettet: LocalDateTime, + @Column(name = "journalfoert_dokument_journalpost_id") + val journalpostId: String, + @Column(name = "journalfoert_dokument_dokument_info_id") + val dokumentInfoId: String, + + //Common properties + id: UUID = UUID.randomUUID(), + mellomlagerId: String?, + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + parentId: UUID?, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeid( + id = id, + mellomlagerId = mellomlagerId, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + parentId = parentId, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt new file mode 100644 index 000000000..a3b99f511 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt @@ -0,0 +1,65 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.* +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.kodeverk.DokumentTypeConverter +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import org.hibernate.annotations.BatchSize +import org.hibernate.annotations.Fetch +import org.hibernate.annotations.FetchMode +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("opplastetdokument") +class OpplastetDokumentUnderArbeid( + @Column(name = "size") + var size: Long?, + @Column(name = "dokument_type_id") + @Convert(converter = DokumentTypeConverter::class) + var dokumentType: DokumentType?, + + @Column(name = "dokument_enhet_id") + var dokumentEnhetId: UUID? = null, + @ElementCollection + @CollectionTable( + schema = "klage", + name = "dokument_under_arbeid_brevmottaker_ident", + joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] + ) + @Column(name="identifikator") + var brevmottakerIdents: Set = setOf(), + @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) + @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) + @Fetch(FetchMode.SELECT) + @BatchSize(size = 5) + val journalposter: MutableSet = mutableSetOf(), + + //Common properties + id: UUID = UUID.randomUUID(), + mellomlagerId: String?, + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + parentId: UUID?, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeid( + id = id, + mellomlagerId = mellomlagerId, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + parentId = parentId, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt new file mode 100644 index 000000000..57727674f --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt @@ -0,0 +1,68 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.* +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.kodeverk.DokumentTypeConverter +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import org.hibernate.annotations.BatchSize +import org.hibernate.annotations.Fetch +import org.hibernate.annotations.FetchMode +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("smartdokument") +class SmartdokumentUnderArbeid( + @Column(name = "size") + var size: Long?, + @Column(name = "smarteditor_id") + var smartEditorId: UUID?, + @Column(name = "smarteditor_template_id") + var smartEditorTemplateId: String?, + @Column(name = "dokument_type_id") + @Convert(converter = DokumentTypeConverter::class) + var dokumentType: DokumentType?, + @Column(name = "dokument_enhet_id") + var dokumentEnhetId: UUID? = null, + @ElementCollection + @CollectionTable( + schema = "klage", + name = "dokument_under_arbeid_brevmottaker_ident", + joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] + ) + @Column(name="identifikator") + var brevmottakerIdents: Set = setOf(), + @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) + @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) + @Fetch(FetchMode.SELECT) + @BatchSize(size = 5) + val journalposter: MutableSet = mutableSetOf(), + + //Common properties + id: UUID = UUID.randomUUID(), + mellomlagerId: String?, + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + parentId: UUID?, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeid( + id = id, + mellomlagerId = mellomlagerId, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + parentId = parentId, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 879020b4f..06dbff3ee 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -44,8 +44,6 @@ class KabalDocumentMapper( val innholdsfortegnelseDocument = if (vedlegg.size > 1) { DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( mellomlagerId = innholdsfortegnelse?.mellomlagerId!!, - opplastet = innholdsfortegnelse.modified, - size = 0, name = "Innholdsfortegnelse" ) } else null @@ -133,8 +131,6 @@ class KabalDocumentMapper( private fun mapDokumentUnderArbeidToDokumentReferanse(dokument: DokumentUnderArbeid): DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument { return DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( mellomlagerId = dokument.mellomlagerId!!, - opplastet = dokument.opplastet!!, - size = dokument.size!!, name = dokument.name, ) } diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/model/request/DokumentEnhetInput.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/model/request/DokumentEnhetInput.kt index fc661cbd7..2a2ef49f7 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/model/request/DokumentEnhetInput.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/model/request/DokumentEnhetInput.kt @@ -1,7 +1,5 @@ package no.nav.klage.oppgave.clients.kabaldocument.model.request -import java.time.LocalDateTime - data class DokumentEnhetWithDokumentreferanserInput( val brevMottakere: List, val journalfoeringData: JournalfoeringDataInput, @@ -16,8 +14,6 @@ data class DokumentEnhetWithDokumentreferanserInput( ) { data class Dokument( val mellomlagerId: String, - val opplastet: LocalDateTime, - val size: Long, val name: String, ) diff --git a/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql b/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql new file mode 100644 index 000000000..51d0dc61e --- /dev/null +++ b/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql @@ -0,0 +1,5 @@ +ALTER TABLE klage.dokument_under_arbeid + ADD COLUMN dokument_under_arbeid_type TEXT, + ADD COLUMN opprettet TIMESTAMP; + + From 287816626f1976e91acb49e626ab01557bab81de Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Mon, 2 Oct 2023 10:07:14 +0200 Subject: [PATCH 11/35] WIP DokumenterUnderArbeid subclasses. --- .../DokumenterUnderArbeidController.kt | 5 +- .../api/view/DokumentUnderArbeidView.kt | 4 +- .../DokumentUnderArbeid.kt | 6 +- .../DokumentUnderArbeidAsVedlegg.kt | 36 ++ ...rArbeidWithHoveddokumentCharacteristics.kt | 23 + ...urnalfoertDokumentUnderArbeidAsVedlegg.kt} | 6 +- .../OpplastetDokumentUnderArbeid.kt | 12 +- .../OpplastetDokumentUnderArbeidAsVedlegg.kt | 41 ++ .../SmartdokumentUnderArbeid.kt | 18 +- .../SmartdokumentUnderArbeidAsVedlegg.kt | 45 ++ .../DokumentUnderArbeidRepository.kt | 8 - ...tDokumentUnderArbeidAsVedleggRepository.kt | 22 + ...tDokumentUnderArbeidAsVedleggRepository.kt | 17 + .../OpplastetDokumentUnderArbeidRepository.kt | 9 + ...tdokumentUnderArbeidAsVedleggRepository.kt | 20 + .../SmartdokumentUnderArbeidRepository.kt | 14 + .../service/DokumentUnderArbeidService.kt | 430 ++++++++++++------ .../domain/klage/Endringslogginnslag.kt | 1 + 18 files changed, 544 insertions(+), 173 deletions(-) create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt rename src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/{JournalfoertDokumentUnderArbeid.kt => JournalfoertDokumentUnderArbeidAsVedlegg.kt} (90%) create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index 9f549b9b1..f5233eb21 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -190,7 +190,7 @@ class DokumentUnderArbeidController( return if (input.dokumentId == null) { dokumentMapper.mapToDokumentListView( dokumentUnderArbeidList = listOf( - dokumentUnderArbeidService.frikobleVedlegg( + dokumentUnderArbeidService.setAsHoveddokument( behandlingId = behandlingId, dokumentId = persistentDokumentId, innloggetIdent = innloggetSaksbehandlerService.getInnloggetIdent() @@ -200,7 +200,7 @@ class DokumentUnderArbeidController( ) } else { val (alteredDocuments, duplicateJournalfoerteDokumenter) = - dokumentUnderArbeidService.setParentDocument( + dokumentUnderArbeidService.setAsVedlegg( parentId = input.dokumentId, dokumentId = persistentDokumentId, innloggetIdent = innloggetSaksbehandlerService.getInnloggetIdent() @@ -239,6 +239,7 @@ class DokumentUnderArbeidController( @PathVariable("behandlingId") behandlingId: UUID, @PathVariable("dokumentid") dokumentId: UUID, ): List { + //TODO only called for hoveddokumenter? return dokumentUnderArbeidService.validateSmartDokument(dokumentId) } diff --git a/src/main/kotlin/no/nav/klage/dokument/api/view/DokumentUnderArbeidView.kt b/src/main/kotlin/no/nav/klage/dokument/api/view/DokumentUnderArbeidView.kt index 047f88bde..b2e87a454 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/view/DokumentUnderArbeidView.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/view/DokumentUnderArbeidView.kt @@ -21,14 +21,14 @@ data class DokumentView( val isSmartDokument: Boolean, val templateId: String?, val isMarkertAvsluttet: Boolean, - //Deprecated + @Deprecated("use parentId") val parent: UUID?, val parentId: UUID?, val journalfoertDokumentReference: JournalfoertDokumentReference?, val creatorIdent: String, val creatorRole: BehandlingRole, ) { - data class JournalfoertDokumentReference ( + data class JournalfoertDokumentReference( val journalpostId: String, val dokumentInfoId: String, val harTilgangTilArkivvariant: Boolean, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index 83ff54f32..dd0c1c87a 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -11,11 +11,9 @@ import java.util.* @Table(name = "dokument_under_arbeid", schema = "klage") @DynamicUpdate @DiscriminatorColumn(name = "dokument_under_arbeid_type") -open class DokumentUnderArbeid( +abstract class DokumentUnderArbeid( @Id val id: UUID = UUID.randomUUID(), - @Column(name = "mellomlager_id") - open var mellomlagerId: String?, @Column(name = "name") open var name: String, @Column(name = "behandling_id") @@ -30,8 +28,6 @@ open class DokumentUnderArbeid( open var markertFerdigBy: String? = null, @Column(name = "ferdigstilt") open var ferdigstilt: LocalDateTime? = null, - @Column(name = "parent_id") - open var parentId: UUID? = null, @Column(name = "creator_ident") open var creatorIdent: String, @Column(name = "creator_role") diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt new file mode 100644 index 000000000..475ef85be --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt @@ -0,0 +1,36 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + +@Entity +abstract class DokumentUnderArbeidAsVedlegg( + @Column(name = "parent_id") + val parentId: UUID? = null, + + //Common properties + id: UUID = UUID.randomUUID(), + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeid( + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt new file mode 100644 index 000000000..727595c19 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt @@ -0,0 +1,23 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +//Try inheritance instead + +//interface DokumentUnderArbeidWithHoveddokumentCharacteristics { +// var dokumentType: DokumentType +// var brevmottakerIdents: Set +//} +// +//interface DokumentUnderArbeidWithJournalposter { +// val journalposter: MutableSet +//} +// +//interface DokumentUnderArbeidAsSmartdokument: DokumentUnderArbeidAsMellomlagret { +// var size: Long? +// val id: UUID +// val smartEditorId: UUID +// var smartEditorTemplateId: String +//} +// +//interface DokumentUnderArbeidAsMellomlagret { +// var mellomlagerId: String? +//} diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt similarity index 90% rename from src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt rename to src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt index ae1cc2bf1..7d8d409d7 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt @@ -9,7 +9,7 @@ import java.util.* @Entity @DiscriminatorValue("journalfoertdokument") -class JournalfoertDokumentUnderArbeid ( +class JournalfoertDokumentUnderArbeidAsVedlegg ( @Column(name = "opprettet") var opprettet: LocalDateTime, @Column(name = "journalfoert_dokument_journalpost_id") @@ -19,7 +19,6 @@ class JournalfoertDokumentUnderArbeid ( //Common properties id: UUID = UUID.randomUUID(), - mellomlagerId: String?, name: String, behandlingId: UUID, created: LocalDateTime, @@ -30,9 +29,8 @@ class JournalfoertDokumentUnderArbeid ( parentId: UUID?, creatorIdent: String, creatorRole: BehandlingRole, -) : DokumentUnderArbeid( +) : DokumentUnderArbeidAsVedlegg( id = id, - mellomlagerId = mellomlagerId, name = name, behandlingId = behandlingId, created = created, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt index a3b99f511..8b280501e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt @@ -18,7 +18,7 @@ class OpplastetDokumentUnderArbeid( var size: Long?, @Column(name = "dokument_type_id") @Convert(converter = DokumentTypeConverter::class) - var dokumentType: DokumentType?, + override var dokumentType: DokumentType, @Column(name = "dokument_enhet_id") var dokumentEnhetId: UUID? = null, @@ -29,16 +29,17 @@ class OpplastetDokumentUnderArbeid( joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] ) @Column(name="identifikator") - var brevmottakerIdents: Set = setOf(), + override var brevmottakerIdents: Set = setOf(), @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) @Fetch(FetchMode.SELECT) @BatchSize(size = 5) val journalposter: MutableSet = mutableSetOf(), + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, //Common properties id: UUID = UUID.randomUUID(), - mellomlagerId: String?, name: String, behandlingId: UUID, created: LocalDateTime, @@ -46,12 +47,10 @@ class OpplastetDokumentUnderArbeid( markertFerdig: LocalDateTime?, markertFerdigBy: String?, ferdigstilt: LocalDateTime?, - parentId: UUID?, creatorIdent: String, creatorRole: BehandlingRole, -) : DokumentUnderArbeid( +) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidWithHoveddokumentCharacteristics, DokumentUnderArbeid( id = id, - mellomlagerId = mellomlagerId, name = name, behandlingId = behandlingId, created = created, @@ -59,7 +58,6 @@ class OpplastetDokumentUnderArbeid( markertFerdig = markertFerdig, markertFerdigBy = markertFerdigBy, ferdigstilt = ferdigstilt, - parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, ) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt new file mode 100644 index 000000000..7868afdc1 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt @@ -0,0 +1,41 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.* +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("opplastetdokument_vedlegg") +class OpplastetDokumentUnderArbeidAsVedlegg( + @Column(name = "size") + var size: Long?, + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, + + //Common properties + id: UUID = UUID.randomUUID(), + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + parentId: UUID, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsVedlegg( + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + parentId = parentId, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt index 57727674f..d3b7e85c1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt @@ -15,14 +15,14 @@ import java.util.* @DiscriminatorValue("smartdokument") class SmartdokumentUnderArbeid( @Column(name = "size") - var size: Long?, + override var size: Long?, @Column(name = "smarteditor_id") - var smartEditorId: UUID?, + override val smartEditorId: UUID, @Column(name = "smarteditor_template_id") - var smartEditorTemplateId: String?, + override var smartEditorTemplateId: String, @Column(name = "dokument_type_id") @Convert(converter = DokumentTypeConverter::class) - var dokumentType: DokumentType?, + override var dokumentType: DokumentType, @Column(name = "dokument_enhet_id") var dokumentEnhetId: UUID? = null, @ElementCollection @@ -32,16 +32,17 @@ class SmartdokumentUnderArbeid( joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] ) @Column(name="identifikator") - var brevmottakerIdents: Set = setOf(), + override var brevmottakerIdents: Set = setOf(), @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) @Fetch(FetchMode.SELECT) @BatchSize(size = 5) val journalposter: MutableSet = mutableSetOf(), + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, //Common properties id: UUID = UUID.randomUUID(), - mellomlagerId: String?, name: String, behandlingId: UUID, created: LocalDateTime, @@ -49,12 +50,10 @@ class SmartdokumentUnderArbeid( markertFerdig: LocalDateTime?, markertFerdigBy: String?, ferdigstilt: LocalDateTime?, - parentId: UUID?, creatorIdent: String, creatorRole: BehandlingRole, -) : DokumentUnderArbeid( +) : DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidWithHoveddokumentCharacteristics, DokumentUnderArbeid( id = id, - mellomlagerId = mellomlagerId, name = name, behandlingId = behandlingId, created = created, @@ -62,7 +61,6 @@ class SmartdokumentUnderArbeid( markertFerdig = markertFerdig, markertFerdigBy = markertFerdigBy, ferdigstilt = ferdigstilt, - parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, ) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt new file mode 100644 index 000000000..2317330d1 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt @@ -0,0 +1,45 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.* +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("smartdokument_vedlegg") +class SmartdokumentUnderArbeidAsVedlegg( + @Column(name = "size") + override var size: Long?, + @Column(name = "smarteditor_id") + override val smartEditorId: UUID, + @Column(name = "smarteditor_template_id") + override var smartEditorTemplateId: String, + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, + + //Common properties + id: UUID = UUID.randomUUID(), + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime?, + markertFerdigBy: String?, + ferdigstilt: LocalDateTime?, + parentId: UUID, + creatorIdent: String, + creatorRole: BehandlingRole, +) : DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsVedlegg( + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + parentId = parentId, + creatorIdent = creatorIdent, + creatorRole = creatorRole, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt index 42f2ef4a7..b1cba1873 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt @@ -1,7 +1,6 @@ package no.nav.klage.dokument.repositories import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid -import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference import org.springframework.data.jpa.repository.JpaRepository import org.springframework.transaction.annotation.Transactional import java.util.* @@ -15,17 +14,10 @@ interface DokumentUnderArbeidRepository : JpaRepository - fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet - fun findByParentIdAndJournalfoertDokumentReferenceIsNotNull(dokumentId: UUID): Set - - fun findByParentIdAndJournalfoertDokumentReferenceAndIdNot(parentId: UUID, journalfoertDokumentReference: JournalfoertDokumentReference, id: UUID): List - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet - fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt new file mode 100644 index 000000000..0402e0357 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt @@ -0,0 +1,22 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference +import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentUnderArbeidAsVedlegg +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface JournalfoertDokumentUnderArbeidAsVedleggRepository : JpaRepository { + + fun findByParentIdAndJournalfoertDokumentReferenceIsNotNull(dokumentId: UUID): Set + + fun findByParentIdAndJournalfoertDokumentReferenceAndIdNot(parentId: UUID, journalfoertDokumentReference: JournalfoertDokumentReference, id: UUID): List + + fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet + + fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List + + fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet + +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt new file mode 100644 index 000000000..ad2e132a7 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt @@ -0,0 +1,17 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsVedlegg +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface OpplastetDokumentUnderArbeidAsVedleggRepository : JpaRepository { + + fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet + + fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List + + fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet +} + diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt new file mode 100644 index 000000000..4d31ee8a2 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt @@ -0,0 +1,9 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeid +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface OpplastetDokumentUnderArbeidRepository : JpaRepository \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt new file mode 100644 index 000000000..2ddb07039 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt @@ -0,0 +1,20 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeidAsVedlegg +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface SmartdokumentUnderArbeidAsVedleggRepository : JpaRepository { + + fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + + fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List + + fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet + + fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List + + fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt new file mode 100644 index 000000000..ab7322f82 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt @@ -0,0 +1,14 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeid +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface SmartdokumentUnderArbeidRepository : JpaRepository { + + fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + + fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index e1753d849..ae018b8eb 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -7,11 +7,10 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient import no.nav.klage.dokument.clients.kabalsmarteditorapi.DefaultKabalSmartEditorApiGateway import no.nav.klage.dokument.domain.FysiskDokument import no.nav.klage.dokument.domain.PDFDocument -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidJournalpostId +import no.nav.klage.dokument.domain.dokumenterunderarbeid.* import no.nav.klage.dokument.exceptions.DokumentValidationException import no.nav.klage.dokument.exceptions.JsonToPdfValidationException -import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.repositories.* import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.kodeverk.Template @@ -42,6 +41,11 @@ import java.util.* @Transactional class DokumentUnderArbeidService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val opplastetDokumentUnderArbeidRepository: OpplastetDokumentUnderArbeidRepository, + private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, + private val smartDokumentUnderArbeidRepository: SmartdokumentUnderArbeidRepository, + private val smartDokumentUnderArbeidAsVedleggRepository: SmartdokumentUnderArbeidAsVedleggRepository, + private val journalfoertDokumentUnderArbeidRepository: JournalfoertDokumentUnderArbeidAsVedleggRepository, private val attachmentValidator: MellomlagretDokumentValidatorService, private val mellomlagerService: MellomlagerService, private val smartEditorApiGateway: DefaultKabalSmartEditorApiGateway, @@ -87,22 +91,43 @@ class DokumentUnderArbeidService( attachmentValidator.validateAttachment(opplastetFil) val mellomlagerId = mellomlagerService.uploadDocument(opplastetFil) - val document = dokumentUnderArbeidRepository.save( - DokumentUnderArbeid( - mellomlagerId = mellomlagerId, - opplastet = LocalDateTime.now(), - size = opplastetFil.content.size.toLong(), - name = tittel, - dokumentType = dokumentType, - behandlingId = behandlingId, - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, - creatorIdent = innloggetIdent, - creatorRole = behandlingRole, - parentId = parentId, + val now = LocalDateTime.now() + + val document = if (parentId == null) { + opplastetDokumentUnderArbeidRepository.save( + OpplastetDokumentUnderArbeid( + mellomlagerId = mellomlagerId, + size = opplastetFil.content.size.toLong(), + name = tittel, + dokumentType = dokumentType, + behandlingId = behandlingId, + creatorIdent = innloggetIdent, + creatorRole = behandlingRole, + created = now, + modified = now, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + ) ) - ) + } else { + opplastetDokumentUnderArbeidAsVedleggRepository.save( + OpplastetDokumentUnderArbeidAsVedlegg( + mellomlagerId = mellomlagerId, + size = opplastetFil.content.size.toLong(), + name = tittel, + behandlingId = behandlingId, + creatorIdent = innloggetIdent, + creatorRole = behandlingRole, + parentId = parentId, + created = now, + modified = now, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + ) + ) + } behandling.publishEndringsloggEvent( saksbehandlerident = innloggetIdent, felt = Felt.DOKUMENT_UNDER_ARBEID_OPPLASTET, @@ -119,7 +144,7 @@ class DokumentUnderArbeidService( behandlingId: UUID, dokumentType: DokumentType, json: String?, - smartEditorTemplateId: String?, + smartEditorTemplateId: String, innloggetIdent: String, tittel: String, parentId: UUID?, @@ -145,32 +170,57 @@ class DokumentUnderArbeidService( documentTitle = tittel ) - val hovedDokument = dokumentUnderArbeidRepository.save( - DokumentUnderArbeid( - mellomlagerId = null, - opplastet = null, - size = null, - name = tittel, - dokumentType = dokumentType, - behandlingId = behandlingId, - smartEditorId = smartEditorDocumentId, - smartEditorTemplateId = smartEditorTemplateId, - journalfoertDokumentReference = null, - creatorIdent = innloggetIdent, - creatorRole = behandlingRole, - parentId = parentId, + val now = LocalDateTime.now() + + val document = if (parentId == null) { + smartDokumentUnderArbeidRepository.save( + SmartdokumentUnderArbeid( + mellomlagerId = null, + size = null, + name = tittel, + dokumentType = dokumentType, + behandlingId = behandlingId, + smartEditorId = smartEditorDocumentId, + smartEditorTemplateId = smartEditorTemplateId, + creatorIdent = innloggetIdent, + creatorRole = behandlingRole, + created = now, + modified = now, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + ) ) - ) + } else { + smartDokumentUnderArbeidAsVedleggRepository.save( + SmartdokumentUnderArbeidAsVedlegg( + mellomlagerId = null, + size = null, + name = tittel, + behandlingId = behandlingId, + smartEditorId = smartEditorDocumentId, + smartEditorTemplateId = smartEditorTemplateId, + creatorIdent = innloggetIdent, + creatorRole = behandlingRole, + parentId = parentId, + created = now, + modified = now, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + ) + ) + } behandling.publishEndringsloggEvent( saksbehandlerident = innloggetIdent, felt = Felt.SMARTDOKUMENT_OPPRETTET, fraVerdi = null, - tilVerdi = hovedDokument.created.toString(), - tidspunkt = hovedDokument.created, - dokumentId = hovedDokument.id, + tilVerdi = document.created.toString(), + tidspunkt = document.created, + dokumentId = document.id, ) - return hovedDokument + return document } fun createJournalfoerteDokumenter( @@ -201,12 +251,13 @@ class DokumentUnderArbeidService( } val alreadyAddedDocuments = - dokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceIsNotNull(parentId).map { - JournalfoertDokumentReference( - journalpostId = it.journalfoertDokumentReference!!.journalpostId, - dokumentInfoId = it.journalfoertDokumentReference.dokumentInfoId - ) - }.toSet() + journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceIsNotNull(parentId) + .map { + JournalfoertDokumentReference( + journalpostId = it.journalpostId, + dokumentInfoId = it.dokumentInfoId + ) + }.toSet() val (toAdd, duplicates) = journalfoerteDokumenter.partition { it !in alreadyAddedDocuments } @@ -217,26 +268,26 @@ class DokumentUnderArbeidService( parentDocument = parentDocument ) + val now = LocalDateTime.now() + val resultingDocuments = toAdd.map { journalfoertDokumentReference -> val journalpostInDokarkiv = safClient.getJournalpostAsSaksbehandler(journalfoertDokumentReference.journalpostId) - val document = DokumentUnderArbeid( - mellomlagerId = null, - opplastet = journalpostInDokarkiv.datoOpprettet, - size = null, - name = "Hentes fra SAF", - dokumentType = null, + val document = JournalfoertDokumentUnderArbeidAsVedlegg( + name = "TODO / Hentes fra SAF", behandlingId = behandlingId, - smartEditorId = null, - smartEditorTemplateId = null, parentId = parentId, - journalfoertDokumentReference = no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference( - journalpostId = journalfoertDokumentReference.journalpostId, - dokumentInfoId = journalfoertDokumentReference.dokumentInfoId, - ), + journalpostId = journalfoertDokumentReference.journalpostId, + dokumentInfoId = journalfoertDokumentReference.dokumentInfoId, creatorIdent = innloggetIdent, - creatorRole = behandlingRole + creatorRole = behandlingRole, + opprettet = journalpostInDokarkiv.datoOpprettet, + created = now, + modified = now, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, ) behandling.publishEndringsloggEvent( @@ -248,7 +299,7 @@ class DokumentUnderArbeidService( dokumentId = document.id, ) - dokumentUnderArbeidRepository.save( + journalfoertDokumentUnderArbeidRepository.save( document ) } @@ -274,7 +325,7 @@ class DokumentUnderArbeidService( } if (parentDocument != null && behandlingRole == BehandlingRole.KABAL_ROL) { - if (parentDocument.smartEditorTemplateId != Template.ROL_QUESTIONS.id) { + if (!(parentDocument is SmartdokumentUnderArbeidAsVedlegg && parentDocument.smartEditorTemplateId == Template.ROL_QUESTIONS.id)) { throw MissingTilgangException("ROL kan ikke opprette vedlegg til dette hoveddokumentet.") } } @@ -294,7 +345,7 @@ class DokumentUnderArbeidService( //Sjekker tilgang på behandlingsnivå: val behandling = behandlingService.getBehandlingForUpdate(dokumentUnderArbeid.behandlingId) - if (dokumentUnderArbeid.parentId != null) { + if (dokumentUnderArbeid.isVedlegg()) { //Vi skal ikke kunne endre dokumentType på vedlegg throw DokumentValidationException("Man kan ikke endre dokumentType på vedlegg") } @@ -303,13 +354,19 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke endre dokumenttype på et dokument som er ferdigstilt") } + if (dokumentUnderArbeid !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + throw RuntimeException("dokumentType cannot be set for this type of document.") + } + val previousValue = dokumentUnderArbeid.dokumentType dokumentUnderArbeid.dokumentType = dokumentType + dokumentUnderArbeid.modified = LocalDateTime.now() + behandling.publishEndringsloggEvent( saksbehandlerident = innloggetIdent, felt = Felt.DOKUMENT_UNDER_ARBEID_TYPE, - fraVerdi = previousValue?.id, + fraVerdi = previousValue.id, tilVerdi = dokumentUnderArbeid.modified.toString(), tidspunkt = dokumentUnderArbeid.modified, dokumentId = dokumentUnderArbeid.id, @@ -318,6 +375,12 @@ class DokumentUnderArbeidService( return dokumentUnderArbeid } + private fun DokumentUnderArbeid.isVedlegg(): Boolean { + return this is SmartdokumentUnderArbeidAsVedlegg || + this is OpplastetDokumentUnderArbeidAsVedlegg || + this is JournalfoertDokumentUnderArbeidAsVedlegg + } + fun updateDokumentTitle( behandlingId: UUID, //Kan brukes i finderne for å "være sikker", men er egentlig overflødig.. dokumentId: UUID, @@ -405,6 +468,10 @@ class DokumentUnderArbeidService( ): DokumentUnderArbeid { val dokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) + if (dokument !is DokumentUnderArbeidAsSmartdokument) { + throw RuntimeException("Not a smartdocument") + } + if (dokument.smartEditorTemplateId == templateId) { return dokument } @@ -437,6 +504,10 @@ class DokumentUnderArbeidService( ): DokumentUnderArbeid { val dokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) + if (dokument !is DokumentUnderArbeidWithJournalposter) { + throw RuntimeException("this document does not support journalposter.") + } + val behandling = behandlingService.getBehandlingForUpdateBySystembruker(behandlingId) val oldValue = dokument.journalposter @@ -460,23 +531,23 @@ class DokumentUnderArbeidService( ): List { val documentValidationResults = mutableListOf() - val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) + val hovedDokument = smartDokumentUnderArbeidRepository.getReferenceById(dokumentId) val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) - if (hovedDokument.smartEditorId != null) { - documentValidationResults += validateSingleDocument(hovedDokument) - } + + documentValidationResults += validateSingleSmartdocument(hovedDokument) + vedlegg.forEach { - if (it.smartEditorId != null) { - documentValidationResults += validateSingleDocument(it) + if (it is SmartdokumentUnderArbeidAsVedlegg) { + documentValidationResults += validateSingleSmartdocument(it) } } return documentValidationResults } - private fun validateSingleDocument(dokument: DokumentUnderArbeid): DocumentValidationResponse { + private fun validateSingleSmartdocument(dokument: DokumentUnderArbeidAsSmartdokument): DocumentValidationResponse { logger.debug("Getting json document, dokumentId: {}", dokument.id) - val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId!!) + val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId) logger.debug("Validating json document in kabalJsontoPdf, dokumentId: {}", dokument.id) val response = kabalJsonToPdfClient.validateJsonDocument(documentJson) return DocumentValidationResponse( @@ -497,20 +568,25 @@ class DokumentUnderArbeidService( brevmottakerIdents: Set?, ): DokumentUnderArbeid { val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) + + if (hovedDokument !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + throw RuntimeException("document is not hoveddokument") + } + val behandling = behandlingService.getBehandlingForUpdate(hovedDokument.behandlingId) - validateBeforeFerdig( + validateHoveddokumentBeforeFerdig( brevmottakerIdents = brevmottakerIdents, hovedDokument = hovedDokument, behandling = behandling, ) val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) - if (hovedDokument.smartEditorId != null && hovedDokument.isStaleSmartEditorDokument()) { + if (hovedDokument is SmartdokumentUnderArbeid && hovedDokument.isStaleSmartEditorDokument()) { mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(hovedDokument) } vedlegg.forEach { - if (it.smartEditorId != null && it.isStaleSmartEditorDokument()) { + if (it is SmartdokumentUnderArbeidAsVedlegg && it.isStaleSmartEditorDokument()) { mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(it) } } @@ -520,7 +596,7 @@ class DokumentUnderArbeidService( val mapBrevmottakerIdentToBrevmottakerInput = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( behandling = behandling, brevmottakerIdents = brevmottakerIdents, - dokumentType = hovedDokument.dokumentType!! + dokumentType = hovedDokument.dokumentType ) hovedDokument.brevmottakerIdents = mapBrevmottakerIdentToBrevmottakerInput.map { it.partId.value @@ -555,11 +631,19 @@ class DokumentUnderArbeidService( return hovedDokument } - private fun validateBeforeFerdig( + private fun validateHoveddokumentBeforeFerdig( brevmottakerIdents: Set?, hovedDokument: DokumentUnderArbeid, behandling: Behandling, ) { + if (hovedDokument !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + throw DokumentValidationException("Kan ikke markere et vedlegg som ferdig") + } + + if (hovedDokument.erMarkertFerdig() || hovedDokument.erFerdigstilt()) { + throw DokumentValidationException("Kan ikke endre dokumenttype på et dokument som er ferdigstilt") + } + val documentValidationErrors = validateSmartDokument(hovedDokument.id) if (documentValidationErrors.any { it.errors.isNotEmpty() }) { throw JsonToPdfValidationException( @@ -568,27 +652,18 @@ class DokumentUnderArbeidService( ) } + val invalidProperties = mutableListOf() + if (hovedDokument.dokumentType != DokumentType.NOTAT && brevmottakerIdents.isNullOrEmpty()) { throw DokumentValidationException("Brevmottakere må være satt") } - if (hovedDokument.erMarkertFerdig() || hovedDokument.erFerdigstilt()) { - throw DokumentValidationException("Kan ikke endre dokumenttype på et dokument som er ferdigstilt") - } - - if (hovedDokument.parentId != null) { - throw DokumentValidationException("Kan ikke markere et vedlegg som ferdig") - } - - val mottakere = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( behandling = behandling, brevmottakerIdents = brevmottakerIdents, - dokumentType = hovedDokument.dokumentType!! + dokumentType = hovedDokument.dokumentType ) - val invalidProperties = mutableListOf() - //Could ignore NOTAT here. We'll see. mottakere.forEach { mottaker -> if (mottaker.partId.partIdTypeId == PartIdType.VIRKSOMHET.id) { @@ -646,24 +721,32 @@ class DokumentUnderArbeidService( //Sjekker tilgang på behandlingsnivå: behandlingService.getBehandling(dokument.behandlingId) - val (content, title) = when (dokument.getType()) { - DokumentUnderArbeid.DokumentUnderArbeidType.UPLOADED -> { + val (content, title) = when (dokument) { + is OpplastetDokumentUnderArbeid -> { + mellomlagerService.getUploadedDocument(dokument.mellomlagerId!!) to dokument.name + } + + is OpplastetDokumentUnderArbeidAsVedlegg -> { mellomlagerService.getUploadedDocument(dokument.mellomlagerId!!) to dokument.name } - DokumentUnderArbeid.DokumentUnderArbeidType.SMART -> { + is DokumentUnderArbeidAsSmartdokument -> { if (dokument.isStaleSmartEditorDokument()) { mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(dokument).bytes to dokument.name } else mellomlagerService.getUploadedDocument(dokument.mellomlagerId!!) to dokument.name } - DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT -> { + is JournalfoertDokumentUnderArbeidAsVedlegg -> { val fysiskDokument = dokumentService.getFysiskDokument( - journalpostId = dokument.journalfoertDokumentReference!!.journalpostId, - dokumentInfoId = dokument.journalfoertDokumentReference.dokumentInfoId, + journalpostId = dokument.journalpostId, + dokumentInfoId = dokument.dokumentInfoId, ) fysiskDokument.content to fysiskDokument.title } + + else -> { + error("can't come here") + } } return FysiskDokument( @@ -684,53 +767,67 @@ class DokumentUnderArbeidService( behandlingId = document.behandlingId, ) - val descendants = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(document.id) - - val documents = descendants.plus(document) - - val behandlingRole = behandling.getRoleInBehandling(innloggetIdent) - - documents.forEach { currentDocument -> - if (currentDocument.creatorRole != behandlingRole) { - throw MissingTilgangException("$behandlingRole har ikke anledning til å slette dokumentet eiet av ${currentDocument.creatorRole}.") + smartDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(dokumentId) + .plus(opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(dokumentId)) + .plus(journalfoertDokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentId)) + .plus(document) + .map { + if (document.erMarkertFerdig()) { + throw MissingTilgangException("Attempting to delete finalized document ${document.id}") + } + document } - } - - documents.forEach { currentDocument -> - if (currentDocument.erMarkertFerdig()) { - logger.warn("Attempting to delete finalized document {}", currentDocument.id) + .forEach { dokumentUnderArbeid -> + slettEnkeltdokument( + document = dokumentUnderArbeid, + innloggetIdent = innloggetIdent, + behandlingRole = behandling.getRoleInBehandling(innloggetIdent), + behandling = behandling, + ) } + } + + private fun slettEnkeltdokument( + document: DokumentUnderArbeid, + innloggetIdent: String, + behandlingRole: BehandlingRole, + behandling: Behandling, + ) { + if (document.creatorRole != behandlingRole) { + throw MissingTilgangException("$behandlingRole har ikke anledning til å slette dokumentet eiet av ${document.creatorRole}.") + } + if (document is DokumentUnderArbeidAsMellomlagret) { try { - if (currentDocument.smartEditorId != null) { - smartEditorApiGateway.deleteDocument(currentDocument.smartEditorId!!) + if (document.mellomlagerId != null) { + mellomlagerService.deleteDocument(document.mellomlagerId!!) } } catch (e: Exception) { - logger.warn("Couldn't delete smartEditor document", e) + logger.warn("Couldn't delete mellomlager document", e) } + } + if (document is DokumentUnderArbeidAsSmartdokument) { try { - if (currentDocument.mellomlagerId != null) { - mellomlagerService.deleteDocument(currentDocument.mellomlagerId!!) - } + smartEditorApiGateway.deleteDocument(document.smartEditorId) } catch (e: Exception) { - logger.warn("Couldn't delete mellomlager document", e) + logger.warn("Couldn't delete smartEditor document", e) } + } - dokumentUnderArbeidRepository.delete(currentDocument) + dokumentUnderArbeidRepository.delete(document) - behandling.publishEndringsloggEvent( - saksbehandlerident = innloggetIdent, - felt = Felt.DOKUMENT_UNDER_ARBEID_OPPLASTET, - fraVerdi = currentDocument.opplastet.toString(), - tilVerdi = null, - tidspunkt = LocalDateTime.now(), - dokumentId = currentDocument.id, - ) - } + behandling.publishEndringsloggEvent( + saksbehandlerident = innloggetIdent, + felt = Felt.DOKUMENT_UNDER_ARBEID_SLETTET, + fraVerdi = document.modified.toString(), + tilVerdi = null, + tidspunkt = LocalDateTime.now(), + dokumentId = document.id, + ) } - fun setParentDocument( + fun setAsVedlegg( parentId: UUID, dokumentId: UUID, innloggetIdent: String @@ -807,7 +904,7 @@ class DokumentUnderArbeidService( } } - fun frikobleVedlegg( + fun setAsHoveddokument( behandlingId: UUID, dokumentId: UUID, innloggetIdent: String @@ -824,9 +921,63 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke frikoble et dokument som er ferdigstilt") } - vedlegg.parentId = null + val savedDocument = when (vedlegg) { + is OpplastetDokumentUnderArbeidAsVedlegg -> { + val new = opplastetDokumentUnderArbeidRepository.save( + OpplastetDokumentUnderArbeid( + size = vedlegg.size, + dokumentType = DokumentType.BREV, //TODO default? UI fix? + dokumentEnhetId = null, + brevmottakerIdents = setOf(), + journalposter = mutableSetOf(), + mellomlagerId = vedlegg.mellomlagerId, + name = vedlegg.name, + behandlingId = vedlegg.behandlingId, + created = vedlegg.created, + modified = vedlegg.modified, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + creatorIdent = vedlegg.creatorIdent, + creatorRole = vedlegg.creatorRole, + ) + ) + opplastetDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) + new + } + + is SmartdokumentUnderArbeidAsVedlegg -> { + val new = smartDokumentUnderArbeidRepository.save( + SmartdokumentUnderArbeid( + size = vedlegg.size, + smartEditorId = vedlegg.smartEditorId, + smartEditorTemplateId = vedlegg.smartEditorTemplateId, + dokumentType = DokumentType.BREV, //TODO default or UI fix? + dokumentEnhetId = null, + brevmottakerIdents = setOf(), + journalposter = mutableSetOf(), + mellomlagerId = vedlegg.mellomlagerId, + name = vedlegg.name, + behandlingId = vedlegg.behandlingId, + created = vedlegg.created, + modified = vedlegg.modified, + markertFerdig = null, + markertFerdigBy = null, + ferdigstilt = null, + creatorIdent = vedlegg.creatorIdent, + creatorRole = vedlegg.creatorRole, + ) + ) + smartDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) + new + } + + else -> { + error("Document could not be set as hoveddokument") + } + } - return vedlegg + return savedDocument } fun findDokumenterNotFinished(behandlingId: UUID, checkReadAccess: Boolean = true): List { @@ -842,7 +993,7 @@ class DokumentUnderArbeidService( //Sjekker tilgang på behandlingsnivå: behandlingService.getBehandling(behandlingId) - return dokumentUnderArbeidRepository.findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated( + return smartDokumentUnderArbeidRepository.findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated( behandlingId ) } @@ -916,6 +1067,10 @@ class DokumentUnderArbeidService( val dokumentUnderArbeid = dokumentUnderArbeidRepository.getReferenceById(dokumentId) val ident = innloggetSaksbehandlerService.getInnloggetIdent() + if (dokumentUnderArbeid !is DokumentUnderArbeidAsSmartdokument) { + throw RuntimeException("dokument is not smartdokument") + } + //Sjekker tilgang på behandlingsnivå: if (readOnly) { behandlingService.getBehandling(dokumentUnderArbeid.behandlingId) @@ -927,12 +1082,17 @@ class DokumentUnderArbeidService( } return dokumentUnderArbeid.smartEditorId - ?: throw DokumentValidationException("$dokumentId er ikke et smarteditor dokument") } private fun mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(dokument: DokumentUnderArbeid): PDFDocument { - val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId!!) + + if (dokument !is DokumentUnderArbeidAsSmartdokument) { + throw RuntimeException("dokument is not smartdokument") + } + + val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId) val pdfDocument = kabalJsonToPdfClient.getPDFDocument(documentJson) + val mellomlagerId = mellomlagerService.uploadByteArray( tittel = dokument.name, @@ -945,15 +1105,15 @@ class DokumentUnderArbeidService( dokument.mellomlagerId = mellomlagerId dokument.size = pdfDocument.bytes.size.toLong() - dokument.opplastet = LocalDateTime.now() + dokument.modified = LocalDateTime.now() return pdfDocument } - private fun DokumentUnderArbeid.isStaleSmartEditorDokument() = - this.smartEditorId != null && smartEditorApiGateway.isMellomlagretDokumentStale( - smartEditorId = this.smartEditorId!!, - sistOpplastet = this.opplastet + private fun DokumentUnderArbeidAsSmartdokument.isStaleSmartEditorDokument() = + smartEditorApiGateway.isMellomlagretDokumentStale( + smartEditorId = this.smartEditorId, + sistOpplastet = this.modified, //TODO changed from opplastet. Verify. ) private fun Behandling.endringslogg( diff --git a/src/main/kotlin/no/nav/klage/oppgave/domain/klage/Endringslogginnslag.kt b/src/main/kotlin/no/nav/klage/oppgave/domain/klage/Endringslogginnslag.kt index c9876c697..ee92f7f3f 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/domain/klage/Endringslogginnslag.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/domain/klage/Endringslogginnslag.kt @@ -85,6 +85,7 @@ enum class Felt { MEDUNDERSKRIVER_FLOW_STATE_ID, SATT_PAA_VENT, DOKUMENT_UNDER_ARBEID_OPPLASTET, + DOKUMENT_UNDER_ARBEID_SLETTET, DOKUMENT_UNDER_ARBEID_TYPE, DOKUMENT_UNDER_ARBEID_ID, DOKUMENT_UNDER_ARBEID_MARKERT_FERDIG, From 6a0c5141acd1cb861b5b0a05cdae60fdae2b82e5 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Tue, 3 Oct 2023 18:11:53 +0200 Subject: [PATCH 12/35] WIP DokumenterUnderArbeid subclasses. --- .../DokumenterUnderArbeidController.kt | 2 +- ... => DokumentUnderArbeidAsHoveddokument.kt} | 22 ++---- .../DokumentUnderArbeidInterfaces.kt | 16 ++++ ...rArbeidWithHoveddokumentCharacteristics.kt | 23 ------ ...astetDokumentUnderArbeidAsHoveddokument.kt | 50 ++++++++++++ .../OpplastetDokumentUnderArbeidAsVedlegg.kt | 10 ++- .../SmartdokumentUnderArbeid.kt | 66 ---------------- ...SmartdokumentUnderArbeidAsHoveddokument.kt | 54 +++++++++++++ .../SmartdokumentUnderArbeidAsVedlegg.kt | 12 +-- .../DokumentUnderArbeidRepository.kt | 2 +- .../OpplastetDokumentUnderArbeidRepository.kt | 4 +- .../SmartdokumentUnderArbeidRepository.kt | 8 +- .../service/DokumentUnderArbeidService.kt | 79 +++++++++---------- .../DokumentUnderArbeidControllerTest.kt | 2 +- 14 files changed, 188 insertions(+), 162 deletions(-) rename src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/{OpplastetDokumentUnderArbeid.kt => DokumentUnderArbeidAsHoveddokument.kt} (75%) create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt delete mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt delete mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index f5233eb21..b09dc4073 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -61,7 +61,7 @@ class DokumentUnderArbeidController( dokumentType = DokumentType.of(input.dokumentTypeId), ) return dokumentMapper.mapToDokumentView( - dokumentUnderArbeidService.opprettOgMellomlagreNyttHoveddokument( + dokumentUnderArbeidService.createOpplastetDokumentUnderArbeid( behandlingId = behandlingId, dokumentType = DokumentType.of(input.dokumentTypeId), opplastetFil = opplastetFil, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt similarity index 75% rename from src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt rename to src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt index 8b280501e..c8744968f 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt @@ -10,16 +10,11 @@ import org.hibernate.annotations.FetchMode import java.time.LocalDateTime import java.util.* - @Entity -@DiscriminatorValue("opplastetdokument") -class OpplastetDokumentUnderArbeid( - @Column(name = "size") - var size: Long?, +abstract class DokumentUnderArbeidAsHoveddokument( @Column(name = "dokument_type_id") @Convert(converter = DokumentTypeConverter::class) - override var dokumentType: DokumentType, - + var dokumentType: DokumentType, @Column(name = "dokument_enhet_id") var dokumentEnhetId: UUID? = null, @ElementCollection @@ -28,15 +23,13 @@ class OpplastetDokumentUnderArbeid( name = "dokument_under_arbeid_brevmottaker_ident", joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] ) - @Column(name="identifikator") - override var brevmottakerIdents: Set = setOf(), + @Column(name = "identifikator") + var brevmottakerIdents: Set = setOf(), @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) @Fetch(FetchMode.SELECT) @BatchSize(size = 5) - val journalposter: MutableSet = mutableSetOf(), - @Column(name = "mellomlager_id") - override var mellomlagerId: String?, + var journalposter: Set = emptySet(), //Common properties id: UUID = UUID.randomUUID(), @@ -49,7 +42,8 @@ class OpplastetDokumentUnderArbeid( ferdigstilt: LocalDateTime?, creatorIdent: String, creatorRole: BehandlingRole, -) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidWithHoveddokumentCharacteristics, DokumentUnderArbeid( + + ) : DokumentUnderArbeid( id = id, name = name, behandlingId = behandlingId, @@ -60,4 +54,4 @@ class OpplastetDokumentUnderArbeid( ferdigstilt = ferdigstilt, creatorIdent = creatorIdent, creatorRole = creatorRole, -) \ No newline at end of file +) diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt new file mode 100644 index 000000000..00c9bf89d --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt @@ -0,0 +1,16 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import java.time.LocalDateTime +import java.util.* + +interface DokumentUnderArbeidAsSmartdokument: DokumentUnderArbeidAsMellomlagret { + var size: Long? + val id: UUID + val smartEditorId: UUID + var smartEditorTemplateId: String + var modified: LocalDateTime +} + +interface DokumentUnderArbeidAsMellomlagret { + var mellomlagerId: String? +} diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt deleted file mode 100644 index 727595c19..000000000 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidWithHoveddokumentCharacteristics.kt +++ /dev/null @@ -1,23 +0,0 @@ -package no.nav.klage.dokument.domain.dokumenterunderarbeid - -//Try inheritance instead - -//interface DokumentUnderArbeidWithHoveddokumentCharacteristics { -// var dokumentType: DokumentType -// var brevmottakerIdents: Set -//} -// -//interface DokumentUnderArbeidWithJournalposter { -// val journalposter: MutableSet -//} -// -//interface DokumentUnderArbeidAsSmartdokument: DokumentUnderArbeidAsMellomlagret { -// var size: Long? -// val id: UUID -// val smartEditorId: UUID -// var smartEditorTemplateId: String -//} -// -//interface DokumentUnderArbeidAsMellomlagret { -// var mellomlagerId: String? -//} diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt new file mode 100644 index 000000000..46f3e259a --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt @@ -0,0 +1,50 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.Column +import jakarta.persistence.DiscriminatorValue +import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("opplastetdokument") +class OpplastetDokumentUnderArbeidAsHoveddokument( + @Column(name = "size") + var size: Long?, + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, + + //Common properties + id: UUID = UUID.randomUUID(), + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime? = null, + markertFerdigBy: String? = null, + ferdigstilt: LocalDateTime? = null, + creatorIdent: String, + creatorRole: BehandlingRole, + dokumentType: DokumentType, + dokumentEnhetId: UUID? = null, + brevmottakerIdents: Set = emptySet(), + journalposter: Set = emptySet(), +) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsHoveddokument( + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + dokumentType = dokumentType, + dokumentEnhetId = dokumentEnhetId, + brevmottakerIdents = brevmottakerIdents, + journalposter = journalposter, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt index 7868afdc1..b3aea1135 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt @@ -1,6 +1,8 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid -import jakarta.persistence.* +import jakarta.persistence.Column +import jakarta.persistence.DiscriminatorValue +import jakarta.persistence.Entity import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -20,9 +22,9 @@ class OpplastetDokumentUnderArbeidAsVedlegg( behandlingId: UUID, created: LocalDateTime, modified: LocalDateTime, - markertFerdig: LocalDateTime?, - markertFerdigBy: String?, - ferdigstilt: LocalDateTime?, + markertFerdig: LocalDateTime? = null, + markertFerdigBy: String? = null, + ferdigstilt: LocalDateTime? = null, parentId: UUID, creatorIdent: String, creatorRole: BehandlingRole, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt deleted file mode 100644 index d3b7e85c1..000000000 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeid.kt +++ /dev/null @@ -1,66 +0,0 @@ -package no.nav.klage.dokument.domain.dokumenterunderarbeid - -import jakarta.persistence.* -import no.nav.klage.kodeverk.DokumentType -import no.nav.klage.kodeverk.DokumentTypeConverter -import no.nav.klage.oppgave.domain.klage.BehandlingRole -import org.hibernate.annotations.BatchSize -import org.hibernate.annotations.Fetch -import org.hibernate.annotations.FetchMode -import java.time.LocalDateTime -import java.util.* - - -@Entity -@DiscriminatorValue("smartdokument") -class SmartdokumentUnderArbeid( - @Column(name = "size") - override var size: Long?, - @Column(name = "smarteditor_id") - override val smartEditorId: UUID, - @Column(name = "smarteditor_template_id") - override var smartEditorTemplateId: String, - @Column(name = "dokument_type_id") - @Convert(converter = DokumentTypeConverter::class) - override var dokumentType: DokumentType, - @Column(name = "dokument_enhet_id") - var dokumentEnhetId: UUID? = null, - @ElementCollection - @CollectionTable( - schema = "klage", - name = "dokument_under_arbeid_brevmottaker_ident", - joinColumns = [JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false)] - ) - @Column(name="identifikator") - override var brevmottakerIdents: Set = setOf(), - @OneToMany(cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER) - @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) - @Fetch(FetchMode.SELECT) - @BatchSize(size = 5) - val journalposter: MutableSet = mutableSetOf(), - @Column(name = "mellomlager_id") - override var mellomlagerId: String?, - - //Common properties - id: UUID = UUID.randomUUID(), - name: String, - behandlingId: UUID, - created: LocalDateTime, - modified: LocalDateTime, - markertFerdig: LocalDateTime?, - markertFerdigBy: String?, - ferdigstilt: LocalDateTime?, - creatorIdent: String, - creatorRole: BehandlingRole, -) : DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidWithHoveddokumentCharacteristics, DokumentUnderArbeid( - id = id, - name = name, - behandlingId = behandlingId, - created = created, - modified = modified, - markertFerdig = markertFerdig, - markertFerdigBy = markertFerdigBy, - ferdigstilt = ferdigstilt, - creatorIdent = creatorIdent, - creatorRole = creatorRole, -) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt new file mode 100644 index 000000000..83d3b5d3d --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt @@ -0,0 +1,54 @@ +package no.nav.klage.dokument.domain.dokumenterunderarbeid + +import jakarta.persistence.Column +import jakarta.persistence.DiscriminatorValue +import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.oppgave.domain.klage.BehandlingRole +import java.time.LocalDateTime +import java.util.* + + +@Entity +@DiscriminatorValue("smartdokument") +class SmartdokumentUnderArbeidAsHoveddokument( + @Column(name = "size") + override var size: Long?, + @Column(name = "smarteditor_id") + override val smartEditorId: UUID, + @Column(name = "smarteditor_template_id") + override var smartEditorTemplateId: String, + @Column(name = "mellomlager_id") + override var mellomlagerId: String?, + + //Common properties + id: UUID = UUID.randomUUID(), + name: String, + behandlingId: UUID, + created: LocalDateTime, + modified: LocalDateTime, + markertFerdig: LocalDateTime? = null, + markertFerdigBy: String? = null, + ferdigstilt: LocalDateTime? = null, + creatorIdent: String, + creatorRole: BehandlingRole, + dokumentType: DokumentType, + dokumentEnhetId: UUID? = null, + brevmottakerIdents: Set = emptySet(), + journalposter: Set = emptySet(), +) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsHoveddokument( + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + dokumentType = dokumentType, + dokumentEnhetId = dokumentEnhetId, + brevmottakerIdents = brevmottakerIdents, + journalposter = journalposter, +) diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt index 2317330d1..a28ff861e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt @@ -1,6 +1,8 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid -import jakarta.persistence.* +import jakarta.persistence.Column +import jakarta.persistence.DiscriminatorValue +import jakarta.persistence.Entity import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -24,13 +26,13 @@ class SmartdokumentUnderArbeidAsVedlegg( behandlingId: UUID, created: LocalDateTime, modified: LocalDateTime, - markertFerdig: LocalDateTime?, - markertFerdigBy: String?, - ferdigstilt: LocalDateTime?, + markertFerdig: LocalDateTime? = null, + markertFerdigBy: String? = null, + ferdigstilt: LocalDateTime? = null, parentId: UUID, creatorIdent: String, creatorRole: BehandlingRole, -) : DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsVedlegg( +) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsVedlegg( id = id, name = name, behandlingId = behandlingId, diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt index b1cba1873..59e969e77 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt @@ -14,7 +14,7 @@ interface DokumentUnderArbeidRepository : JpaRepository - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet +// fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt index 4d31ee8a2..769a233c9 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt @@ -1,9 +1,9 @@ package no.nav.klage.dokument.repositories -import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument import org.springframework.data.jpa.repository.JpaRepository import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface OpplastetDokumentUnderArbeidRepository : JpaRepository \ No newline at end of file +interface OpplastetDokumentUnderArbeidRepository : JpaRepository \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt index ab7322f82..4a2319b6a 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt @@ -1,14 +1,14 @@ package no.nav.klage.dokument.repositories -import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeidAsHoveddokument import org.springframework.data.jpa.repository.JpaRepository import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface SmartdokumentUnderArbeidRepository : JpaRepository { +interface SmartdokumentUnderArbeidRepository : JpaRepository { - fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet - fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List + fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index ae018b8eb..2eab12502 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -66,7 +66,7 @@ class DokumentUnderArbeidService( const val SYSTEMBRUKER = "SYSTEMBRUKER" } - fun opprettOgMellomlagreNyttHoveddokument( + fun createOpplastetDokumentUnderArbeid( behandlingId: UUID, dokumentType: DokumentType, opplastetFil: FysiskDokument?, @@ -95,7 +95,7 @@ class DokumentUnderArbeidService( val document = if (parentId == null) { opplastetDokumentUnderArbeidRepository.save( - OpplastetDokumentUnderArbeid( + OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = mellomlagerId, size = opplastetFil.content.size.toLong(), name = tittel, @@ -105,9 +105,6 @@ class DokumentUnderArbeidService( creatorRole = behandlingRole, created = now, modified = now, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, ) ) } else { @@ -122,9 +119,6 @@ class DokumentUnderArbeidService( parentId = parentId, created = now, modified = now, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, ) ) } @@ -174,7 +168,7 @@ class DokumentUnderArbeidService( val document = if (parentId == null) { smartDokumentUnderArbeidRepository.save( - SmartdokumentUnderArbeid( + SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = null, size = null, name = tittel, @@ -186,9 +180,6 @@ class DokumentUnderArbeidService( creatorRole = behandlingRole, created = now, modified = now, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, ) ) } else { @@ -205,9 +196,6 @@ class DokumentUnderArbeidService( parentId = parentId, created = now, modified = now, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, ) ) } @@ -354,7 +342,7 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke endre dokumenttype på et dokument som er ferdigstilt") } - if (dokumentUnderArbeid !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + if (dokumentUnderArbeid !is DokumentUnderArbeidAsHoveddokument) { throw RuntimeException("dokumentType cannot be set for this type of document.") } @@ -504,15 +492,14 @@ class DokumentUnderArbeidService( ): DokumentUnderArbeid { val dokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) - if (dokument !is DokumentUnderArbeidWithJournalposter) { + if (dokument !is DokumentUnderArbeidAsHoveddokument) { throw RuntimeException("this document does not support journalposter.") } val behandling = behandlingService.getBehandlingForUpdateBySystembruker(behandlingId) val oldValue = dokument.journalposter - dokument.journalposter.clear() - dokument.journalposter.addAll(journalpostIdSet) + dokument.journalposter = journalpostIdSet behandling.publishEndringsloggEvent( saksbehandlerident = SYSTEMBRUKER, @@ -532,7 +519,7 @@ class DokumentUnderArbeidService( val documentValidationResults = mutableListOf() val hovedDokument = smartDokumentUnderArbeidRepository.getReferenceById(dokumentId) - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + val vedlegg = getVedlegg(hovedDokument.id) documentValidationResults += validateSingleSmartdocument(hovedDokument) @@ -545,6 +532,10 @@ class DokumentUnderArbeidService( return documentValidationResults } + private fun getVedlegg(hoveddokumentId: UUID): List { + TODO() + } + private fun validateSingleSmartdocument(dokument: DokumentUnderArbeidAsSmartdokument): DocumentValidationResponse { logger.debug("Getting json document, dokumentId: {}", dokument.id) val documentJson = smartEditorApiGateway.getDocumentAsJson(dokument.smartEditorId) @@ -569,7 +560,7 @@ class DokumentUnderArbeidService( ): DokumentUnderArbeid { val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) - if (hovedDokument !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + if (hovedDokument !is DokumentUnderArbeidAsHoveddokument) { throw RuntimeException("document is not hoveddokument") } @@ -580,9 +571,9 @@ class DokumentUnderArbeidService( hovedDokument = hovedDokument, behandling = behandling, ) - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + val vedlegg = getVedlegg(hovedDokument.id) - if (hovedDokument is SmartdokumentUnderArbeid && hovedDokument.isStaleSmartEditorDokument()) { + if (hovedDokument is SmartdokumentUnderArbeidAsHoveddokument && hovedDokument.isStaleSmartEditorDokument()) { mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(hovedDokument) } vedlegg.forEach { @@ -636,7 +627,7 @@ class DokumentUnderArbeidService( hovedDokument: DokumentUnderArbeid, behandling: Behandling, ) { - if (hovedDokument !is DokumentUnderArbeidWithHoveddokumentCharacteristics) { + if (hovedDokument !is DokumentUnderArbeidAsHoveddokument) { throw DokumentValidationException("Kan ikke markere et vedlegg som ferdig") } @@ -722,7 +713,7 @@ class DokumentUnderArbeidService( behandlingService.getBehandling(dokument.behandlingId) val (content, title) = when (dokument) { - is OpplastetDokumentUnderArbeid -> { + is OpplastetDokumentUnderArbeidAsHoveddokument -> { mellomlagerService.getUploadedDocument(dokument.mellomlagerId!!) to dokument.name } @@ -843,7 +834,7 @@ class DokumentUnderArbeidService( val behandlingRole = behandling.getRoleInBehandling(innloggetIdent) - if (!(behandlingRole == BehandlingRole.KABAL_ROL && parentDocument.smartEditorTemplateId == Template.ROL_QUESTIONS.id)) { + if (!(behandlingRole == BehandlingRole.KABAL_ROL && (parentDocument is DokumentUnderArbeidAsSmartdokument && parentDocument.smartEditorTemplateId == Template.ROL_QUESTIONS.id))) { //Sjekker generell tilgang på behandlingsnivå: behandlingService.getBehandlingForUpdate( behandlingId = parentDocument.behandlingId, @@ -854,11 +845,10 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke koble til et dokument som er ferdigstilt") } - val descendants = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentId) + val descendants = getVedlegg(hoveddokumentId = dokumentId) - val dokumentIdSet = mutableSetOf() - dokumentIdSet += dokumentId - dokumentIdSet.addAll(descendants.map { it.id }) + val dokumentIdSet = mutableSetOf(dokumentId) + dokumentIdSet += descendants.map { it.id } val processedDokumentUnderArbeidOutput = dokumentIdSet.map { currentDokumentId -> setParentInDokumentUnderArbeidAndFindDuplicates(currentDokumentId, parentId) @@ -885,10 +875,13 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke koble et dokument som er ferdigstilt") } - return if (dokumentUnderArbeid.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { - if (dokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceAndIdNot( + return if (dokumentUnderArbeid is JournalfoertDokumentUnderArbeidAsVedlegg) { + if (journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceAndIdNot( parentId = parentId, - journalfoertDokumentReference = dokumentUnderArbeid.journalfoertDokumentReference!!, + journalfoertDokumentReference = no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference( + journalpostId = dokumentUnderArbeid.journalpostId, + dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, + ), id = currentDokumentId, ).isNotEmpty() ) { @@ -923,8 +916,12 @@ class DokumentUnderArbeidService( val savedDocument = when (vedlegg) { is OpplastetDokumentUnderArbeidAsVedlegg -> { - val new = opplastetDokumentUnderArbeidRepository.save( - OpplastetDokumentUnderArbeid( + //delete first so we can reuse the id + opplastetDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) + + opplastetDokumentUnderArbeidRepository.save( + OpplastetDokumentUnderArbeidAsHoveddokument( + id = vedlegg.id, size = vedlegg.size, dokumentType = DokumentType.BREV, //TODO default? UI fix? dokumentEnhetId = null, @@ -942,13 +939,15 @@ class DokumentUnderArbeidService( creatorRole = vedlegg.creatorRole, ) ) - opplastetDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) - new } is SmartdokumentUnderArbeidAsVedlegg -> { - val new = smartDokumentUnderArbeidRepository.save( - SmartdokumentUnderArbeid( + //delete first so we can reuse the id + smartDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) + + smartDokumentUnderArbeidRepository.save( + SmartdokumentUnderArbeidAsHoveddokument( + id = vedlegg.id, size = vedlegg.size, smartEditorId = vedlegg.smartEditorId, smartEditorTemplateId = vedlegg.smartEditorTemplateId, @@ -968,8 +967,6 @@ class DokumentUnderArbeidService( creatorRole = vedlegg.creatorRole, ) ) - smartDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) - new } else -> { diff --git a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt index b1d25bf51..92add0b04 100644 --- a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt @@ -78,7 +78,7 @@ internal class DokumentUnderArbeidControllerTest { every { innloggetSaksbehandlerService.getInnloggetIdent() } returns "IDENT" every { - dokumentUnderArbeidService.opprettOgMellomlagreNyttHoveddokument( + dokumentUnderArbeidService.createOpplastetDokumentUnderArbeid( any(), any(), any(), From 54f0a49b880e77dbd7d964106c7f107a4e247902 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 5 Oct 2023 09:51:05 +0200 Subject: [PATCH 13/35] WIP DokumenterUnderArbeid subclasses. --- .../dokument/api/mapper/DokumentMapper.kt | 11 +- .../DokumentUnderArbeidAsVedlegg.kt | 2 +- ...astetDokumentUnderArbeidAsHoveddokument.kt | 20 +++- .../OpplastetDokumentUnderArbeidAsVedlegg.kt | 21 +++- ...SmartdokumentUnderArbeidAsHoveddokument.kt | 22 +++- .../SmartdokumentUnderArbeidAsVedlegg.kt | 24 +++- ...entUnderArbeidAsHoveddokumentRepository.kt | 9 ++ .../DokumentUnderArbeidAsVedleggRepository.kt | 12 ++ ...ntUnderArbeidAsHoveddokumentRepository.kt} | 2 +- ...ntUnderArbeidAsHoveddokumentRepository.kt} | 4 +- ...tdokumentUnderArbeidAsVedleggRepository.kt | 2 + .../service/DokumentUnderArbeidService.kt | 104 ++++++++---------- .../kabaldocument/KabalDocumentGateway.kt | 7 +- .../kabaldocument/KabalDocumentMapper.kt | 6 +- .../BehandlingAvslutningService.kt | 4 +- 15 files changed, 172 insertions(+), 78 deletions(-) create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt rename src/main/kotlin/no/nav/klage/dokument/repositories/{OpplastetDokumentUnderArbeidRepository.kt => OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt} (70%) rename src/main/kotlin/no/nav/klage/dokument/repositories/{SmartdokumentUnderArbeidRepository.kt => SmartdokumentUnderArbeidAsHoveddokumentRepository.kt} (60%) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 0be933bd9..5e09799d2 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -8,6 +8,7 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRe import no.nav.klage.dokument.clients.kabalsmarteditorapi.model.response.DocumentOutput import no.nav.klage.dokument.domain.FysiskDokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentUnderArbeidAsVedlegg import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.Fagsystem import no.nav.klage.kodeverk.Tema @@ -42,7 +43,7 @@ class DokumentMapper( fun getSortedDokumentViewList(allDokumenterUnderArbeid: List): List { val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { - it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT + it !is JournalfoertDokumentUnderArbeidAsVedlegg } return dokumenterUnderArbeid.sortedByDescending { it.created } @@ -60,7 +61,7 @@ class DokumentMapper( hoveddokument: DokumentUnderArbeid, ): Pair, List> { val (dokumenterUnderArbeid, journalfoerteDokumenterUnderArbeid) = allDokumenterUnderArbeid.partition { - it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT + it !is JournalfoertDokumentUnderArbeidAsVedlegg } return dokumenterUnderArbeid.sortedByDescending { it.created } @@ -86,13 +87,13 @@ class DokumentMapper( mottakere: List = emptyList(), behandling: Behandling, ): InnholdsfortegnelseRequest.Document { - if (dokumentUnderArbeid.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { + if (dokumentUnderArbeid !is JournalfoertDokumentUnderArbeidAsVedlegg) { error("Document must be JOURNALFOERT") } val journalpost = - safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) + safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalpostId) val dokumentInDokarkiv = - journalpost.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.journalfoertDokumentReference.dokumentInfoId } + journalpost.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.dokumentInfoId } ?: throw RuntimeException("Document not found in Dokarkiv") return InnholdsfortegnelseRequest.Document( diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt index 475ef85be..04a21ad25 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt @@ -9,7 +9,7 @@ import java.util.* @Entity abstract class DokumentUnderArbeidAsVedlegg( @Column(name = "parent_id") - val parentId: UUID? = null, + var parentId: UUID? = null, //Common properties id: UUID = UUID.randomUUID(), diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt index 46f3e259a..fa9dae26d 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt @@ -47,4 +47,22 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( dokumentEnhetId = dokumentEnhetId, brevmottakerIdents = brevmottakerIdents, journalposter = journalposter, -) \ No newline at end of file +){ + fun asVedlegg(parentId: UUID): OpplastetDokumentUnderArbeidAsVedlegg { + return OpplastetDokumentUnderArbeidAsVedlegg( + size = size, + mellomlagerId = mellomlagerId, + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + parentId = parentId, + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt index b3aea1135..bcfa309fd 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt @@ -3,6 +3,7 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.Column import jakarta.persistence.DiscriminatorValue import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -40,4 +41,22 @@ class OpplastetDokumentUnderArbeidAsVedlegg( parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, -) \ No newline at end of file +){ + fun asHoveddokument(): OpplastetDokumentUnderArbeidAsHoveddokument { + return OpplastetDokumentUnderArbeidAsHoveddokument( + size = size, + mellomlagerId = mellomlagerId, + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + dokumentType = DokumentType.BREV, //TODO default? + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt index 83d3b5d3d..4d44a1da1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt @@ -51,4 +51,24 @@ class SmartdokumentUnderArbeidAsHoveddokument( dokumentEnhetId = dokumentEnhetId, brevmottakerIdents = brevmottakerIdents, journalposter = journalposter, -) +) { + fun asVedlegg(parentId: UUID): SmartdokumentUnderArbeidAsVedlegg { + return SmartdokumentUnderArbeidAsVedlegg( + size = size, + smartEditorId = smartEditorId, + smartEditorTemplateId = smartEditorTemplateId, + mellomlagerId = mellomlagerId, + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + parentId = parentId, + ) + } +} diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt index a28ff861e..4245e4ac1 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt @@ -3,6 +3,7 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.Column import jakarta.persistence.DiscriminatorValue import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -44,4 +45,25 @@ class SmartdokumentUnderArbeidAsVedlegg( parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, -) \ No newline at end of file +){ + fun asHoveddokument(): SmartdokumentUnderArbeidAsHoveddokument { + return SmartdokumentUnderArbeidAsHoveddokument( + size = size, + smartEditorId = smartEditorId, + smartEditorTemplateId = smartEditorTemplateId, + mellomlagerId = mellomlagerId, + id = id, + name = name, + behandlingId = behandlingId, + created = created, + modified = modified, + markertFerdig = markertFerdig, + markertFerdigBy = markertFerdigBy, + ferdigstilt = ferdigstilt, + creatorIdent = creatorIdent, + creatorRole = creatorRole, + dokumentType = DokumentType.BREV, //TODO default? + dokumentEnhetId = null, + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt new file mode 100644 index 000000000..75048f5a7 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt @@ -0,0 +1,9 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface DokumentUnderArbeidAsHoveddokumentRepository : JpaRepository \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt new file mode 100644 index 000000000..93d80f664 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt @@ -0,0 +1,12 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.transaction.annotation.Transactional +import java.util.* + +@Transactional +interface DokumentUnderArbeidAsVedleggRepository : JpaRepository { + + fun findByParentId(parentId: UUID): Set +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt similarity index 70% rename from src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt rename to src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt index 769a233c9..ddee2ecfe 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt @@ -6,4 +6,4 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface OpplastetDokumentUnderArbeidRepository : JpaRepository \ No newline at end of file +interface OpplastetDokumentUnderArbeidAsHoveddokumentRepository : JpaRepository \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt similarity index 60% rename from src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt rename to src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt index 4a2319b6a..5a4a5e558 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt @@ -6,9 +6,9 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface SmartdokumentUnderArbeidRepository : JpaRepository { +interface SmartdokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { - fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + fun findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt index 2ddb07039..282a83045 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt @@ -17,4 +17,6 @@ interface SmartdokumentUnderArbeidAsVedleggRepository : JpaRepository fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet + + fun findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 2eab12502..b81ea6a82 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -41,9 +41,11 @@ import java.util.* @Transactional class DokumentUnderArbeidService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val opplastetDokumentUnderArbeidRepository: OpplastetDokumentUnderArbeidRepository, + private val dokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository, + private val dokumentUnderArbeidAsVedleggRepository: DokumentUnderArbeidAsVedleggRepository, + private val opplastetDokumentUnderArbeidAsHoveddokumentRepository: OpplastetDokumentUnderArbeidAsHoveddokumentRepository, private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, - private val smartDokumentUnderArbeidRepository: SmartdokumentUnderArbeidRepository, + private val smartDokumentUnderArbeidAsHoveddokumentRepository: SmartdokumentUnderArbeidAsHoveddokumentRepository, private val smartDokumentUnderArbeidAsVedleggRepository: SmartdokumentUnderArbeidAsVedleggRepository, private val journalfoertDokumentUnderArbeidRepository: JournalfoertDokumentUnderArbeidAsVedleggRepository, private val attachmentValidator: MellomlagretDokumentValidatorService, @@ -94,7 +96,7 @@ class DokumentUnderArbeidService( val now = LocalDateTime.now() val document = if (parentId == null) { - opplastetDokumentUnderArbeidRepository.save( + opplastetDokumentUnderArbeidAsHoveddokumentRepository.save( OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = mellomlagerId, size = opplastetFil.content.size.toLong(), @@ -167,7 +169,7 @@ class DokumentUnderArbeidService( val now = LocalDateTime.now() val document = if (parentId == null) { - smartDokumentUnderArbeidRepository.save( + smartDokumentUnderArbeidAsHoveddokumentRepository.save( SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = null, size = null, @@ -518,7 +520,7 @@ class DokumentUnderArbeidService( ): List { val documentValidationResults = mutableListOf() - val hovedDokument = smartDokumentUnderArbeidRepository.getReferenceById(dokumentId) + val hovedDokument = smartDokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(dokumentId) val vedlegg = getVedlegg(hovedDokument.id) documentValidationResults += validateSingleSmartdocument(hovedDokument) @@ -892,7 +894,21 @@ class DokumentUnderArbeidService( dokumentUnderArbeid to null } } else { - dokumentUnderArbeid.parentId = parentId + when (dokumentUnderArbeid) { + is SmartdokumentUnderArbeidAsHoveddokument -> { + smartDokumentUnderArbeidAsHoveddokumentRepository.delete(dokumentUnderArbeid) + smartDokumentUnderArbeidAsVedleggRepository.save( + dokumentUnderArbeid.asVedlegg(parentId = parentId) + ) + } + + is OpplastetDokumentUnderArbeidAsHoveddokument -> { + opplastetDokumentUnderArbeidAsHoveddokumentRepository.delete(dokumentUnderArbeid) + opplastetDokumentUnderArbeidAsVedleggRepository.save( + dokumentUnderArbeid.asVedlegg(parentId = parentId) + ) + } + } dokumentUnderArbeid to null } } @@ -919,25 +935,8 @@ class DokumentUnderArbeidService( //delete first so we can reuse the id opplastetDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) - opplastetDokumentUnderArbeidRepository.save( - OpplastetDokumentUnderArbeidAsHoveddokument( - id = vedlegg.id, - size = vedlegg.size, - dokumentType = DokumentType.BREV, //TODO default? UI fix? - dokumentEnhetId = null, - brevmottakerIdents = setOf(), - journalposter = mutableSetOf(), - mellomlagerId = vedlegg.mellomlagerId, - name = vedlegg.name, - behandlingId = vedlegg.behandlingId, - created = vedlegg.created, - modified = vedlegg.modified, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, - creatorIdent = vedlegg.creatorIdent, - creatorRole = vedlegg.creatorRole, - ) + opplastetDokumentUnderArbeidAsHoveddokumentRepository.save( + vedlegg.asHoveddokument() ) } @@ -945,27 +944,8 @@ class DokumentUnderArbeidService( //delete first so we can reuse the id smartDokumentUnderArbeidAsVedleggRepository.delete(vedlegg) - smartDokumentUnderArbeidRepository.save( - SmartdokumentUnderArbeidAsHoveddokument( - id = vedlegg.id, - size = vedlegg.size, - smartEditorId = vedlegg.smartEditorId, - smartEditorTemplateId = vedlegg.smartEditorTemplateId, - dokumentType = DokumentType.BREV, //TODO default or UI fix? - dokumentEnhetId = null, - brevmottakerIdents = setOf(), - journalposter = mutableSetOf(), - mellomlagerId = vedlegg.mellomlagerId, - name = vedlegg.name, - behandlingId = vedlegg.behandlingId, - created = vedlegg.created, - modified = vedlegg.modified, - markertFerdig = null, - markertFerdigBy = null, - ferdigstilt = null, - creatorIdent = vedlegg.creatorIdent, - creatorRole = vedlegg.creatorRole, - ) + smartDokumentUnderArbeidAsHoveddokumentRepository.save( + vedlegg.asHoveddokument() ) } @@ -986,18 +966,24 @@ class DokumentUnderArbeidService( return dokumentUnderArbeidRepository.findByBehandlingIdAndFerdigstiltIsNullOrderByCreatedDesc(behandlingId) } - fun getSmartDokumenterUnderArbeid(behandlingId: UUID, ident: String): SortedSet { + fun getSmartDokumenterUnderArbeid(behandlingId: UUID, ident: String): SortedSet { //Sjekker tilgang på behandlingsnivå: behandlingService.getBehandling(behandlingId) - return smartDokumentUnderArbeidRepository.findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated( + val hoveddokumenter = + smartDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated( + behandlingId + ) + + val vedlegg = smartDokumentUnderArbeidAsVedleggRepository.findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated( behandlingId ) + return hoveddokumenter + vedlegg } fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeid { - val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) + val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) //Denne er alltid sann if (hovedDokument.dokumentEnhetId == null) { //Vi vet at smartEditor-dokumentene har en oppdatert snapshot i mellomlageret fordi det ble fikset i finnOgMarkerFerdigHovedDokument @@ -1014,8 +1000,8 @@ class DokumentUnderArbeidService( } fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeid { - val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) + val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) val documentInfoList = kabalDocumentGateway.fullfoerDokumentEnhet(dokumentEnhetId = hovedDokument.dokumentEnhetId!!) @@ -1040,9 +1026,9 @@ class DokumentUnderArbeidService( val now = LocalDateTime.now() hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) - if (hovedDokument.smartEditorId != null) { + if (hovedDokument is DokumentUnderArbeidAsSmartdokument) { try { - smartEditorApiGateway.deleteDocumentAsSystemUser(hovedDokument.smartEditorId!!) + smartEditorApiGateway.deleteDocumentAsSystemUser(hovedDokument.smartEditorId) } catch (e: Exception) { logger.warn("Couldn't delete hoveddokument from smartEditorApi", e) } @@ -1050,10 +1036,12 @@ class DokumentUnderArbeidService( vedlegg.forEach { it.ferdigstillHvisIkkeAlleredeFerdigstilt(now) - try { - smartEditorApiGateway.deleteDocumentAsSystemUser(it.smartEditorId!!) - } catch (e: Exception) { - logger.warn("Couldn't delete vedlegg from smartEditorApi", e) + if (it is DokumentUnderArbeidAsSmartdokument) { + try { + smartEditorApiGateway.deleteDocumentAsSystemUser(it.smartEditorId!!) + } catch (e: Exception) { + logger.warn("Couldn't delete vedlegg from smartEditorApi", e) + } } } diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt index 2154634e0..f6f72e6b5 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentGateway.kt @@ -1,6 +1,7 @@ package no.nav.klage.oppgave.clients.kabaldocument -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.oppgave.clients.kabaldocument.model.request.UpdateTitleInput import no.nav.klage.oppgave.clients.kabaldocument.model.response.BrevmottakerWithJoarkAndDokDistInfo @@ -24,8 +25,8 @@ class KabalDocumentGateway( fun createKomplettDokumentEnhet( behandling: Behandling, - hovedDokument: DokumentUnderArbeid, - vedlegg: SortedSet, + hovedDokument: DokumentUnderArbeidAsHoveddokument, + vedlegg: Set, innholdsfortegnelse: Innholdsfortegnelse?, ): UUID { return UUID.fromString( diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 06dbff3ee..16cbd5e93 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -1,6 +1,8 @@ package no.nav.klage.oppgave.clients.kabaldocument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType @@ -36,8 +38,8 @@ class KabalDocumentMapper( fun mapBehandlingToDokumentEnhetWithDokumentreferanser( behandling: Behandling, - hovedDokument: DokumentUnderArbeid, - vedlegg: SortedSet, + hovedDokument: DokumentUnderArbeidAsHoveddokument, + vedlegg: Set, innholdsfortegnelse: Innholdsfortegnelse?, ): DokumentEnhetWithDokumentreferanserInput { diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index 9a46c4bd2..2a68cc87a 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -3,7 +3,7 @@ package no.nav.klage.oppgave.service.distribusjon import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.kodeverk.* import no.nav.klage.oppgave.clients.klagefssproxy.KlageFssProxyClient @@ -174,7 +174,7 @@ class BehandlingAvslutningService( private fun getBehandlingDetaljer( behandling: Behandling, - hoveddokumenter: List + hoveddokumenter: List ): BehandlingDetaljer { return when (behandling.type) { Type.KLAGE -> { From 7093e2875e71b577c6dde1ac2d6c7778e1e3c795 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 5 Oct 2023 22:25:46 +0200 Subject: [PATCH 14/35] WIP DokumenterUnderArbeid subclasses. --- .../api/controller/SmartEditorController.kt | 2 +- .../dokument/api/mapper/DokumentMapper.kt | 51 ++++++++----------- .../DokumentUnderArbeid.kt | 27 ++++++++++ .../DokumentUnderArbeidAsHoveddokument.kt | 6 +-- .../DokumentUnderArbeidAsVedlegg.kt | 3 ++ ...ournalfoertDokumentUnderArbeidAsVedlegg.kt | 3 ++ ...astetDokumentUnderArbeidAsHoveddokument.kt | 3 +- .../OpplastetDokumentUnderArbeidAsVedlegg.kt | 4 +- ...SmartdokumentUnderArbeidAsHoveddokument.kt | 3 +- .../SmartdokumentUnderArbeidAsVedlegg.kt | 4 +- ...entUnderArbeidAsHoveddokumentRepository.kt | 5 +- .../service/DokumentUnderArbeidService.kt | 24 ++++++--- .../service/FerdigstillDokumentService.kt | 8 +-- .../service/InnholdsfortegnelseService.kt | 7 ++- .../oppgave/api/controller/AdminController.kt | 13 ----- .../kabaldocument/KabalDocumentMapper.kt | 37 ++++---------- .../nav/klage/oppgave/service/AdminService.kt | 32 +++--------- .../BehandlingAvslutningService.kt | 4 +- 18 files changed, 115 insertions(+), 121 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/SmartEditorController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/SmartEditorController.kt index 33968b935..8b9de7fa4 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/SmartEditorController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/SmartEditorController.kt @@ -77,7 +77,7 @@ class SmartEditorController( behandlingId = behandlingId, dokumentType = if (body.dokumentTypeId != null) DokumentType.of(body.dokumentTypeId) else DokumentType.VEDTAK, json = body.content.toString(), - smartEditorTemplateId = body.templateId, + smartEditorTemplateId = body.templateId ?: error("TODO. Can be null?"), innloggetIdent = innloggetSaksbehandlerService.getInnloggetIdent(), tittel = body.tittel ?: DokumentType.VEDTAK.defaultFilnavn, parentId = body.parentId, diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 5e09799d2..0796b5e75 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -8,6 +8,8 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRe import no.nav.klage.dokument.clients.kabalsmarteditorapi.model.response.DocumentOutput import no.nav.klage.dokument.domain.FysiskDokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsSmartdokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentUnderArbeidAsVedlegg import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.Fagsystem @@ -123,43 +125,30 @@ class DokumentMapper( } fun mapToDokumentView(dokumentUnderArbeid: DokumentUnderArbeid): DokumentView { - val type = dokumentUnderArbeid.getType() - var journalfoertDokumentReference: DokumentView.JournalfoertDokumentReference? = null - val dokumentInDokarkiv = if (type == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT) { - val journalpostInDokarkiv = - safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalfoertDokumentReference!!.journalpostId) - val dokumentInDokarkiv = - journalpostInDokarkiv.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.journalfoertDokumentReference.dokumentInfoId } - ?: throw RuntimeException("Document not found in Dokarkiv") - - journalfoertDokumentReference = - DokumentView.JournalfoertDokumentReference( - journalpostId = journalpostInDokarkiv.journalpostId, - dokumentInfoId = dokumentInDokarkiv.dokumentInfoId, - harTilgangTilArkivvariant = harTilgangTilArkivvariant(dokumentInDokarkiv), - datoOpprettet = journalpostInDokarkiv.datoOpprettet, - ) - dokumentInDokarkiv - } else null - - val tittel = if (dokumentInDokarkiv != null) { - (dokumentInDokarkiv.tittel ?: "Tittel ikke funnet i SAF") - } else dokumentUnderArbeid.name + if (dokumentUnderArbeid is JournalfoertDokumentUnderArbeidAsVedlegg) { + journalfoertDokumentReference = DokumentView.JournalfoertDokumentReference( + journalpostId = dokumentUnderArbeid.journalpostId, + dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, + //TODO? + harTilgangTilArkivvariant = true, + datoOpprettet = dokumentUnderArbeid.opprettet, + ) + } return DokumentView( id = dokumentUnderArbeid.id, - tittel = tittel, + tittel = dokumentUnderArbeid.name, dokumentTypeId = dokumentUnderArbeid.dokumentType?.id, created = dokumentUnderArbeid.created, modified = dokumentUnderArbeid.modified, - isSmartDokument = dokumentUnderArbeid.smartEditorId != null, - templateId = dokumentUnderArbeid.smartEditorTemplateId, + isSmartDokument = dokumentUnderArbeid is DokumentUnderArbeidAsSmartdokument, + templateId = if (dokumentUnderArbeid is DokumentUnderArbeidAsSmartdokument) dokumentUnderArbeid.smartEditorTemplateId else null, isMarkertAvsluttet = dokumentUnderArbeid.markertFerdig != null, - parent = dokumentUnderArbeid.parentId, - parentId = dokumentUnderArbeid.parentId, - type = type, + parent = if (dokumentUnderArbeid is DokumentUnderArbeidAsVedlegg) dokumentUnderArbeid.parentId else null, + parentId = if (dokumentUnderArbeid is DokumentUnderArbeidAsVedlegg) dokumentUnderArbeid.parentId else null, + type = dokumentUnderArbeid.getType(), journalfoertDokumentReference = journalfoertDokumentReference, creatorIdent = dokumentUnderArbeid.creatorIdent, creatorRole = dokumentUnderArbeid.creatorRole, @@ -201,9 +190,9 @@ class DokumentMapper( id = dokumentUnderArbeid.id, tittel = dokumentUnderArbeid.name, dokumentTypeId = dokumentUnderArbeid.dokumentType!!.id, - templateId = dokumentUnderArbeid.smartEditorTemplateId, - parent = dokumentUnderArbeid.parentId, - parentId = dokumentUnderArbeid.parentId, + templateId = if (dokumentUnderArbeid is DokumentUnderArbeidAsSmartdokument) dokumentUnderArbeid.smartEditorTemplateId else null, + parent = if (dokumentUnderArbeid is DokumentUnderArbeidAsVedlegg) dokumentUnderArbeid.parentId else null, + parentId = if (dokumentUnderArbeid is DokumentUnderArbeidAsVedlegg) dokumentUnderArbeid.parentId else null, content = jacksonObjectMapper().readTree(smartEditorDocument.json), created = smartEditorDocument.created, modified = smartEditorDocument.modified, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index dd0c1c87a..a63218d46 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -1,6 +1,8 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.* +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.kodeverk.DokumentTypeConverter import no.nav.klage.oppgave.domain.klage.BehandlingRole import org.hibernate.annotations.DynamicUpdate import java.time.LocalDateTime @@ -14,6 +16,9 @@ import java.util.* abstract class DokumentUnderArbeid( @Id val id: UUID = UUID.randomUUID(), + @Column(name = "dokument_type_id") + @Convert(converter = DokumentTypeConverter::class) + var dokumentType: DokumentType?, @Column(name = "name") open var name: String, @Column(name = "behandling_id") @@ -85,4 +90,26 @@ abstract class DokumentUnderArbeid( SMART, JOURNALFOERT } + + fun getType(): DokumentUnderArbeidType { + return when (this) { + is DokumentUnderArbeidAsSmartdokument -> { + DokumentUnderArbeidType.SMART + } + + is JournalfoertDokumentUnderArbeidAsVedlegg -> { + DokumentUnderArbeidType.JOURNALFOERT + } + + is OpplastetDokumentUnderArbeidAsVedlegg -> { + DokumentUnderArbeidType.UPLOADED + } + + is OpplastetDokumentUnderArbeidAsHoveddokument -> { + DokumentUnderArbeidType.UPLOADED + } + + else -> error("unknown type: ${this::class.java.name}") + } + } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt index c8744968f..79b376448 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt @@ -2,7 +2,6 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.* import no.nav.klage.kodeverk.DokumentType -import no.nav.klage.kodeverk.DokumentTypeConverter import no.nav.klage.oppgave.domain.klage.BehandlingRole import org.hibernate.annotations.BatchSize import org.hibernate.annotations.Fetch @@ -12,9 +11,6 @@ import java.util.* @Entity abstract class DokumentUnderArbeidAsHoveddokument( - @Column(name = "dokument_type_id") - @Convert(converter = DokumentTypeConverter::class) - var dokumentType: DokumentType, @Column(name = "dokument_enhet_id") var dokumentEnhetId: UUID? = null, @ElementCollection @@ -42,6 +38,7 @@ abstract class DokumentUnderArbeidAsHoveddokument( ferdigstilt: LocalDateTime?, creatorIdent: String, creatorRole: BehandlingRole, + dokumentType: DokumentType?, ) : DokumentUnderArbeid( id = id, @@ -54,4 +51,5 @@ abstract class DokumentUnderArbeidAsHoveddokument( ferdigstilt = ferdigstilt, creatorIdent = creatorIdent, creatorRole = creatorRole, + dokumentType = dokumentType, ) diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt index 04a21ad25..7edcd1e73 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsVedlegg.kt @@ -2,6 +2,7 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.Column import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -22,6 +23,7 @@ abstract class DokumentUnderArbeidAsVedlegg( ferdigstilt: LocalDateTime?, creatorIdent: String, creatorRole: BehandlingRole, + dokumentType: DokumentType?, ) : DokumentUnderArbeid( id = id, name = name, @@ -33,4 +35,5 @@ abstract class DokumentUnderArbeidAsVedlegg( ferdigstilt = ferdigstilt, creatorIdent = creatorIdent, creatorRole = creatorRole, + dokumentType = dokumentType, ) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt index 7d8d409d7..9c955b52e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/JournalfoertDokumentUnderArbeidAsVedlegg.kt @@ -3,6 +3,7 @@ package no.nav.klage.dokument.domain.dokumenterunderarbeid import jakarta.persistence.Column import jakarta.persistence.DiscriminatorValue import jakarta.persistence.Entity +import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.domain.klage.BehandlingRole import java.time.LocalDateTime import java.util.* @@ -29,6 +30,7 @@ class JournalfoertDokumentUnderArbeidAsVedlegg ( parentId: UUID?, creatorIdent: String, creatorRole: BehandlingRole, + dokumentType: DokumentType?, ) : DokumentUnderArbeidAsVedlegg( id = id, name = name, @@ -41,4 +43,5 @@ class JournalfoertDokumentUnderArbeidAsVedlegg ( parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, + dokumentType = dokumentType, ) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt index fa9dae26d..5afd83ec9 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt @@ -28,7 +28,7 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( ferdigstilt: LocalDateTime? = null, creatorIdent: String, creatorRole: BehandlingRole, - dokumentType: DokumentType, + dokumentType: DokumentType?, dokumentEnhetId: UUID? = null, brevmottakerIdents: Set = emptySet(), journalposter: Set = emptySet(), @@ -63,6 +63,7 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( creatorIdent = creatorIdent, creatorRole = creatorRole, parentId = parentId, + dokumentType = dokumentType, ) } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt index bcfa309fd..98d2c16cd 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt @@ -29,6 +29,7 @@ class OpplastetDokumentUnderArbeidAsVedlegg( parentId: UUID, creatorIdent: String, creatorRole: BehandlingRole, + dokumentType: DokumentType?, ) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsVedlegg( id = id, name = name, @@ -41,6 +42,7 @@ class OpplastetDokumentUnderArbeidAsVedlegg( parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, + dokumentType = dokumentType, ){ fun asHoveddokument(): OpplastetDokumentUnderArbeidAsHoveddokument { return OpplastetDokumentUnderArbeidAsHoveddokument( @@ -56,7 +58,7 @@ class OpplastetDokumentUnderArbeidAsVedlegg( ferdigstilt = ferdigstilt, creatorIdent = creatorIdent, creatorRole = creatorRole, - dokumentType = DokumentType.BREV, //TODO default? + dokumentType = dokumentType, ) } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt index 4d44a1da1..d3d4d2848 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt @@ -32,7 +32,7 @@ class SmartdokumentUnderArbeidAsHoveddokument( ferdigstilt: LocalDateTime? = null, creatorIdent: String, creatorRole: BehandlingRole, - dokumentType: DokumentType, + dokumentType: DokumentType?, dokumentEnhetId: UUID? = null, brevmottakerIdents: Set = emptySet(), journalposter: Set = emptySet(), @@ -69,6 +69,7 @@ class SmartdokumentUnderArbeidAsHoveddokument( creatorIdent = creatorIdent, creatorRole = creatorRole, parentId = parentId, + dokumentType = dokumentType, ) } } diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt index 4245e4ac1..a584b4700 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt @@ -33,6 +33,7 @@ class SmartdokumentUnderArbeidAsVedlegg( parentId: UUID, creatorIdent: String, creatorRole: BehandlingRole, + dokumentType: DokumentType?, ) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsVedlegg( id = id, name = name, @@ -45,6 +46,7 @@ class SmartdokumentUnderArbeidAsVedlegg( parentId = parentId, creatorIdent = creatorIdent, creatorRole = creatorRole, + dokumentType = dokumentType, ){ fun asHoveddokument(): SmartdokumentUnderArbeidAsHoveddokument { return SmartdokumentUnderArbeidAsHoveddokument( @@ -62,7 +64,7 @@ class SmartdokumentUnderArbeidAsVedlegg( ferdigstilt = ferdigstilt, creatorIdent = creatorIdent, creatorRole = creatorRole, - dokumentType = DokumentType.BREV, //TODO default? + dokumentType = dokumentType, dokumentEnhetId = null, ) } diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt index 75048f5a7..b84ef295b 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt @@ -6,4 +6,7 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface DokumentUnderArbeidAsHoveddokumentRepository : JpaRepository \ No newline at end of file +interface DokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { + + fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId(behandlingId: UUID): List +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index b81ea6a82..f7cab5833 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -121,6 +121,7 @@ class DokumentUnderArbeidService( parentId = parentId, created = now, modified = now, + dokumentType = dokumentType, ) ) } @@ -198,6 +199,7 @@ class DokumentUnderArbeidService( parentId = parentId, created = now, modified = now, + dokumentType = dokumentType, ) ) } @@ -278,6 +280,7 @@ class DokumentUnderArbeidService( markertFerdig = null, markertFerdigBy = null, ferdigstilt = null, + dokumentType = null, ) behandling.publishEndringsloggEvent( @@ -356,8 +359,8 @@ class DokumentUnderArbeidService( behandling.publishEndringsloggEvent( saksbehandlerident = innloggetIdent, felt = Felt.DOKUMENT_UNDER_ARBEID_TYPE, - fraVerdi = previousValue.id, - tilVerdi = dokumentUnderArbeid.modified.toString(), + fraVerdi = previousValue?.id, + tilVerdi = dokumentUnderArbeid.dokumentType.toString(), tidspunkt = dokumentUnderArbeid.modified, dokumentId = dokumentUnderArbeid.id, ) @@ -589,7 +592,7 @@ class DokumentUnderArbeidService( val mapBrevmottakerIdentToBrevmottakerInput = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( behandling = behandling, brevmottakerIdents = brevmottakerIdents, - dokumentType = hovedDokument.dokumentType + dokumentType = hovedDokument.dokumentType!! ) hovedDokument.brevmottakerIdents = mapBrevmottakerIdentToBrevmottakerInput.map { it.partId.value @@ -654,7 +657,7 @@ class DokumentUnderArbeidService( val mottakere = kabalDocumentMapper.mapBrevmottakerIdentToBrevmottakerInput( behandling = behandling, brevmottakerIdents = brevmottakerIdents, - dokumentType = hovedDokument.dokumentType + dokumentType = hovedDokument.dokumentType!! ) //Could ignore NOTAT here. We'll see. @@ -966,7 +969,7 @@ class DokumentUnderArbeidService( return dokumentUnderArbeidRepository.findByBehandlingIdAndFerdigstiltIsNullOrderByCreatedDesc(behandlingId) } - fun getSmartDokumenterUnderArbeid(behandlingId: UUID, ident: String): SortedSet { + fun getSmartDokumenterUnderArbeid(behandlingId: UUID, ident: String): List { //Sjekker tilgang på behandlingsnivå: behandlingService.getBehandling(behandlingId) @@ -978,10 +981,15 @@ class DokumentUnderArbeidService( val vedlegg = smartDokumentUnderArbeidAsVedleggRepository.findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated( behandlingId ) - return hoveddokumenter + vedlegg + + val duaList = mutableListOf() + duaList += hoveddokumenter + duaList += vedlegg + + return duaList.sortedBy { it.created } } - fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeid { + fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) //Denne er alltid sann @@ -999,7 +1007,7 @@ class DokumentUnderArbeidService( return hovedDokument } - fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeid { + fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt index 51e4c0be2..fd080075a 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt @@ -1,7 +1,7 @@ package no.nav.klage.dokument.service import net.javacrumbs.shedlock.spring.annotation.SchedulerLock -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.oppgave.domain.events.DokumentFerdigstiltAvSaksbehandler import no.nav.klage.oppgave.domain.kafka.Event @@ -33,7 +33,7 @@ class FerdigstillDokumentService( val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() for (it in hovedDokumenterIkkeFerdigstilte) { - ferdigstill(it) + ferdigstill(it as DokumentUnderArbeidAsHoveddokument) } } @@ -42,11 +42,11 @@ class FerdigstillDokumentService( @SchedulerLock(name = "ferdigstillDokumenter") fun listenToFerdigstilteDokumenterAvSaksbehandler(dokumentFerdigstiltAvSaksbehandler: DokumentFerdigstiltAvSaksbehandler) { logger.debug("listenToFerdigstilteDokumenterAvSaksbehandler called") - val dua = Hibernate.unproxy(dokumentFerdigstiltAvSaksbehandler.dokumentUnderArbeid) as DokumentUnderArbeid + val dua = Hibernate.unproxy(dokumentFerdigstiltAvSaksbehandler.dokumentUnderArbeid) as DokumentUnderArbeidAsHoveddokument ferdigstill(dua) } - private fun ferdigstill(it: DokumentUnderArbeid) { + private fun ferdigstill(it: DokumentUnderArbeidAsHoveddokument) { var updatedDokument = it try { if (updatedDokument.dokumentEnhetId == null) { diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 100053e62..0976d5e28 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -3,7 +3,9 @@ package no.nav.klage.dokument.service import no.nav.klage.dokument.api.mapper.DokumentMapper import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse +import no.nav.klage.dokument.repositories.DokumentUnderArbeidAsVedleggRepository import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.oppgave.service.BehandlingService @@ -17,6 +19,7 @@ import java.util.* @Transactional class InnholdsfortegnelseService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val dokumentUnderArbeidAsVedleggRepository: DokumentUnderArbeidAsVedleggRepository, private val dokumentMapper: DokumentMapper, private val mellomlagerService: MellomlagerService, private val kabalJsonToPdfClient: KabalJsonToPdfClient, @@ -59,11 +62,11 @@ class InnholdsfortegnelseService( val document = dokumentUnderArbeidRepository.getReferenceById(dokumentUnderArbeidId) - if (document.parentId != null) { + if (document !is DokumentUnderArbeidAsVedlegg) { throw IllegalArgumentException("must be hoveddokument") } - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentUnderArbeidId) + val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(dokumentUnderArbeidId) val (dokumenterUnderArbeid, journalfoerteDokumenter) = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid = vedlegg.toList(), diff --git a/src/main/kotlin/no/nav/klage/oppgave/api/controller/AdminController.kt b/src/main/kotlin/no/nav/klage/oppgave/api/controller/AdminController.kt index e1a6e8354..aa11fd833 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/api/controller/AdminController.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/api/controller/AdminController.kt @@ -92,19 +92,6 @@ class AdminController( } } - @PostMapping("/internal/migratetables") - fun migrateTablesInSmartdocuments() { - logger.debug("migrateTablesInSmartdocuments is called") - krevAdminTilgang() - - try { - adminService.migrateTablesInSmartdocuments() - } catch (e: Exception) { - logger.warn("Failed to migrateTablesInSmartdocuments", e) - throw e - } - } - @GetMapping("/internal/invalidregistreringshjemler") fun getInvalidRegistreringshjemler() { logger.debug("getInvalidRegistreringshjemler is called") diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index 16cbd5e93..b5bc2e328 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -1,9 +1,6 @@ package no.nav.klage.oppgave.clients.kabaldocument -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg -import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse +import no.nav.klage.dokument.domain.dokumenterunderarbeid.* import no.nav.klage.kodeverk.DokumentType import no.nav.klage.kodeverk.PartIdType import no.nav.klage.oppgave.clients.ereg.EregClient @@ -16,7 +13,6 @@ import no.nav.klage.oppgave.util.getLogger import no.nav.klage.oppgave.util.getPartIdFromIdentifikator import no.nav.klage.oppgave.util.getSecureLogger import org.springframework.stereotype.Service -import java.util.* @Service class KabalDocumentMapper( @@ -50,7 +46,7 @@ class KabalDocumentMapper( ) } else null - val vedleggMapped = vedlegg.filter { it.getType() != DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } + val vedleggMapped = vedlegg.filter { it !is JournalfoertDokumentUnderArbeidAsVedlegg } .sortedByDescending { it.created } .map { currentVedlegg -> mapDokumentUnderArbeidToDokumentReferanse( @@ -62,29 +58,15 @@ class KabalDocumentMapper( } val journalfoerteVedlegg = - vedlegg.filter { it.getType() == DokumentUnderArbeid.DokumentUnderArbeidType.JOURNALFOERT } + vedlegg.filterIsInstance() .sortedWith { document1, document2 -> - val journalpostInDokarkiv1 = - safClient.getJournalpostAsSystembruker(document1.journalfoertDokumentReference!!.journalpostId) - - val journalpostInDokarkiv2 = - safClient.getJournalpostAsSystembruker(document2.journalfoertDokumentReference!!.journalpostId) - - val dokumentInDokarkiv1 = - journalpostInDokarkiv1.dokumenter?.find { it.dokumentInfoId == document1.journalfoertDokumentReference.dokumentInfoId } - ?: throw RuntimeException("Document not found in Dokarkiv") - - val dokumentInDokarkiv2 = - journalpostInDokarkiv2.dokumenter?.find { it.dokumentInfoId == document2.journalfoertDokumentReference.dokumentInfoId } - ?: throw RuntimeException("Document not found in Dokarkiv") - val dateCompare = - journalpostInDokarkiv2.datoOpprettet.compareTo(journalpostInDokarkiv1.datoOpprettet) + document2.opprettet.compareTo(document1.opprettet) if (dateCompare != 0) { dateCompare } else { - (dokumentInDokarkiv1.tittel ?: "Tittel ikke funnet i SAF").compareTo( - dokumentInDokarkiv2.tittel ?: "Tittel ikke funnet i SAF" + (document1.name).compareTo( + document2.name ) } } @@ -120,8 +102,8 @@ class KabalDocumentMapper( journalfoerteVedlegg = journalfoerteVedlegg .map { currentVedlegg -> DokumentEnhetWithDokumentreferanserInput.DokumentInput.JournalfoertDokument( - kildeJournalpostId = currentVedlegg.journalfoertDokumentReference!!.journalpostId, - dokumentInfoId = currentVedlegg.journalfoertDokumentReference.dokumentInfoId, + kildeJournalpostId = currentVedlegg.journalpostId, + dokumentInfoId = currentVedlegg.dokumentInfoId, ) }, ), @@ -131,6 +113,9 @@ class KabalDocumentMapper( } private fun mapDokumentUnderArbeidToDokumentReferanse(dokument: DokumentUnderArbeid): DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument { + if (dokument !is DokumentUnderArbeidAsMellomlagret) { + error("Must be mellomlagret document") + } return DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( mellomlagerId = dokument.mellomlagerId!!, name = dokument.name, diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt index 5b5f02333..ac6092894 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/AdminService.kt @@ -6,6 +6,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import no.nav.klage.dokument.clients.kabalsmarteditorapi.KabalSmartEditorApiClient import no.nav.klage.dokument.clients.klagefileapi.FileApiClient +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsMellomlagret import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.service.InnholdsfortegnelseService import no.nav.klage.kodeverk.Type @@ -89,13 +91,15 @@ class AdminService( for (dua in dokumenterUnderArbeid) { try { - fileApiClient.deleteDocument(id = dua.mellomlagerId!!, systemUser = true) + if (dua is DokumentUnderArbeidAsMellomlagret && dua.mellomlagerId != null) { + fileApiClient.deleteDocument(id = dua.mellomlagerId!!, systemUser = true) + } } catch (e: Exception) { logger.warn("Delete test data in dev: Could not delete from file api") } try { - if (dua.parentId == null) { + if (dua is DokumentUnderArbeidAsHoveddokument) { innholdsfortegnelseService.deleteInnholdsfortegnelse(dua.id) } } catch (e: Exception) { @@ -230,30 +234,6 @@ class AdminService( } } - fun migrateTablesInSmartdocuments() { - val documents = - dokumentUnderArbeidRepository.findByMarkertFerdigIsNullAndSmartEditorIdNotNull() - - secureLogger.debug("found ${documents.size} dokumenterUnderArbeid") - - val candidates = documents.map { - kabalSmartEditorApiClient.getDocument(it.smartEditorId!!) - }.filter { smartDocument -> - smartDocument.json?.contains("table") ?: false - } - - secureLogger.debug("found ${candidates.size} candidates for migration of table") - - candidates.forEach { smartDocument -> - kabalSmartEditorApiClient.updateDocument( - smartDocument.id, migrateTables( - fromJsonString = smartDocument.json, - secureLogger = secureLogger - ) - ) - } - } - fun logInvalidRegistreringshjemler() { val unfinishedBehandlinger = behandlingRepository.findByAvsluttetAvSaksbehandlerIsNull() val ytelseAndHjemmelPairSet = unfinishedBehandlinger.map { it.ytelse to it.registreringshjemler }.toSet() diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index 2a68cc87a..3bb5caeb6 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.repositories.DokumentUnderArbeidAsHoveddokumentRepository import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.kodeverk.* import no.nav.klage.oppgave.clients.klagefssproxy.KlageFssProxyClient @@ -34,6 +35,7 @@ class BehandlingAvslutningService( private val behandlingService: BehandlingService, private val applicationEventPublisher: ApplicationEventPublisher, private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val dokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository, private val ankeITrygderettenbehandlingService: AnkeITrygderettenbehandlingService, private val ankebehandlingService: AnkebehandlingService, private val fssProxyClient: KlageFssProxyClient, @@ -102,7 +104,7 @@ class BehandlingAvslutningService( createNewAnkebehandlingFromAnkeITrygderettenbehandling(ankeITrygderettenbehandling) } else { val hoveddokumenter = - dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId( + dokumentUnderArbeidAsHoveddokumentRepository.findByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( behandlingId ).filter { it.dokumentType in listOf( From 49d33440024462947505abda251edb8bd0d78695 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Fri, 6 Oct 2023 09:17:11 +0200 Subject: [PATCH 15/35] WIP DokumenterUnderArbeid subclasses. Everything compiles, and a couple of easy tests run. --- .../DokumentUnderArbeidRepository.kt | 4 +- ...tDokumentUnderArbeidAsVedleggRepository.kt | 5 +-- .../service/DokumentUnderArbeidService.kt | 10 ++--- .../service/FerdigstillDokumentService.kt | 5 ++- .../BehandlingAvslutningService.kt | 5 ++- .../DokumentUnderArbeidControllerTest.kt | 17 ++------ .../DokumentUnderArbeidRepositoryTest.kt | 39 ++++++++++--------- .../oppgave/service/BehandlingServiceTest.kt | 11 ++---- 8 files changed, 41 insertions(+), 55 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt index 59e969e77..7381c12e3 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt @@ -16,8 +16,6 @@ interface DokumentUnderArbeidRepository : JpaRepository - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List - - fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet +// fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt index 0402e0357..698db63be 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt @@ -1,6 +1,5 @@ package no.nav.klage.dokument.repositories -import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference import no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentUnderArbeidAsVedlegg import org.springframework.data.jpa.repository.JpaRepository import org.springframework.transaction.annotation.Transactional @@ -9,9 +8,9 @@ import java.util.* @Transactional interface JournalfoertDokumentUnderArbeidAsVedleggRepository : JpaRepository { - fun findByParentIdAndJournalfoertDokumentReferenceIsNotNull(dokumentId: UUID): Set + fun findByParentId(dokumentId: UUID): Set - fun findByParentIdAndJournalfoertDokumentReferenceAndIdNot(parentId: UUID, journalfoertDokumentReference: JournalfoertDokumentReference, id: UUID): List + fun findByParentIdAndJournalpostIdNotAndDokumentInfoIdNotAndIdNot(parentId: UUID, journalpostId: String, dokumentInfoId: String, id: UUID): List fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index f7cab5833..33701ba37 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -243,7 +243,7 @@ class DokumentUnderArbeidService( } val alreadyAddedDocuments = - journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceIsNotNull(parentId) + journalfoertDokumentUnderArbeidRepository.findByParentId(parentId) .map { JournalfoertDokumentReference( journalpostId = it.journalpostId, @@ -881,12 +881,10 @@ class DokumentUnderArbeidService( } return if (dokumentUnderArbeid is JournalfoertDokumentUnderArbeidAsVedlegg) { - if (journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalfoertDokumentReferenceAndIdNot( + if (journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalpostIdNotAndDokumentInfoIdNotAndIdNot( parentId = parentId, - journalfoertDokumentReference = no.nav.klage.dokument.domain.dokumenterunderarbeid.JournalfoertDokumentReference( - journalpostId = dokumentUnderArbeid.journalpostId, - dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, - ), + journalpostId = dokumentUnderArbeid.journalpostId, + dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, id = currentDokumentId, ).isNotEmpty() ) { diff --git a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt index fd080075a..39267e0ff 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt @@ -30,8 +30,9 @@ class FerdigstillDokumentService( @Scheduled(fixedDelayString = "\${FERDIGSTILLE_DOKUMENTER_DELAY_MILLIS}", initialDelay = 45000) @SchedulerLock(name = "ferdigstillDokumenter") fun ferdigstillHovedDokumenter() { - val hovedDokumenterIkkeFerdigstilte = - dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() + val hovedDokumenterIkkeFerdigstilte = emptyList() + //TODO FIXME +// dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() for (it in hovedDokumenterIkkeFerdigstilte) { ferdigstill(it as DokumentUnderArbeidAsHoveddokument) } diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index 3bb5caeb6..7f2db6c1d 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -54,8 +54,9 @@ class BehandlingAvslutningService( @Transactional fun avsluttBehandling(behandlingId: UUID) { try { - val hovedDokumenterIkkeFerdigstilte = - dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() + val hovedDokumenterIkkeFerdigstilte = emptyList() + //TODO FIXME +// dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() if (hovedDokumenterIkkeFerdigstilte.isNotEmpty()) { logger.warn( "Kunne ikke avslutte behandling {} fordi noen dokumenter mangler ferdigstilling. Prøver på nytt senere.", diff --git a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt index 92add0b04..e94f185d1 100644 --- a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt @@ -12,7 +12,8 @@ import no.nav.klage.dokument.api.view.SmartEditorDocumentView import no.nav.klage.dokument.api.view.SmartHovedDokumentInput import no.nav.klage.dokument.clients.kabalsmarteditorapi.KabalSmartEditorApiClient import no.nav.klage.dokument.clients.kabalsmarteditorapi.model.response.DocumentOutput -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.service.DokumentUnderArbeidService import no.nav.klage.kodeverk.DokumentType @@ -86,28 +87,21 @@ internal class DokumentUnderArbeidControllerTest { any(), any(), ) - } returns DokumentUnderArbeid( + } returns OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = "mellomlagerId", - opplastet = LocalDateTime.now(), size = 1001, name = "vedtak.pdf", behandlingId = behandlingId, - smartEditorId = null, - smartEditorTemplateId = null, dokumentType = DokumentType.BREV, markertFerdig = null, ferdigstilt = null, created = LocalDateTime.now(), modified = LocalDateTime.now(), - dokumentEnhetId = null, - parentId = null, id = UUID.randomUUID(), - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = BehandlingRole.KABAL_SAKSBEHANDLING, ) - val file = MockMultipartFile("file", "file-name.pdf", "application/pdf", "whatever".toByteArray()) @@ -158,9 +152,8 @@ internal class DokumentUnderArbeidControllerTest { any(), any(), ) - } returns DokumentUnderArbeid( + } returns SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = "mellomlagerId", - opplastet = LocalDateTime.now(), size = 1001, name = "vedtak.pdf", behandlingId = behandlingId, @@ -172,9 +165,7 @@ internal class DokumentUnderArbeidControllerTest { created = LocalDateTime.now(), modified = LocalDateTime.now(), dokumentEnhetId = null, - parentId = null, id = UUID.randomUUID(), - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = BehandlingRole.KABAL_SAKSBEHANDLING, ) diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index bdb352cd0..4223f92d1 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -1,6 +1,7 @@ package no.nav.klage.dokument.repositories -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsVedlegg import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.db.TestPostgresqlContainer import no.nav.klage.oppgave.domain.klage.BehandlingRole.KABAL_SAKSBEHANDLING @@ -34,22 +35,26 @@ class DokumentUnderArbeidRepositoryTest { @Autowired lateinit var dokumentUnderArbeidRepository: DokumentUnderArbeidRepository + @Autowired + lateinit var opplastetDokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository + + @Autowired + lateinit var opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository + @Test fun `persist hoveddokument works`() { val behandlingId = UUID.randomUUID() - val hovedDokument = DokumentUnderArbeid( + val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = KABAL_SAKSBEHANDLING, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), ) hovedDokument.markerFerdigHvisIkkeAlleredeMarkertFerdig(LocalDateTime.now(), "S123456") hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(LocalDateTime.now()) @@ -67,18 +72,16 @@ class DokumentUnderArbeidRepositoryTest { fun `hoveddokument can have vedlegg`() { val behandlingId = UUID.randomUUID() - val hovedDokument = DokumentUnderArbeid( + val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = KABAL_SAKSBEHANDLING, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), ) dokumentUnderArbeidRepository.save(hovedDokument) @@ -86,29 +89,27 @@ class DokumentUnderArbeidRepositoryTest { testEntityManager.clear() dokumentUnderArbeidRepository.save( - DokumentUnderArbeid( + OpplastetDokumentUnderArbeidAsVedlegg( mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, parentId = hovedDokument.id, - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = KABAL_SAKSBEHANDLING, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), ) ) testEntityManager.flush() testEntityManager.clear() - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id) + val vedlegg = opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(hovedDokument.id) assertThat(vedlegg).hasSize(1) } - +/* @Test fun `vedlegg can be unlinked`() { @@ -291,5 +292,5 @@ class DokumentUnderArbeidRepositoryTest { vedlegg2, ) } - +*/ } \ No newline at end of file diff --git a/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt index 58398bf5c..f1f1f40e6 100644 --- a/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt @@ -3,7 +3,7 @@ package no.nav.klage.oppgave.service import com.ninjasquad.springmockk.MockkBean import com.ninjasquad.springmockk.SpykBean import io.mockk.every -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeid +import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.kodeverk.* import no.nav.klage.kodeverk.hjemmel.Hjemmel @@ -323,13 +323,12 @@ class BehandlingServiceTest { val behandling = simpleInsert() every { dokumentUnderArbeidRepository.findByBehandlingIdAndMarkertFerdigIsNull(any()) } returns sortedSetOf( - DokumentUnderArbeid( + SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = "", - opplastet = LocalDateTime.now(), size = 0, name = "", - smartEditorId = null, - smartEditorTemplateId = null, + smartEditorId = UUID.randomUUID(), + smartEditorTemplateId = "null", behandlingId = UUID.randomUUID(), dokumentType = DokumentType.VEDTAK, created = LocalDateTime.now(), @@ -337,8 +336,6 @@ class BehandlingServiceTest { markertFerdig = null, ferdigstilt = null, dokumentEnhetId = null, - parentId = null, - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = KABAL_SAKSBEHANDLING, ) From e3fd82f0949f3c7a7c6426bc013ebee470282112 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Fri, 6 Oct 2023 11:45:27 +0200 Subject: [PATCH 16/35] WIP DokumenterUnderArbeid subclasses. --- ...entUnderArbeidAsHoveddokumentRepository.kt | 12 -- .../DokumentUnderArbeidAsVedleggRepository.kt | 12 -- .../DokumentUnderArbeidCommonRepository.kt | 39 ++++ ...entUnderArbeidAsHoveddokumentRepository.kt | 9 +- ...entUnderArbeidAsHoveddokumentRepository.kt | 9 +- .../service/DokumentUnderArbeidService.kt | 17 +- .../service/FerdigstillDokumentService.kt | 10 +- .../service/InnholdsfortegnelseService.kt | 6 +- .../BehandlingAvslutningService.kt | 12 +- .../DokumentUnderArbeidRepositoryTest.kt | 173 ++---------------- 10 files changed, 83 insertions(+), 216 deletions(-) delete mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt delete mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt create mode 100644 src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt deleted file mode 100644 index b84ef295b..000000000 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsHoveddokumentRepository.kt +++ /dev/null @@ -1,12 +0,0 @@ -package no.nav.klage.dokument.repositories - -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.transaction.annotation.Transactional -import java.util.* - -@Transactional -interface DokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { - - fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId(behandlingId: UUID): List -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt deleted file mode 100644 index 93d80f664..000000000 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidAsVedleggRepository.kt +++ /dev/null @@ -1,12 +0,0 @@ -package no.nav.klage.dokument.repositories - -import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.transaction.annotation.Transactional -import java.util.* - -@Transactional -interface DokumentUnderArbeidAsVedleggRepository : JpaRepository { - - fun findByParentId(parentId: UUID): Set -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt new file mode 100644 index 000000000..34113bdf2 --- /dev/null +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt @@ -0,0 +1,39 @@ +package no.nav.klage.dokument.repositories + +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg +import org.springframework.stereotype.Repository +import java.util.* + +@Repository +class DokumentUnderArbeidCommonRepository( + private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, + private val journalfoertDokumentUnderArbeidAsVedleggRepository: JournalfoertDokumentUnderArbeidAsVedleggRepository, + private val smartdokumentUnderArbeidAsVedleggRepository: SmartdokumentUnderArbeidAsVedleggRepository, + private val opplastetDokumentUnderArbeidAsHoveddokumentRepository: OpplastetDokumentUnderArbeidAsHoveddokumentRepository, + private val smartdokumentUnderArbeidAsHoveddokumentRepository: SmartdokumentUnderArbeidAsHoveddokumentRepository, +) { + + fun findVedleggByParentId(parentId: UUID): Set { + return opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + + journalfoertDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + + smartdokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + } + +// fun findHoveddokumenterByBehandlingId(behandlingId: UUID): Set { +// return opplastetDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingId(behandlingId) + +// smartdokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingId(behandlingId) +// } + + fun findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId(behandlingId: UUID): Set { + return opplastetDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndMarkertFerdigIsNull( + behandlingId + ) + smartdokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingId(behandlingId) + } + + fun findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull(): Set { + return opplastetDokumentUnderArbeidAsHoveddokumentRepository.findByMarkertFerdigNotNullAndFerdigstiltNull() + + smartdokumentUnderArbeidAsHoveddokumentRepository.findByMarkertFerdigNotNullAndFerdigstiltNull() + } + +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt index ddee2ecfe..c819dc0fa 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt @@ -6,4 +6,11 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface OpplastetDokumentUnderArbeidAsHoveddokumentRepository : JpaRepository \ No newline at end of file +interface OpplastetDokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { + + fun findByBehandlingId(behandlingId: UUID): Set + + fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): Set + + fun findByMarkertFerdigNotNullAndFerdigstiltNull(): Set +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt index 5a4a5e558..7e4d83cd0 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt @@ -6,9 +6,12 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Transactional -interface SmartdokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { +interface SmartdokumentUnderArbeidAsHoveddokumentRepository : + JpaRepository { - fun findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): Set - fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List + fun findByBehandlingId(behandlingId: UUID): Set + + fun findByMarkertFerdigNotNullAndFerdigstiltNull(): Set } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 33701ba37..ec047f547 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -41,8 +41,7 @@ import java.util.* @Transactional class DokumentUnderArbeidService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository, - private val dokumentUnderArbeidAsVedleggRepository: DokumentUnderArbeidAsVedleggRepository, + private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, private val opplastetDokumentUnderArbeidAsHoveddokumentRepository: OpplastetDokumentUnderArbeidAsHoveddokumentRepository, private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, private val smartDokumentUnderArbeidAsHoveddokumentRepository: SmartdokumentUnderArbeidAsHoveddokumentRepository, @@ -537,8 +536,8 @@ class DokumentUnderArbeidService( return documentValidationResults } - private fun getVedlegg(hoveddokumentId: UUID): List { - TODO() + private fun getVedlegg(hoveddokumentId: UUID): Set { + return dokumentUnderArbeidCommonRepository.findVedleggByParentId(hoveddokumentId) } private fun validateSingleSmartdocument(dokument: DokumentUnderArbeidAsSmartdokument): DocumentValidationResponse { @@ -972,7 +971,7 @@ class DokumentUnderArbeidService( behandlingService.getBehandling(behandlingId) val hoveddokumenter = - smartDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated( + smartDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndMarkertFerdigIsNull( behandlingId ) @@ -988,8 +987,8 @@ class DokumentUnderArbeidService( } fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { - val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) - val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) + val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument + val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(hovedDokument.id) //Denne er alltid sann if (hovedDokument.dokumentEnhetId == null) { //Vi vet at smartEditor-dokumentene har en oppdatert snapshot i mellomlageret fordi det ble fikset i finnOgMarkerFerdigHovedDokument @@ -1006,8 +1005,8 @@ class DokumentUnderArbeidService( } fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { - val hovedDokument = dokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(hovedDokumentId) - val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) + val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument + val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) val documentInfoList = kabalDocumentGateway.fullfoerDokumentEnhet(dokumentEnhetId = hovedDokument.dokumentEnhetId!!) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt index 39267e0ff..9c72601fa 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt @@ -2,7 +2,7 @@ package no.nav.klage.dokument.service import net.javacrumbs.shedlock.spring.annotation.SchedulerLock import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository import no.nav.klage.oppgave.domain.events.DokumentFerdigstiltAvSaksbehandler import no.nav.klage.oppgave.domain.kafka.Event import no.nav.klage.oppgave.service.KafkaInternalEventService @@ -18,7 +18,7 @@ import org.springframework.transaction.event.TransactionalEventListener @Service class FerdigstillDokumentService( private val dokumentUnderArbeidService: DokumentUnderArbeidService, - private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, private val kafkaInternalEventService: KafkaInternalEventService, ) { companion object { @@ -30,11 +30,9 @@ class FerdigstillDokumentService( @Scheduled(fixedDelayString = "\${FERDIGSTILLE_DOKUMENTER_DELAY_MILLIS}", initialDelay = 45000) @SchedulerLock(name = "ferdigstillDokumenter") fun ferdigstillHovedDokumenter() { - val hovedDokumenterIkkeFerdigstilte = emptyList() - //TODO FIXME -// dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() + val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() for (it in hovedDokumenterIkkeFerdigstilte) { - ferdigstill(it as DokumentUnderArbeidAsHoveddokument) + ferdigstill(it) } } diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 0976d5e28..ec192be57 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -5,7 +5,7 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse -import no.nav.klage.dokument.repositories.DokumentUnderArbeidAsVedleggRepository +import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.oppgave.service.BehandlingService @@ -19,7 +19,7 @@ import java.util.* @Transactional class InnholdsfortegnelseService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidAsVedleggRepository: DokumentUnderArbeidAsVedleggRepository, + private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, private val dokumentMapper: DokumentMapper, private val mellomlagerService: MellomlagerService, private val kabalJsonToPdfClient: KabalJsonToPdfClient, @@ -66,7 +66,7 @@ class InnholdsfortegnelseService( throw IllegalArgumentException("must be hoveddokument") } - val vedlegg = dokumentUnderArbeidAsVedleggRepository.findByParentId(dokumentUnderArbeidId) + val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(dokumentUnderArbeidId) val (dokumenterUnderArbeid, journalfoerteDokumenter) = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid = vedlegg.toList(), diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index 7f2db6c1d..5d8ef8124 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -4,8 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import no.nav.klage.dokument.repositories.DokumentUnderArbeidAsHoveddokumentRepository -import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository import no.nav.klage.kodeverk.* import no.nav.klage.oppgave.clients.klagefssproxy.KlageFssProxyClient import no.nav.klage.oppgave.clients.klagefssproxy.domain.SakFinishedInput @@ -34,8 +33,7 @@ class BehandlingAvslutningService( private val kafkaEventRepository: KafkaEventRepository, private val behandlingService: BehandlingService, private val applicationEventPublisher: ApplicationEventPublisher, - private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository, + private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, private val ankeITrygderettenbehandlingService: AnkeITrygderettenbehandlingService, private val ankebehandlingService: AnkebehandlingService, private val fssProxyClient: KlageFssProxyClient, @@ -54,9 +52,7 @@ class BehandlingAvslutningService( @Transactional fun avsluttBehandling(behandlingId: UUID) { try { - val hovedDokumenterIkkeFerdigstilte = emptyList() - //TODO FIXME -// dokumentUnderArbeidRepository.findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull() + val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() if (hovedDokumenterIkkeFerdigstilte.isNotEmpty()) { logger.warn( "Kunne ikke avslutte behandling {} fordi noen dokumenter mangler ferdigstilling. Prøver på nytt senere.", @@ -105,7 +101,7 @@ class BehandlingAvslutningService( createNewAnkebehandlingFromAnkeITrygderettenbehandling(ankeITrygderettenbehandling) } else { val hoveddokumenter = - dokumentUnderArbeidAsHoveddokumentRepository.findByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( + dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( behandlingId ).filter { it.dokumentType in listOf( diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index 4223f92d1..49bbd97fa 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -36,17 +36,17 @@ class DokumentUnderArbeidRepositoryTest { lateinit var dokumentUnderArbeidRepository: DokumentUnderArbeidRepository @Autowired - lateinit var opplastetDokumentUnderArbeidAsHoveddokumentRepository: DokumentUnderArbeidAsHoveddokumentRepository + lateinit var dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository @Autowired lateinit var opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository @Test fun `persist hoveddokument works`() { - val behandlingId = UUID.randomUUID() val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), + markertFerdig = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, @@ -65,12 +65,12 @@ class DokumentUnderArbeidRepositoryTest { val byId = dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id) assertThat(byId).isEqualTo(hovedDokument) - } + assertThat(dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull()).isEqualTo(hovedDokument) + } @Test fun `hoveddokument can have vedlegg`() { - val behandlingId = UUID.randomUUID() val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), @@ -109,76 +109,23 @@ class DokumentUnderArbeidRepositoryTest { val vedlegg = opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(hovedDokument.id) assertThat(vedlegg).hasSize(1) } -/* - @Test - fun `vedlegg can be unlinked`() { - - val behandlingId = UUID.randomUUID() - val hovedDokument = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - dokumentUnderArbeidRepository.save(hovedDokument) - - testEntityManager.flush() - testEntityManager.clear() - - - dokumentUnderArbeidRepository.save( - DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, - parentId = hovedDokument.id, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - ) - - testEntityManager.flush() - testEntityManager.clear() - - val vedlegg = dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id).first() - vedlegg.parentId = null - testEntityManager.flush() - testEntityManager.clear() - - assertThat(dokumentUnderArbeidRepository.findByParentIdOrderByCreated(hovedDokument.id)).hasSize(0) - } @Test fun `documents can be found and edited`() { val behandlingId = UUID.randomUUID() - val nyMellomlagerId = UUID.randomUUID().toString() + val name = "some name" - val hovedDokument = DokumentUnderArbeid( + val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), size = 1001, - name = "Vedtak.pdf", + name = "other name", behandlingId = behandlingId, dokumentType = DokumentType.BREV, - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, creatorIdent = "null", creatorRole = KABAL_SAKSBEHANDLING, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), ) dokumentUnderArbeidRepository.save(hovedDokument) @@ -187,110 +134,12 @@ class DokumentUnderArbeidRepositoryTest { val hovedDokumentet = dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id) assertThat(hovedDokumentet).isNotNull - hovedDokumentet.mellomlagerId = nyMellomlagerId + hovedDokumentet.name = name testEntityManager.flush() testEntityManager.clear() - assertThat(dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id).mellomlagerId).isEqualTo(nyMellomlagerId) + assertThat(dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id).name).isEqualTo(name) } - - @Test - fun `documents are sorted correctly`() { - - val behandlingId = UUID.randomUUID() - - val hovedDokument1 = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - created = LocalDateTime.now().minusDays(1), - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - val vedlegg1 = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - created = LocalDateTime.now().minusDays(2), - smartEditorId = null, - smartEditorTemplateId = null, - parentId = hovedDokument1.id, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - val vedlegg2 = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - created = LocalDateTime.now().minusDays(5), - smartEditorId = null, - smartEditorTemplateId = null, - parentId = hovedDokument1.id, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - - val hovedDokument2 = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - created = LocalDateTime.now().minusDays(3), - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - - val hovedDokument3 = DokumentUnderArbeid( - mellomlagerId = UUID.randomUUID().toString(), - opplastet = LocalDateTime.now(), - size = 1001, - name = "Vedtak.pdf", - behandlingId = behandlingId, - dokumentType = DokumentType.BREV, - created = LocalDateTime.now().plusDays(3), - smartEditorId = null, - smartEditorTemplateId = null, - journalfoertDokumentReference = null, - creatorIdent = "null", - creatorRole = KABAL_SAKSBEHANDLING, - ) - dokumentUnderArbeidRepository.save(hovedDokument1) - dokumentUnderArbeidRepository.save(vedlegg1) - dokumentUnderArbeidRepository.save(vedlegg2) - dokumentUnderArbeidRepository.save(hovedDokument2) - dokumentUnderArbeidRepository.save(hovedDokument3) - - testEntityManager.flush() - testEntityManager.clear() - - assertThat(dokumentUnderArbeidRepository.findByBehandlingIdAndFerdigstiltIsNullOrderByCreatedDesc(behandlingId)).containsExactly( - hovedDokument3, - hovedDokument1, - vedlegg1, - hovedDokument2, - vedlegg2, - ) - } -*/ } \ No newline at end of file From 9448e81639a4ce682e65841bdda0e7f557a6b88d Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Fri, 6 Oct 2023 14:55:30 +0200 Subject: [PATCH 17/35] WIP DokumenterUnderArbeid subclasses. --- .../DokumentUnderArbeidCommonService.kt} | 9 +++++---- .../klage/dokument/service/DokumentUnderArbeidService.kt | 8 ++++---- .../klage/dokument/service/FerdigstillDokumentService.kt | 5 ++--- .../klage/dokument/service/InnholdsfortegnelseService.kt | 5 ++--- .../service/distribusjon/BehandlingAvslutningService.kt | 8 ++++---- .../repositories/DokumentUnderArbeidRepositoryTest.kt | 5 +++-- 6 files changed, 20 insertions(+), 20 deletions(-) rename src/main/kotlin/no/nav/klage/dokument/{repositories/DokumentUnderArbeidCommonRepository.kt => service/DokumentUnderArbeidCommonService.kt} (92%) diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt similarity index 92% rename from src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt rename to src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt index 34113bdf2..be9348853 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidCommonRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt @@ -1,12 +1,13 @@ -package no.nav.klage.dokument.repositories +package no.nav.klage.dokument.service import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg -import org.springframework.stereotype.Repository +import no.nav.klage.dokument.repositories.* +import org.springframework.stereotype.Service import java.util.* -@Repository -class DokumentUnderArbeidCommonRepository( +@Service +class DokumentUnderArbeidCommonService( private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, private val journalfoertDokumentUnderArbeidAsVedleggRepository: JournalfoertDokumentUnderArbeidAsVedleggRepository, private val smartdokumentUnderArbeidAsVedleggRepository: SmartdokumentUnderArbeidAsVedleggRepository, diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index ec047f547..65c63a907 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -41,7 +41,7 @@ import java.util.* @Transactional class DokumentUnderArbeidService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, + private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val opplastetDokumentUnderArbeidAsHoveddokumentRepository: OpplastetDokumentUnderArbeidAsHoveddokumentRepository, private val opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository, private val smartDokumentUnderArbeidAsHoveddokumentRepository: SmartdokumentUnderArbeidAsHoveddokumentRepository, @@ -537,7 +537,7 @@ class DokumentUnderArbeidService( } private fun getVedlegg(hoveddokumentId: UUID): Set { - return dokumentUnderArbeidCommonRepository.findVedleggByParentId(hoveddokumentId) + return dokumentUnderArbeidCommonService.findVedleggByParentId(hoveddokumentId) } private fun validateSingleSmartdocument(dokument: DokumentUnderArbeidAsSmartdokument): DocumentValidationResponse { @@ -988,7 +988,7 @@ class DokumentUnderArbeidService( fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument - val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(hovedDokument.id) + val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) //Denne er alltid sann if (hovedDokument.dokumentEnhetId == null) { //Vi vet at smartEditor-dokumentene har en oppdatert snapshot i mellomlageret fordi det ble fikset i finnOgMarkerFerdigHovedDokument @@ -1006,7 +1006,7 @@ class DokumentUnderArbeidService( fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument - val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(hovedDokument.id) + val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) val documentInfoList = kabalDocumentGateway.fullfoerDokumentEnhet(dokumentEnhetId = hovedDokument.dokumentEnhetId!!) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt index 9c72601fa..e71399601 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt @@ -2,7 +2,6 @@ package no.nav.klage.dokument.service import net.javacrumbs.shedlock.spring.annotation.SchedulerLock import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository import no.nav.klage.oppgave.domain.events.DokumentFerdigstiltAvSaksbehandler import no.nav.klage.oppgave.domain.kafka.Event import no.nav.klage.oppgave.service.KafkaInternalEventService @@ -18,7 +17,7 @@ import org.springframework.transaction.event.TransactionalEventListener @Service class FerdigstillDokumentService( private val dokumentUnderArbeidService: DokumentUnderArbeidService, - private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, + private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val kafkaInternalEventService: KafkaInternalEventService, ) { companion object { @@ -30,7 +29,7 @@ class FerdigstillDokumentService( @Scheduled(fixedDelayString = "\${FERDIGSTILLE_DOKUMENTER_DELAY_MILLIS}", initialDelay = 45000) @SchedulerLock(name = "ferdigstillDokumenter") fun ferdigstillHovedDokumenter() { - val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() + val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() for (it in hovedDokumenterIkkeFerdigstilte) { ferdigstill(it) } diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index ec192be57..16d942174 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -5,7 +5,6 @@ import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient import no.nav.klage.dokument.clients.kabaljsontopdf.domain.InnholdsfortegnelseRequest import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsVedlegg import no.nav.klage.dokument.domain.dokumenterunderarbeid.Innholdsfortegnelse -import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository import no.nav.klage.dokument.repositories.InnholdsfortegnelseRepository import no.nav.klage.oppgave.service.BehandlingService @@ -19,7 +18,7 @@ import java.util.* @Transactional class InnholdsfortegnelseService( private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, + private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val dokumentMapper: DokumentMapper, private val mellomlagerService: MellomlagerService, private val kabalJsonToPdfClient: KabalJsonToPdfClient, @@ -66,7 +65,7 @@ class InnholdsfortegnelseService( throw IllegalArgumentException("must be hoveddokument") } - val vedlegg = dokumentUnderArbeidCommonRepository.findVedleggByParentId(dokumentUnderArbeidId) + val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(dokumentUnderArbeidId) val (dokumenterUnderArbeid, journalfoerteDokumenter) = dokumentMapper.getSortedDokumentViewListForInnholdsfortegnelse( allDokumenterUnderArbeid = vedlegg.toList(), diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index 5d8ef8124..f9f1b966e 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidAsHoveddokument -import no.nav.klage.dokument.repositories.DokumentUnderArbeidCommonRepository +import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.* import no.nav.klage.oppgave.clients.klagefssproxy.KlageFssProxyClient import no.nav.klage.oppgave.clients.klagefssproxy.domain.SakFinishedInput @@ -33,7 +33,7 @@ class BehandlingAvslutningService( private val kafkaEventRepository: KafkaEventRepository, private val behandlingService: BehandlingService, private val applicationEventPublisher: ApplicationEventPublisher, - private val dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository, + private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val ankeITrygderettenbehandlingService: AnkeITrygderettenbehandlingService, private val ankebehandlingService: AnkebehandlingService, private val fssProxyClient: KlageFssProxyClient, @@ -52,7 +52,7 @@ class BehandlingAvslutningService( @Transactional fun avsluttBehandling(behandlingId: UUID) { try { - val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() + val hovedDokumenterIkkeFerdigstilte = dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull() if (hovedDokumenterIkkeFerdigstilte.isNotEmpty()) { logger.warn( "Kunne ikke avslutte behandling {} fordi noen dokumenter mangler ferdigstilling. Prøver på nytt senere.", @@ -101,7 +101,7 @@ class BehandlingAvslutningService( createNewAnkebehandlingFromAnkeITrygderettenbehandling(ankeITrygderettenbehandling) } else { val hoveddokumenter = - dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( + dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( behandlingId ).filter { it.dokumentType in listOf( diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index 49bbd97fa..9071399b3 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -2,6 +2,7 @@ package no.nav.klage.dokument.repositories import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsVedlegg +import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.db.TestPostgresqlContainer import no.nav.klage.oppgave.domain.klage.BehandlingRole.KABAL_SAKSBEHANDLING @@ -36,7 +37,7 @@ class DokumentUnderArbeidRepositoryTest { lateinit var dokumentUnderArbeidRepository: DokumentUnderArbeidRepository @Autowired - lateinit var dokumentUnderArbeidCommonRepository: DokumentUnderArbeidCommonRepository + lateinit var dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService @Autowired lateinit var opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository @@ -66,7 +67,7 @@ class DokumentUnderArbeidRepositoryTest { val byId = dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id) assertThat(byId).isEqualTo(hovedDokument) - assertThat(dokumentUnderArbeidCommonRepository.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull()).isEqualTo(hovedDokument) + assertThat(dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull()).isEqualTo(hovedDokument) } @Test From d584177d4c784184372685cec00314d1b4902db3 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Fri, 6 Oct 2023 15:09:27 +0200 Subject: [PATCH 18/35] WIP DokumenterUnderArbeid subclasses. Most tests run OK. --- .../OpplastetDokumentUnderArbeidAsVedleggRepository.kt | 6 ------ .../repositories/DokumentUnderArbeidRepositoryTest.kt | 4 ++++ .../distribusjon/BehandlingAvslutningServiceTest.kt | 7 ++++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt index ad2e132a7..d0a6d5d7b 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt @@ -7,11 +7,5 @@ import java.util.* @Transactional interface OpplastetDokumentUnderArbeidAsVedleggRepository : JpaRepository { - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet - - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List - - fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet } - diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index 9071399b3..c39e579d9 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -9,9 +9,11 @@ import no.nav.klage.oppgave.domain.klage.BehandlingRole.KABAL_SAKSBEHANDLING import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.autoconfigure.domain.EntityScan import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager +import org.springframework.data.jpa.repository.config.EnableJpaRepositories import org.springframework.test.context.ActiveProfiles import org.testcontainers.junit.jupiter.Container import org.testcontainers.junit.jupiter.Testcontainers @@ -21,6 +23,8 @@ import java.util.* @ActiveProfiles("local") @DataJpaTest @Testcontainers +@EnableJpaRepositories(basePackages = ["no.nav.klage.dokument.repositories"]) +@EntityScan(basePackages = ["no.nav.klage.oppgave.domain", "no.nav.klage.dokument.domain"]) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class DokumentUnderArbeidRepositoryTest { diff --git a/src/test/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningServiceTest.kt b/src/test/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningServiceTest.kt index f3fc4fd96..fc0644474 100644 --- a/src/test/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningServiceTest.kt +++ b/src/test/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningServiceTest.kt @@ -6,6 +6,7 @@ import io.micrometer.tracing.Tracer import io.mockk.every import io.mockk.mockk import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.* import no.nav.klage.kodeverk.hjemmel.Hjemmel import no.nav.klage.oppgave.api.mapper.BehandlingMapper @@ -51,9 +52,9 @@ import java.util.* @ActiveProfiles("local") @Import(BehandlingAvslutningServiceTest.MyTestConfiguration::class) -@SpringBootTest(classes = [KlagebehandlingService::class, BehandlingAvslutningService::class, BehandlingService::class, AnkebehandlingService::class]) -@EnableJpaRepositories(basePackages = ["no.nav.klage.oppgave.repositories"]) -@EntityScan("no.nav.klage.oppgave.domain") +@SpringBootTest(classes = [KlagebehandlingService::class, BehandlingAvslutningService::class, BehandlingService::class, AnkebehandlingService::class, DokumentUnderArbeidCommonService::class]) +@EnableJpaRepositories(basePackages = ["no.nav.klage.oppgave.repositories", "no.nav.klage.dokument.repositories"]) +@EntityScan(basePackages = ["no.nav.klage.oppgave.domain", "no.nav.klage.dokument.domain"]) @AutoConfigureDataJpa @Testcontainers @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) From 57e180d5d4b82ea49b77e29ce09444fb768268b7 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Mon, 9 Oct 2023 08:15:09 +0200 Subject: [PATCH 19/35] WIP DokumenterUnderArbeid subclasses. All current tests run. --- .../DokumentUnderArbeidRepositoryTest.kt | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index c39e579d9..2c3d63182 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -2,18 +2,15 @@ package no.nav.klage.dokument.repositories import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsVedlegg -import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.DokumentType import no.nav.klage.oppgave.db.TestPostgresqlContainer import no.nav.klage.oppgave.domain.klage.BehandlingRole.KABAL_SAKSBEHANDLING import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.autoconfigure.domain.EntityScan import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager -import org.springframework.data.jpa.repository.config.EnableJpaRepositories import org.springframework.test.context.ActiveProfiles import org.testcontainers.junit.jupiter.Container import org.testcontainers.junit.jupiter.Testcontainers @@ -23,8 +20,6 @@ import java.util.* @ActiveProfiles("local") @DataJpaTest @Testcontainers -@EnableJpaRepositories(basePackages = ["no.nav.klage.dokument.repositories"]) -@EntityScan(basePackages = ["no.nav.klage.oppgave.domain", "no.nav.klage.dokument.domain"]) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class DokumentUnderArbeidRepositoryTest { @@ -40,14 +35,11 @@ class DokumentUnderArbeidRepositoryTest { @Autowired lateinit var dokumentUnderArbeidRepository: DokumentUnderArbeidRepository - @Autowired - lateinit var dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService - @Autowired lateinit var opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository @Test - fun `persist hoveddokument works`() { + fun `persist opplastet hoveddokument works`() { val behandlingId = UUID.randomUUID() val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), @@ -70,8 +62,6 @@ class DokumentUnderArbeidRepositoryTest { val byId = dokumentUnderArbeidRepository.getReferenceById(hovedDokument.id) assertThat(byId).isEqualTo(hovedDokument) - - assertThat(dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull()).isEqualTo(hovedDokument) } @Test @@ -117,7 +107,6 @@ class DokumentUnderArbeidRepositoryTest { @Test fun `documents can be found and edited`() { - val behandlingId = UUID.randomUUID() val name = "some name" From 59e10323338f6572b48f52e132980dace9cbe744 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Mon, 9 Oct 2023 08:34:05 +0200 Subject: [PATCH 20/35] WIP DokumenterUnderArbeid subclasses. All current tests run. --- .../JournalfoertDokumentUnderArbeidAsVedleggRepository.kt | 2 -- .../OpplastetDokumentUnderArbeidAsVedleggRepository.kt | 2 +- .../SmartdokumentUnderArbeidAsVedleggRepository.kt | 4 +--- .../dokument/service/DokumentUnderArbeidCommonService.kt | 6 +++--- .../klage/dokument/service/DokumentUnderArbeidService.kt | 4 +--- .../repositories/DokumentUnderArbeidRepositoryTest.kt | 2 +- 6 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt index 698db63be..81f2b980e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt @@ -12,8 +12,6 @@ interface JournalfoertDokumentUnderArbeidAsVedleggRepository : JpaRepository - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt index d0a6d5d7b..b33c881dd 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsVedleggRepository.kt @@ -7,5 +7,5 @@ import java.util.* @Transactional interface OpplastetDokumentUnderArbeidAsVedleggRepository : JpaRepository { - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet + fun findByParentId(dokumentId: UUID): Set } diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt index 282a83045..07a8f91da 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt @@ -8,11 +8,9 @@ import java.util.* @Transactional interface SmartdokumentUnderArbeidAsVedleggRepository : JpaRepository { - fun findByBehandlingIdAndSmartEditorIdNotNullAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet - fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List - fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet + fun findByParentId(dokumentId: UUID): Set fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt index be9348853..d7bd6e8b9 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt @@ -16,9 +16,9 @@ class DokumentUnderArbeidCommonService( ) { fun findVedleggByParentId(parentId: UUID): Set { - return opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + - journalfoertDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + - smartdokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(parentId) + return opplastetDokumentUnderArbeidAsVedleggRepository.findByParentId(parentId) + + journalfoertDokumentUnderArbeidAsVedleggRepository.findByParentId(parentId) + + smartdokumentUnderArbeidAsVedleggRepository.findByParentId(parentId) } // fun findHoveddokumenterByBehandlingId(behandlingId: UUID): Set { diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 65c63a907..7530e54d0 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -762,9 +762,7 @@ class DokumentUnderArbeidService( behandlingId = document.behandlingId, ) - smartDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(dokumentId) - .plus(opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(dokumentId)) - .plus(journalfoertDokumentUnderArbeidRepository.findByParentIdOrderByCreated(dokumentId)) + dokumentUnderArbeidCommonService.findVedleggByParentId(dokumentId) .plus(document) .map { if (document.erMarkertFerdig()) { diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index 2c3d63182..c17f03b4e 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -101,7 +101,7 @@ class DokumentUnderArbeidRepositoryTest { testEntityManager.flush() testEntityManager.clear() - val vedlegg = opplastetDokumentUnderArbeidAsVedleggRepository.findByParentIdOrderByCreated(hovedDokument.id) + val vedlegg = opplastetDokumentUnderArbeidAsVedleggRepository.findByParentId(hovedDokument.id) assertThat(vedlegg).hasSize(1) } From 2bf510db692149383c45c778bd89eecc840ccbf9 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Mon, 9 Oct 2023 22:01:23 +0200 Subject: [PATCH 21/35] Test commit --- .../dokument/repositories/DokumentUnderArbeidRepositoryTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index c17f03b4e..e06f1c2a7 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -44,7 +44,7 @@ class DokumentUnderArbeidRepositoryTest { val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), markertFerdig = LocalDateTime.now(), - size = 1001, + size = 1002, name = "Vedtak.pdf", behandlingId = behandlingId, dokumentType = DokumentType.BREV, From d7832c2439e3101a1cb020264ae6ef9ec55ffd2e Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Tue, 10 Oct 2023 16:21:34 +0200 Subject: [PATCH 22/35] Refactor DUA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../DokumenterUnderArbeidController.kt | 2 +- .../dokument/api/mapper/DokumentMapper.kt | 17 ++++++++--- .../DokumentUnderArbeidRepository.kt | 6 +--- ...tDokumentUnderArbeidAsVedleggRepository.kt | 6 +--- ...entUnderArbeidAsHoveddokumentRepository.kt | 4 +-- ...entUnderArbeidAsHoveddokumentRepository.kt | 5 ++-- ...tdokumentUnderArbeidAsVedleggRepository.kt | 8 +---- .../DokumentUnderArbeidCommonService.kt | 6 ++-- .../service/DokumentUnderArbeidService.kt | 30 +++++++++++++++---- .../oppgave/service/BehandlingService.kt | 2 ++ .../BehandlingAvslutningService.kt | 2 +- .../V88__Divide_dokument_under_arbeid.sql | 2 -- ...ql => V89__Create_innholdsfortegnelse.sql} | 0 13 files changed, 51 insertions(+), 39 deletions(-) rename src/main/resources/db/migration/{V87__Create_innholdsfortegnelse.sql => V89__Create_innholdsfortegnelse.sql} (100%) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index b09dc4073..a5b6cb84d 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -42,7 +42,7 @@ class DokumentUnderArbeidController( } @GetMapping - fun findHovedDokumenter( + fun findDokumenter( @PathVariable("behandlingId") behandlingId: UUID, ): List { val allDokumenterUnderArbeid = dokumentUnderArbeidService.findDokumenterNotFinished(behandlingId = behandlingId) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt index 0796b5e75..d3734bcbc 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/mapper/DokumentMapper.kt @@ -101,7 +101,7 @@ class DokumentMapper( return InnholdsfortegnelseRequest.Document( tittel = dokumentInDokarkiv.tittel ?: "Tittel ikke funnet i SAF", tema = Tema.fromNavn(journalpost.tema?.name).navn, - opprettet = journalpost.datoOpprettet, + opprettet = dokumentUnderArbeid.opprettet, avsenderMottaker = journalpost.avsenderMottaker?.navn ?: "", saksnummer = journalpost.sak?.fagsakId ?: "Saksnummer ikke funnet i SAF", type = journalpost.journalposttype?.name ?: "Type ikke funnet i SAF" @@ -127,19 +127,28 @@ class DokumentMapper( fun mapToDokumentView(dokumentUnderArbeid: DokumentUnderArbeid): DokumentView { var journalfoertDokumentReference: DokumentView.JournalfoertDokumentReference? = null + var tittel = dokumentUnderArbeid.name + if (dokumentUnderArbeid is JournalfoertDokumentUnderArbeidAsVedlegg) { + val journalpostInDokarkiv = + safClient.getJournalpostAsSaksbehandler(dokumentUnderArbeid.journalpostId) + + val dokument = journalpostInDokarkiv.dokumenter?.find { it.dokumentInfoId == dokumentUnderArbeid.dokumentInfoId } + ?: throw RuntimeException("Document not found in Dokarkiv") + + tittel = (dokument.tittel ?: "Tittel ikke funnet i SAF") + journalfoertDokumentReference = DokumentView.JournalfoertDokumentReference( journalpostId = dokumentUnderArbeid.journalpostId, dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, - //TODO? - harTilgangTilArkivvariant = true, + harTilgangTilArkivvariant = harTilgangTilArkivvariant(dokument), datoOpprettet = dokumentUnderArbeid.opprettet, ) } return DokumentView( id = dokumentUnderArbeid.id, - tittel = dokumentUnderArbeid.name, + tittel = tittel, dokumentTypeId = dokumentUnderArbeid.dokumentType?.id, created = dokumentUnderArbeid.created, modified = dokumentUnderArbeid.modified, diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt index 7381c12e3..e94a8a726 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt @@ -10,12 +10,8 @@ interface DokumentUnderArbeidRepository : JpaRepository - fun findByBehandlingIdAndFerdigstiltIsNullOrderByCreatedDesc(behandlingId: UUID): List + fun findByBehandlingIdAndFerdigstiltIsNull(behandlingId: UUID): List fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): SortedSet -// fun findByParentIdOrderByCreated(dokumentId: UUID): SortedSet - -// fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List - } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt index 81f2b980e..990348019 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/JournalfoertDokumentUnderArbeidAsVedleggRepository.kt @@ -10,10 +10,6 @@ interface JournalfoertDokumentUnderArbeidAsVedleggRepository : JpaRepository - fun findByParentIdAndJournalpostIdNotAndDokumentInfoIdNotAndIdNot(parentId: UUID, journalpostId: String, dokumentInfoId: String, id: UUID): List - - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List - - fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet + fun findByParentIdAndJournalpostIdAndDokumentInfoIdAndIdNot(parentId: UUID, journalpostId: String, dokumentInfoId: String, id: UUID): List } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt index c819dc0fa..a3fb4ab7f 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/OpplastetDokumentUnderArbeidAsHoveddokumentRepository.kt @@ -8,9 +8,7 @@ import java.util.* @Transactional interface OpplastetDokumentUnderArbeidAsHoveddokumentRepository : JpaRepository { - fun findByBehandlingId(behandlingId: UUID): Set - - fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): Set + fun findByBehandlingIdAndJournalposterIsNotEmpty(behandlingId: UUID): Set fun findByMarkertFerdigNotNullAndFerdigstiltNull(): Set } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt index 7e4d83cd0..6a9f93d09 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsHoveddokumentRepository.kt @@ -1,5 +1,6 @@ package no.nav.klage.dokument.repositories +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument import no.nav.klage.dokument.domain.dokumenterunderarbeid.SmartdokumentUnderArbeidAsHoveddokument import org.springframework.data.jpa.repository.JpaRepository import org.springframework.transaction.annotation.Transactional @@ -11,7 +12,7 @@ interface SmartdokumentUnderArbeidAsHoveddokumentRepository : fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): Set - fun findByBehandlingId(behandlingId: UUID): Set - fun findByMarkertFerdigNotNullAndFerdigstiltNull(): Set + + fun findByBehandlingIdAndJournalposterIsNotEmpty(behandlingId: UUID): Set } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt index 07a8f91da..c0505b085 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/SmartdokumentUnderArbeidAsVedleggRepository.kt @@ -8,13 +8,7 @@ import java.util.* @Transactional interface SmartdokumentUnderArbeidAsVedleggRepository : JpaRepository { - fun findByMarkertFerdigIsNullAndSmartEditorIdNotNull(): List - fun findByParentId(dokumentId: UUID): Set - fun findByMarkertFerdigNotNullAndFerdigstiltNullAndParentIdIsNull(): List - - fun findByMarkertFerdigNotNullAndFerdigstiltNotNullAndParentIdIsNullAndBehandlingId(behandlingId: UUID): SortedSet - - fun findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated(behandlingId: UUID): SortedSet + fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): SortedSet } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt index d7bd6e8b9..285800640 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidCommonService.kt @@ -26,10 +26,10 @@ class DokumentUnderArbeidCommonService( // smartdokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingId(behandlingId) // } - fun findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId(behandlingId: UUID): Set { - return opplastetDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndMarkertFerdigIsNull( + fun findHoveddokumenterByBehandlingIdAndHasJournalposter(behandlingId: UUID): Set { + return opplastetDokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndJournalposterIsNotEmpty( behandlingId - ) + smartdokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingId(behandlingId) + ) + smartdokumentUnderArbeidAsHoveddokumentRepository.findByBehandlingIdAndJournalposterIsNotEmpty(behandlingId) } fun findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNull(): Set { diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 7530e54d0..e5c6a5b1b 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -266,7 +266,10 @@ class DokumentUnderArbeidService( safClient.getJournalpostAsSaksbehandler(journalfoertDokumentReference.journalpostId) val document = JournalfoertDokumentUnderArbeidAsVedlegg( - name = "TODO / Hentes fra SAF", + name = getDokumentTitle( + journalpost = journalpostInDokarkiv, + dokumentInfoId = journalfoertDokumentReference.dokumentInfoId + ), behandlingId = behandlingId, parentId = parentId, journalpostId = journalfoertDokumentReference.journalpostId, @@ -299,6 +302,11 @@ class DokumentUnderArbeidService( return resultingDocuments to duplicates } + private fun getDokumentTitle(journalpost: Journalpost, dokumentInfoId: String): String { + return journalpost.dokumenter?.find { it.dokumentInfoId == dokumentInfoId }?.tittel + ?: error("can't be null") + } + private fun Behandling.getRoleInBehandling(innloggetIdent: String) = if (rolIdent == innloggetIdent) { BehandlingRole.KABAL_ROL } else if (tildeling?.saksbehandlerident == innloggetIdent) { @@ -583,6 +591,14 @@ class DokumentUnderArbeidService( vedlegg.forEach { if (it is SmartdokumentUnderArbeidAsVedlegg && it.isStaleSmartEditorDokument()) { mellomlagreNyVersjonAvSmartEditorDokumentAndGetPdf(it) + } else if (it is JournalfoertDokumentUnderArbeidAsVedlegg) { + val journalpostInDokarkiv = + safClient.getJournalpostAsSaksbehandler(it.journalpostId) + + it.name = getDokumentTitle( + journalpost = journalpostInDokarkiv, + dokumentInfoId = it.dokumentInfoId + ) } } @@ -878,7 +894,7 @@ class DokumentUnderArbeidService( } return if (dokumentUnderArbeid is JournalfoertDokumentUnderArbeidAsVedlegg) { - if (journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalpostIdNotAndDokumentInfoIdNotAndIdNot( + if (journalfoertDokumentUnderArbeidRepository.findByParentIdAndJournalpostIdAndDokumentInfoIdAndIdNot( parentId = parentId, journalpostId = dokumentUnderArbeid.journalpostId, dokumentInfoId = dokumentUnderArbeid.dokumentInfoId, @@ -961,7 +977,7 @@ class DokumentUnderArbeidService( behandlingService.getBehandling(behandlingId) } - return dokumentUnderArbeidRepository.findByBehandlingIdAndFerdigstiltIsNullOrderByCreatedDesc(behandlingId) + return dokumentUnderArbeidRepository.findByBehandlingIdAndFerdigstiltIsNull(behandlingId) } fun getSmartDokumenterUnderArbeid(behandlingId: UUID, ident: String): List { @@ -973,7 +989,7 @@ class DokumentUnderArbeidService( behandlingId ) - val vedlegg = smartDokumentUnderArbeidAsVedleggRepository.findByBehandlingIdAndMarkertFerdigIsNullOrderByCreated( + val vedlegg = smartDokumentUnderArbeidAsVedleggRepository.findByBehandlingIdAndMarkertFerdigIsNull( behandlingId ) @@ -985,7 +1001,8 @@ class DokumentUnderArbeidService( } fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { - val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument + val hovedDokument = + dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) //Denne er alltid sann if (hovedDokument.dokumentEnhetId == null) { @@ -1003,7 +1020,8 @@ class DokumentUnderArbeidService( } fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { - val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument + val hovedDokument = + dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) val documentInfoList = diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt index 789746f56..4436d063f 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt @@ -1,6 +1,7 @@ package no.nav.klage.oppgave.service import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository +import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.* import no.nav.klage.kodeverk.hjemmel.Hjemmel import no.nav.klage.kodeverk.hjemmel.Registreringshjemmel @@ -61,6 +62,7 @@ class BehandlingService( private val kakaApiGateway: KakaApiGateway, private val dokumentService: DokumentService, private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, + private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val kabalInnstillingerService: KabalInnstillingerService, private val innloggetSaksbehandlerService: InnloggetSaksbehandlerService, private val arbeidOgInntektClient: ArbeidOgInntektClient, diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt index f9f1b966e..4ab8ae2e0 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/distribusjon/BehandlingAvslutningService.kt @@ -101,7 +101,7 @@ class BehandlingAvslutningService( createNewAnkebehandlingFromAnkeITrygderettenbehandling(ankeITrygderettenbehandling) } else { val hoveddokumenter = - dokumentUnderArbeidCommonService.findHoveddokumenterByMarkertFerdigNotNullAndFerdigstiltNotNullAndBehandlingId( + dokumentUnderArbeidCommonService.findHoveddokumenterByBehandlingIdAndHasJournalposter( behandlingId ).filter { it.dokumentType in listOf( diff --git a/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql b/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql index 51d0dc61e..98439efbe 100644 --- a/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql +++ b/src/main/resources/db/migration/V88__Divide_dokument_under_arbeid.sql @@ -1,5 +1,3 @@ ALTER TABLE klage.dokument_under_arbeid ADD COLUMN dokument_under_arbeid_type TEXT, ADD COLUMN opprettet TIMESTAMP; - - diff --git a/src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql b/src/main/resources/db/migration/V89__Create_innholdsfortegnelse.sql similarity index 100% rename from src/main/resources/db/migration/V87__Create_innholdsfortegnelse.sql rename to src/main/resources/db/migration/V89__Create_innholdsfortegnelse.sql From 1d49595758fe76bacc5e4d214255c17476633ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Tue, 10 Oct 2023 17:02:22 +0200 Subject: [PATCH 23/35] Remove unused import. --- .../kotlin/no/nav/klage/oppgave/service/BehandlingService.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt b/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt index 4436d063f..789746f56 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/service/BehandlingService.kt @@ -1,7 +1,6 @@ package no.nav.klage.oppgave.service import no.nav.klage.dokument.repositories.DokumentUnderArbeidRepository -import no.nav.klage.dokument.service.DokumentUnderArbeidCommonService import no.nav.klage.kodeverk.* import no.nav.klage.kodeverk.hjemmel.Hjemmel import no.nav.klage.kodeverk.hjemmel.Registreringshjemmel @@ -62,7 +61,6 @@ class BehandlingService( private val kakaApiGateway: KakaApiGateway, private val dokumentService: DokumentService, private val dokumentUnderArbeidRepository: DokumentUnderArbeidRepository, - private val dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService, private val kabalInnstillingerService: KabalInnstillingerService, private val innloggetSaksbehandlerService: InnloggetSaksbehandlerService, private val arbeidOgInntektClient: ArbeidOgInntektClient, From f811e3c7058aebfef6a60b3d8285d68b2e21e57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Tue, 10 Oct 2023 17:24:17 +0200 Subject: [PATCH 24/35] Attempt at changing abstract class to open. --- .../domain/dokumenterunderarbeid/DokumentUnderArbeid.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index a63218d46..483115ddc 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -13,7 +13,7 @@ import java.util.* @Table(name = "dokument_under_arbeid", schema = "klage") @DynamicUpdate @DiscriminatorColumn(name = "dokument_under_arbeid_type") -abstract class DokumentUnderArbeid( +open class DokumentUnderArbeid( @Id val id: UUID = UUID.randomUUID(), @Column(name = "dokument_type_id") From 91aa7b6baf847aa4a3326f24efd5894e92de56ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Tue, 10 Oct 2023 17:49:17 +0200 Subject: [PATCH 25/35] Temporary hack for progress. --- .../domain/dokumenterunderarbeid/DokumentUnderArbeid.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index 483115ddc..591249155 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -88,7 +88,9 @@ open class DokumentUnderArbeid( enum class DokumentUnderArbeidType { UPLOADED, SMART, - JOURNALFOERT + JOURNALFOERT, + //TODO: Fiks + UNKNOWN, } fun getType(): DokumentUnderArbeidType { @@ -109,7 +111,7 @@ open class DokumentUnderArbeid( DokumentUnderArbeidType.UPLOADED } - else -> error("unknown type: ${this::class.java.name}") + else -> DokumentUnderArbeidType.UNKNOWN //error("unknown type: ${this::class.java.name}") } } } \ No newline at end of file From 8053b032f710238b8a62b0859ff58deb2d3d20c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 08:44:42 +0200 Subject: [PATCH 26/35] Migrate dua types, reintroduce abstract class. --- .../DokumentUnderArbeid.kt | 6 ++-- .../V90__Set_dokument_under_arbeid_type.sql | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/db/migration/V90__Set_dokument_under_arbeid_type.sql diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt index 591249155..1b8a1f414 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeid.kt @@ -13,7 +13,7 @@ import java.util.* @Table(name = "dokument_under_arbeid", schema = "klage") @DynamicUpdate @DiscriminatorColumn(name = "dokument_under_arbeid_type") -open class DokumentUnderArbeid( +abstract class DokumentUnderArbeid( @Id val id: UUID = UUID.randomUUID(), @Column(name = "dokument_type_id") @@ -89,8 +89,6 @@ open class DokumentUnderArbeid( UPLOADED, SMART, JOURNALFOERT, - //TODO: Fiks - UNKNOWN, } fun getType(): DokumentUnderArbeidType { @@ -111,7 +109,7 @@ open class DokumentUnderArbeid( DokumentUnderArbeidType.UPLOADED } - else -> DokumentUnderArbeidType.UNKNOWN //error("unknown type: ${this::class.java.name}") + else -> error("unknown type: ${this::class.java.name}") } } } \ No newline at end of file diff --git a/src/main/resources/db/migration/V90__Set_dokument_under_arbeid_type.sql b/src/main/resources/db/migration/V90__Set_dokument_under_arbeid_type.sql new file mode 100644 index 000000000..409b57bb0 --- /dev/null +++ b/src/main/resources/db/migration/V90__Set_dokument_under_arbeid_type.sql @@ -0,0 +1,33 @@ +UPDATE klage.dokument_under_arbeid +SET dokument_under_arbeid_type = 'journalfoertdokument' +WHERE journalfoert_dokument_journalpost_id IS NOT NULL + AND dokument_under_arbeid_type IS NULL; + +UPDATE klage.dokument_under_arbeid +SET dokument_under_arbeid_type = 'opplastetdokument' +WHERE mellomlager_id IS NOT NULL + AND smarteditor_id IS NULL + AND parent_id IS NULL + AND dokument_under_arbeid_type IS NULL; + +UPDATE klage.dokument_under_arbeid +SET dokument_under_arbeid_type = 'opplastetdokument_vedlegg' +WHERE mellomlager_id IS NOT NULL + AND smarteditor_id IS NULL + AND parent_id IS NOT NULL + AND dokument_under_arbeid_type IS NULL; + +UPDATE klage.dokument_under_arbeid +SET dokument_under_arbeid_type = 'smartdokument' +WHERE smarteditor_id IS NOT NULL + AND parent_id IS NULL + AND dokument_under_arbeid_type IS NULL; + +UPDATE klage.dokument_under_arbeid +SET dokument_under_arbeid_type = 'smartdokument_vedlegg' +WHERE smarteditor_id IS NOT NULL + AND parent_id IS NOT NULL + AND dokument_under_arbeid_type IS NULL; + +ALTER TABLE klage.dokument_under_arbeid + ALTER COLUMN dokument_under_arbeid_type SET NOT NULL; \ No newline at end of file From 2c953a6059f10f4db3d7761b2e4e0b4b9dc09af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 10:15:53 +0200 Subject: [PATCH 27/35] Do not attempt innholdsfortegnelse deletion when no such exists. Co-authored-by: Andreas Jonsson --- .../nav/klage/dokument/service/InnholdsfortegnelseService.kt | 5 ++++- .../klage/oppgave/api/controller/DevOnlyAdminController.kt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 16d942174..3bf57ecf5 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -86,6 +86,9 @@ class InnholdsfortegnelseService( } fun deleteInnholdsfortegnelse(hoveddokumentId: UUID) { - innholdsfortegnelseRepository.delete(innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId)!!) + val innholdsfortegnelse = innholdsfortegnelseRepository.findByHoveddokumentId(hoveddokumentId) + if (innholdsfortegnelse != null) { + innholdsfortegnelseRepository.delete(innholdsfortegnelse) + } } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/oppgave/api/controller/DevOnlyAdminController.kt b/src/main/kotlin/no/nav/klage/oppgave/api/controller/DevOnlyAdminController.kt index 16deffe56..738094eff 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/api/controller/DevOnlyAdminController.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/api/controller/DevOnlyAdminController.kt @@ -48,7 +48,7 @@ class DevOnlyAdminController( logger.info("Delete behandling i dev") adminService.deleteBehandlingInDev(behandlingId) } catch (e: Exception) { - logger.warn("Failed to delete behandling i dev") + logger.warn("Failed to delete behandling i dev", e) throw e } } From 0b32c2eab278fe26f355ccd798a4482325b1817d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 12:07:50 +0200 Subject: [PATCH 28/35] Corrected dokumentAsVedlegg check. --- .../no/nav/klage/dokument/service/InnholdsfortegnelseService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt index 3bf57ecf5..0f3d9f697 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/InnholdsfortegnelseService.kt @@ -61,7 +61,7 @@ class InnholdsfortegnelseService( val document = dokumentUnderArbeidRepository.getReferenceById(dokumentUnderArbeidId) - if (document !is DokumentUnderArbeidAsVedlegg) { + if (document is DokumentUnderArbeidAsVedlegg) { throw IllegalArgumentException("must be hoveddokument") } From 0eab9624291a6a3917d952149850aa4c04dd633e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 12:54:03 +0200 Subject: [PATCH 29/35] Fixed smartdokument stale check. Co-authored-by: Andreas Jonsson --- .../DefaultKabalSmartEditorApiGateway.kt | 9 ++++++--- .../DokumentUnderArbeidInterfaces.kt | 1 + .../OpplastetDokumentUnderArbeidAsHoveddokument.kt | 3 +++ .../OpplastetDokumentUnderArbeidAsVedlegg.kt | 3 +++ .../SmartdokumentUnderArbeidAsHoveddokument.kt | 3 +++ .../SmartdokumentUnderArbeidAsVedlegg.kt | 3 +++ .../klage/dokument/service/DokumentUnderArbeidService.kt | 6 +++++- .../db/migration/V91__Add_mellomlagret_date.sql | 2 ++ .../api/controller/DokumentUnderArbeidControllerTest.kt | 2 ++ .../repositories/DokumentUnderArbeidRepositoryTest.kt | 4 ++++ .../nav/klage/oppgave/service/BehandlingServiceTest.kt | 1 + 11 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/db/migration/V91__Add_mellomlagret_date.sql diff --git a/src/main/kotlin/no/nav/klage/dokument/clients/kabalsmarteditorapi/DefaultKabalSmartEditorApiGateway.kt b/src/main/kotlin/no/nav/klage/dokument/clients/kabalsmarteditorapi/DefaultKabalSmartEditorApiGateway.kt index 2a62babd2..70e0ec032 100644 --- a/src/main/kotlin/no/nav/klage/dokument/clients/kabalsmarteditorapi/DefaultKabalSmartEditorApiGateway.kt +++ b/src/main/kotlin/no/nav/klage/dokument/clients/kabalsmarteditorapi/DefaultKabalSmartEditorApiGateway.kt @@ -15,9 +15,12 @@ class DefaultKabalSmartEditorApiGateway(private val kabalSmartEditorApiClient: K private val logger = getLogger(javaClass.enclosingClass) } - fun isMellomlagretDokumentStale(smartEditorId: UUID, sistOpplastet: LocalDateTime?): Boolean { - return sistOpplastet == null || kabalSmartEditorApiClient.getDocument(smartEditorId).modified.isAfter( - sistOpplastet + fun isMellomlagretDokumentStale( + smartEditorId: UUID, + mellomlagretDate: LocalDateTime? + ): Boolean { + return mellomlagretDate == null || kabalSmartEditorApiClient.getDocument(smartEditorId).modified.isAfter( + mellomlagretDate ) } diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt index 00c9bf89d..f3a9c6933 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidInterfaces.kt @@ -13,4 +13,5 @@ interface DokumentUnderArbeidAsSmartdokument: DokumentUnderArbeidAsMellomlagret interface DokumentUnderArbeidAsMellomlagret { var mellomlagerId: String? + val mellomlagretDate: LocalDateTime? } diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt index 5afd83ec9..36e1bf546 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt @@ -16,6 +16,8 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( var size: Long?, @Column(name = "mellomlager_id") override var mellomlagerId: String?, + @Column(name = "mellomlagret_date") + override var mellomlagretDate: LocalDateTime?, //Common properties id: UUID = UUID.randomUUID(), @@ -52,6 +54,7 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( return OpplastetDokumentUnderArbeidAsVedlegg( size = size, mellomlagerId = mellomlagerId, + mellomlagretDate = mellomlagretDate, id = id, name = name, behandlingId = behandlingId, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt index 98d2c16cd..e4458717e 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsVedlegg.kt @@ -16,6 +16,8 @@ class OpplastetDokumentUnderArbeidAsVedlegg( var size: Long?, @Column(name = "mellomlager_id") override var mellomlagerId: String?, + @Column(name = "mellomlagret_date") + override var mellomlagretDate: LocalDateTime?, //Common properties id: UUID = UUID.randomUUID(), @@ -48,6 +50,7 @@ class OpplastetDokumentUnderArbeidAsVedlegg( return OpplastetDokumentUnderArbeidAsHoveddokument( size = size, mellomlagerId = mellomlagerId, + mellomlagretDate = mellomlagretDate, id = id, name = name, behandlingId = behandlingId, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt index d3d4d2848..3a7ae1d19 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt @@ -20,6 +20,8 @@ class SmartdokumentUnderArbeidAsHoveddokument( override var smartEditorTemplateId: String, @Column(name = "mellomlager_id") override var mellomlagerId: String?, + @Column(name = "mellomlagret_date") + override var mellomlagretDate: LocalDateTime?, //Common properties id: UUID = UUID.randomUUID(), @@ -58,6 +60,7 @@ class SmartdokumentUnderArbeidAsHoveddokument( smartEditorId = smartEditorId, smartEditorTemplateId = smartEditorTemplateId, mellomlagerId = mellomlagerId, + mellomlagretDate = mellomlagretDate, id = id, name = name, behandlingId = behandlingId, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt index a584b4700..c5272cc08 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsVedlegg.kt @@ -20,6 +20,8 @@ class SmartdokumentUnderArbeidAsVedlegg( override var smartEditorTemplateId: String, @Column(name = "mellomlager_id") override var mellomlagerId: String?, + @Column(name = "mellomlagret_date") + override var mellomlagretDate: LocalDateTime?, //Common properties id: UUID = UUID.randomUUID(), @@ -54,6 +56,7 @@ class SmartdokumentUnderArbeidAsVedlegg( smartEditorId = smartEditorId, smartEditorTemplateId = smartEditorTemplateId, mellomlagerId = mellomlagerId, + mellomlagretDate = mellomlagretDate, id = id, name = name, behandlingId = behandlingId, diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index e5c6a5b1b..ef652e1a2 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -98,6 +98,7 @@ class DokumentUnderArbeidService( opplastetDokumentUnderArbeidAsHoveddokumentRepository.save( OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = mellomlagerId, + mellomlagretDate = now, size = opplastetFil.content.size.toLong(), name = tittel, dokumentType = dokumentType, @@ -112,6 +113,7 @@ class DokumentUnderArbeidService( opplastetDokumentUnderArbeidAsVedleggRepository.save( OpplastetDokumentUnderArbeidAsVedlegg( mellomlagerId = mellomlagerId, + mellomlagretDate = now, size = opplastetFil.content.size.toLong(), name = tittel, behandlingId = behandlingId, @@ -172,6 +174,7 @@ class DokumentUnderArbeidService( smartDokumentUnderArbeidAsHoveddokumentRepository.save( SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = null, + mellomlagretDate = null, size = null, name = tittel, dokumentType = dokumentType, @@ -188,6 +191,7 @@ class DokumentUnderArbeidService( smartDokumentUnderArbeidAsVedleggRepository.save( SmartdokumentUnderArbeidAsVedlegg( mellomlagerId = null, + mellomlagretDate = null, size = null, name = tittel, behandlingId = behandlingId, @@ -1118,8 +1122,8 @@ class DokumentUnderArbeidService( private fun DokumentUnderArbeidAsSmartdokument.isStaleSmartEditorDokument() = smartEditorApiGateway.isMellomlagretDokumentStale( + mellomlagretDate = this.mellomlagretDate, smartEditorId = this.smartEditorId, - sistOpplastet = this.modified, //TODO changed from opplastet. Verify. ) private fun Behandling.endringslogg( diff --git a/src/main/resources/db/migration/V91__Add_mellomlagret_date.sql b/src/main/resources/db/migration/V91__Add_mellomlagret_date.sql new file mode 100644 index 000000000..92254151d --- /dev/null +++ b/src/main/resources/db/migration/V91__Add_mellomlagret_date.sql @@ -0,0 +1,2 @@ +ALTER TABLE klage.dokument_under_arbeid + ADD COLUMN mellomlagret_date TIMESTAMP; diff --git a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt index e94f185d1..ab2234dd5 100644 --- a/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/api/controller/DokumentUnderArbeidControllerTest.kt @@ -89,6 +89,7 @@ internal class DokumentUnderArbeidControllerTest { ) } returns OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = "mellomlagerId", + mellomlagretDate = LocalDateTime.now(), size = 1001, name = "vedtak.pdf", behandlingId = behandlingId, @@ -154,6 +155,7 @@ internal class DokumentUnderArbeidControllerTest { ) } returns SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = "mellomlagerId", + mellomlagretDate = LocalDateTime.now(), size = 1001, name = "vedtak.pdf", behandlingId = behandlingId, diff --git a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt index e06f1c2a7..e46629769 100644 --- a/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt +++ b/src/test/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepositoryTest.kt @@ -43,6 +43,7 @@ class DokumentUnderArbeidRepositoryTest { val behandlingId = UUID.randomUUID() val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), + mellomlagretDate = LocalDateTime.now(), markertFerdig = LocalDateTime.now(), size = 1002, name = "Vedtak.pdf", @@ -69,6 +70,7 @@ class DokumentUnderArbeidRepositoryTest { val behandlingId = UUID.randomUUID() val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), + mellomlagretDate = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, @@ -86,6 +88,7 @@ class DokumentUnderArbeidRepositoryTest { dokumentUnderArbeidRepository.save( OpplastetDokumentUnderArbeidAsVedlegg( mellomlagerId = UUID.randomUUID().toString(), + mellomlagretDate = LocalDateTime.now(), size = 1001, name = "Vedtak.pdf", behandlingId = behandlingId, @@ -112,6 +115,7 @@ class DokumentUnderArbeidRepositoryTest { val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( mellomlagerId = UUID.randomUUID().toString(), + mellomlagretDate = LocalDateTime.now(), size = 1001, name = "other name", behandlingId = behandlingId, diff --git a/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt index f35a59ab6..e1596f219 100644 --- a/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/klage/oppgave/service/BehandlingServiceTest.kt @@ -325,6 +325,7 @@ class BehandlingServiceTest { sortedSetOf( SmartdokumentUnderArbeidAsHoveddokument( mellomlagerId = "", + mellomlagretDate = LocalDateTime.now(), size = 0, name = "", smartEditorId = UUID.randomUUID(), From a9ee93ce5b45134033b1d432b9790186ccdc0c63 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Wed, 11 Oct 2023 14:08:18 +0200 Subject: [PATCH 30/35] Fix for validating smartdokumenter. Added more debug logging for ferdigstilling DUA. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../DokumenterUnderArbeidController.kt | 2 +- .../DokumentUnderArbeidRepository.kt | 2 +- .../service/DokumentUnderArbeidService.kt | 25 ++++++++++++++----- .../service/FerdigstillDokumentService.kt | 6 +++++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt index a5b6cb84d..2c7c3b73c 100644 --- a/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt +++ b/src/main/kotlin/no/nav/klage/dokument/api/controller/DokumenterUnderArbeidController.kt @@ -240,7 +240,7 @@ class DokumentUnderArbeidController( @PathVariable("dokumentid") dokumentId: UUID, ): List { //TODO only called for hoveddokumenter? - return dokumentUnderArbeidService.validateSmartDokument(dokumentId) + return dokumentUnderArbeidService.validateIfSmartDokument(dokumentId) } //Old event stuff. Clients should read from EventController instead, and this can be deleted. diff --git a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt index e94a8a726..4d38b9458 100644 --- a/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt +++ b/src/main/kotlin/no/nav/klage/dokument/repositories/DokumentUnderArbeidRepository.kt @@ -12,6 +12,6 @@ interface DokumentUnderArbeidRepository : JpaRepository - fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): SortedSet + fun findByBehandlingIdAndMarkertFerdigIsNull(behandlingId: UUID): Set } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index ef652e1a2..16808e896 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -31,6 +31,7 @@ import no.nav.klage.oppgave.service.BehandlingService import no.nav.klage.oppgave.service.DokumentService import no.nav.klage.oppgave.service.InnloggetSaksbehandlerService import no.nav.klage.oppgave.util.getLogger +import no.nav.klage.oppgave.util.getSecureLogger import org.springframework.context.ApplicationEventPublisher import org.springframework.http.MediaType import org.springframework.stereotype.Service @@ -64,6 +65,7 @@ class DokumentUnderArbeidService( companion object { @Suppress("JAVA_CLASS_ON_COMPANION") private val logger = getLogger(javaClass.enclosingClass) + private val securLogger = getSecureLogger() const val SYSTEMBRUKER = "SYSTEMBRUKER" } @@ -506,12 +508,15 @@ class DokumentUnderArbeidService( dokumentId: UUID, journalpostIdSet: Set ): DokumentUnderArbeid { + logger.debug("updateJournalposter for dokument with id {}", dokumentId) val dokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) if (dokument !is DokumentUnderArbeidAsHoveddokument) { throw RuntimeException("this document does not support journalposter.") } + logger.debug("in updateJournalposter() found document ({}) with journalposter: {}", dokumentId, dokument.journalposter) + val behandling = behandlingService.getBehandlingForUpdateBySystembruker(behandlingId) val oldValue = dokument.journalposter @@ -526,10 +531,12 @@ class DokumentUnderArbeidService( dokumentId = dokument.id, ) + logger.debug("in updateJournalposter() updated document ({}) with journalposter. Now has: {}", dokumentId, dokument.journalposter) + return dokument } - fun validateSmartDokument( + fun validateIfSmartDokument( dokumentId: UUID ): List { val documentValidationResults = mutableListOf() @@ -537,10 +544,8 @@ class DokumentUnderArbeidService( val hovedDokument = smartDokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(dokumentId) val vedlegg = getVedlegg(hovedDokument.id) - documentValidationResults += validateSingleSmartdocument(hovedDokument) - - vedlegg.forEach { - if (it is SmartdokumentUnderArbeidAsVedlegg) { + (vedlegg + hovedDokument).forEach { + if (it is DokumentUnderArbeidAsSmartdokument) { documentValidationResults += validateSingleSmartdocument(it) } } @@ -659,7 +664,7 @@ class DokumentUnderArbeidService( throw DokumentValidationException("Kan ikke endre dokumenttype på et dokument som er ferdigstilt") } - val documentValidationErrors = validateSmartDokument(hovedDokument.id) + val documentValidationErrors = validateIfSmartDokument(hovedDokument.id) if (documentValidationErrors.any { it.errors.isNotEmpty() }) { throw JsonToPdfValidationException( msg = "Validation error from json to pdf", @@ -1005,6 +1010,7 @@ class DokumentUnderArbeidService( } fun opprettDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { + logger.debug("opprettDokumentEnhet hoveddokument with id {}", hovedDokumentId) val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) @@ -1024,13 +1030,18 @@ class DokumentUnderArbeidService( } fun ferdigstillDokumentEnhet(hovedDokumentId: UUID): DokumentUnderArbeidAsHoveddokument { + logger.debug("ferdigstillDokumentEnhet hoveddokument with id {}", hovedDokumentId) val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) + + logger.debug("calling fullfoerDokumentEnhet ({}) for hoveddokument with id {}", hovedDokument.dokumentEnhetId, hovedDokumentId) val documentInfoList = kabalDocumentGateway.fullfoerDokumentEnhet(dokumentEnhetId = hovedDokument.dokumentEnhetId!!) + + logger.debug("addSaksdokument to behandling for hoveddokument with id {}", hovedDokumentId) documentInfoList.forEach { documentInfo -> val journalpost = safClient.getJournalpostAsSystembruker(documentInfo.journalpostId.value) @@ -1050,6 +1061,7 @@ class DokumentUnderArbeidService( val now = LocalDateTime.now() + logger.debug("about to call hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) for dokument with id {}", hovedDokumentId) hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) if (hovedDokument is DokumentUnderArbeidAsSmartdokument) { try { @@ -1059,6 +1071,7 @@ class DokumentUnderArbeidService( } } + logger.debug("about to call ferdigstillHvisIkkeAlleredeFerdigstilt(now) for vedlegg of dokument with id {}", hovedDokumentId) vedlegg.forEach { it.ferdigstillHvisIkkeAlleredeFerdigstilt(now) if (it is DokumentUnderArbeidAsSmartdokument) { diff --git a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt index e71399601..ac6978afa 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/FerdigstillDokumentService.kt @@ -45,6 +45,7 @@ class FerdigstillDokumentService( } private fun ferdigstill(it: DokumentUnderArbeidAsHoveddokument) { + logger.debug("ferdigstill hoveddokument with id {}", it.id) var updatedDokument = it try { if (updatedDokument.dokumentEnhetId == null) { @@ -52,6 +53,10 @@ class FerdigstillDokumentService( } updatedDokument = dokumentUnderArbeidService.ferdigstillDokumentEnhet(updatedDokument.id) + logger.debug("dokumentUnderArbeidService.ferdigstillDokumentEnhet(updatedDokument.id) for document with id {} done", updatedDokument.id) + + + logger.debug("about to publish 'finished' to Kafak for document with id {}", updatedDokument.id) //Send to all subscribers. If this fails, it's not the end of the world. kafkaInternalEventService.publishEvent( Event( @@ -69,5 +74,6 @@ class FerdigstillDokumentService( e ) } + logger.debug("ferdigstill for document with id {} successful", updatedDokument.id) } } \ No newline at end of file From 9be719dcd0943e21a32c00cf153c6c31c78b4a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 14:38:37 +0200 Subject: [PATCH 31/35] More debug logging. Co-authored-by: Andreas Jonsson --- .../klage/dokument/service/DokumentUnderArbeidService.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 16808e896..8d10a9128 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -541,7 +541,7 @@ class DokumentUnderArbeidService( ): List { val documentValidationResults = mutableListOf() - val hovedDokument = smartDokumentUnderArbeidAsHoveddokumentRepository.getReferenceById(dokumentId) + val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) val vedlegg = getVedlegg(hovedDokument.id) (vedlegg + hovedDokument).forEach { @@ -1013,9 +1013,12 @@ class DokumentUnderArbeidService( logger.debug("opprettDokumentEnhet hoveddokument with id {}", hovedDokumentId) val hovedDokument = dokumentUnderArbeidRepository.getReferenceById(hovedDokumentId) as DokumentUnderArbeidAsHoveddokument + logger.debug("got hoveddokument with id {}, dokmentEnhetId {}", hovedDokumentId, hovedDokument.dokumentEnhetId) val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) + logger.debug("got vedlegg for hoveddokument id {}, size: {}", hovedDokumentId, vedlegg.size) //Denne er alltid sann if (hovedDokument.dokumentEnhetId == null) { + logger.debug("hoveddokument.dokumentEnhetId == null, id {}", hovedDokumentId) //Vi vet at smartEditor-dokumentene har en oppdatert snapshot i mellomlageret fordi det ble fikset i finnOgMarkerFerdigHovedDokument val behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) val dokumentEnhetId = kabalDocumentGateway.createKomplettDokumentEnhet( @@ -1024,7 +1027,9 @@ class DokumentUnderArbeidService( vedlegg = vedlegg, innholdsfortegnelse = innholdsfortegnelseService.getInnholdsfortegnelse(hovedDokumentId) ) + logger.debug("got dokumentEnhetId {} for hoveddokumentid {}", dokumentEnhetId, hovedDokumentId) hovedDokument.dokumentEnhetId = dokumentEnhetId + logger.debug("wrote dokumentEnhetId {} for hoveddokumentid {}", dokumentEnhetId, hovedDokumentId) } return hovedDokument } From b9bd5a220def1700478f980ac3d07f008c7e892d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Wed=C3=B8e?= Date: Wed, 11 Oct 2023 15:54:02 +0200 Subject: [PATCH 32/35] Use mutable setfor journalposter. Unique constraint in innholdsfortegnelse. Co-authored-by: Andreas Jonsson --- .../DokumentUnderArbeidAsHoveddokument.kt | 2 +- ...astetDokumentUnderArbeidAsHoveddokument.kt | 2 +- ...SmartdokumentUnderArbeidAsHoveddokument.kt | 2 +- .../service/DokumentUnderArbeidService.kt | 46 +++++- .../kabaldocument/KabalDocumentMapper.kt | 4 +- ..._Unique_constraint_innholdsfortegnelse.sql | 2 + .../service/DokumentUnderArbeidServiceTest.kt | 140 ++++++++++++++++++ 7 files changed, 185 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/db/migration/V92__Unique_constraint_innholdsfortegnelse.sql create mode 100644 src/test/kotlin/no/nav/klage/oppgave/service/DokumentUnderArbeidServiceTest.kt diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt index 79b376448..e0f1f8a34 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/DokumentUnderArbeidAsHoveddokument.kt @@ -25,7 +25,7 @@ abstract class DokumentUnderArbeidAsHoveddokument( @JoinColumn(name = "dokument_under_arbeid_id", referencedColumnName = "id", nullable = false) @Fetch(FetchMode.SELECT) @BatchSize(size = 5) - var journalposter: Set = emptySet(), + var journalposter: MutableSet = mutableSetOf(), //Common properties id: UUID = UUID.randomUUID(), diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt index 36e1bf546..ae0d56cb2 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/OpplastetDokumentUnderArbeidAsHoveddokument.kt @@ -33,7 +33,7 @@ class OpplastetDokumentUnderArbeidAsHoveddokument( dokumentType: DokumentType?, dokumentEnhetId: UUID? = null, brevmottakerIdents: Set = emptySet(), - journalposter: Set = emptySet(), + journalposter: MutableSet = mutableSetOf(), ) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsHoveddokument( id = id, name = name, diff --git a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt index 3a7ae1d19..052929a84 100644 --- a/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt +++ b/src/main/kotlin/no/nav/klage/dokument/domain/dokumenterunderarbeid/SmartdokumentUnderArbeidAsHoveddokument.kt @@ -37,7 +37,7 @@ class SmartdokumentUnderArbeidAsHoveddokument( dokumentType: DokumentType?, dokumentEnhetId: UUID? = null, brevmottakerIdents: Set = emptySet(), - journalposter: Set = emptySet(), + journalposter: MutableSet = mutableSetOf(), ) : DokumentUnderArbeidAsMellomlagret, DokumentUnderArbeidAsSmartdokument, DokumentUnderArbeidAsHoveddokument( id = id, name = name, diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 8d10a9128..8d2a01633 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -503,6 +503,22 @@ class DokumentUnderArbeidService( return dokument } + fun debugfunction( + dokumentId: UUID, + journalpostIdSet: Set + ) { + val dokument = dokumentUnderArbeidRepository.getReferenceById(dokumentId) + if (dokument !is DokumentUnderArbeidAsHoveddokument) { + throw RuntimeException("this document does not support journalposter.") + } +// val oldValue = dokument.journalposter + + dokument.journalposter.clear() + dokument.journalposter.addAll(journalpostIdSet) + dokumentUnderArbeidRepository.save(dokument) + } + + private fun updateJournalposter( behandlingId: UUID, dokumentId: UUID, @@ -520,7 +536,9 @@ class DokumentUnderArbeidService( val behandling = behandlingService.getBehandlingForUpdateBySystembruker(behandlingId) val oldValue = dokument.journalposter - dokument.journalposter = journalpostIdSet + + dokument.journalposter.clear() + dokument.journalposter.addAll(journalpostIdSet) behandling.publishEndringsloggEvent( saksbehandlerident = SYSTEMBRUKER, @@ -624,9 +642,11 @@ class DokumentUnderArbeidService( vedlegg.forEach { it.markerFerdigHvisIkkeAlleredeMarkertFerdig(tidspunkt = now, saksbehandlerIdent = ident) } - innholdsfortegnelseService.saveInnholdsfortegnelse( - dokumentId, - mapBrevmottakerIdentToBrevmottakerInput.map { it.navn }) + if (vedlegg.size > 1) { + innholdsfortegnelseService.saveInnholdsfortegnelse( + dokumentId, + mapBrevmottakerIdentToBrevmottakerInput.map { it.navn }) + } behandling.publishEndringsloggEvent( saksbehandlerident = ident, @@ -1041,7 +1061,11 @@ class DokumentUnderArbeidService( val vedlegg = dokumentUnderArbeidCommonService.findVedleggByParentId(hovedDokument.id) val behandling: Behandling = behandlingService.getBehandlingForUpdateBySystembruker(hovedDokument.behandlingId) - logger.debug("calling fullfoerDokumentEnhet ({}) for hoveddokument with id {}", hovedDokument.dokumentEnhetId, hovedDokumentId) + logger.debug( + "calling fullfoerDokumentEnhet ({}) for hoveddokument with id {}", + hovedDokument.dokumentEnhetId, + hovedDokumentId + ) val documentInfoList = kabalDocumentGateway.fullfoerDokumentEnhet(dokumentEnhetId = hovedDokument.dokumentEnhetId!!) @@ -1066,7 +1090,10 @@ class DokumentUnderArbeidService( val now = LocalDateTime.now() - logger.debug("about to call hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) for dokument with id {}", hovedDokumentId) + logger.debug( + "about to call hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) for dokument with id {}", + hovedDokumentId + ) hovedDokument.ferdigstillHvisIkkeAlleredeFerdigstilt(now) if (hovedDokument is DokumentUnderArbeidAsSmartdokument) { try { @@ -1076,7 +1103,10 @@ class DokumentUnderArbeidService( } } - logger.debug("about to call ferdigstillHvisIkkeAlleredeFerdigstilt(now) for vedlegg of dokument with id {}", hovedDokumentId) + logger.debug( + "about to call ferdigstillHvisIkkeAlleredeFerdigstilt(now) for vedlegg of dokument with id {}", + hovedDokumentId + ) vedlegg.forEach { it.ferdigstillHvisIkkeAlleredeFerdigstilt(now) if (it is DokumentUnderArbeidAsSmartdokument) { @@ -1087,7 +1117,7 @@ class DokumentUnderArbeidService( } } } - + logger.debug("about to return hoveddokument for hoveddokumentId {}", hovedDokumentId) return hovedDokument } diff --git a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt index b5bc2e328..871d99212 100644 --- a/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt +++ b/src/main/kotlin/no/nav/klage/oppgave/clients/kabaldocument/KabalDocumentMapper.kt @@ -39,9 +39,9 @@ class KabalDocumentMapper( innholdsfortegnelse: Innholdsfortegnelse?, ): DokumentEnhetWithDokumentreferanserInput { - val innholdsfortegnelseDocument = if (vedlegg.size > 1) { + val innholdsfortegnelseDocument = if (innholdsfortegnelse != null && vedlegg.size > 1) { DokumentEnhetWithDokumentreferanserInput.DokumentInput.Dokument( - mellomlagerId = innholdsfortegnelse?.mellomlagerId!!, + mellomlagerId = innholdsfortegnelse.mellomlagerId!!, name = "Innholdsfortegnelse" ) } else null diff --git a/src/main/resources/db/migration/V92__Unique_constraint_innholdsfortegnelse.sql b/src/main/resources/db/migration/V92__Unique_constraint_innholdsfortegnelse.sql new file mode 100644 index 000000000..3758a26c8 --- /dev/null +++ b/src/main/resources/db/migration/V92__Unique_constraint_innholdsfortegnelse.sql @@ -0,0 +1,2 @@ +ALTER TABLE klage.innholdsfortegnelse + ADD CONSTRAINT unique_innholdsfortegnelse UNIQUE (hoveddokument_id); diff --git a/src/test/kotlin/no/nav/klage/oppgave/service/DokumentUnderArbeidServiceTest.kt b/src/test/kotlin/no/nav/klage/oppgave/service/DokumentUnderArbeidServiceTest.kt new file mode 100644 index 000000000..b2129b432 --- /dev/null +++ b/src/test/kotlin/no/nav/klage/oppgave/service/DokumentUnderArbeidServiceTest.kt @@ -0,0 +1,140 @@ +package no.nav.klage.oppgave.service + +import com.ninjasquad.springmockk.MockkBean +import no.nav.klage.dokument.clients.kabaljsontopdf.KabalJsonToPdfClient +import no.nav.klage.dokument.clients.kabalsmarteditorapi.DefaultKabalSmartEditorApiGateway +import no.nav.klage.dokument.domain.dokumenterunderarbeid.DokumentUnderArbeidJournalpostId +import no.nav.klage.dokument.domain.dokumenterunderarbeid.OpplastetDokumentUnderArbeidAsHoveddokument +import no.nav.klage.dokument.repositories.* +import no.nav.klage.dokument.service.* +import no.nav.klage.kodeverk.DokumentType +import no.nav.klage.oppgave.clients.ereg.EregClient +import no.nav.klage.oppgave.clients.kabaldocument.KabalDocumentGateway +import no.nav.klage.oppgave.clients.kabaldocument.KabalDocumentMapper +import no.nav.klage.oppgave.clients.saf.graphql.SafGraphQlClient +import no.nav.klage.oppgave.db.TestPostgresqlContainer +import no.nav.klage.oppgave.domain.klage.BehandlingRole.KABAL_SAKSBEHANDLING +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest +import org.springframework.context.ApplicationEventPublisher +import org.springframework.test.context.ActiveProfiles +import org.testcontainers.junit.jupiter.Container +import org.testcontainers.junit.jupiter.Testcontainers +import java.time.LocalDateTime +import java.util.* + + +@ActiveProfiles("local") +@DataJpaTest +@Testcontainers +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +class DokumentUnderArbeidServiceTest { + companion object { + @Container + @JvmField + val postgreSQLContainer: TestPostgresqlContainer = TestPostgresqlContainer.instance + } + + @Autowired + lateinit var dokumentUnderArbeidRepository: DokumentUnderArbeidRepository + + @MockkBean + lateinit var dokumentUnderArbeidCommonService: DokumentUnderArbeidCommonService + @MockkBean + lateinit var opplastetDokumentUnderArbeidAsHoveddokumentRepository: OpplastetDokumentUnderArbeidAsHoveddokumentRepository + @MockkBean + lateinit var opplastetDokumentUnderArbeidAsVedleggRepository: OpplastetDokumentUnderArbeidAsVedleggRepository + @MockkBean + lateinit var smartDokumentUnderArbeidAsHoveddokumentRepository: SmartdokumentUnderArbeidAsHoveddokumentRepository + @MockkBean + lateinit var smartDokumentUnderArbeidAsVedleggRepository: SmartdokumentUnderArbeidAsVedleggRepository + @MockkBean + lateinit var journalfoertDokumentUnderArbeidRepository: JournalfoertDokumentUnderArbeidAsVedleggRepository + @MockkBean + lateinit var attachmentValidator: MellomlagretDokumentValidatorService + @MockkBean + lateinit var mellomlagerService: MellomlagerService + @MockkBean + lateinit var smartEditorApiGateway: DefaultKabalSmartEditorApiGateway + @MockkBean + lateinit var kabalJsonToPdfClient: KabalJsonToPdfClient + @MockkBean + lateinit var behandlingService: BehandlingService + @MockkBean + lateinit var kabalDocumentGateway: KabalDocumentGateway + @MockkBean + lateinit var applicationEventPublisher: ApplicationEventPublisher + @MockkBean + lateinit var safClient: SafGraphQlClient + @MockkBean + lateinit var innloggetSaksbehandlerService: InnloggetSaksbehandlerService + @MockkBean + lateinit var dokumentService: DokumentService + @MockkBean + lateinit var kabalDocumentMapper: KabalDocumentMapper + @MockkBean + lateinit var eregClient: EregClient + @MockkBean + lateinit var innholdsfortegnelseService: InnholdsfortegnelseService + + lateinit var dokumentUnderArbeidService: DokumentUnderArbeidService + + + @BeforeEach + fun setup() { + dokumentUnderArbeidService = DokumentUnderArbeidService( + dokumentUnderArbeidRepository = dokumentUnderArbeidRepository, + dokumentUnderArbeidCommonService = dokumentUnderArbeidCommonService, + opplastetDokumentUnderArbeidAsHoveddokumentRepository = opplastetDokumentUnderArbeidAsHoveddokumentRepository, + opplastetDokumentUnderArbeidAsVedleggRepository = opplastetDokumentUnderArbeidAsVedleggRepository, + smartDokumentUnderArbeidAsHoveddokumentRepository = smartDokumentUnderArbeidAsHoveddokumentRepository, + smartDokumentUnderArbeidAsVedleggRepository = smartDokumentUnderArbeidAsVedleggRepository, + journalfoertDokumentUnderArbeidRepository = journalfoertDokumentUnderArbeidRepository, + attachmentValidator = attachmentValidator, + mellomlagerService = mellomlagerService, + smartEditorApiGateway = smartEditorApiGateway, + kabalJsonToPdfClient = kabalJsonToPdfClient, + behandlingService = behandlingService, + kabalDocumentGateway = kabalDocumentGateway, + applicationEventPublisher = applicationEventPublisher, + safClient = safClient, + innloggetSaksbehandlerService = innloggetSaksbehandlerService, + dokumentService = dokumentService, + kabalDocumentMapper = kabalDocumentMapper, + eregClient = eregClient, + innholdsfortegnelseService = innholdsfortegnelseService + ) + + val behandlingId = UUID.randomUUID() + val hovedDokument = OpplastetDokumentUnderArbeidAsHoveddokument( + id = UUID.fromString("0a57804e-6da4-4e4b-9f74-33e8791dbe7e"), + mellomlagerId = UUID.randomUUID().toString(), + mellomlagretDate = LocalDateTime.now(), + markertFerdig = LocalDateTime.now(), + size = 1002, + name = "Vedtak.pdf", + behandlingId = behandlingId, + dokumentType = DokumentType.BREV, + creatorIdent = "null", + creatorRole = KABAL_SAKSBEHANDLING, + created = LocalDateTime.now(), + modified = LocalDateTime.now(), + ) + dokumentUnderArbeidRepository.save(hovedDokument) + } + + @Test + fun `updateJournalposter`() { + dokumentUnderArbeidService.debugfunction( + UUID.fromString("0a57804e-6da4-4e4b-9f74-33e8791dbe7e"), + setOf( + DokumentUnderArbeidJournalpostId( + journalpostId = "journalpostId" + ) + ) + ) + } +} \ No newline at end of file From 2d62c0a5a360a33a33f7ae516b41a664f59f5a37 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Wed, 11 Oct 2023 16:35:05 +0200 Subject: [PATCH 33/35] Fix for returning updated document to view when setting parent. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../klage/dokument/service/DokumentUnderArbeidService.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 8d2a01633..53357634f 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -915,7 +915,7 @@ class DokumentUnderArbeidService( currentDokumentId: UUID, parentId: UUID, ): Pair { - val dokumentUnderArbeid = + var dokumentUnderArbeid: DokumentUnderArbeid = dokumentUnderArbeidRepository.getReferenceById(currentDokumentId) if (dokumentUnderArbeid.erMarkertFerdig()) { @@ -940,14 +940,14 @@ class DokumentUnderArbeidService( when (dokumentUnderArbeid) { is SmartdokumentUnderArbeidAsHoveddokument -> { smartDokumentUnderArbeidAsHoveddokumentRepository.delete(dokumentUnderArbeid) - smartDokumentUnderArbeidAsVedleggRepository.save( + dokumentUnderArbeid = smartDokumentUnderArbeidAsVedleggRepository.save( dokumentUnderArbeid.asVedlegg(parentId = parentId) ) } is OpplastetDokumentUnderArbeidAsHoveddokument -> { opplastetDokumentUnderArbeidAsHoveddokumentRepository.delete(dokumentUnderArbeid) - opplastetDokumentUnderArbeidAsVedleggRepository.save( + dokumentUnderArbeid = opplastetDokumentUnderArbeidAsVedleggRepository.save( dokumentUnderArbeid.asVedlegg(parentId = parentId) ) } From 4391ee344098ff751df38c3de1943d5ff4bddf3d Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 12 Oct 2023 09:07:50 +0200 Subject: [PATCH 34/35] "feature toggle" innholdsfortegnelse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../nav/klage/dokument/service/DokumentUnderArbeidService.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index 53357634f..c437ca3b0 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -642,11 +642,15 @@ class DokumentUnderArbeidService( vedlegg.forEach { it.markerFerdigHvisIkkeAlleredeMarkertFerdig(tidspunkt = now, saksbehandlerIdent = ident) } +/* + //Don't create innholdsfortegnelse yet + if (vedlegg.size > 1) { innholdsfortegnelseService.saveInnholdsfortegnelse( dokumentId, mapBrevmottakerIdentToBrevmottakerInput.map { it.navn }) } +*/ behandling.publishEndringsloggEvent( saksbehandlerident = ident, From 2891161c5115c09e01610fcf452196416fa524a0 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 12 Oct 2023 09:43:57 +0200 Subject: [PATCH 35/35] Also set parent on vedlegg when they get a new parent. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Øyvind Norsted Wedøe --- .../nav/klage/dokument/service/DokumentUnderArbeidService.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt index c437ca3b0..c6426604b 100644 --- a/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt +++ b/src/main/kotlin/no/nav/klage/dokument/service/DokumentUnderArbeidService.kt @@ -955,6 +955,10 @@ class DokumentUnderArbeidService( dokumentUnderArbeid.asVedlegg(parentId = parentId) ) } + + is DokumentUnderArbeidAsVedlegg -> { + dokumentUnderArbeid.parentId = parentId + } } dokumentUnderArbeid to null }