- corretto il metodo di download griglia in modo che elimini gli articoli rimossi dalla griglia,

- corretto bug nel lettore di codici a barre per ignorare il keypress su alcuni pulsanti di controllo (es. pulsante DEL)
This commit is contained in:
Valerio Castellana 2019-12-09 17:22:13 +01:00
parent 8c2b24787a
commit b1c5aa6f74
5 changed files with 36 additions and 10 deletions

View File

@ -1,10 +1,12 @@
package it.integry.integrywmsnative.core.data_store.db.dao; package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update; import androidx.room.Update;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@ -13,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public interface ArticoloGrigliaDao { public interface ArticoloGrigliaDao {
@Query("SELECT * from articoli_griglia") @Query("SELECT * from articoli_griglia")
List<ArticoloGriglia> getAll(); List<ArticoloGriglia> getAll();
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia") @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia")
Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart); Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart);
@ -25,6 +28,9 @@ public interface ArticoloGrigliaDao {
@Update @Update
void update(ArticoloGriglia articolo); void update(ArticoloGriglia articolo);
@Delete
void deleteList(List<ArticoloGriglia> toDelete);
@Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1") @Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia); ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia);
@ -36,4 +42,7 @@ public interface ArticoloGrigliaDao {
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1") @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1")
Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart); Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
} }

View File

@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.data_store.db.repository; package it.integry.integrywmsnative.core.data_store.db.repository;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -8,6 +11,7 @@ import java.util.List;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliGrigliaRepository extends Repository{ public class ArticoliGrigliaRepository extends Repository{
@ -18,13 +22,15 @@ public class ArticoliGrigliaRepository extends Repository{
this.mRepository = MainApplication.getArticoliGrigliaRepository(); this.mRepository = MainApplication.getArticoliGrigliaRepository();
} }
public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) { public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(()->{ execute(()->{
try{ try{
List<ArticoloGriglia> toUpdate = new ArrayList<>(); List<ArticoloGriglia> toUpdate = new ArrayList<>();
List<ArticoloGriglia> toInsert = new ArrayList<>(); List<ArticoloGriglia> toInsert = new ArrayList<>();
List<String> codMarts = new ArrayList<>();
for (ArticoloGriglia art : articoli){ for (ArticoloGriglia art : articoli){
Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(art.getIdGriglia(),art.getBarCode(),art.getCodMart()); Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(),art.getBarCode(),art.getCodMart());
codMarts.add(art.getCodMart());
if (id != null){ if (id != null){
art.setArticoloGrigliaId(id); art.setArticoloGrigliaId(id);
toUpdate.add(art); toUpdate.add(art);
@ -34,6 +40,9 @@ public class ArticoliGrigliaRepository extends Repository{
} }
mRepository.insertAll(toInsert); mRepository.insertAll(toInsert);
mRepository.updateAll(toUpdate); mRepository.updateAll(toUpdate);
List<ArticoloGriglia> articoliGriglia = mRepository.getArticoliFromGriglia(griglia.getGrigliaId());
List<ArticoloGriglia> toDelete =Stream.of(articoliGriglia).filter(articolo-> !codMarts.contains(articolo.getCodMart())).toList();
mRepository.deleteList(toDelete);
onSuccess.run(); onSuccess.run();
}catch (Exception e){ }catch (Exception e){
onFail.run(e); onFail.run(e);

View File

@ -12,10 +12,20 @@ public class BaseActivity extends AppCompatActivity {
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) { if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) { if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event); return BarcodeManager.onKeyDown(event.getKeyCode(), event);
} }
} }
return super.dispatchKeyEvent(event); return super.dispatchKeyEvent(event);
} }
private boolean isControlKey(KeyEvent keyEvent) {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}
} }

View File

@ -18,7 +18,7 @@ public class BaseDialog extends Dialog {
public BaseDialog(@NonNull Context context) { public BaseDialog(@NonNull Context context) {
super(context); super(context);
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()){ if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
setOnKeyListener((dialog, keyCode, event) -> { setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) { if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event); return BarcodeManager.onKeyDown(event.getKeyCode(), event);
@ -32,8 +32,8 @@ public class BaseDialog extends Dialog {
int keyCode = keyEvent.getKeyCode(); int keyCode = keyEvent.getKeyCode();
return ( return (
keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
); );
} }

View File

@ -50,9 +50,7 @@ public class OrdineAcquistoPvHelper {
griglia.setDescrLisa(dto.getDescrLisa()); griglia.setDescrLisa(dto.getDescrLisa());
griglia.setDescrDepo(dto.getDescrDepo()); griglia.setDescrDepo(dto.getDescrDepo());
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size()); griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
mGrigliaRepository.saveGriglia(griglia, id -> { mGrigliaRepository.saveGriglia(griglia, id -> saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail), onFail);
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail);
}, onFail);
}, onFail); }, onFail);
} }
@ -64,7 +62,7 @@ public class OrdineAcquistoPvHelper {
toSave.setIdGriglia(griglia.getGrigliaId()); toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave); articoliGriglia.add(toSave);
} }
mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail); mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia,griglia, () -> onSave.run(griglia), onFail);
} }
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) { public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {