Fix su loop nel caso di ricerca barcode kit in accettazione da bolla

This commit is contained in:
Giuseppe Scorrano 2025-04-03 09:53:00 +02:00
parent 7bdb9b47f4
commit f2d5bb76c5

View File

@ -305,8 +305,8 @@ public class AccettazioneBollaPickingViewModel {
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && !mtbAartList.isEmpty()) {
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); this.searchArtFromAnag(mtbAartList.get(0), pickData, null, onComplete);
} else { } else {
this.manageUnknownBarcode(barcodeProd, onComplete); 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<MtbAart> previousSearchedArts, Runnable onComplete) {
if (previousSearchedArts == null) previousSearchedArts = new ArrayList<>();
if (previousSearchedArts.contains(mtbAart)) {
manageNoArtFound(mtbAart, pickData);
return;
}
previousSearchedArts.add(mtbAart);
final List<PickingObjectDTO> pickingList = mPickingList.getValue(); final List<PickingObjectDTO> pickingList = mPickingList.getValue();
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList) List<PickingObjectDTO> matchPickingObject = pickingList == null ? new ArrayList<>() :
pickingList.stream()
.filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())) .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart()))
.toList(); .collect(Collectors.toList());
for (PickingObjectDTO pickingObjectDTO : matchPickingObject) { for (PickingObjectDTO pickingObjectDTO : matchPickingObject) {
pickingObjectDTO.setTempPickData(pickData); pickingObjectDTO.setTempPickData(pickData);
} }
this.loadMatchedRows(matchPickingObject, mtbAart, pickData); this.loadMatchedRows(matchPickingObject, mtbAart, pickData, previousSearchedArts);
onComplete.run(); onComplete.run();
} }
private void loadMatchedRows(List<PickingObjectDTO> matchedRows, MtbAart mtbAart, PickDataDTO pickDataDTO) { private void loadMatchedRows(List<PickingObjectDTO> matchedRows, MtbAart mtbAart, PickDataDTO pickDataDTO, ArrayList<MtbAart> previousSearchedArts) {
if (matchedRows == null || matchedRows.isEmpty()) { if (matchedRows == null || matchedRows.isEmpty()) {
this.sendOnLoadingStarted();
this.mArticoloRESTConsumer.findIfIsKit(mtbAart, mtbAartFind -> { this.mArticoloRESTConsumer.findIfIsKit(mtbAart, mtbAartFind -> {
if (mtbAartFind == null){ this.sendOnLoadingEnded();
if (mtbAartFind == null) {
manageNoArtFound(mtbAart, pickDataDTO); manageNoArtFound(mtbAart, pickDataDTO);
} else { } else {
searchArtFromAnag(mtbAartFind, pickDataDTO, () -> {}); searchArtFromAnag(mtbAartFind, pickDataDTO, previousSearchedArts, () -> {
});
} }
}, this::sendError); }, this::sendError);
} else if (matchedRows.size() == 1) { } else if (matchedRows.size() == 1) {
@ -442,7 +455,7 @@ public class AccettazioneBollaPickingViewModel {
dispatchBollaRow(pickingObjectDTO); dispatchBollaRow(pickingObjectDTO);
} }
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO){ public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
dispatchBollaRow(pickingObjectDTO, false); dispatchBollaRow(pickingObjectDTO, false);
} }
@ -554,7 +567,7 @@ public class AccettazioneBollaPickingViewModel {
UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
initialQtaTot = initialNumCnf.multiply(initialQtaCnf); 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; initialNumCnf = BigDecimal.ONE;
initialQtaTot = initialNumCnf.multiply(initialQtaCnf); initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
} }
@ -577,7 +590,7 @@ public class AccettazioneBollaPickingViewModel {
} }
} }
if (!longClick){ if (!longClick) {
this.sendOnItemDispatched( this.sendOnItemDispatched(
pickingObjectDTO, pickingObjectDTO,
pickingObjectDTO.getMtbAart(), pickingObjectDTO.getMtbAart(),
@ -694,7 +707,7 @@ public class AccettazioneBollaPickingViewModel {
mtbColrToEdit.getDataScadPartita(), mtbColrToEdit.getDataScadPartita(),
true, true,
pickedQuantityDTO -> { pickedQuantityDTO -> {
if(pickedQuantityDTO == null) if (pickedQuantityDTO == null)
return; return;
this.saveEditedRow(mtbColrToEdit, this.saveEditedRow(mtbColrToEdit,
@ -809,7 +822,7 @@ public class AccettazioneBollaPickingViewModel {
int listCount = pickingList != null ? pickingList.size() : 0; int listCount = pickingList != null ? pickingList.size() : 0;
int anomalie = listCount > 0 ? listCount - mtbColr.size() : 0; int anomalie = listCount > 0 ? listCount - mtbColr.size() : 0;
if (anomalie == 0){ if (anomalie == 0) {
closeUdc(closeUDCRequestDTO); closeUdc(closeUDCRequestDTO);
} else { } else {
onConfirmAnomalie(anomalie, canBeClose -> { onConfirmAnomalie(anomalie, canBeClose -> {
@ -824,7 +837,7 @@ public class AccettazioneBollaPickingViewModel {
}, this::sendError); }, this::sendError);
} }
private void closeUdc(CloseUDCRequestDTO closeUDCRequestDTO){ private void closeUdc(CloseUDCRequestDTO closeUDCRequestDTO) {
mColliCaricoRESTConsumer.closeUDC(closeUDCRequestDTO, closeUDCResponse -> { mColliCaricoRESTConsumer.closeUDC(closeUDCRequestDTO, closeUDCResponse -> {
Runnable onVersamentoCompleted = () -> { Runnable onVersamentoCompleted = () -> {
@ -1060,7 +1073,7 @@ public class AccettazioneBollaPickingViewModel {
return this; return this;
} }
private void onConfirmAnomalie(int anomalie, RunnableArgs<Boolean> onConfirm){ private void onConfirmAnomalie(int anomalie, RunnableArgs<Boolean> onConfirm) {
if (this.mListener != null) mListener.onConfirmAnomalie(anomalie, onConfirm); if (this.mListener != null) mListener.onConfirmAnomalie(anomalie, onConfirm);
} }