From a09a83bbc50912a0c5d6d10ce5ff188000e4765f Mon Sep 17 00:00:00 2001 From: pagopa-github-bot Date: Wed, 10 Jul 2024 17:09:27 +0000 Subject: [PATCH 1/2] [PAGOPA-1954] duplicated pdf file --- helm/Chart.yaml | 4 ++-- helm/values-dev.yaml | 2 +- helm/values-prod.yaml | 2 +- helm/values-uat.yaml | 2 +- openapi/openapi.json | 2 +- pom.xml | 2 +- .../pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java | 2 +- .../service/impl/GenerateReceiptPdfServiceImpl.java | 7 ++++--- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/helm/Chart.yaml b/helm/Chart.yaml index dfc8d2dd..d91799f9 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: pagopareceiptpdfhelpdesk description: Microservice description type: application -version: 0.166.0 -appVersion: 0.9.21-1 +version: 0.167.0 +appVersion: 0.10.0 dependencies: - name: microservice-chart version: 2.4.0 diff --git a/helm/values-dev.yaml b/helm/values-dev.yaml index 0935fdb3..d778ee04 100644 --- a/helm/values-dev.yaml +++ b/helm/values-dev.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/helm/values-prod.yaml b/helm/values-prod.yaml index 76fd62f7..a43d1daf 100644 --- a/helm/values-prod.yaml +++ b/helm/values-prod.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/helm/values-uat.yaml b/helm/values-uat.yaml index 5969dcd8..cfabddfa 100644 --- a/helm/values-uat.yaml +++ b/helm/values-uat.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/openapi/openapi.json b/openapi/openapi.json index 08543d3b..090dcae7 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -4,7 +4,7 @@ "title": "Receipts Helpdesk", "description": "Microservice for exposing REST APIs about receipts helpdesk.", "termsOfService": "https://www.pagopa.gov.it/", - "version": "0.9.21-1" + "version": "0.10.0" }, "servers": [ { diff --git a/pom.xml b/pom.xml index 3deecd7f..33beb341 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ it.gov.pagopa.receipt receipt-pdf-helpdesk - 0.9.21-1 + 0.10.0 jar pagopa-receipt-pdf-helpdesk diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java index 367bba1a..2bce90e2 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java @@ -76,7 +76,7 @@ public BlobStorageResponse savePdfToBlobStorage(InputStream pdf, String fileName //Create the container and return a container client object BlobContainerClient blobContainerClient = this.blobServiceClient.getBlobContainerClient(containerName); - String fileNamePdf = fileName + FILE_EXTENSION; + String fileNamePdf = fileName.substring(fileName.lastIndexOf(".")).isEmpty() ? fileName + FILE_EXTENSION : fileName; //Get a reference to a blob BlobClient blobClient = blobContainerClient.getBlobClient(fileNamePdf); diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java index df22f9d6..77df5296 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java @@ -26,6 +26,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import io.micrometer.core.instrument.util.StringUtils; import java.io.BufferedInputStream; @@ -34,6 +35,7 @@ import java.nio.file.Path; import java.util.List; import java.util.Objects; +import java.util.Optional; import static org.apache.http.HttpStatus.SC_OK; @@ -103,10 +105,9 @@ public boolean verifyAndUpdateReceipt(Receipt receipt, PdfGeneration pdfGenerati this.payerMetadataManagment(receipt, payerMetadata); - if (debtorMetadata.getStatusCode() != SC_OK - || payerMetadata.getStatusCode() != SC_OK) { + if ((debtorMetadata != null && debtorMetadata.getStatusCode() != SC_OK) || payerMetadata.getStatusCode() != SC_OK) { String errMsg = String.format("Receipt generation fail for debtor (status: %s) and/or payer (status: %s)", - debtorMetadata.getStatusCode(), payerMetadata.getStatusCode()); + Optional.ofNullable(debtorMetadata).map(d -> d.getStatusCode()).orElse(null), payerMetadata.getStatusCode()); throw new ReceiptGenerationNotToRetryException(errMsg); } return result; From 2f378dc71ca5024988e92a787bef379b082992f0 Mon Sep 17 00:00:00 2001 From: pagopa-github-bot Date: Wed, 10 Jul 2024 17:09:27 +0000 Subject: [PATCH 2/2] [PAGOPA-1954] duplicated pdf file: fix metadata --- helm/Chart.yaml | 4 +- helm/values-dev.yaml | 2 +- helm/values-prod.yaml | 2 +- helm/values-uat.yaml | 2 +- openapi/openapi.json | 2 +- pom.xml | 2 +- .../pdf/helpdesk/RegenerateReceiptPdf.java | 39 +++++++++++-------- .../client/impl/ReceiptBlobClientImpl.java | 3 +- .../impl/GenerateReceiptPdfServiceImpl.java | 7 ++-- 9 files changed, 35 insertions(+), 28 deletions(-) diff --git a/helm/Chart.yaml b/helm/Chart.yaml index dfc8d2dd..d91799f9 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: pagopareceiptpdfhelpdesk description: Microservice description type: application -version: 0.166.0 -appVersion: 0.9.21-1 +version: 0.167.0 +appVersion: 0.10.0 dependencies: - name: microservice-chart version: 2.4.0 diff --git a/helm/values-dev.yaml b/helm/values-dev.yaml index 0935fdb3..d778ee04 100644 --- a/helm/values-dev.yaml +++ b/helm/values-dev.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/helm/values-prod.yaml b/helm/values-prod.yaml index 76fd62f7..a43d1daf 100644 --- a/helm/values-prod.yaml +++ b/helm/values-prod.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/helm/values-uat.yaml b/helm/values-uat.yaml index 5969dcd8..cfabddfa 100644 --- a/helm/values-uat.yaml +++ b/helm/values-uat.yaml @@ -4,7 +4,7 @@ microservice-chart: fullnameOverride: "" image: repository: ghcr.io/pagopa/pagopa-receipt-pdf-helpdesk - tag: "0.9.21-1" + tag: "0.10.0" pullPolicy: Always # https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs livenessProbe: diff --git a/openapi/openapi.json b/openapi/openapi.json index 08543d3b..090dcae7 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -4,7 +4,7 @@ "title": "Receipts Helpdesk", "description": "Microservice for exposing REST APIs about receipts helpdesk.", "termsOfService": "https://www.pagopa.gov.it/", - "version": "0.9.21-1" + "version": "0.10.0" }, "servers": [ { diff --git a/pom.xml b/pom.xml index 3deecd7f..33beb341 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ it.gov.pagopa.receipt receipt-pdf-helpdesk - 0.9.21-1 + 0.10.0 jar pagopa-receipt-pdf-helpdesk diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/RegenerateReceiptPdf.java b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/RegenerateReceiptPdf.java index fac31d83..a84f3395 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/RegenerateReceiptPdf.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/RegenerateReceiptPdf.java @@ -238,30 +238,35 @@ private static void checkOrCreateAttachments(Receipt receipt) { String debtorCF = receipt.getEventData().getDebtorFiscalCode(); String payerCF = receipt.getEventData().getPayerFiscalCode(); if (payerCF != null) { - if (payerCF.equals(debtorCF) && !receiptMetadataExist(receipt.getMdAttach())) { - String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); - String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), PAYER_TEMPLATE_SUFFIX); - receipt.setMdAttach(ReceiptMetadata.builder().name(blobName).build()); - } else { - if (!receiptMetadataExist(receipt.getMdAttachPayer())){ - String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); - String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), PAYER_TEMPLATE_SUFFIX); - receipt.setMdAttachPayer(ReceiptMetadata.builder().name(blobName).build()); - } - if (!receiptMetadataExist(receipt.getMdAttach())) { - String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); - String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), DEBTOR_TEMPLATE_SUFFIX); - receipt.setMdAttach(ReceiptMetadata.builder().name(blobName).build()); - } - } + createPayerAndDebtorMdAttach(receipt, blobNameFormat, blobNameDateFormat, debtorCF, payerCF); } else { - if (!receiptMetadataExist(receipt.getMdAttach())) { + if (!"ANONIMO".equals(debtorCF) && !receiptMetadataExist(receipt.getMdAttach())) { String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), DEBTOR_TEMPLATE_SUFFIX); receipt.setMdAttach(ReceiptMetadata.builder().name(blobName).build()); } } } + + private static void createPayerAndDebtorMdAttach(Receipt receipt, final String blobNameFormat, + final String blobNameDateFormat, String debtorCF, String payerCF) { + if (payerCF.equals(debtorCF) && !receiptMetadataExist(receipt.getMdAttach())) { + String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); + String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), PAYER_TEMPLATE_SUFFIX); + receipt.setMdAttach(ReceiptMetadata.builder().name(blobName).build()); + } else { + if (!receiptMetadataExist(receipt.getMdAttachPayer())){ + String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); + String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), PAYER_TEMPLATE_SUFFIX); + receipt.setMdAttachPayer(ReceiptMetadata.builder().name(blobName).build()); + } + if (!"ANONIMO".equals(debtorCF) && !receiptMetadataExist(receipt.getMdAttach())) { + String dateFormatted = LocalDate.now().format(DateTimeFormatter.ofPattern(blobNameDateFormat)); + String blobName = String.format(blobNameFormat, TEMPLATE_PREFIX, dateFormatted, receipt.getEventId(), DEBTOR_TEMPLATE_SUFFIX); + receipt.setMdAttach(ReceiptMetadata.builder().name(blobName).build()); + } + } + } private void updateReceiptInfo(OutputBinding documentdb, boolean isCart, boolean isToUpdateMetadata, BizEvent bizEvent, List listBizEvent, Receipt receipt, PdfGeneration pdfGeneration) throws PDVTokenizerException, JsonProcessingException { diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java index 367bba1a..a79e160f 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/client/impl/ReceiptBlobClientImpl.java @@ -15,6 +15,7 @@ import it.gov.pagopa.receipt.pdf.helpdesk.client.ReceiptBlobClient; import it.gov.pagopa.receipt.pdf.helpdesk.exception.BlobStorageClientException; import it.gov.pagopa.receipt.pdf.helpdesk.model.response.BlobStorageResponse; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,7 +77,7 @@ public BlobStorageResponse savePdfToBlobStorage(InputStream pdf, String fileName //Create the container and return a container client object BlobContainerClient blobContainerClient = this.blobServiceClient.getBlobContainerClient(containerName); - String fileNamePdf = fileName + FILE_EXTENSION; + String fileNamePdf = fileName.substring(fileName.lastIndexOf(".") + 1).equalsIgnoreCase(FILE_EXTENSION) ? fileName : fileName + FILE_EXTENSION; //Get a reference to a blob BlobClient blobClient = blobContainerClient.getBlobClient(fileNamePdf); diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java index df22f9d6..77df5296 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/helpdesk/service/impl/GenerateReceiptPdfServiceImpl.java @@ -26,6 +26,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import io.micrometer.core.instrument.util.StringUtils; import java.io.BufferedInputStream; @@ -34,6 +35,7 @@ import java.nio.file.Path; import java.util.List; import java.util.Objects; +import java.util.Optional; import static org.apache.http.HttpStatus.SC_OK; @@ -103,10 +105,9 @@ public boolean verifyAndUpdateReceipt(Receipt receipt, PdfGeneration pdfGenerati this.payerMetadataManagment(receipt, payerMetadata); - if (debtorMetadata.getStatusCode() != SC_OK - || payerMetadata.getStatusCode() != SC_OK) { + if ((debtorMetadata != null && debtorMetadata.getStatusCode() != SC_OK) || payerMetadata.getStatusCode() != SC_OK) { String errMsg = String.format("Receipt generation fail for debtor (status: %s) and/or payer (status: %s)", - debtorMetadata.getStatusCode(), payerMetadata.getStatusCode()); + Optional.ofNullable(debtorMetadata).map(d -> d.getStatusCode()).orElse(null), payerMetadata.getStatusCode()); throw new ReceiptGenerationNotToRetryException(errMsg); } return result;