In verifica giagenza gestito salvataggio online per ogni riga

This commit is contained in:
Marco Elefante 2025-07-01 15:40:02 +02:00
parent 7920166110
commit a385b01584
11 changed files with 262 additions and 43 deletions

View File

@ -5,8 +5,11 @@ import java.util.List;
import java.util.concurrent.ExecutorService;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.pv.CloseVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.DeleteRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.UpdateRowVerificaRequestDTO;
public class GiacenzaPvRESTConsumer extends _BaseRESTConsumer {
@ -30,12 +33,36 @@ public class GiacenzaPvRESTConsumer extends _BaseRESTConsumer {
return giacenzeList != null ? giacenzeList : new ArrayList<>();
}
public void saveNewVerificaSynchronized(SaveNewVerificaRequestDTO saveNewVerificaRequest) throws Exception {
public void saveNewRowSynchronized(SaveNewRowVerificaRequestDTO saveNewRowVerificaRequest) throws Exception {
GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 0);
var response = giacenzaPvRESTConsumerService.saveNewVerifica(saveNewVerificaRequest)
var response = giacenzaPvRESTConsumerService.saveNewRowVerifica(saveNewRowVerificaRequest)
.execute();
analyzeAnswer(response, "save-verifica-pv");
analyzeAnswer(response, "save-row-verifica-pv");
}
public void updateRowSynchronized(UpdateRowVerificaRequestDTO updateRowVerificaRequest) throws Exception {
GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 0);
var response = giacenzaPvRESTConsumerService.updateRowVerifica(updateRowVerificaRequest)
.execute();
analyzeAnswer(response, "update-row-verifica-pv");
}
public void deleteRowSynchronized(DeleteRowVerificaRequestDTO deleteRowVerificaRequest) throws Exception {
GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 0);
var response = giacenzaPvRESTConsumerService.deleteRowVerifica(deleteRowVerificaRequest)
.execute();
analyzeAnswer(response, "delete-row-verifica-pv");
}
public void closeVerifica(CloseVerificaRequestDTO closeVerificaRequestDTO) throws Exception {
GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 0);
var response = giacenzaPvRESTConsumerService.closeVerifica(closeVerificaRequestDTO)
.execute();
analyzeAnswer(response, "close-verifica-pv");
}
}

View File

@ -3,8 +3,11 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.pv.CloseVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.DeleteRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.UpdateRowVerificaRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
@ -17,6 +20,15 @@ public interface GiacenzaPvRESTConsumerService {
Call<ServiceRESTResponse<List<GiacenzaPvDTO>>> retrieve(@Query("codMdep") String codMdep);
@POST("wms/pv/verifica_giacenze/save_new_verifica")
Call<ServiceRESTResponse<Void>> saveNewVerifica(@Body SaveNewVerificaRequestDTO saveNewVerificaRequest);
@POST("wms/pv/verifica_giacenze/save_new_row")
Call<ServiceRESTResponse<Void>> saveNewRowVerifica(@Body SaveNewRowVerificaRequestDTO saveNewRowVerificaRequest);
@POST("wms/pv/verifica_giacenze/update_row")
Call<ServiceRESTResponse<Void>> updateRowVerifica(@Body UpdateRowVerificaRequestDTO updateRowVerificaRequest);
@POST("wms/pv/verifica_giacenze/delete_row")
Call<ServiceRESTResponse<Void>> deleteRowVerifica(@Body DeleteRowVerificaRequestDTO deleteRowVerificaRequest);
@POST("wms/pv/verifica_giacenze/close_verifica")
Call<ServiceRESTResponse<Void>> closeVerifica(@Body CloseVerificaRequestDTO closeVerificaRequest);
}

View File

