From 911add1f378a41a1df551fcb035a88a8bee171ba Mon Sep 17 00:00:00 2001 From: OURY Sarah <sarah.oury@soprasteria.com> Date: Mon, 4 Mar 2024 16:32:20 +0000 Subject: [PATCH] [SOY] Nom organisation obligatoire --- CHANGELOG.md | 1 + .../ports/input/ImportDonneesEntreePort.java | 5 ++-- .../impl/ImportDonneesEntreePortImpl.java | 7 ++--- .../controller/ImportCSVController.java | 26 +++++++++++-------- .../src/main/resources/static/openapi.yaml | 14 +++++----- 5 files changed, 30 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbfe0db4..cc197aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Tous les changements de ce projet seront documentés dans ce document. ## [Non livré] +- Le paramètre "nomOrganisation" de l'API de chargement des inventaires devient un champ obligatoire -> [Issue2](https://gitlab-forge.din.developpement-durable.gouv.fr/pub/numeco/m4g/numecoeval/-/issues/2) - Intégrer des nouveaux impacts au référentiel -> [Issue1](https://gitlab-forge.din.developpement-durable.gouv.fr/pub/numeco/m4g/numecoeval/-/issues/1) - Defect: Mauvaise description de l'API de chargement des données d'entrées - Defect : Erreur sur le calcul comparant la date de retrait et la date d'achat pour les équipements physiques diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/ImportDonneesEntreePort.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/ImportDonneesEntreePort.java index 311996e6..60aad67f 100644 --- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/ImportDonneesEntreePort.java +++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/ImportDonneesEntreePort.java @@ -21,9 +21,8 @@ public interface ImportDonneesEntreePort { String MESSAGERIE_CSV_HEADER = "nombreMailEmis;nombreMailEmisXDestinataires;volumeTotalMailEmis;MoisAnnee"; String ENTITE_CSV_HEADER = "nomEntite;nbCollaborateurs;responsableEntite;responsableNumeriqueDurable"; - ResultatImport importCsv(MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, - MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite, - String dateLot, String nomOrganisation, String nomLot); + ResultatImport importCsv(String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, + MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite); Pair<RapportImport, List<DataCenter>> importDataCenter(String nomLot, LocalDate dateLot, String nomOrganisation, MultipartFile csvDataCenter); diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/ImportDonneesEntreePortImpl.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/ImportDonneesEntreePortImpl.java index 9a5978c9..59a63332 100644 --- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/ImportDonneesEntreePortImpl.java +++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/ImportDonneesEntreePortImpl.java @@ -53,13 +53,14 @@ public class ImportDonneesEntreePortImpl implements ImportDonneesEntreePort { final Map<String, String> errorMessages; @Override - public ResultatImport importCsv(MultipartFile csvDataCenter, + public ResultatImport importCsv(String nomOrganisation, String nomLot, String dateLot, + MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, - MultipartFile csvEntite, - String dateLot, String nomOrganisation, String nomLot) { + MultipartFile csvEntite + ) { LocalDate dateLotAsDate = dateLot == null || "".equals(dateLot) ? null : LocalDate.parse(dateLot); ResultatImport resultatImport = new ResultatImport(); diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/ImportCSVController.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/ImportCSVController.java index f8923656..80a48f93 100644 --- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/ImportCSVController.java +++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/ImportCSVController.java @@ -41,14 +41,14 @@ public class ImportCSVController implements ImportsApi { ErrorManagementPostSaveService errorManagementPostSaveService; @Override - public ResponseEntity<List<RapportImportRest>> importCSV(String nomLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite, String dateLot, String nomOrganisation) { - return importInterneCSV(nomLot, dateLot, nomOrganisation, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); + public ResponseEntity<List<RapportImportRest>> importCSV(String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) { + return importInterneCSV(nomOrganisation, nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); } - public ResponseEntity<List<RapportImportRest>> importInterneCSV(String nomLot, String dateLot, String nomOrganisation, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) { + public ResponseEntity<List<RapportImportRest>> importInterneCSV(String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) { return ResponseEntity.ok( importDonneesFromCSV( - nomLot, dateLot, nomOrganisation, + nomOrganisation, nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, @@ -68,18 +68,18 @@ public class ImportCSVController implements ImportsApi { } public List<RapportImportRest> importDonneesFromCSV( - String nomLot, String dateLot, String nomOrganisation, + String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) throws ValidationException { - LOGGER.info("Reception de fichiers pour imports de données d'entrées : Nom de Lot : {}, Date de lot : {}, Nom Organisation : {}", nomLot, dateLot, nomOrganisation); + LOGGER.info("Reception de fichiers pour imports de données d'entrées :Nom Organisation : {}, Nom de Lot : {}, Date de lot : {}", nomOrganisation, nomLot, dateLot); - validateRequestParametersForImportCSV(nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); + validateRequestParametersForImportCSV(nomOrganisation, nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); - return importAllCsv(csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite, dateLot, nomOrganisation, nomLot); + return importAllCsv(nomOrganisation, nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); } /** @@ -95,7 +95,7 @@ public class ImportCSVController implements ImportsApi { * @param csvEntite Fichier CSV des entités * @throws ResponseStatusException avec le statut 400 lorsque les entrées ne sont pas cohérentes. */ - private void validateRequestParametersForImportCSV(String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) { + private void validateRequestParametersForImportCSV(String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) { if (CSVHelper.fileIsNullOrEmpty(csvDataCenter) && CSVHelper.fileIsNullOrEmpty(csvEquipementPhysique) && CSVHelper.fileIsNullOrEmpty(csvEquipementVirtuel) @@ -111,6 +111,10 @@ public class ImportCSVController implements ImportsApi { LOGGER.error("Import: Erreur contrôle : Le nom du Lot ne peut être pas vide"); throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Le nom du Lot ne peut être pas vide"); } + if (StringUtils.isBlank(nomOrganisation)) { + LOGGER.error("Import: Erreur contrôle : Le nom de l'organisation ne peut être pas vide"); + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, " Le nom de l'organisation ne peut être pas vide"); + } if (dateLot != null && !"".equals(dateLot)) { try { @@ -138,9 +142,9 @@ public class ImportCSVController implements ImportsApi { * @return {@link List} des {@link RapportImportRest} correspondant à l'import * @throws ValidationException en cas d'absence de donner à pousser dans le système. */ - private List<RapportImportRest> importAllCsv(MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite, String dateLot, String nomOrganisation, String nomLot) throws ValidationException { + private List<RapportImportRest> importAllCsv(String nomOrganisation, String nomLot, String dateLot, MultipartFile csvDataCenter, MultipartFile csvEquipementPhysique, MultipartFile csvEquipementVirtuel, MultipartFile csvApplication, MultipartFile csvMessagerie, MultipartFile csvEntite) throws ValidationException { // Lecture & conversion - var resultatImport = importDonneesEntreePort.importCsv(csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite, dateLot, nomOrganisation, nomLot); + var resultatImport = importDonneesEntreePort.importCsv(nomOrganisation, nomLot, dateLot, csvDataCenter, csvEquipementPhysique, csvEquipementVirtuel, csvApplication, csvMessagerie, csvEntite); saveDonneesEntreePort.save(resultatImport.getDonneesEntree()); diff --git a/services/api-expositiondonneesentrees/src/main/resources/static/openapi.yaml b/services/api-expositiondonneesentrees/src/main/resources/static/openapi.yaml index 199c1257..821abfa6 100644 --- a/services/api-expositiondonneesentrees/src/main/resources/static/openapi.yaml +++ b/services/api-expositiondonneesentrees/src/main/resources/static/openapi.yaml @@ -196,7 +196,14 @@ paths: type: object required: - nomLot + - nomOrganisation properties: + nomOrganisation: + type: string + nomLot: + type: string + dateLot: + type: string csvDataCenter: type: string format: binary @@ -215,12 +222,7 @@ paths: csvEntite: type: string format: binary - dateLot: - type: string - nomOrganisation: - type: string - nomLot: - type: string + responses: "500": description: Erreur interne du service -- GitLab