From f2d5bb76c56661544b4357c2cadec256fee2d2c9 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 3 Apr 2025 09:53:00 +0200 Subject: [PATCH] Fix su loop nel caso di ricerca barcode kit in accettazione da bolla --- .../AccettazioneBollaPickingViewModel.java | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index 53cf8132..1c564213 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -305,8 +305,8 @@ public class AccettazioneBollaPickingViewModel { private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { - if (mtbAartList != null && mtbAartList.size() > 0) { - this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); + if (mtbAartList != null && !mtbAartList.isEmpty()) { + this.searchArtFromAnag(mtbAartList.get(0), pickData, null, onComplete); } else { this.manageUnknownBarcode(barcodeProd, onComplete); } @@ -315,28 +315,41 @@ public class AccettazioneBollaPickingViewModel { } - private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) { + private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, ArrayList previousSearchedArts, Runnable onComplete) { + if (previousSearchedArts == null) previousSearchedArts = new ArrayList<>(); + + if (previousSearchedArts.contains(mtbAart)) { + manageNoArtFound(mtbAart, pickData); + return; + } + + previousSearchedArts.add(mtbAart); + final List pickingList = mPickingList.getValue(); - List matchPickingObject = Stream.of(pickingList) - .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())) - .toList(); + List matchPickingObject = pickingList == null ? new ArrayList<>() : + pickingList.stream() + .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())) + .collect(Collectors.toList()); for (PickingObjectDTO pickingObjectDTO : matchPickingObject) { pickingObjectDTO.setTempPickData(pickData); } - this.loadMatchedRows(matchPickingObject, mtbAart, pickData); + this.loadMatchedRows(matchPickingObject, mtbAart, pickData, previousSearchedArts); onComplete.run(); } - private void loadMatchedRows(List matchedRows, MtbAart mtbAart, PickDataDTO pickDataDTO) { + private void loadMatchedRows(List matchedRows, MtbAart mtbAart, PickDataDTO pickDataDTO, ArrayList previousSearchedArts) { if (matchedRows == null || matchedRows.isEmpty()) { + this.sendOnLoadingStarted(); this.mArticoloRESTConsumer.findIfIsKit(mtbAart, mtbAartFind -> { - if (mtbAartFind == null){ + this.sendOnLoadingEnded(); + if (mtbAartFind == null) { manageNoArtFound(mtbAart, pickDataDTO); } else { - searchArtFromAnag(mtbAartFind, pickDataDTO, () -> {}); + searchArtFromAnag(mtbAartFind, pickDataDTO, previousSearchedArts, () -> { + }); } }, this::sendError); } else if (matchedRows.size() == 1) { @@ -442,7 +455,7 @@ public class AccettazioneBollaPickingViewModel { dispatchBollaRow(pickingObjectDTO); } - public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO){ + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) { dispatchBollaRow(pickingObjectDTO, false); } @@ -554,7 +567,7 @@ public class AccettazioneBollaPickingViewModel { UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); initialQtaTot = initialNumCnf.multiply(initialQtaCnf); - } else if(UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { + } else if (UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { initialNumCnf = BigDecimal.ONE; initialQtaTot = initialNumCnf.multiply(initialQtaCnf); } @@ -577,7 +590,7 @@ public class AccettazioneBollaPickingViewModel { } } - if (!longClick){ + if (!longClick) { this.sendOnItemDispatched( pickingObjectDTO, pickingObjectDTO.getMtbAart(), @@ -694,7 +707,7 @@ public class AccettazioneBollaPickingViewModel { mtbColrToEdit.getDataScadPartita(), true, pickedQuantityDTO -> { - if(pickedQuantityDTO == null) + if (pickedQuantityDTO == null) return; this.saveEditedRow(mtbColrToEdit, @@ -809,7 +822,7 @@ public class AccettazioneBollaPickingViewModel { int listCount = pickingList != null ? pickingList.size() : 0; int anomalie = listCount > 0 ? listCount - mtbColr.size() : 0; - if (anomalie == 0){ + if (anomalie == 0) { closeUdc(closeUDCRequestDTO); } else { onConfirmAnomalie(anomalie, canBeClose -> { @@ -824,7 +837,7 @@ public class AccettazioneBollaPickingViewModel { }, this::sendError); } - private void closeUdc(CloseUDCRequestDTO closeUDCRequestDTO){ + private void closeUdc(CloseUDCRequestDTO closeUDCRequestDTO) { mColliCaricoRESTConsumer.closeUDC(closeUDCRequestDTO, closeUDCResponse -> { Runnable onVersamentoCompleted = () -> { @@ -1060,7 +1073,7 @@ public class AccettazioneBollaPickingViewModel { return this; } - private void onConfirmAnomalie(int anomalie, RunnableArgs onConfirm){ + private void onConfirmAnomalie(int anomalie, RunnableArgs onConfirm) { if (this.mListener != null) mListener.onConfirmAnomalie(anomalie, onConfirm); }