@ -0,0 +1,27 @@
package it.integry.integrywmsnative.core.rest.model.pv;
import java.time.LocalDateTime;
public class CloseVerificaRequestDTO {
private String codMdep;
private LocalDateTime dataVerifica;
public String getCodMdep() {
return codMdep;
}
public CloseVerificaRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public LocalDateTime getDataVerifica() {
return dataVerifica;
}
public CloseVerificaRequestDTO setDataVerifica(LocalDateTime dataVerifica) {
this.dataVerifica = dataVerifica;
return this;
}
}

View File

@ -0,0 +1,37 @@
package it.integry.integrywmsnative.core.rest.model.pv;
import java.time.LocalDateTime;
public class DeleteRowVerificaRequestDTO {
private String codMdep;
private LocalDateTime dataVerifica;
private VerificaGiacenzeRowDTO row;
public String getCodMdep() {
return codMdep;
}
public DeleteRowVerificaRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public LocalDateTime getDataVerifica() {
return dataVerifica;
}
public DeleteRowVerificaRequestDTO setDataVerifica(LocalDateTime dataVerifica) {
this.dataVerifica = dataVerifica;
return this;
}
public VerificaGiacenzeRowDTO getRow() {
return row;
}
public DeleteRowVerificaRequestDTO setRow(VerificaGiacenzeRowDTO row) {
this.row = row;
return this;
}
}

View File

@ -0,0 +1,38 @@
package it.integry.integrywmsnative.core.rest.model.pv;
import java.time.LocalDateTime;
public class SaveNewRowVerificaRequestDTO {
private String codMdep;
private LocalDateTime dataVerifica;
private VerificaGiacenzeRowDTO row;
public String getCodMdep() {
return codMdep;
}
public SaveNewRowVerificaRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public LocalDateTime getDataVerifica() {
return dataVerifica;
}
public SaveNewRowVerificaRequestDTO setDataVerifica(LocalDateTime dataVerifica) {
this.dataVerifica = dataVerifica;
return this;
}
public VerificaGiacenzeRowDTO getRow() {
return row;
}
public SaveNewRowVerificaRequestDTO setRow(VerificaGiacenzeRowDTO row) {
this.row = row;
return this;
}
}

View File

@ -1,15 +0,0 @@
package it.integry.integrywmsnative.core.rest.model.pv;
public class SaveNewVerificaRequestDTO {
private VerificaGiacenzeDTO data;
public VerificaGiacenzeDTO getData() {
return data;
}
public SaveNewVerificaRequestDTO setData(VerificaGiacenzeDTO data) {
this.data = data;
return this;
}
}

View File

@ -0,0 +1,38 @@
package it.integry.integrywmsnative.core.rest.model.pv;
import java.time.LocalDateTime;
public class UpdateRowVerificaRequestDTO {
private String codMdep;
private LocalDateTime dataVerifica;
private VerificaGiacenzeRowDTO row;
public String getCodMdep() {
return codMdep;
}
public UpdateRowVerificaRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public LocalDateTime getDataVerifica() {
return dataVerifica;
}
public UpdateRowVerificaRequestDTO setDataVerifica(LocalDateTime dataVerifica) {
this.dataVerifica = dataVerifica;
return this;
}
public VerificaGiacenzeRowDTO getRow() {
return row;
}
public UpdateRowVerificaRequestDTO setRow(VerificaGiacenzeRowDTO row) {
this.row = row;
return this;
}
}

View File

