From 856c1b1982e8c2bcbeb2fa4261684058397f84ed Mon Sep 17 00:00:00 2001 From: Ugur Cenar Date: Mon, 13 Nov 2023 09:38:04 +0100 Subject: [PATCH] Legg til kommentar etter retur --- .../service/DistribuerJournalpostService.kt | 7 +- .../bidrag/dokument/arkiv/dto/Journalpost.kt | 10 +++ .../controller/DistribuerControllerTest.kt | 27 +++---- .../hendelser/OppgaveHendelseListenerTest.kt | 72 +++++++++++++++---- 4 files changed, 88 insertions(+), 28 deletions(-) diff --git a/src/main/java/no/nav/bidrag/dokument/arkiv/service/DistribuerJournalpostService.kt b/src/main/java/no/nav/bidrag/dokument/arkiv/service/DistribuerJournalpostService.kt index 7d653016..4d9a4d34 100644 --- a/src/main/java/no/nav/bidrag/dokument/arkiv/service/DistribuerJournalpostService.kt +++ b/src/main/java/no/nav/bidrag/dokument/arkiv/service/DistribuerJournalpostService.kt @@ -224,7 +224,7 @@ class DistribuerJournalpostService( ) // Distribusjonsløpet oppdaterer journalpost og overskriver alt av tilleggsopplysninger. Hent journalpost på nytt for å unngå overskrive noe som distribusjon har lagret - oppdaterTilleggsopplysninger(journalpostId, journalpost, adresse) + oppdaterTilleggsopplysninger(journalpostId, journalpost, adresse, bestemKanalResponse = distribusjonKanal) oppdaterDokumentdatoTilIdag(journalpostId, journalpost) measureDistribution(journalpost, batchId) return distribuerResponse @@ -267,12 +267,15 @@ class DistribuerJournalpostService( journalpostId: Long, journalpostFør: Journalpost, adresse: DistribuerTilAdresse? = null, - erLokalUtskrift: Boolean = false + erLokalUtskrift: Boolean = false, + bestemKanalResponse: BestemKanalResponse? = null ) { val journalpostEtter = hentJournalpost(journalpostId) leggTilEksisterendeTilleggsopplysninger(journalpostEtter, journalpostFør) erLokalUtskrift.ifFalse { adresse?.run { lagreAdresse(adresse, journalpostEtter) } } erLokalUtskrift.ifFalse { journalpostEtter.tilleggsopplysninger.setDistribusjonBestillt() } + bestemKanalResponse?.distribusjonskanal?.takeIf { it == DistribusjonsKanal.DITT_NAV || it == DistribusjonsKanal.SDP } + ?.let { journalpostEtter.tilleggsopplysninger.setOriginalDistribuertDigitalt() } val saksbehandlerId = saksbehandlerInfoManager.hentSaksbehandlerBrukerId() saksbehandlerId?.run { journalpostEtter.tilleggsopplysninger.setDistribuertAvIdent( diff --git a/src/main/kotlin/no/nav/bidrag/dokument/arkiv/dto/Journalpost.kt b/src/main/kotlin/no/nav/bidrag/dokument/arkiv/dto/Journalpost.kt index 18888d43..e3f32333 100644 --- a/src/main/kotlin/no/nav/bidrag/dokument/arkiv/dto/Journalpost.kt +++ b/src/main/kotlin/no/nav/bidrag/dokument/arkiv/dto/Journalpost.kt @@ -47,6 +47,7 @@ const val DISTRIBUERT_AV_IDENT_KEY = "distribuertAvIdent" const val DOKDIST_BESTILLING_ID = "dokdistBestillingsId" const val SAMHANDLER_ID_KEY = "samhandlerId" const val DISTRIBUSJON_BESTILT_KEY = "distribusjonBestilt" +const val ORIGINALT_DISTRIBUERT_DIGITALT_KEY = "origDistDigitalt" const val AVVIK_ENDRET_TEMA_KEY = "avvikEndretTema" const val ORIGINAL_BESTILT_KEY = "originalBestilt" const val AVVIK_NY_DISTRIBUSJON_BESTILT_KEY = "avvikNyDistribusjon" @@ -739,6 +740,15 @@ class TilleggsOpplysninger : MutableList> by mutableListOf() this.removeAll { it["nokkel"]?.contains(DOKDIST_BESTILLING_ID) ?: false } } + fun setOriginalDistribuertDigitalt() { + this.removeAll { it["nokkel"]?.contains(ORIGINALT_DISTRIBUERT_DIGITALT_KEY) ?: false } + this.add(mapOf("nokkel" to ORIGINALT_DISTRIBUERT_DIGITALT_KEY, "verdi" to "true")) + } + + fun isOriginalDistribuertDigitalt(): Boolean { + return this.any { it["nokkel"]?.contains(ORIGINALT_DISTRIBUERT_DIGITALT_KEY) ?: false } + } + fun setDistribusjonBestillt() { this.removeAll { it["nokkel"]?.contains(DISTRIBUSJON_BESTILT_KEY) ?: false } this.add(mapOf("nokkel" to DISTRIBUSJON_BESTILT_KEY, "verdi" to "true")) diff --git a/src/test/java/no/nav/bidrag/dokument/arkiv/controller/DistribuerControllerTest.kt b/src/test/java/no/nav/bidrag/dokument/arkiv/controller/DistribuerControllerTest.kt index 89c2cd9d..9551ac83 100644 --- a/src/test/java/no/nav/bidrag/dokument/arkiv/controller/DistribuerControllerTest.kt +++ b/src/test/java/no/nav/bidrag/dokument/arkiv/controller/DistribuerControllerTest.kt @@ -162,11 +162,11 @@ internal class DistribuerControllerTest : AbstractControllerTest() { stubs.verifyStub.dokarkivOppdaterKalt( JOURNALPOST_ID, "{\"tilleggsopplysninger\":[" + - "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + - "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"}," + - "{\"nokkel\":\"distAdresse0\",\"verdi\":\"{\\\"adresselinje1\\\":\\\"Adresselinje1\\\",\\\"adresselinje2\\\":\\\"Adresselinje2\\\",\\\"adresselinje3\\\":\\\"Adresselinje3\\\",\\\"la\"}," + - "{\"nokkel\":\"distAdresse1\",\"verdi\":\"nd\\\":\\\"NO\\\",\\\"postnummer\\\":\\\"3000\\\",\\\"poststed\\\":\\\"Ingen\\\"}\"}," + - "{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"},{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" + "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + + "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"}," + + "{\"nokkel\":\"distAdresse0\",\"verdi\":\"{\\\"adresselinje1\\\":\\\"Adresselinje1\\\",\\\"adresselinje2\\\":\\\"Adresselinje2\\\",\\\"adresselinje3\\\":\\\"Adresselinje3\\\",\\\"la\"}," + + "{\"nokkel\":\"distAdresse1\",\"verdi\":\"nd\\\":\\\"NO\\\",\\\"postnummer\\\":\\\"3000\\\",\\\"poststed\\\":\\\"Ingen\\\"}\"}," + + "{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"},{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" ) } } @@ -258,9 +258,10 @@ internal class DistribuerControllerTest : AbstractControllerTest() { stubs.verifyStub.dokarkivOppdaterKalt( JOURNALPOST_ID, "{\"tilleggsopplysninger\":[" + - "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + - "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"},{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + - "{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" + "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + + "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"},{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"origDistDigitalt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" ) } } @@ -350,11 +351,11 @@ internal class DistribuerControllerTest : AbstractControllerTest() { stubs.verifyStub.dokarkivOppdaterKalt( JOURNALPOST_ID, "{\"tilleggsopplysninger\":[" + - "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + - "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"}," + - "{\"nokkel\":\"distAdresse0\",\"verdi\":\"{\\\"adresselinje1\\\":\\\"Adresselinje1\\\",\\\"adresselinje2\\\":\\\"Adresselinje2\\\",\\\"adresselinje3\\\":\\\"Adresselinje3\\\",\\\"la\"}," + - "{\"nokkel\":\"distAdresse1\",\"verdi\":\"nd\\\":\\\"NO\\\",\\\"postnummer\\\":\\\"3000\\\",\\\"poststed\\\":\\\"Ingen\\\"}\"}," + - "{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"},{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" + "{\"nokkel\":\"dokdistBestillingsId\",\"verdi\":\"asdsadasdsadasdasd\"}," + + "{\"nokkel\":\"journalfortAvIdent\",\"verdi\":\"Z99999\"}," + + "{\"nokkel\":\"distAdresse0\",\"verdi\":\"{\\\"adresselinje1\\\":\\\"Adresselinje1\\\",\\\"adresselinje2\\\":\\\"Adresselinje2\\\",\\\"adresselinje3\\\":\\\"Adresselinje3\\\",\\\"la\"}," + + "{\"nokkel\":\"distAdresse1\",\"verdi\":\"nd\\\":\\\"NO\\\",\\\"postnummer\\\":\\\"3000\\\",\\\"poststed\\\":\\\"Ingen\\\"}\"}," + + "{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"},{\"nokkel\":\"distribuertAvIdent\",\"verdi\":\"aud-localhost\"}],\"dokumenter\":[]}" ) } } diff --git a/src/test/java/no/nav/bidrag/dokument/arkiv/hendelser/OppgaveHendelseListenerTest.kt b/src/test/java/no/nav/bidrag/dokument/arkiv/hendelser/OppgaveHendelseListenerTest.kt index 862eabc9..e93b4f61 100644 --- a/src/test/java/no/nav/bidrag/dokument/arkiv/hendelser/OppgaveHendelseListenerTest.kt +++ b/src/test/java/no/nav/bidrag/dokument/arkiv/hendelser/OppgaveHendelseListenerTest.kt @@ -109,10 +109,10 @@ class OppgaveHendelseListenerTest { stubs.verifyStub.dokarkivOppdaterKalt( journalpostId, "\"tilleggsopplysninger\":" + - "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + - "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + - "{\"nokkel\":\"Lretur0_2020-10-02\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}," + - "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" + "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + + "{\"nokkel\":\"Lretur0_2020-10-02\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}," + + "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" ) }, { stubs.verifyStub.oppgaveOppdaterKalt(1, safResponse.hentSaksnummer()) } @@ -213,10 +213,10 @@ class OppgaveHendelseListenerTest { stubs.verifyStub.dokarkivOppdaterKalt( journalpostId, "\"tilleggsopplysninger\":" + - "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + - "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + - "{\"nokkel\":\"Lretur0_2020-10-02\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}," + - "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" + "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + + "{\"nokkel\":\"Lretur0_2020-10-02\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}," + + "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" ) }, { stubs.verifyStub.oppgaveOpprettIkkeKalt() } @@ -262,8 +262,8 @@ class OppgaveHendelseListenerTest { stubs.verifyStub.dokarkivOppdaterKalt( journalpostId, "\"tilleggsopplysninger\":" + - "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + - "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" + "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"Returpost\"}]" ) } ) @@ -322,6 +322,52 @@ class OppgaveHendelseListenerTest { ) } + @Test + fun `skal oppdatere oppgave og returlogg med kommentar hvis retur kommer fra navno`() { + stubs.mockSts() + stubs.mockBidragOrganisasjonSaksbehandler() + stubs.mockOppdaterOppgave(HttpStatus.CONFLICT, null, "correct") + stubs.mockOppdaterOppgave(HttpStatus.OK, "correct", null) + val journalpostId = 201028011L + val tilleggsopplysninger = TilleggsOpplysninger() + tilleggsopplysninger.setDistribusjonBestillt() + val safResponse = opprettUtgaendeSafResponse( + journalpostId = journalpostId.toString(), + tilleggsopplysninger = tilleggsopplysninger, + relevanteDatoer = listOf( + DatoType("2021-08-18T13:20:33", "DATO_DOKUMENT") + ) + ) + safResponse.antallRetur = 1 + + stubs.mockSafResponseHentJournalpost(safResponse) + stubs.mockDokarkivOppdaterRequest(journalpostId) + + val oppgaveData = createOppgaveData(versjon = 20, journalpostId = journalpostId.toString()) + stubs.mockHentOppgave(oppgaveData.id, oppgaveData, null, "fetch1") + stubs.mockHentOppgave(oppgaveData.id, oppgaveData.copy(versjon = 22), "fetch1", null) + + val consumerRecord = + ConsumerRecord( + "test", + 0, + 0L, + "key", + objectMapper.writeValueAsString(oppgaveData.toHendelse()) + ) + hendelseListener.lesOppgaveOpprettetHendelse(consumerRecord) + + assertSoftly { + stubs.verifyStub.oppgaveOppdaterKalt(2, safResponse.hentSaksnummer()) + stubs.verifyStub.oppgaveOppdaterKalt( + 1, + safResponse.hentSaksnummer(), + "\"versjon\":22", + "Mottaker har ikke åpnet forsendelsen via www.nav.no innen 40 timer. Ingen postadresse er registrert. Vurder om mottaker har adresse forsendelsen kan sendes til" + ) + } + } + @Test fun shouldUnlockReturLogWhenSameDateExists() { stubs.mockSts() @@ -372,9 +418,9 @@ class OppgaveHendelseListenerTest { stubs.verifyStub.dokarkivOppdaterKalt( journalpostId, "\"tilleggsopplysninger\":" + - "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + - "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + - "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}" + "[{\"nokkel\":\"distribusjonBestilt\",\"verdi\":\"true\"}," + + "{\"nokkel\":\"Lretur0_2020-01-02\",\"verdi\":\"En god begrunnelse for hvorfor dokument kom i retur\"}," + + "{\"nokkel\":\"retur0_${DateUtils.formatDate(LocalDate.now())}\",\"verdi\":\"En annen god begrunnelse for hvorfor dokument kom i retur\"}" ) } )