Risolto problema di aggiornamento lista d'ordini in uscita nel caso in cui si filtrava tramite barcode

This commit is contained in:
Giuseppe Scorrano 2022-04-26 12:42:00 +02:00
parent ecbb4ac55c
commit 5cb32a9a77
4 changed files with 54 additions and 28 deletions

View File

@ -21,13 +21,13 @@ public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.V
public ExtendedSectionedRecyclerView(ObservableArrayList<T> myDataset) { public ExtendedSectionedRecyclerView(ObservableArrayList<T> myDataset) {
mDataset.addAll(myDataset); mDataset.addAll(myDataset);
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
@Override @Override
public void onChanged(ObservableList sender) { public void onChanged(ObservableList<T> sender) {
mDataset.clear(); mDataset.clear();
mDataset.addAll(sender); mDataset.addAll(sender);
notifyDataSetChanged();
notifyDataChanged(); notifyDataChanged();
notifyDataSetChanged();
checkIfEmpty(); checkIfEmpty();
} }
}); });

View File

@ -66,7 +66,7 @@ public abstract class _BaseRESTConsumer {
} }
} else { } else {
Log.e(logTitle, response.body().getErrorMessage()); Log.e(logTitle, response.body().getErrorMessage());
onFailed.run(new Exception(response.body().getErrorMessage())); onFailed.run(CommonRESTException.tryRecognizeException(response.body().getErrorMessage()));
} }
} else { } else {
Log.e(logTitle, response.message()); Log.e(logTitle, response.message());
@ -76,7 +76,9 @@ public abstract class _BaseRESTConsumer {
if (response.code() == 404) { if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else { } else if (response.code() == 550)
onFailed.run(new NotValidLicenseException());
else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
} }
@ -113,7 +115,9 @@ public abstract class _BaseRESTConsumer {
if (responseList.code() == 404) { if (responseList.code() == 404) {
Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")")); onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")"));
} else { } else if (responseList.code() == 550)
onFailed.run(new NotValidLicenseException());
else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message()); Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message())); onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
} }

View File

@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbGrup; import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
@ -692,30 +693,30 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data, () -> { this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
this.onLoadingEnded();
});
}; };
private void refreshList(List<OrdiniUscitaElencoDTO> filteredList) { private void refreshList(List<OrdiniUscitaElencoDTO> filteredList) {
List<OrdiniUscitaElencoDTO> tmpList; requireActivity().runOnUiThread(() -> {
List<OrdiniUscitaElencoDTO> tmpList;
if (filteredList != null) { if (filteredList != null) {
tmpList = filteredList; tmpList = filteredList;
} else if (mAppliedFilterViewModel != null) { } else if (mAppliedFilterViewModel != null) {
mAppliedFilterViewModel.applyAllTests(); mAppliedFilterViewModel.applyAllTests();
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue(); tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
} else { } else {
tmpList = mViewModel.getOrderList().getValue(); tmpList = mViewModel.getOrderList().getValue();
} }
var list = convertDataModelToListModel(tmpList); var list = convertDataModelToListModel(tmpList);
this.mOrdiniInevasiMutableData.clear(); this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(list); this.mOrdiniInevasiMutableData.addAll(list);
fabVisible.set(Stream.of(mOrdiniInevasiMutableData) fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
.anyMatch(y -> y.getSelectedObservable().get())); .anyMatch(y -> y.getSelectedObservable().get()));
});
} }
private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) { private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {
@ -780,6 +781,17 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mViewModel.loadPicking(selectedOrders, this.mAppliedFilterViewModel.getSelectedMtbGrup()); this.mViewModel.loadPicking(selectedOrders, this.mAppliedFilterViewModel.getSelectedMtbGrup());
} }
@Override
public void onFilterNumOrderApplied(List<OrdiniUscitaElencoDTO> filteredOrder) {
requireActivity().runOnUiThread(() -> {
var numOrders = Stream.of(filteredOrder)
.map(OrdineInevasoDTO::getNumOrd)
.distinct()
.toList();
this.mAppliedFilterViewModel.setNumOrdFilter(numOrders);
});
}
@Override @Override
public void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) { public void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) {
refreshList(filteredOrders); refreshList(filteredOrders);

View File

@ -154,12 +154,15 @@ public class OrdiniUscitaElencoViewModel {
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
RunnableArgs<List<OrdiniUscitaElencoDTO>> onBarcodeScanComplete = orderList -> { RunnableArgs<List<OrdiniUscitaElencoDTO>> onBarcodeScanComplete = orderList -> {
onComplete.run();
this.sendOnOrderFiltered(orderList); this.sendOnOrderFiltered(orderList);
onComplete.run();
}; };
if (UtilityBarcode.isBarcodeOrdineV(barcodeScanDTO)) { if (UtilityBarcode.isBarcodeOrdineV(barcodeScanDTO)) {
this.executeEtichettaOrdineV(barcodeScanDTO.getStringValue(), onBarcodeScanComplete); this.executeEtichettaOrdineV(barcodeScanDTO.getStringValue(), foundOrder -> {
this.sendOnFilterNumOrderApplied(foundOrder);
onComplete.run();
});
} else if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { } else if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete); this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
@ -196,10 +199,11 @@ public class OrdiniUscitaElencoViewModel {
final String finalGestione = gestione; final String finalGestione = gestione;
final Date finalDate = date; final Date finalDate = date;
List<OrdiniUscitaElencoDTO> filteredOrders = Stream.of(mOrderList.getValue()) List<OrdiniUscitaElencoDTO> foundItem = Stream.of(mOrderList.getValue())
.filter(x -> x.getNumOrd() == numOrd && x.getGestione().equalsIgnoreCase(finalGestione) && x.getDataOrdD().equals(finalDate)).toList(); .filter(x -> x.getNumOrd() == numOrd && x.getGestione().equalsIgnoreCase(finalGestione) && x.getDataOrdD().equals(finalDate))
.toList();
onComplete.run(filteredOrders); onComplete.run(foundItem);
} }
@ -284,6 +288,10 @@ public class OrdiniUscitaElencoViewModel {
if (this.mListener != null) mListener.onError(ex); if (this.mListener != null) mListener.onError(ex);
} }
private void sendOnFilterNumOrderApplied(List<OrdiniUscitaElencoDTO> filteredOrder) {
if (this.mListener != null) mListener.onFilterNumOrderApplied(filteredOrder);
}
private void sendOnOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) { private void sendOnOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) {
if (this.mListener != null) mListener.onOrderFiltered(filteredOrders); if (this.mListener != null) mListener.onOrderFiltered(filteredOrders);
} }
@ -297,6 +305,8 @@ public class OrdiniUscitaElencoViewModel {
void onError(Exception ex); void onError(Exception ex);
void onFilterNumOrderApplied(List<OrdiniUscitaElencoDTO> filteredOrder);
void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders); void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders);
void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts); void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts);