Sistemato dialog caricamento in accettazione merce

This commit is contained in:
Giuseppe Scorrano 2025-12-10 18:49:56 +01:00
parent 4861d53031
commit 268ce9fce9
4 changed files with 66 additions and 85 deletions

View File

@ -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);

View File

@ -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<PickingObjectDTO> 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<String>();
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<String>();
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<Boolean> 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))

View File

@ -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);
}
}

View File

@ -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<HistoryMtbAartDTO> 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<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, boolean useQtaOrd) {
public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, boolean useQtaOrd) throws Exception {
this.mOrders = orders;
this.mUseQtaOrd = useQtaOrd;
List<SitArtOrdDTO> mSitArts = Stream.of(sitArts)
List<SitArtOrdDTO> 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<GestioneEnum> foundGestioni = Stream.of(mOrders)
List<GestioneEnum> 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<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
private List<PickingObjectDTO> getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList) throws Exception {
List<String> codMarts = Stream.of(sitArtOrdList)
List<String> codMarts = sitArtOrdList.stream()
.map(SitArtOrdDTO::getCodMart)
.toList();
.collect(Collectors.toList());
this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
var listMtbAarts = this.mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts);
List<PickingObjectDTO> 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<List<PickingObjectDTO>> 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();