@ -252,7 +252,13 @@ public class VerificaGiacenzeFragment extends BaseFragment implements ITitledFra
@Override
public void onItemDeleteRequest(VerificaGiacenzeRowEntity data) {
mViewModel.deleteRow(data);
executorService.execute(() -> {
try {
mViewModel.deleteRow(data);
} catch (Exception ex) {
onError(ex);
}
});
}
@ -317,12 +323,12 @@ public class VerificaGiacenzeFragment extends BaseFragment implements ITitledFra
return result.get();
}
public void saveAndClose() {
public void Close() {
this.onLoadingStarted();
executorService.execute(() -> {
try {
mViewModel.save();
mViewModel.close();
this.onLoadingEnded();
popMe();

View File

@ -8,7 +8,7 @@ import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
@ -16,8 +16,8 @@ import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
public class VerificaGiacenzeModule {
@Provides
VerificaGiacenzeViewModel providesVerificaGiacenzeViewModel(ExecutorService executorService, Handler handler, VerificaGiacenzeMapper verificaGiacenzeMapper, VerificaGiacenzeRepository verificaGiacenzeRepository, VerificaGiacenzeRowRepository verificaGiacenzeRowRepository, GiacenzaPvRESTConsumer giacenzaPvRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new VerificaGiacenzeViewModel(executorService, handler, verificaGiacenzeMapper, giacenzaPvRESTConsumer, verificaGiacenzeRepository, verificaGiacenzeRowRepository, articoloRESTConsumer);
VerificaGiacenzeViewModel providesVerificaGiacenzeViewModel(ExecutorService executorService, Handler handler, VerificaGiacenzeRowMapper verificaGiacenzeRowMapper, VerificaGiacenzeRepository verificaGiacenzeRepository, VerificaGiacenzeRowRepository verificaGiacenzeRowRepository, GiacenzaPvRESTConsumer giacenzaPvRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new VerificaGiacenzeViewModel(executorService, handler, verificaGiacenzeRowMapper, giacenzaPvRESTConsumer, verificaGiacenzeRepository, verificaGiacenzeRowRepository, articoloRESTConsumer);
}
}

View File

@ -11,7 +11,6 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
@ -23,14 +22,18 @@ import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRow
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartBarCode;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.pv.CloseVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.DeleteRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.SaveNewRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.rest.model.pv.UpdateRowVerificaRequestDTO;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
@ -39,7 +42,7 @@ public class VerificaGiacenzeViewModel {
private final ExecutorService executorService;
private final Handler handler;
private final VerificaGiacenzeMapper verificaGiacenzeMapper;
private final VerificaGiacenzeRowMapper verificaGiacenzeRowMapper;
private final GiacenzaPvRESTConsumer giacenzaPvRESTConsumer;
private final VerificaGiacenzeRepository verificaGiacenzeRepository;
private final VerificaGiacenzeRowRepository verificaGiacenzeRowRepository;
@ -56,14 +59,14 @@ public class VerificaGiacenzeViewModel {
@Inject
public VerificaGiacenzeViewModel(ExecutorService executorService,
Handler handler,
VerificaGiacenzeMapper verificaGiacenzeMapper,
VerificaGiacenzeRowMapper verificaGiacenzeRowMapper,
GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
VerificaGiacenzeRepository verificaGiacenzeRepository,
VerificaGiacenzeRowRepository verificaGiacenzeRowRepository,
ArticoloRESTConsumer articoloRESTConsumer) {
this.executorService = executorService;
this.handler = handler;
this.verificaGiacenzeMapper = verificaGiacenzeMapper;
this.verificaGiacenzeRowMapper = verificaGiacenzeRowMapper;
this.giacenzaPvRESTConsumer = giacenzaPvRESTConsumer;
this.verificaGiacenzeRepository = verificaGiacenzeRepository;
this.verificaGiacenzeRowRepository = verificaGiacenzeRowRepository;
@ -168,19 +171,17 @@ public class VerificaGiacenzeViewModel {
return entity;
}
public void save() throws Exception {
public void close() throws Exception {
if (currentVerificaRows.getValue().isEmpty()) {
delete();
return;
}
currentVerifica.getValue().setVerificaGiacenzeRowList(currentVerificaRows.getValue());
CloseVerificaRequestDTO request = new CloseVerificaRequestDTO()
.setCodMdep(Objects.requireNonNull(currentVerifica.getValue()).getCodMdep())
.setDataVerifica(Objects.requireNonNull(currentVerifica.getValue()).getData());
SaveNewVerificaRequestDTO saveRequest = new SaveNewVerificaRequestDTO()
.setData(verificaGiacenzeMapper.mapRoomToRest(currentVerifica.getValue()));
giacenzaPvRESTConsumer.saveNewVerificaSynchronized(saveRequest);
giacenzaPvRESTConsumer.closeVerifica(request);
delete();
}
@ -300,6 +301,19 @@ public class VerificaGiacenzeViewModel {
}
public void insertRow(VerificaGiacenzeRowEntity rowEntity) {
this.sendOnLoadingStarted();
var saveRequest = new SaveNewRowVerificaRequestDTO()
.setCodMdep(Objects.requireNonNull(currentVerifica.getValue()).getCodMdep())
.setDataVerifica(Objects.requireNonNull(currentVerifica.getValue()).getData())
.setRow(verificaGiacenzeRowMapper.mapRoomToRest(rowEntity));
try {
giacenzaPvRESTConsumer.saveNewRowSynchronized(saveRequest);
} catch (Exception e) {
this.sendError(e);
}
verificaGiacenzeRowRepository.insert(rowEntity, insertedData -> {
handler.post(() -> {
currentVerificaRows.getValue().add(insertedData);
@ -309,6 +323,19 @@ public class VerificaGiacenzeViewModel {
}
public void updateRow(VerificaGiacenzeRowEntity rowEntity) {
this.sendOnLoadingStarted();
var updateRequest = new UpdateRowVerificaRequestDTO()
.setCodMdep(Objects.requireNonNull(currentVerifica.getValue()).getCodMdep())
.setDataVerifica(Objects.requireNonNull(currentVerifica.getValue()).getData())
.setRow(verificaGiacenzeRowMapper.mapRoomToRest(rowEntity));
try {
giacenzaPvRESTConsumer.updateRowSynchronized(updateRequest);
} catch (Exception e) {
this.sendError(e);
}
var indexInList = -1;
List<VerificaGiacenzeRowEntity> value = currentVerificaRows.getValue();
@ -331,6 +358,19 @@ public class VerificaGiacenzeViewModel {
}
public void deleteRow(VerificaGiacenzeRowEntity rowEntity) {
this.sendOnLoadingStarted();
var deleteRequest = new DeleteRowVerificaRequestDTO()
.setCodMdep(Objects.requireNonNull(currentVerifica.getValue()).getCodMdep())
.setDataVerifica(Objects.requireNonNull(currentVerifica.getValue()).getData())
.setRow(verificaGiacenzeRowMapper.mapRoomToRest(rowEntity));
try {
giacenzaPvRESTConsumer.deleteRowSynchronized(deleteRequest);
} catch (Exception e) {
this.sendError(e);
}
verificaGiacenzeRowRepository.delete(rowEntity, () -> {
handler.post(() -> {
@ -343,6 +383,7 @@ public class VerificaGiacenzeViewModel {
private void notifyRowChanged() {
currentVerificaRows.postValue(currentVerificaRows.getValue());
this.sendOnLoadingEnded();
}
private PickedQuantityDTO sendOnItemDispatched(MtbAart mtbAart,
@ -373,7 +414,15 @@ public class VerificaGiacenzeViewModel {
this.listener.onError(ex);
}
public interface Listener {
private void sendOnLoadingStarted() {
if (this.listener != null) listener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.listener != null) listener.onLoadingEnded();
}
public interface Listener extends ILoadingListener {
PickedQuantityDTO onItemDispatched(MtbAart mtbAart,
BigDecimal initialNumCnf,
BigDecimal initialQtaCnf,

View File

@ -87,7 +87,7 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:singleClick="@{() -> view.saveAndClose()}"
app:singleClick="@{() -> view.Close()}"
app:srcCompat="@drawable/ic_round_check_24"
app:visibilityWhenNotNull="@{viewModel.currentVerifica}" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>