Aggiunto filtro per per gruppo merceologico in approvvigionamento linee
This commit is contained in:
parent
b86a1eb1bd
commit
c25b2e6cb5
@ -2,19 +2,27 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||||
|
|
||||||
public class ProdFabbisognoLineeProdBindings {
|
public class ProdFabbisognoLineeProdBindings {
|
||||||
public static final int NUM_ORD_FILTER_ID = 0;
|
public static final int NUM_ORD_FILTER_ID = 0;
|
||||||
|
public static final int MGRP_FILTER_ID = 1;
|
||||||
|
|
||||||
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
|
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
|
||||||
|
|
||||||
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
|
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
|
||||||
.setID(NUM_ORD_FILTER_ID)
|
.setID(NUM_ORD_FILTER_ID)
|
||||||
|
.setPosizione(0)
|
||||||
.setFilterChipText("Numero ordine")
|
.setFilterChipText("Numero ordine")
|
||||||
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
|
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
|
||||||
|
|
||||||
|
put(MGRP_FILTER_ID, new FilterChipDTO()
|
||||||
|
.setID(MGRP_FILTER_ID)
|
||||||
|
.setPosizione(1)
|
||||||
|
.setFilterChipText("Gruppo merceologico")
|
||||||
|
.setFilterLayoutView(new FilterGruppoMercLayoutView()));
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import java.util.Collections;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -33,8 +34,13 @@ import it.integry.integrywmsnative.core.di.BindableBoolean;
|
|||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
|
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbGrup;
|
||||||
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.CommessaRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
@ -44,6 +50,7 @@ import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSi
|
|||||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
|
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
|
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
|
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
|
||||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
|
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
|
||||||
@ -68,11 +75,17 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ProdFabbisognoLineeProdViewModel mViewModel;
|
ProdFabbisognoLineeProdViewModel mViewModel;
|
||||||
|
@Inject
|
||||||
|
ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||||
|
@Inject
|
||||||
|
CommessaRESTConsumer mCommessaRESTConsumer;
|
||||||
|
|
||||||
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>();
|
private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>();
|
||||||
private FragmentProdFabbisognoLineeProdBinding mBindings;
|
private FragmentProdFabbisognoLineeProdBinding mBindings;
|
||||||
private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel();
|
private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel();
|
||||||
|
private List<MtbGrup> mtbGrupCache;
|
||||||
|
private List<JtbComt> jtbComtCache;
|
||||||
|
|
||||||
public ProdFabbisognoLineeProdFragment() {
|
public ProdFabbisognoLineeProdFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -120,6 +133,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> {
|
mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> {
|
||||||
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
|
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
|
this.onLoadingStarted();
|
||||||
|
this.initMtbGrupsCache(() -> {
|
||||||
|
this.initJtbComtCache(this::onLoadingEnded);
|
||||||
|
});
|
||||||
|
|
||||||
mFilterViewModel.init(mViewModel.getOrdiniList().getValue());
|
mFilterViewModel.init(mViewModel.getOrdiniList().getValue());
|
||||||
this.refreshList(null);
|
this.refreshList(null);
|
||||||
});
|
});
|
||||||
@ -211,15 +229,22 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
};
|
};
|
||||||
|
|
||||||
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
|
||||||
for (var filterChipDTO : ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) {
|
List<FilterChipDTO> filterList = Stream.of(ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet())
|
||||||
|
.map(Map.Entry::getValue)
|
||||||
|
.sortBy(FilterChipDTO::getPosizione)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
for (FilterChipDTO filterChipDTO : filterList) {
|
||||||
|
|
||||||
FilterChipView filterChipView = new FilterChipView(
|
FilterChipView filterChipView = new FilterChipView(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
filterChipDTO.getValue().getFilterChipText(),
|
filterChipDTO.getFilterChipText(),
|
||||||
v -> initBottomSheetDialogFilter(filterChipDTO.getValue()));
|
v -> initBottomSheetDialogFilter(filterChipDTO));
|
||||||
|
|
||||||
if (filterChipDTO.getKey() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
|
switch (filterChipDTO.getID()){
|
||||||
|
case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID -> {
|
||||||
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -240,6 +265,32 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
});
|
});
|
||||||
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
|
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID -> {
|
||||||
|
mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (mFilterViewModel.getCurrentGruppoMercPredicate().get() == null) {
|
||||||
|
filterChipView.disableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
} else {
|
||||||
|
filterChipView.enableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView, 0);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filterChipView.setOnResetClicked(() -> {
|
||||||
|
mFilterViewModel.setGruppoMercFilter(null);
|
||||||
|
mFilterViewModel.getCurrentGruppoMercPredicate().set(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
this.mBindings.filterChipsGroup.addView(filterChipView);
|
this.mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -253,7 +304,8 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
var filterLayoutView = filterChipDTO
|
var filterLayoutView = filterChipDTO
|
||||||
.getFilterLayoutView();
|
.getFilterLayoutView();
|
||||||
|
|
||||||
if (filterChipDTO.getID() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
|
switch (filterChipDTO.getID()) {
|
||||||
|
case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID ->
|
||||||
((FilterNumeroOrdineLayoutView) filterLayoutView)
|
((FilterNumeroOrdineLayoutView) filterLayoutView)
|
||||||
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
|
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
|
||||||
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
|
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
|
||||||
@ -263,6 +315,13 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
|
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
|
||||||
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
||||||
.toList());
|
.toList());
|
||||||
|
|
||||||
|
case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID ->
|
||||||
|
((FilterGruppoMercLayoutView) filterLayoutView)
|
||||||
|
.setAllGroupMerc(mFilterViewModel.getAllGruppoMerc(mtbGrupCache))
|
||||||
|
.setAvailableGroupMerc(mFilterViewModel.getAvailableGruppoMerc(mtbGrupCache))
|
||||||
|
.setOnFilterApplied(mFilterViewModel::setGruppoMercFilter)
|
||||||
|
.setPreSelectedGroupMerc(mFilterViewModel.getSelectedMtbGrup());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!filterLayoutView.isAdded())
|
if (!filterLayoutView.isAdded())
|
||||||
@ -270,6 +329,44 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initMtbGrupsCache(Runnable onComplete) {
|
||||||
|
var codMgrpArts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue()))
|
||||||
|
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ?
|
||||||
|
x.getOrdineLavorazioneDTO().getAvailableClassMerc() : new ArrayList<>()))
|
||||||
|
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
|
||||||
|
.withoutNulls()
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
this.mArticoloRESTConsumer.getArtsGroups(codMgrpArts, mtbGrupCache -> {
|
||||||
|
this.mtbGrupCache = mtbGrupCache;
|
||||||
|
onComplete.run();
|
||||||
|
}, this::onError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initJtbComtCache(Runnable onComplete) {
|
||||||
|
if (this.mViewModel.getOrdiniList().getValue() == null) {
|
||||||
|
this.jtbComtCache = new ArrayList<>();
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue()))
|
||||||
|
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getCodJcom()))
|
||||||
|
.distinct().withoutNulls()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (jtbComts.isEmpty()) {
|
||||||
|
this.jtbComtCache = new ArrayList<>();
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
|
||||||
|
this.jtbComtCache = jtbComtCache;
|
||||||
|
onComplete.run();
|
||||||
|
}, this::onError);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||||
|
|||||||
@ -6,15 +6,22 @@ import androidx.lifecycle.MutableLiveData;
|
|||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.annimon.stream.function.Predicate;
|
import com.annimon.stream.function.Predicate;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbGrup;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
|
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
|
||||||
|
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||||
|
|
||||||
public class ProdFabbisognoLineeProdFilterViewModel {
|
public class ProdFabbisognoLineeProdFilterViewModel {
|
||||||
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>();
|
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>();
|
||||||
|
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentGruppoMercPredicate = new ObservableField<>();
|
||||||
|
|
||||||
private List<ProdFabbisognoLineeItemModelDto> initialList;
|
private List<ProdFabbisognoLineeItemModelDto> initialList;
|
||||||
|
private List<MtbGrup> selectedMtbGrup = new ArrayList<>();
|
||||||
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>();
|
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>();
|
||||||
|
|
||||||
public void init(List<ProdFabbisognoLineeItemModelDto> initialList) {
|
public void init(List<ProdFabbisognoLineeItemModelDto> initialList) {
|
||||||
@ -33,14 +40,30 @@ public class ProdFabbisognoLineeProdFilterViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setGruppoMercFilter(List<MtbGrup> mtbGrupList) {
|
||||||
|
if (mtbGrupList == null || mtbGrupList.isEmpty()) {
|
||||||
|
currentGruppoMercPredicate.set(null);
|
||||||
|
this.selectedMtbGrup = new ArrayList<>();
|
||||||
|
} else {
|
||||||
|
this.selectedMtbGrup = mtbGrupList;
|
||||||
|
var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList();
|
||||||
|
|
||||||
|
currentGruppoMercPredicate.set(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc())
|
||||||
|
.anyMatch(y -> mtbGrups.contains(y.getCodMgrp())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void applyAllTests() {
|
public void applyAllTests() {
|
||||||
List<ProdFabbisognoLineeItemModelDto> returnList = null;
|
List<ProdFabbisognoLineeItemModelDto> returnList = null;
|
||||||
|
|
||||||
if (currentNumOrdsPredicate.get() == null){
|
if (currentNumOrdsPredicate.get() == null &&
|
||||||
|
currentGruppoMercPredicate.get() == null) {
|
||||||
returnList = this.initialList;
|
returnList = this.initialList;
|
||||||
} else {
|
} else {
|
||||||
Stream<ProdFabbisognoLineeItemModelDto> tmpStream = Stream.of(this.initialList)
|
Stream<ProdFabbisognoLineeItemModelDto> tmpStream = Stream.of(this.initialList)
|
||||||
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))));
|
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
|
||||||
|
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
|
||||||
|
);
|
||||||
|
|
||||||
returnList = tmpStream.toList();
|
returnList = tmpStream.toList();
|
||||||
}
|
}
|
||||||
@ -52,6 +75,10 @@ public class ProdFabbisognoLineeProdFilterViewModel {
|
|||||||
return currentNumOrdsPredicate;
|
return currentNumOrdsPredicate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> getCurrentGruppoMercPredicate() {
|
||||||
|
return currentGruppoMercPredicate;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Integer> getAllNumOrds() {
|
public List<Integer> getAllNumOrds() {
|
||||||
return Stream
|
return Stream
|
||||||
.of(Objects.requireNonNull(initialList))
|
.of(Objects.requireNonNull(initialList))
|
||||||
@ -63,12 +90,58 @@ public class ProdFabbisognoLineeProdFilterViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Integer> getAvailableNumOrds() {
|
public List<Integer> getAvailableNumOrds() {
|
||||||
if (currentNumOrdsPredicate.get() == null) return getAllNumOrds();
|
if (currentGruppoMercPredicate.get() == null) return getAllNumOrds();
|
||||||
else {
|
else {
|
||||||
return Stream.of(this.initialList)
|
return Stream.of(this.initialList)
|
||||||
|
.filter(x -> (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))))
|
||||||
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MtbGrup> getSelectedMtbGrup() {
|
||||||
|
return selectedMtbGrup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> mtbGrupFullList) {
|
||||||
|
var codMgrp = Stream.of(initialList)
|
||||||
|
.flatMap(x ->
|
||||||
|
Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ?
|
||||||
|
x.getOrdineLavorazioneDTO().getAvailableClassMerc() :
|
||||||
|
new ArrayList<>()))
|
||||||
|
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
|
||||||
|
.withoutNulls()
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
|
||||||
|
.filter(x -> codMgrp.contains(x.getCodMgrp()))
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sortBy(MtbGrup::getDescrizione)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MtbGrup> getAvailableGruppoMerc(List<MtbGrup> mtbGrupFullList){
|
||||||
|
if (currentNumOrdsPredicate.get() == null){
|
||||||
|
return getAllGruppoMerc(mtbGrupFullList);
|
||||||
|
} else {
|
||||||
|
List<String> availableCodMgrups = Stream.of(this.initialList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x)))
|
||||||
|
)
|
||||||
|
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc()))
|
||||||
|
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
|
||||||
|
.filter(x -> availableCodMgrups.contains(x.getCodMgrp()))
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sortBy(MtbGrup::getDescrizione)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,10 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableFloat;
|
import it.integry.integrywmsnative.core.di.BindableFloat;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
|
||||||
public class OrdineLavorazioneDTO {
|
public class OrdineLavorazioneDTO {
|
||||||
@ -101,6 +103,7 @@ public class OrdineLavorazioneDTO {
|
|||||||
private Object mtbColtToEdit;
|
private Object mtbColtToEdit;
|
||||||
|
|
||||||
private int hrNum;
|
private int hrNum;
|
||||||
|
private List<AvailableClassMerc> availableClassMerc;
|
||||||
|
|
||||||
|
|
||||||
private BindableFloat qtaColVersamento = new BindableFloat();
|
private BindableFloat qtaColVersamento = new BindableFloat();
|
||||||
@ -533,4 +536,37 @@ public class OrdineLavorazioneDTO {
|
|||||||
this.descrizioneAttivita = descrizioneAttivita;
|
this.descrizioneAttivita = descrizioneAttivita;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<AvailableClassMerc> getAvailableClassMerc() {
|
||||||
|
return availableClassMerc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineLavorazioneDTO setAvailableClassMerc(List<AvailableClassMerc> availableClassMerc) {
|
||||||
|
this.availableClassMerc = availableClassMerc;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class AvailableClassMerc {
|
||||||
|
|
||||||
|
private String codMgrp;
|
||||||
|
private List<String> codMsgr;
|
||||||
|
|
||||||
|
public String getCodMgrp() {
|
||||||
|
return codMgrp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AvailableClassMerc setCodMgrp(String codMgrp) {
|
||||||
|
this.codMgrp = codMgrp;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getCodMsgr() {
|
||||||
|
return codMsgr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AvailableClassMerc setCodMsgr(List<String> codMsgr) {
|
||||||
|
this.codMsgr = codMsgr;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user