Fix vari su Synchronized e MainThread
This commit is contained in:
parent
eb5ae8443d
commit
cd89ce917e
@ -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<MtbAart> onComplete, RunnableArgs<Exception> onFailed){
|
||||
public void findIfIsKit(MtbAart mtbAart, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
ArticoloRESTConsumerService articoloRESTConsumerService = restBuilder.getService(ArticoloRESTConsumerService.class);
|
||||
|
||||
articoloRESTConsumerService
|
||||
@ -207,25 +209,26 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void getUntMisArts(List<String> inputUntMis, RunnableArgs<List<MtbUntMis>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> whereCondList = Stream.of(inputUntMis)
|
||||
public List<MtbUntMis> getUntMisArtsSynchronized(List<String> inputUntMis) throws Exception {
|
||||
List<HashMap<String, Object>> whereCondList = inputUntMis.parallelStream()
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.filter(Objects::nonNull)
|
||||
.map(x -> {
|
||||
HashMap<String, Object> 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<ArrayList<MtbUntMis>>() {
|
||||
}.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<MtbAart> inputMtbAart, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public List<MtbAart> fillMtbAartsWithMtbUntMisSynchronized(List<MtbAart> inputMtbAart) throws Exception {
|
||||
var inputUntMis = new ArrayList<String>();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -169,27 +169,28 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
|
||||
analyzeAnswer(response, "getInstantItemSituation", data -> {
|
||||
var response = giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom)
|
||||
.execute();
|
||||
|
||||
fillInstantItemSituationWithMtbAarts(data, onComplete, onFailed);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, @NonNull final Exception e) {
|
||||
onFailed.run(e);
|
||||
}
|
||||
});
|
||||
var data = analyzeAnswer(response, "getInstantItemSituation");
|
||||
return fillInstantItemSituationWithMtbAartsSynchronized(data);
|
||||
}
|
||||
|
||||
private void fillInstantItemSituationWithMtbAarts(InstantItemSituationResponseDto data, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> 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<String>();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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<Exception> onFailed) {
|
||||
public void printClosedOrdersSynchronized(PrintOrderCloseDTO dto, String codMdep) throws Exception {
|
||||
if (BuildConfig.DEBUG) {
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class, 240);
|
||||
Call<ServiceRESTResponse<Object>> callable = printerService.printClosedOrders(codMdep, dto);
|
||||
callable.enqueue(new ManagedErrorCallback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
analyzeAnswer(response, "printCollo", data -> {
|
||||
onComplete.run();
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<Object>> call, @NonNull final Exception e) {
|
||||
onFailed.run(e);
|
||||
}
|
||||
});
|
||||
var response = callable.execute();
|
||||
analyzeAnswer(response, "printCollo");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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<OrdiniUscitaElencoListModel> notHiddenElements = dataList.parallelStream()
|
||||
List<OrdiniUscitaElencoListModel> notHiddenElements = dataList.stream()
|
||||
.filter(x -> !x.isHidden())
|
||||
.sorted(comparator)
|
||||
.map(x -> {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -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<PrintOrderCloseDTO> 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<Boolean> 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<PrintOrderCloseDTO> onComplete) {
|
||||
DialogPrintOrderSSCCListView.newInstance(printOrderCloseDTO, onComplete).show(this.getSupportFragmentManager(), "dialogPrintOrderSSCCListView");
|
||||
public DialogPrintOrderSSCCListView.Result askShouldPrintSSCC(PrintOrderCloseDTO printOrderCloseDTO) {
|
||||
AtomicReference<DialogPrintOrderSSCCListView.Result> 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<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete) {
|
||||
DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
handler.post(() -> {
|
||||
DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCloseOrderPrintRequest(RunnableArgs<PrintOrderCloseDTO> 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
|
||||
|
||||
@ -354,8 +354,12 @@ public class SpedizioneViewModel {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnCloseOrderPrintRequest(RunnableArgs<PrintOrderCloseDTO> 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<DtbOrdt> closedOrders = this.mTestateOrdini.stream()
|
||||
|
||||
List<DtbOrdt> 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<Exception> 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<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete);
|
||||
|
||||
void onCloseOrderPrintRequest(RunnableArgs<PrintOrderCloseDTO> onComplete);
|
||||
PrintOrderCloseDTO onCloseOrderPrintRequest();
|
||||
|
||||
void onCreateDocsRequest();
|
||||
|
||||
|
||||
@ -35,17 +35,18 @@ public class DialogPrintOrderSSCCListView extends BaseDialogFragment {
|
||||
private Context mContext;
|
||||
private DialogPrintOrderSsccListBinding mBindings;
|
||||
private final PrintOrderCloseDTO printOrderCloseDTO;
|
||||
private final RunnableArgs<PrintOrderCloseDTO> onDialogClose;
|
||||
private final Result result = new Result();
|
||||
private final RunnableArgs<Result> onDialogClose;
|
||||
|
||||
|
||||
public static DialogPrintOrderSSCCListView newInstance(
|
||||
PrintOrderCloseDTO printOrderCloseDTO,
|
||||
RunnableArgs<PrintOrderCloseDTO> onDismiss
|
||||
RunnableArgs<Result> onDismiss
|
||||
) {
|
||||
return new DialogPrintOrderSSCCListView(printOrderCloseDTO, onDismiss);
|
||||
}
|
||||
|
||||
public DialogPrintOrderSSCCListView(@NotNull PrintOrderCloseDTO printOrderCloseDTO, @NotNull RunnableArgs<PrintOrderCloseDTO> onDismiss) {
|
||||
public DialogPrintOrderSSCCListView(@NotNull PrintOrderCloseDTO printOrderCloseDTO, @NotNull RunnableArgs<Result> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<InstantItemSituationIncomingItemDto> 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<MvwSitArtUdcDetInventario> 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();
|
||||
|
||||
@ -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"/>
|
||||
|
||||
<!-- 3. CheckBox direttamente nel layout principale -->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user