From 268ce9fce962dad7ac151c7d001785763ae1e43c Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Dec 2025 18:49:56 +0100 Subject: [PATCH] Sistemato dialog caricamento in accettazione merce --- .../MainAccettazioneOrdiniElencoFragment.java | 1 - .../AccettazioneOrdiniPickingActivity.java | 29 ++++--- .../AccettazioneOrdiniPickingModule.java | 41 ---------- .../AccettazioneOrdiniPickingViewModel.java | 80 +++++++++++-------- 4 files changed, 66 insertions(+), 85 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java index 95ae7fdd..b2d0e50a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java @@ -78,7 +78,6 @@ public class MainAccettazioneOrdiniElencoFragment extends BaseFragment implement @Override public void onSaveInstanceState(@NonNull Bundle outState) { - onLoadingEnded(); outState.putString("mToolbar", DataCache.addItem(mToolbar)); super.onSaveInstanceState(outState); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 5bc7e97a..a6b567ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -11,7 +11,6 @@ import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; @@ -158,7 +157,17 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd(); mViewModel.setListeners(this); - mViewModel.init(mOrders, mSitArts, useQtaOrd); + + this.onLoadingStarted(); + executorService.execute(() -> { + try { + mViewModel.init(mOrders, mSitArts, useQtaOrd); + this.onLoadingEnded(); + } catch (Exception e) { + this.onError(e); + } + }); + } private void initFab() { @@ -370,7 +379,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A private void refreshList() { - runOnUiThread(() -> { + handler.post(() -> { List tmpList; if (mAppliedFilterViewModel != null) { @@ -778,7 +787,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onWarning(String warningText, Runnable action) { - this.runOnUiThread(() -> { + handler.post(() -> { this.onLoadingEnded(); DialogSimpleMessageView .makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action) @@ -806,7 +815,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onRowSaved() { - runOnUiThread(() -> { + handler.post(() -> { Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) .setBackgroundTint(getResources().getColor(R.color.green_500)) .show(); @@ -815,7 +824,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onFilterCodMartApplied(String codMartToFilter) { - runOnUiThread(() -> { + handler.post(() -> { var codMarts = new ArrayList(); codMarts.add(codMartToFilter); @@ -825,7 +834,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onFilterPosizioneApplied(String posizioneToFilter) { - runOnUiThread(() -> { + handler.post(() -> { var posizioni = new ArrayList(); posizioni.add(posizioneToFilter); @@ -836,7 +845,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) { - runOnUiThread(() -> { + handler.post(() -> { DialogVersamentoAutomaticoULDoneView.newInstance(versamentoAutomaticoULResponseDTO, onComplete).show(getSupportFragmentManager(), "tag"); }); @@ -844,7 +853,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { - runOnUiThread(() -> { + handler.post(() -> { String text = getResources().getString(R.string.alert_delete_mtb_colr); DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false)).show(getSupportFragmentManager(), "tag"); }); @@ -852,7 +861,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A @Override public void onLUOpened(MtbColt mtbColt) { - runOnUiThread(() -> { + handler.post(() -> { noLUPresent.set(false); Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) .setBackgroundTint(getResources().getColor(R.color.green_500)) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java index 8306edc7..63c4d336 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java @@ -1,50 +1,9 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking; import dagger.Module; -import dagger.Provides; -import it.integry.integrywmsnative.core.ean128.Ean128Service; -import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.gest.accettazione_ordini_picking.rest.AccettazioneOrdiniPickingRESTConsumer; -import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; @Module(subcomponents = AccettazioneOrdiniPickingComponent.class) public class AccettazioneOrdiniPickingModule { - @Provides - AccettazioneOrdiniPickingRESTConsumer providesAccettazionePickingRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { - return new AccettazioneOrdiniPickingRESTConsumer(restBuilder, systemRESTConsumer); - } - - @Provides - BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() { - return new BottomSheetFragmentLUContentViewModel(); - } - - @Provides - AccettazioneOrdiniPickingViewModel providesAccettazioneViewModel( - ArticoloRESTConsumer articoloRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer, - ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer, - ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, - ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, - Ean128Service ean128Service, - ImballiRESTConsumer imballiRESTConsumer) { - return new AccettazioneOrdiniPickingViewModel(articoloRESTConsumer, - barcodeRESTConsumer, - colliMagazzinoRESTConsumer, - accettazioneOrdiniPickingRESTConsumer, - colliAccettazioneRESTConsumer, - colliLavorazioneRESTConsumer, - ean128Service, - imballiRESTConsumer); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 879ddd96..1f727946 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking; +import android.os.Handler; + import androidx.annotation.NonNull; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; @@ -11,6 +13,8 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; import javax.inject.Inject; @@ -72,6 +76,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.Tracciament public class AccettazioneOrdiniPickingViewModel { + private final ExecutorService executorService; + private final Handler handler; private final ArticoloRESTConsumer mArticoloRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; @@ -96,7 +102,9 @@ public class AccettazioneOrdiniPickingViewModel { private final List mHistoryUsedAarts = new ArrayList<>(); @Inject - public AccettazioneOrdiniPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, + public AccettazioneOrdiniPickingViewModel(Handler handler, + ExecutorService executorService, + ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer, @@ -104,6 +112,8 @@ public class AccettazioneOrdiniPickingViewModel { ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, Ean128Service ean128Service, ImballiRESTConsumer imballiRESTConsumer) { + this.handler = handler; + this.executorService = executorService; this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; @@ -115,23 +125,24 @@ public class AccettazioneOrdiniPickingViewModel { } - public void init(List orders, List sitArts, boolean useQtaOrd) { + public void init(List orders, List sitArts, boolean useQtaOrd) throws Exception { this.mOrders = orders; this.mUseQtaOrd = useQtaOrd; - List mSitArts = Stream.of(sitArts) + List mSitArts = sitArts.stream() .filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) .toList(); - getEmptyPickingList(mSitArts, this.mPickingList::postValue); + var pickingList = getEmptyPickingList(mSitArts); + this.mPickingList.postValue(pickingList); //Definizione della gestione collo di default - Boolean isOrdTrasf = Stream.of(mOrders) + Boolean isOrdTrasf = mOrders.stream() .map(OrdineAccettazioneInevasoDTO::isOrdTrasf) - .withoutNulls() - .distinctBy(x -> x) + .filter(Objects::nonNull) + .distinct() .findFirst() .get(); @@ -145,10 +156,10 @@ public class AccettazioneOrdiniPickingViewModel { //Definizione della gestione collo di default - List foundGestioni = Stream.of(mOrders) + List foundGestioni = mOrders.stream() .map(OrdineAccettazioneInevasoDTO::getGestioneEnum) - .withoutNulls() - .distinctBy(x -> x) + .filter(Objects::nonNull) + .distinct() .toList(); if (foundGestioni.size() == 1) { @@ -157,7 +168,7 @@ public class AccettazioneOrdiniPickingViewModel { } else defaultGestioneOfUL = foundGestioni.get(0) == GestioneEnum.PRODUZIONE ? GestioneEnum.LAVORAZIONE : foundGestioni.get(0); } else { - this.sendError(new InvalidLUMultiGestioneException()); + throw new InvalidLUMultiGestioneException(); } switch (defaultGestioneOfUL) { @@ -166,32 +177,31 @@ public class AccettazioneOrdiniPickingViewModel { } } - private void getEmptyPickingList(List sitArtOrdList, RunnableArgs> onComplete) { + private List getEmptyPickingList(List sitArtOrdList) throws Exception { - List codMarts = Stream.of(sitArtOrdList) + List codMarts = sitArtOrdList.stream() .map(SitArtOrdDTO::getCodMart) - .toList(); + .collect(Collectors.toList()); - this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> { - List pickingList = Stream.of(sitArtOrdList) - .map(sitArtOrdDTO -> { - MtbAart mtbAart = null; + var listMtbAarts = this.mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts); + List pickingList = sitArtOrdList.stream() + .map(sitArtOrdDTO -> { + MtbAart mtbAart = null; - for (MtbAart mtbAartItem : listMtbAarts) { - if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) { - mtbAart = mtbAartItem; - break; - } + for (MtbAart mtbAartItem : listMtbAarts) { + if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) { + mtbAart = mtbAartItem; + break; } + } - return new PickingObjectDTO() - .setSitArtOrdDTO(sitArtOrdDTO) - .setMtbAart(mtbAart); - }) - .toList(); + return new PickingObjectDTO() + .setSitArtOrdDTO(sitArtOrdDTO) + .setMtbAart(mtbAart); + }) + .collect(Collectors.toList()); - onComplete.run(pickingList); - }, this::sendError); + return pickingList; } public MutableLiveData> getPickingList() { @@ -654,8 +664,10 @@ public class AccettazioneOrdiniPickingViewModel { .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) .setMtbAart(pickingObjectDTO.getMtbAart()); - pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr); - mCurrentMtbColt.getMtbColr().add(insertedMtbColr); + handler.post(() -> { + pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr); + mCurrentMtbColt.getMtbColr().add(insertedMtbColr); + }); //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei resetMatchedRows(); @@ -771,7 +783,9 @@ public class AccettazioneOrdiniPickingViewModel { pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); } - this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + handler.post(() -> { + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + }); this.resetMatchedRows(); this.sendOnRowSaved();