diff --git a/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java b/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java index 1b456829..0939a3de 100644 --- a/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java +++ b/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java @@ -155,6 +155,9 @@ private LigneFichierDtoSupp processDemandeSupp(LigneFichierDto ligneFichierDto) //récupération des exemplaires existants pour cette ligne List exemplairesExistants = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP)) .getExemplairesExistants(ligneFichierDtoSupp.getPpn()); + //TODO voir dans getTypeDocumentFromPpn comment gérer la logique de la 008 pour les notices + String oo8 = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP)) + .getTypeDocumentFromPpn(ligneFichierDtoSupp.getPpn()); if (ligneFichierDtoSupp.getEpn() != null) { Optional exemplaireASupprimerOpt = exemplairesExistants.stream().filter(exemplaire -> exemplaire.findZone("A99", 0).getValeur().equals(ligneFichierDtoSupp.getEpn())).findFirst(); if (exemplaireASupprimerOpt.isPresent()) { diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index a3a6746f..e948b0ee 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -3,6 +3,7 @@ import fr.abes.cbs.exception.CBSException; import fr.abes.cbs.exception.ZoneException; import fr.abes.cbs.notices.Exemplaire; +import fr.abes.cbs.notices.Notice; import fr.abes.item.core.components.*; import fr.abes.item.core.configuration.factory.FichierFactory; import fr.abes.item.core.configuration.factory.Strategy; @@ -390,6 +391,24 @@ public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier lign } } + public String getTypeDocumentFromPpn(String ppn) throws CBSException, IOException, QueryToSudocException { + String query = "che ppn " + ppn; + traitementService.getCbs().search(query); + int nbReponses = traitementService.getCbs().getNbNotices(); + return switch (nbReponses) { + case 0 -> throw new QueryToSudocException(Constant.ERR_FILE_NOTICE_NOT_FOUND); + case 1 -> { + //TODO reprendre ici et voir si on peut récupérer la 008 en récupérant la notice au format String + //TODO Parce que j'ai pas envie de parser en string pour aller chercher la 008n si une méthode existe deja dans accescbs + //Notice notice = traitementService.getCbs().getClientCBS() + //String notice = traitementService.getCbs().getClientCBS().mod("1", String.valueOf(traitementService.getCbs().getLotEncours())); + //log.debug(notice); + //yield notice; + } + default -> throw new QueryToSudocException(Constant.ERR_FILE_MULTIPLES_NOTICES_FOUND + traitementService.getCbs().getListePpn()); + }; + } + public List getExemplairesExistants(LigneFichierSupp ligneFichierSupp) throws IOException, QueryToSudocException, CBSException, ZoneException { return getExemplairesExistants(ligneFichierSupp.getPpn()); }