diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index 12bc1577..c25f2672 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -10,7 +10,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; import javax.inject.Singleton; @@ -106,7 +108,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { }); } - public void findIfIsKit(MtbAart mtbAart, RunnableArgs onComplete, RunnableArgs onFailed){ + public void findIfIsKit(MtbAart mtbAart, RunnableArgs onComplete, RunnableArgs onFailed) { ArticoloRESTConsumerService articoloRESTConsumerService = restBuilder.getService(ArticoloRESTConsumerService.class); articoloRESTConsumerService @@ -207,25 +209,26 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { } - public void getUntMisArts(List inputUntMis, RunnableArgs> onComplete, RunnableArgs onFailed) { - List> whereCondList = Stream.of(inputUntMis) + public List getUntMisArtsSynchronized(List inputUntMis) throws Exception { + List> whereCondList = inputUntMis.parallelStream() .distinct() - .withoutNulls() + .filter(Objects::nonNull) .map(x -> { HashMap data = new HashMap<>(); data.put("unt_mis", x); return data; }) - .toList(); + .collect(Collectors.toUnmodifiableList()); var whereCond = whereCondList.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondList); Type typeOfObjectsList = new TypeToken>() { }.getType(); - this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed); + + return this.systemRESTConsumer.processSqlSynchronized("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList); } - public void fillMtbAartsWithMtbUntMis(List inputMtbAart, RunnableArgs> onComplete, RunnableArgs onFailed) { + public List fillMtbAartsWithMtbUntMisSynchronized(List inputMtbAart) throws Exception { var inputUntMis = new ArrayList(); if (inputMtbAart != null && !inputMtbAart.isEmpty()) { @@ -237,21 +240,23 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { } if (inputUntMis.isEmpty()) { - onComplete.run(inputMtbAart); - return; + return inputMtbAart; } - getUntMisArts(inputUntMis, mtbUntMiss -> { - for (var item : inputMtbAart) { - var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis())) - .findFirstOrElse(null); + var mtbUntMiss = getUntMisArtsSynchronized(inputUntMis); - if (mtbUntMis != null) - item.setMtbUntMis(Collections.singletonList(mtbUntMis)); - } + for (var item : inputMtbAart) { + var mtbUntMis = mtbUntMiss.stream() + .filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis())) + .findFirst() + .orElse(null); + + if (mtbUntMis != null) + item.setMtbUntMis(Collections.singletonList(mtbUntMis)); + } + + return inputMtbAart; - onComplete.run(inputMtbAart); - }, onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java index 83506ee8..1c904428 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java @@ -169,27 +169,28 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { } - public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs onComplete, RunnableArgs onFailed) { + public InstantItemSituationResponseDto getInstantItemSituationSynchronized(String codMdep, String codMart, String partitaMag, String codJcom) throws Exception { GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class); - giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom) - .enqueue(new ManagedErrorCallback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "getInstantItemSituation", data -> { + var response = giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom) + .execute(); - fillInstantItemSituationWithMtbAarts(data, onComplete, onFailed); - }, onFailed); - } - - @Override - public void onFailure(Call> call, @NonNull final Exception e) { - onFailed.run(e); - } - }); + var data = analyzeAnswer(response, "getInstantItemSituation"); + return fillInstantItemSituationWithMtbAartsSynchronized(data); } - private void fillInstantItemSituationWithMtbAarts(InstantItemSituationResponseDto data, RunnableArgs onComplete, RunnableArgs onFailed) { + public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs onComplete, RunnableArgs onFailed) { + executorService.execute(() -> { + try { + var response = getInstantItemSituationSynchronized(codMdep, codMart, partitaMag, codJcom); + if (onComplete != null) onComplete.run(response); + } catch (Exception ex) { + if (onFailed != null) onFailed.run(ex); + } + }); + } + + private InstantItemSituationResponseDto fillInstantItemSituationWithMtbAartsSynchronized(InstantItemSituationResponseDto data) throws Exception { var inputCodMarts = new ArrayList(); if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) { @@ -205,37 +206,33 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { } if (inputCodMarts.isEmpty()) { - onComplete.run(data); - return; + return null; } - mArticoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> { + var mtbAarts = mArticoloRESTConsumer.getByCodMartsSynchronized(inputCodMarts); + var newMtbAarts = mArticoloRESTConsumer.fillMtbAartsWithMtbUntMisSynchronized(mtbAarts); - mArticoloRESTConsumer.fillMtbAartsWithMtbUntMis(mtbAarts, newMtbAarts -> { - if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) { - for (var item : data.getIncomingItems()) { - var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart())) - .findFirstOrElse(null); + if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) { + for (var item : data.getIncomingItems()) { + var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart())) + .findFirstOrElse(null); - if (mtbAart != null) - item.setMtbAart(mtbAart); - } - } + if (mtbAart != null) + item.setMtbAart(mtbAart); + } + } - if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) { - for (var item : data.getAvailableItems()) { - var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart())) - .findFirstOrElse(null); + if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) { + for (var item : data.getAvailableItems()) { + var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart())) + .findFirstOrElse(null); - if (mtbAart != null) - item.setMtbAart(mtbAart); - } - } + if (mtbAart != null) + item.setMtbAart(mtbAart); + } + } - onComplete.run(data); - }, onFailed); - - }, onFailed); + return data; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 460bc337..0c926505 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -123,27 +123,16 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { printReportType(reportType, codMdep, null, params, onComplete, onFailed); } - public void printClosedOrders(PrintOrderCloseDTO dto, String codMdep, Runnable onComplete, RunnableArgs onFailed) { + public void printClosedOrdersSynchronized(PrintOrderCloseDTO dto, String codMdep) throws Exception { if (BuildConfig.DEBUG) { - onComplete.run(); return; } PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class, 240); Call> callable = printerService.printClosedOrders(codMdep, dto); - callable.enqueue(new ManagedErrorCallback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "printCollo", data -> { - onComplete.run(); - }, onFailed); - } - @Override - public void onFailure(Call> call, @NonNull final Exception e) { - onFailed.run(e); - } - }); + var response = callable.execute(); + analyzeAnswer(response, "printCollo"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index a5695e63..3c9c88d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -768,7 +768,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .thenComparing(ComparatorCompat.comparing(x -> x.getDestinatario() != null ? x.getDestinatario() : "zzzzzzzzz")) .thenComparing(ComparatorCompat.comparing(OrdiniUscitaElencoDTO::getNumOrd)); - List notHiddenElements = dataList.parallelStream() + List notHiddenElements = dataList.stream() .filter(x -> !x.isHidden()) .sorted(comparator) .map(x -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java index 7a0ae725..d58f3dbc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java @@ -53,7 +53,9 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerViewNew< String[] keyArray = new String[collect.keySet().size()]; collect.keySet().toArray(keyArray); - setSections(Arrays.asList(keyArray), collect); + var keyList = Arrays.asList(keyArray); + keyList.sort(String::compareTo); + setSections(keyList, collect); } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index be11478c..d20a7c5a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -26,6 +26,8 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicReference; import javax.inject.Inject; @@ -257,7 +259,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }); } else { BarcodeManager.removeCallback(mBarcodeScannerInstanceID); - super.onBackPressed(); + handler.post(() -> { + super.onBackPressed(); + }); } } @@ -830,10 +834,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public void closeOrder() { - handler.post(() -> { - this.fabPopupMenu.dismiss(); + this.fabPopupMenu.dismiss(); + this.onLoadingStarted(); - this.mViewmodel.closeOrder(); + executorService.execute(() -> { + try { + this.mViewmodel.closeOrder(); + this.onLoadingEnded(); + } catch (Exception e) { + onError(e); + } }); } @@ -1051,66 +1061,113 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }).show(getSupportFragmentManager(), "tag"); } - public void askShouldPrintPackingList(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs onComplete) { - DialogSimpleMessageView.makeInfoDialog( - getResources().getString(R.string.action_close_order), - new SpannableString(getResources().getString(R.string.message_print_packing_list_on_close_order)), - null, - () -> { - printOrderCloseDTO.setFlagPrintPackingList(true); - if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { - this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); - } else { - onComplete.run(printOrderCloseDTO); + public boolean askShouldPrintPackingList() { + AtomicReference resultPrintPackingList = new AtomicReference<>(); + CountDownLatch countDownLatch = new CountDownLatch(1); + + handler.post(() -> { + DialogSimpleMessageView.makeInfoDialog( + getResources().getString(R.string.action_close_order), + new SpannableString(getResources().getString(R.string.message_print_packing_list_on_close_order)), + null, + () -> { + resultPrintPackingList.set(true); + countDownLatch.countDown(); + }, + () -> { + resultPrintPackingList.set(false); + countDownLatch.countDown(); } - }, - () -> { - printOrderCloseDTO.setFlagPrintPackingList(false); - if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { - this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); - } else { - onComplete.run(printOrderCloseDTO); - } - } - ) - .show(getSupportFragmentManager(), "tag"); + ) + .show(getSupportFragmentManager(), "tag"); + }); + + + try { + countDownLatch.await(); + } catch (InterruptedException e) { + this.onError(e); + } + + return resultPrintPackingList.get(); +// +// boolean printPackingList = resultPrintPackingList.get(); +// printOrderCloseDTO.setFlagPrintPackingList(printPackingList); +// +// if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { +// var shouldPrintSSCCResult = this.askShouldPrintSSCC(printOrderCloseDTO); +// +// printOrderCloseDTO.setFlagPrintSSCC(shouldPrintSSCCResult.isFlagPrintSSCC()); +// printOrderCloseDTO.setFlagSkipPrintedSSCC(shouldPrintSSCCResult.isFlagSkipPrintedSSCC()); +// } +// +// return printOrderCloseDTO; } - public void askShouldPrintSSCC(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs onComplete) { - DialogPrintOrderSSCCListView.newInstance(printOrderCloseDTO, onComplete).show(this.getSupportFragmentManager(), "dialogPrintOrderSSCCListView"); + public DialogPrintOrderSSCCListView.Result askShouldPrintSSCC(PrintOrderCloseDTO printOrderCloseDTO) { + AtomicReference result = new AtomicReference<>(); + CountDownLatch countDownLatch = new CountDownLatch(1); + + handler.post(() -> { + DialogPrintOrderSSCCListView.newInstance(printOrderCloseDTO, data -> { + result.set(data); + countDownLatch.countDown(); + }) + .show(this.getSupportFragmentManager(), "dialogPrintOrderSSCCListView"); + }); + + try { + countDownLatch.await(); + } catch (InterruptedException e) { + this.onError(e); + } + + return result.get(); } @Override public void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) { - DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete) - .show(getSupportFragmentManager(), "tag"); + handler.post(() -> { + DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete) + .show(getSupportFragmentManager(), "tag"); + }); } @Override - public void onCloseOrderPrintRequest(RunnableArgs onComplete) { + public PrintOrderCloseDTO onCloseOrderPrintRequest() { PrintOrderCloseDTO printOrderCloseDTO = new PrintOrderCloseDTO(); + if (SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { - this.askShouldPrintPackingList(printOrderCloseDTO, onComplete); - } else if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { - this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); + var result = this.askShouldPrintPackingList(); + printOrderCloseDTO.setFlagPrintPackingList(result); } + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { + var shouldPrintSSCC = this.askShouldPrintSSCC(printOrderCloseDTO); + + printOrderCloseDTO.setFlagPrintSSCC(shouldPrintSSCC.isFlagPrintSSCC()); + printOrderCloseDTO.setFlagSkipPrintedSSCC(shouldPrintSSCC.isFlagSkipPrintedSSCC()); + } + + return printOrderCloseDTO; } @Override public void onCreateDocsRequest() { - DialogYesNoView.newInstance("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> { + handler.post(() -> { + DialogYesNoView.newInstance("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> { - switch (result) { - case YES: - this.mViewmodel.createDocs(); - break; - case NO: - this.onOrderClosed(); - break; - } + switch (result) { + case YES: + this.mViewmodel.createDocs(); + break; + case NO: + this.onOrderClosed(); + break; + } - }).show(this.getSupportFragmentManager(), "tag"); + }).show(this.getSupportFragmentManager(), "tag"); + }); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 8ae521ce..fd3398bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -354,8 +354,12 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onLoadingStarted(); } - private void sendOnCloseOrderPrintRequest(RunnableArgs onComplete) { - if (this.mListener != null) mListener.onCloseOrderPrintRequest(onComplete); + private PrintOrderCloseDTO sendOnCloseOrderPrintRequest() { + if (this.mListener != null) { + return mListener.onCloseOrderPrintRequest(); + } + + return null; } private void sendCreateDocsRequest() { @@ -519,33 +523,33 @@ public class SpedizioneViewModel { } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) throws Exception { - //Se non c'è una UL aperta - if (mCurrentMtbColt == null) { + //Se non c'è una UL aperta + if (mCurrentMtbColt == null) { - //Se è un'etichetta anonima - if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { - //Se il collo non esiste allora lo creo associandolo a questa etichetta anonima - //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul - //dell'etichetta anonima - this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO); + //Se è un'etichetta anonima + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + //Se il collo non esiste allora lo creo associandolo a questa etichetta anonima + //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul + //dell'etichetta anonima + this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO); - } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)/* && mDefaultSegnoCol == 1*/) { - this.processBarcodePosizioneNotOpenedLU(barcodeScanDTO); - - } else { - this.processBarcodeNotOpenedLU(barcodeScanDTO); - } + } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)/* && mDefaultSegnoCol == 1*/) { + this.processBarcodePosizioneNotOpenedLU(barcodeScanDTO); } else { - if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { - //Cerco gli articoli presenti nell'ul dell'etichetta anonima - this.executeEtichettaLU(barcodeScanDTO.getStringValue()); - - } else { - this.processBarcodeAlreadyOpenedLU(barcodeScanDTO); - } + this.processBarcodeNotOpenedLU(barcodeScanDTO); } + } else { + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + //Cerco gli articoli presenti nell'ul dell'etichetta anonima + this.executeEtichettaLU(barcodeScanDTO.getStringValue()); + + } else { + this.processBarcodeAlreadyOpenedLU(barcodeScanDTO); + } + } + } private void processBarcodePosizioneNotOpenedLU(BarcodeScanDTO barcodeScanDTO) throws Exception { @@ -1864,9 +1868,9 @@ public class SpedizioneViewModel { (newCodTcol, newNetWeight, newGrossWeight) -> { - if(newCodTcol != null) mCurrentMtbColt.setCodTcol(newCodTcol); - if(newNetWeight != null) mCurrentMtbColt.setPesoNettoKg(newNetWeight); - if(newGrossWeight != null) mCurrentMtbColt.setPesoKg(newGrossWeight); + if (newCodTcol != null) mCurrentMtbColt.setCodTcol(newCodTcol); + if (newNetWeight != null) mCurrentMtbColt.setPesoNettoKg(newNetWeight); + if (newGrossWeight != null) mCurrentMtbColt.setPesoKg(newGrossWeight); latch.countDown(); }); @@ -2098,20 +2102,21 @@ public class SpedizioneViewModel { } public void closeOrder() { - this.sendOnLoadingStarted(); + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { - this.sendOnCloseOrderPrintRequest(this::onCloseOrderPrintRequest); - } else { - this.onOrderClosedPrintingDone(); + var printRequestResult = this.sendOnCloseOrderPrintRequest(); + this.onCloseOrderPrintRequest(printRequestResult); } + + this.onOrderClosedPrintingDone(); } private void onCloseOrderPrintRequest(PrintOrderCloseDTO dto) { if (!dto.isFlagPrintPackingList() && !dto.isFlagPrintSSCC()) { - onOrderClosedPrintingDone(); return; } - List closedOrders = this.mTestateOrdini.stream() + + List closedOrders = this.mTestateOrdini.parallelStream() .map(ord -> new DtbOrdt() .setDataOrd(ord.getDataOrdS()) .setNumOrd(ord.getNumOrd()) @@ -2121,11 +2126,17 @@ public class SpedizioneViewModel { .collect(Collectors.toList()); dto.setPrintList(closedOrders); - printClosedOrders(dto, this::onOrderClosedPrintingDone, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); + + try { + printClosedOrders(dto); + } catch (Exception e) { + this.sendLUPrintError(e, () -> {}); + } + } - private void printClosedOrders(PrintOrderCloseDTO dto, Runnable onSuccess, RunnableArgs onAbort) { - this.mPrinterRESTConsumer.printClosedOrders(dto, SettingsManager.i().getUserSession().getDepo().getCodMdep(), onSuccess, onAbort); + private void printClosedOrders(PrintOrderCloseDTO dto) throws Exception { + this.mPrinterRESTConsumer.printClosedOrdersSynchronized(dto, SettingsManager.i().getUserSession().getDepo().getCodMdep()); } @@ -2236,7 +2247,7 @@ public class SpedizioneViewModel { void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete); - void onCloseOrderPrintRequest(RunnableArgs onComplete); + PrintOrderCloseDTO onCloseOrderPrintRequest(); void onCreateDocsRequest(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java index 773d9daf..48ffb931 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java @@ -35,17 +35,18 @@ public class DialogPrintOrderSSCCListView extends BaseDialogFragment { private Context mContext; private DialogPrintOrderSsccListBinding mBindings; private final PrintOrderCloseDTO printOrderCloseDTO; - private final RunnableArgs onDialogClose; + private final Result result = new Result(); + private final RunnableArgs onDialogClose; public static DialogPrintOrderSSCCListView newInstance( PrintOrderCloseDTO printOrderCloseDTO, - RunnableArgs onDismiss + RunnableArgs onDismiss ) { return new DialogPrintOrderSSCCListView(printOrderCloseDTO, onDismiss); } - public DialogPrintOrderSSCCListView(@NotNull PrintOrderCloseDTO printOrderCloseDTO, @NotNull RunnableArgs onDismiss) { + public DialogPrintOrderSSCCListView(@NotNull PrintOrderCloseDTO printOrderCloseDTO, @NotNull RunnableArgs onDismiss) { this.printOrderCloseDTO = printOrderCloseDTO; this.onDialogClose = onDismiss; } @@ -71,22 +72,22 @@ public class DialogPrintOrderSSCCListView extends BaseDialogFragment { } public void onCheckChange(RadioGroup radioGroup, int id) { - this.printOrderCloseDTO.setFlagSkipPrintedSSCC(id == mBindings.printOnlyNew.getId()); + this.result.setFlagSkipPrintedSSCC(id == mBindings.printOnlyNew.getId()); } public void onPositiveClick() { - this.printOrderCloseDTO.setFlagPrintSSCC(true); + this.result.setFlagPrintSSCC(true); this.dismiss(); } public void onNegativeClick() { - this.printOrderCloseDTO.setFlagPrintSSCC(false); + this.result.setFlagPrintSSCC(false); this.dismiss(); } @Override public void onDismiss(@NonNull DialogInterface dialog) { - this.onDialogClose.run(this.printOrderCloseDTO); + this.onDialogClose.run(this.result); super.onDismiss(dialog); } @@ -112,4 +113,26 @@ public class DialogPrintOrderSSCCListView extends BaseDialogFragment { UtilityExceptions.defaultException(this.mContext, ex); dismiss(); } + + + public class Result { + private boolean flagPrintSSCC = false; + private boolean flagSkipPrintedSSCC = true; + + public boolean isFlagPrintSSCC() { + return flagPrintSSCC; + } + + private void setFlagPrintSSCC(boolean flagPrintSSCC) { + this.flagPrintSSCC = flagPrintSSCC; + } + + public boolean isFlagSkipPrintedSSCC() { + return flagSkipPrintedSSCC; + } + + private void setFlagSkipPrintedSSCC(boolean flagSkipPrintedSSCC) { + this.flagSkipPrintedSSCC = flagSkipPrintedSSCC; + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java index 827c02e6..267e15b9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java @@ -4,6 +4,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.os.Handler; import android.view.LayoutInflater; import android.view.View; @@ -18,6 +19,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutorService; import javax.inject.Inject; @@ -42,6 +44,12 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { @Inject GiacenzaRESTConsumer giacenzaRESTConsumer; + @Inject + ExecutorService executorService; + + @Inject + Handler handler; + private DialogInfoSituazioneArticoloBinding mBindings; private Context mContext; @@ -86,24 +94,33 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { String partitaMag = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getPartitaMag(); String codJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom(); - giacenzaRESTConsumer.getInstantItemSituation( - codMdep, - codMart, - partitaMag, - codJcom, - result -> { - this.initIncomingItemsList(result.getIncomingItems()); - this.initAvailableItemsList(result.getAvailableItems()); + this.onLoadingStarted(); + executorService.execute(() -> { + try { + var result = giacenzaRESTConsumer.getInstantItemSituationSynchronized(codMdep, codMart, partitaMag, codJcom); - this.onLoadingEnded(); - }, this::onError); + + handler.post(() -> { + try { + if(result != null && result.getIncomingItems() != null) this.initIncomingItemsList(result.getIncomingItems()); + if(result != null && result.getAvailableItems() != null) this.initAvailableItemsList(result.getAvailableItems()); + this.onLoadingEnded(); + } catch (Exception e) { + onError(e); + } + }); + + } catch (Exception e) { + onError(e); + } + }); } private void initIncomingItemsList(List incomingItems) { mBindings.incomingLabel.setVisibility(incomingItems == null || incomingItems.isEmpty() ? View.GONE : View.VISIBLE); - if(incomingItems == null || incomingItems.isEmpty()) + if (incomingItems == null || incomingItems.isEmpty()) return; new LiveAdapter(incomingItems, BR.item) @@ -115,14 +132,14 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { private void initAvailableItemsList(List availableItems) { mBindings.availableLabel.setVisibility(availableItems == null || availableItems.isEmpty() ? View.GONE : View.VISIBLE); - if(availableItems == null) + if (availableItems == null) availableItems = new ArrayList<>(); availableItems = Stream.of(availableItems) .filter(x -> x.getDataScad() == null || UtilityDate.isAfterToday(x.getDataScad())) .toList(); - if(availableItems.isEmpty()) + if (availableItems.isEmpty()) return; var preferedCodJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom(); diff --git a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml index 4ca47ca2..e68142ea 100644 --- a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml @@ -25,6 +25,7 @@ android:layout_height="0dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintWidth="8dp"/>