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 -> {
this.sendOnLoadingEnded();
if (mtbAartFind == null) { 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) {