From 09c929803fceafd0fe41a687f0df6ec4e0ff8ef5 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 6 May 2024 18:39:52 +0200 Subject: [PATCH 01/68] Implementata login OAuth --- app/build.gradle | 3 + .../core/rest/HttpInterceptor.java | 16 +- .../rest/consumers/SystemRESTConsumer.java | 11 +- .../core/rest/model/NativeSqlRequestDTO.java | 11 +- .../core/settings/SettingsModel.java | 57 ++++--- .../gest/login/LoginActivity.java | 71 ++++----- .../gest/login/dto/AuthTokenClaimsDTO.java | 146 ++++++++++++++++++ .../gest/login/dto/LoginJwtResponseDTO.java | 48 ++++++ .../gest/login/dto/LoginRequestDTO.java | 20 +++ .../gest/login/rest/LoginRESTConsumer.java | 53 +++++-- .../login/rest/LoginRESTConsumerService.java | 11 +- .../gest/login/viewmodel/LoginViewModel.java | 125 +++++++++++---- 12 files changed, 440 insertions(+), 132 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthTokenClaimsDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java diff --git a/app/build.gradle b/app/build.gradle index 3d9d3a2b..1aed56c4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -182,6 +182,9 @@ dependencies { // RxJava is also required. implementation 'io.reactivex.rxjava2:rxjava:2.1.12' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' + + //JWTUtils + implementation 'com.auth0.android:jwtdecode:2.0.2' } repositories { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java index 17f82459..1f071272 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java @@ -1,7 +1,5 @@ package it.integry.integrywmsnative.core.rest; -import android.util.Base64; - import java.io.IOException; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -20,25 +18,19 @@ public class HttpInterceptor implements Interceptor { public Response intercept(Chain chain) throws IOException { final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB(); - final String USERNAME = SettingsManager.i().getUser().getUsername(); - final String PASSWORD = SettingsManager.i().getUser().getPassword(); - final String DEVICE_ID = SettingsManager.i().getUserSession().getDeviceId(); + final String ACCESS_TOKEN = SettingsManager.i().getUserSession().getAccessToken(); final Request request = chain.request(); final HttpUrl url = request.url().newBuilder() .addQueryParameter("profileDb", PROFILE_DB) .build(); - String string = "Basic " + Base64.encodeToString((USERNAME + ":" + PASSWORD).getBytes(), Base64.NO_WRAP); - final Request newRequest = chain.request().newBuilder() - .addHeader("Authorization", string) + .addHeader("Authorization", "Bearer " + ACCESS_TOKEN) .addHeader("Content-Type", "application/json") .addHeader("Accept", "*/*") - .addHeader("username", USERNAME != null ? USERNAME : "") - .addHeader("password", PASSWORD != null ? PASSWORD : "") - .addHeader("device_id", DEVICE_ID != null ? DEVICE_ID : "") - .url(url).build(); + .url(url) + .build(); return chain.proceed(newRequest); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index fd8bbbda..e08c4594 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -4,9 +4,6 @@ import android.text.TextUtils; import android.util.Log; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonParseException; import com.orhanobut.logger.Logger; import java.io.ByteArrayInputStream; @@ -15,7 +12,6 @@ import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.Type; import java.net.ConnectException; -import java.util.Date; import java.util.List; import javax.inject.Singleton; @@ -31,7 +27,6 @@ import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityGson; import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; @@ -63,8 +58,8 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { } public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) { - NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); - nativeSqlDTO.nativeSql = nativeSql; + NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO() + .setNativeSql(nativeSql); SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); service @@ -104,7 +99,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { service.getAvailableCodMdeps().enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed); + analyzeAnswer(response, "getAvailableCodMdeps", onSuccess, onFailed); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/NativeSqlRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/NativeSqlRequestDTO.java index 5684b5a9..3af6b4af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/NativeSqlRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/NativeSqlRequestDTO.java @@ -2,6 +2,15 @@ package it.integry.integrywmsnative.core.rest.model; public class NativeSqlRequestDTO { - public String nativeSql; + private String nativeSql; + + public String getNativeSql() { + return nativeSql; + } + + public NativeSqlRequestDTO setNativeSql(String nativeSql) { + this.nativeSql = nativeSql; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java index 027d4eb1..a8cb448b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.settings; +import java.time.LocalDateTime; + import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; public class SettingsModel { @@ -62,28 +64,9 @@ public class SettingsModel { } public static class User { - private String username; - private String password; + private String fullname; - public String getUsername() { - return username; - } - - public User setUsername(String username) { - this.username = username; - return this; - } - - public String getPassword() { - return password; - } - - public User setPassword(String password) { - this.password = password; - return this; - } - public String getFullname() { return fullname; } @@ -95,18 +78,50 @@ public class SettingsModel { } public static class UserSession { + + private String accessToken; + private String refreshToken; + private LocalDateTime refreshTokenExpiryDate; private String deviceId; private String profileDB; private AvailableCodMdepsDTO depo; private Integer defaultOrdinamentoPickingAccettazione = 0; private Integer defaultOrdinamentoPickingAccettazioneBolle = 0; + public String getAccessToken() { + return accessToken; + } + + public UserSession setAccessToken(String accessToken) { + this.accessToken = accessToken; + return this; + } + + public String getRefreshToken() { + return refreshToken; + } + + public UserSession setRefreshToken(String refreshToken) { + this.refreshToken = refreshToken; + return this; + } + + public LocalDateTime getRefreshTokenExpiryDate() { + return refreshTokenExpiryDate; + } + + public UserSession setRefreshTokenExpiryDate(LocalDateTime refreshTokenExpiryDate) { + this.refreshTokenExpiryDate = refreshTokenExpiryDate; + return this; + } + public String getDeviceId() { return deviceId; } - public void setDeviceId(String deviceId) { + public UserSession setDeviceId(String deviceId) { this.deviceId = deviceId; + return this; } public String getProfileDB() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java index 18e36266..190cfa64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java @@ -18,6 +18,7 @@ import it.integry.integrywmsnative.SplashActivity; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityWindow; @@ -104,18 +105,39 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen } @Override - public void onLoginCompleted(String protocol, String host, int port, String fullName, List availableProfiles) { + public void onLoginCompleted(String fullName) { this.onLoadingEnded(); runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog( - "Benvenuto", - Html.fromHtml("Ciao " + fullName + ", la Integry le augura di svolgere al meglio il suo lavoro"), - null, - () -> showProfileDBSelectionDialog(protocol, host, port, availableProfiles)) + "Benvenuto", + Html.fromHtml("Ciao " + fullName + ", la Integry le augura di svolgere al meglio il suo lavoro"), + null, + this::startSplashActivity) .show(getSupportFragmentManager(), "tag")); } + @Override + public void requestProfileSelection(List availableProfiles, RunnableArgs onComplete) { + // setup the alert builder + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.action_choose_profile_db); + + // add a list + String[] profiles = new String[availableProfiles.size()]; + profiles = availableProfiles + .toArray(profiles); + + builder.setItems(profiles, (dialog, which) -> { + //SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(which)); + onComplete.run(availableProfiles.get(which)); + }); + + // create and show the alert dialog + AlertDialog dialog = builder.create(); + dialog.show(); + } + @Override public void onError(Exception ex) { @@ -123,45 +145,6 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen loginButtonEnabled.set(true); } - private void showProfileDBSelectionDialog(final String protocol, final String host, final int port, final List availableProfiles) { - Runnable onComplete = () -> { - - FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { - SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); - SettingsManager.update(); - - systemRESTConsumer.registerDevice(this::startSplashActivity, this::onError); - }); - }; - - loginButtonEnabled.set(true); - - if (availableProfiles != null && availableProfiles.size() == 1) { - SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(0)); - - mViewmodel.loadDepo(codAzienda.get(), protocol, host, port, username.get(), password.get(), onComplete); - } else { - - // setup the alert builder - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.action_choose_profile_db); - - // add a list - String[] profiles = new String[availableProfiles.size()]; - profiles = availableProfiles - .toArray(profiles); - - builder.setItems(profiles, (dialog, which) -> { - SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(which)); - - mViewmodel.loadDepo(codAzienda.get(), protocol, host, port, username.get(), password.get(), onComplete); - }); - - // create and show the alert dialog - AlertDialog dialog = builder.create(); - dialog.show(); - } - } private void startSplashActivity() { finish(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthTokenClaimsDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthTokenClaimsDTO.java new file mode 100644 index 00000000..ea3e4c01 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthTokenClaimsDTO.java @@ -0,0 +1,146 @@ +package it.integry.integrywmsnative.gest.login.dto; + +import java.util.HashMap; + +public class AuthTokenClaimsDTO { + + private long deviceId; + private User userDTO; + private HashMap profilesData; + + public long getDeviceId() { + return deviceId; + } + + public AuthTokenClaimsDTO setDeviceId(long deviceId) { + this.deviceId = deviceId; + return this; + } + + public User getUserDTO() { + return userDTO; + } + + public AuthTokenClaimsDTO setUserDTO(User userDTO) { + this.userDTO = userDTO; + return this; + } + + public HashMap getProfilesData() { + return profilesData; + } + + public AuthTokenClaimsDTO setProfilesData(HashMap profilesData) { + this.profilesData = profilesData; + return this; + } + + public class User { + private String username; + private Object email; + private String fullname; + private int keyGroup; + private boolean attivo; + private String type; + + public String getUsername() { + return username; + } + + public User setUsername(String username) { + this.username = username; + return this; + } + + public Object getEmail() { + return email; + } + + public User setEmail(Object email) { + this.email = email; + return this; + } + + public String getFullname() { + return fullname; + } + + public User setFullname(String fullname) { + this.fullname = fullname; + return this; + } + + public int getKeyGroup() { + return keyGroup; + } + + public User setKeyGroup(int keyGroup) { + this.keyGroup = keyGroup; + return this; + } + + public boolean isAttivo() { + return attivo; + } + + public User setAttivo(boolean attivo) { + this.attivo = attivo; + return this; + } + + public String getType() { + return type; + } + + public User setType(String type) { + this.type = type; + return this; + } + } + + public static class AuthTokenProfileDetails { + private AuthTokenDepoDetails defaultDepo; + + public AuthTokenDepoDetails getDefaultDepo() { + return defaultDepo; + } + + public AuthTokenProfileDetails setDefaultDepo(AuthTokenDepoDetails defaultDepo) { + this.defaultDepo = defaultDepo; + return this; + } + } + + public static class AuthTokenDepoDetails { + private String codMdep; + private String descrizione; + private String codJfas; + + public String getCodMdep() { + return codMdep; + } + + public AuthTokenDepoDetails setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public AuthTokenDepoDetails setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getCodJfas() { + return codJfas; + } + + public AuthTokenDepoDetails setCodJfas(String codJfas) { + this.codJfas = codJfas; + return this; + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java new file mode 100644 index 00000000..1440c75e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java @@ -0,0 +1,48 @@ +package it.integry.integrywmsnative.gest.login.dto; + +import java.time.LocalDateTime; + +public class LoginJwtResponseDTO { + + private String accessToken; + private String refreshToken; + private LocalDateTime expiryDate; + private long expireIn; + + + public String getAccessToken() { + return accessToken; + } + + public LoginJwtResponseDTO setAccessToken(String accessToken) { + this.accessToken = accessToken; + return this; + } + + public String getRefreshToken() { + return refreshToken; + } + + public LoginJwtResponseDTO setRefreshToken(String refreshToken) { + this.refreshToken = refreshToken; + return this; + } + + public LocalDateTime getExpiryDate() { + return expiryDate; + } + + public LoginJwtResponseDTO setExpiryDate(LocalDateTime expiryDate) { + this.expiryDate = expiryDate; + return this; + } + + public long getExpireIn() { + return expireIn; + } + + public LoginJwtResponseDTO setExpireIn(long expireIn) { + this.expireIn = expireIn; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginRequestDTO.java index 440dbdc1..55fd7b4e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginRequestDTO.java @@ -4,6 +4,8 @@ public class LoginRequestDTO { private String username; private String password; + private String profileDb; + private String deviceId; public String getUsername() { return username; @@ -22,4 +24,22 @@ public class LoginRequestDTO { this.password = password; return this; } + + public String getProfileDb() { + return profileDb; + } + + public LoginRequestDTO setProfileDb(String profileDb) { + this.profileDb = profileDb; + return this; + } + + public String getDeviceId() { + return deviceId; + } + + public LoginRequestDTO setDeviceId(String deviceId) { + this.deviceId = deviceId; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java index 67a9070e..974a4aad 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.login.rest; import android.util.Log; +import java.util.List; + import javax.inject.Singleton; import it.integry.integrywmsnative.core.CommonConst; @@ -10,7 +12,7 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; -import it.integry.integrywmsnative.gest.login.dto.LoginResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; import retrofit2.Call; import retrofit2.Callback; @@ -42,26 +44,49 @@ public class LoginRESTConsumer extends _BaseRESTConsumer { } - public void authenticate(String protocol, String host, int port, String username, String password, RunnableArgs onComplete, RunnableArgs onFailed) { + public void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { LoginRESTConsumerService service = RESTBuilder.getService(LoginRESTConsumerService.class, protocol, host, port, false); LoginRequestDTO loginRequestDTO = new LoginRequestDTO() .setUsername(username) - .setPassword(password); + .setPassword(password) + .setProfileDb(profileDb) + .setDeviceId(deviceSalt); - service.login(loginRequestDTO).enqueue(new Callback<>() { + service + .loginNew(loginRequestDTO) + .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "Login", onComplete, onFailed); - } + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "Login", onComplete, onFailed); + } - @Override - public void onFailure(Call> call, final Throwable t) { - Log.e("Login", t.toString()); - onFailed.run(new Exception(t)); - } - }); + @Override + public void onFailure(Call> call, final Throwable t) { + Log.e("Login", t.toString()); + onFailed.run(new Exception(t)); + } + }); + } + + + public void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs> onComplete, RunnableArgs onFailed) { + LoginRESTConsumerService service = RESTBuilder.getService(LoginRESTConsumerService.class, protocol, host, port, false); + + service.retreiveAvailableProfiles(username) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "retrieveAvailableProfiles", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + Log.e("Login", t.toString()); + onFailed.run(new Exception(t)); + } + }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java index f2cfb277..f8825d19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java @@ -1,10 +1,13 @@ package it.integry.integrywmsnative.gest.login.rest; +import java.util.List; + import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; -import it.integry.integrywmsnative.gest.login.dto.LoginResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; +import it.integry.integrywmsnative.gest.login.dto.LoginResponseDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -20,4 +23,10 @@ public interface LoginRESTConsumerService { @POST("loginWeb") Call> login(@Body LoginRequestDTO loginRequestDTO); + @POST("auth/login") + Call> loginNew(@Body LoginRequestDTO loginRequestDTO); + + @GET("users/availableProfiles") + Call>> retreiveAvailableProfiles(@Query("username") String username); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index 32e2709c..bf3d6035 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -1,18 +1,23 @@ package it.integry.integrywmsnative.gest.login.viewmodel; -import com.annimon.stream.Stream; +import com.auth0.android.jwt.JWT; +import com.google.firebase.installations.FirebaseInstallations; import java.net.MalformedURLException; import java.net.URL; import java.util.List; +import java.util.stream.Collectors; import javax.inject.Inject; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityServer; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.login.dto.AuthTokenClaimsDTO; import it.integry.integrywmsnative.gest.login.exception.InvalidServerCodAziendaException; import it.integry.integrywmsnative.gest.login.exception.InvalidUserDepositException; import it.integry.integrywmsnative.gest.login.rest.LoginRESTConsumer; @@ -35,6 +40,43 @@ public class LoginViewModel { public void login(String codAzienda, String username, String password) { this.sendOnLoadingStarted(); + retrieveServerData(codAzienda, (protocol, host, port) -> { + + UtilityServer.isEmsApiAvailable(protocol, host, port, () -> { + + FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + + retrieveAvailableProfiles(protocol, host, port, username, selectedProfile -> { + SettingsManager.i().createUserSession(); + + authenticate(protocol, host, port, username, password, selectedProfile, fid.getResult(), fullName -> { + + SettingsManager.i().getUser() + .setFullname(fullName); + + SettingsManager.i().getServer() + .setCodAzienda(codAzienda) + .setProtocol(protocol) + .setHost(host) + .setPort(port); + + loadDepo(() -> { + SettingsManager.update(); + this.sendOnLoginCompleted(fullName); + }); + + }); + + }); + + }); + + }, this::sendError); + }); + } + + + private void retrieveServerData(String codAzienda, RunnableArgsss onComplete) { mLoginRESTConsumer.retrieveServerData(codAzienda, value -> { final String serverEndpoint = value.getEndpointRestApi(); @@ -52,52 +94,66 @@ public class LoginViewModel { final String host = u.getHost(); final int port = u.getPort(); - UtilityServer.isEmsApiAvailable(protocol, host, port, () -> { + onComplete.run(protocol, host, port); - mLoginRESTConsumer.authenticate(protocol, host, port, username, password, loginDTO -> { - - SettingsManager.i().createUserSession(); - SettingsManager.i().getUser().setFullname(!UtilityString.isNullOrEmpty(loginDTO.getFullName()) ? loginDTO.getFullName() : username); - - List availableProfiles = null; - if(loginDTO.getAvailableProfiles() != null && !loginDTO.getAvailableProfiles().isEmpty()) { - availableProfiles = Stream.of(loginDTO.getAvailableProfiles()) - .sorted() - .toList(); - } - - this.sendOnLoginCompleted(protocol, host, port, loginDTO.getFullName(), availableProfiles); - }, this::sendError); - - - }, this::sendError); }, ex -> { this.sendError(new InvalidServerCodAziendaException(codAzienda, ex)); }); } + private void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs onComplete) { + mLoginRESTConsumer.retrieveAvailableProfiles(protocol, host, port, username, availableProfiles -> { - public void loadDepo(String codAzienda, String protocol, String host, int port, String username, String password, Runnable onComplete) { + if (availableProfiles == null || availableProfiles.isEmpty()) { + this.sendError(new Exception("Non è stato trovato alcun profilo per l'utente: " + username)); + return; + } - SettingsManager.i().getServer().setCodAzienda(codAzienda); - SettingsManager.i().getServer().setProtocol(protocol); - SettingsManager.i().getServer().setHost(host); - SettingsManager.i().getServer().setPort(port); + if (availableProfiles.size() == 1) { + onComplete.run(availableProfiles.get(0)); - SettingsManager.i().getUser().setUsername(username); - SettingsManager.i().getUser().setPassword(password); + } else { + availableProfiles = availableProfiles.stream() + .sorted() + .collect(Collectors.toList()); + + this.sendRequestProfileSelection(availableProfiles, onComplete); + } + }, this::sendError); + } + + private void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete) { + mLoginRESTConsumer.authenticate(protocol, host, port, username, password, profileDb, deviceSalt, sessionData -> { + + JWT jwt = new JWT(sessionData.getAccessToken()); + var claims = jwt.getClaims(); + + AuthTokenClaimsDTO claimsDetails = claims.get("details").asObject(AuthTokenClaimsDTO.class); + + SettingsManager.i().getUserSession() + .setProfileDB(profileDb) + .setDeviceId(deviceSalt) + .setAccessToken(sessionData.getAccessToken()) + .setRefreshToken(sessionData.getRefreshToken()) + .setRefreshTokenExpiryDate(sessionData.getExpiryDate()); + + onComplete.run(UtilityString.isNull(claimsDetails.getUserDTO().getFullname(), claimsDetails.getUserDTO().getUsername())); + + }, this::sendError); + } + + public void loadDepo(Runnable onComplete) { this.mSystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps); - if (availableCodMdeps == null || availableCodMdeps.size() == 0) { + if (availableCodMdeps == null || availableCodMdeps.isEmpty()) { this.sendError(new InvalidUserDepositException()); return; } SettingsManager.i().getUserSession().setDepo(availableCodMdeps.get(0)); - if (onComplete != null) onComplete.run(); }, this::sendError); } @@ -111,9 +167,14 @@ public class LoginViewModel { if (this.mListener != null) mListener.onLoadingEnded(); } - private void sendOnLoginCompleted(String protocol, String host, int port, String fullName, List availableProfiles) { + private void sendOnLoginCompleted(String fullName) { if (this.mListener != null) - mListener.onLoginCompleted(protocol, host, port, fullName, availableProfiles); + mListener.onLoginCompleted(fullName); + } + + private void sendRequestProfileSelection(List availableProfiles, RunnableArgs onComplete) { + if (this.mListener != null) + mListener.requestProfileSelection(availableProfiles, onComplete); } private void sendError(Exception ex) { @@ -128,7 +189,9 @@ public class LoginViewModel { public interface Listener extends ILoadingListener { void onError(Exception ex); - void onLoginCompleted(String protocol, String host, int port, String fullName, List availableProfiles); + void onLoginCompleted(String fullName); + + void requestProfileSelection(List availableProfiles, RunnableArgs onComplete); } } From 56f14c064e6b16ded6e130b9fd49eb0f7ac6a785 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 7 May 2024 17:30:45 +0200 Subject: [PATCH 02/68] Rimosse tutte le chiamate statiche a RESTBuilder --- .../MainApplicationComponent.java | 5 + .../MainApplicationModule.java | 114 ++++++++++-------- .../core/context/MainContext.java | 25 +++- .../UnauthorizedAccessException.java | 7 ++ .../core/menu/MenuRESTConsumer.java | 8 +- .../core/rest/AuthInterceptor.java | 24 ++++ .../core/rest/HttpInterceptor.java | 2 + .../core/rest/RESTBuilder.java | 21 ++-- .../rest/consumers/ArticoloRESTConsumer.java | 17 ++- .../rest/consumers/AziendaRESTConsumer.java | 8 +- .../ColliAccettazioneRESTConsumer.java | 16 ++- .../ColliLavorazioneRESTConsumer.java | 26 ++-- .../consumers/ColliMagazzinoRESTConsumer.java | 66 +++++----- .../ColliSpedizioneRESTConsumer.java | 15 ++- .../rest/consumers/DocumentRESTConsumer.java | 12 +- .../rest/consumers/EntityRESTConsumer.java | 11 +- .../rest/consumers/GestSetupRESTConsumer.java | 12 +- .../rest/consumers/GiacenzaRESTConsumer.java | 26 ++-- .../rest/consumers/ImballiRESTConsumer.java | 10 +- .../consumers/InventarioRESTConsumer.java | 15 ++- .../MagazzinoAutomaticoRESTConsumer.java | 11 +- .../MagazzinoBufferRESTConsumer.java | 12 +- .../rest/consumers/MagazzinoRESTConsumer.java | 12 +- .../core/rest/consumers/MesRESTConsumer.java | 18 +-- .../rest/consumers/OrdiniRESTConsumer.java | 12 +- .../PVOrdiniAcquistoRESTConsumer.java | 10 +- .../rest/consumers/PosizioniRESTConsumer.java | 12 +- .../rest/consumers/PrinterRESTConsumer.java | 16 ++- .../ProductionLinesRESTConsumer.java | 16 ++- .../rest/consumers/SystemRESTConsumer.java | 94 +++++++-------- .../rest/consumers/VettoriRESTConsumer.java | 6 +- .../rest/consumers/_BaseRESTConsumer.java | 6 +- .../MainAccettazioneBollaElencoModule.java | 5 +- .../rest/BolleAccettazioneRESTConsumer.java | 9 +- .../AccettazioneBollaPickingRESTConsumer.java | 8 +- .../MainAccettazioneOrdiniElencoModule.java | 5 +- .../rest/OrdiniAccettazioneRESTConsumer.java | 9 +- .../AccettazioneOrdiniPickingModule.java | 5 +- ...AccettazioneOrdiniPickingRESTConsumer.java | 10 +- .../rest/DocInterniRESTConsumer.java | 6 +- .../inventario/ElencoInventariModule.java | 5 +- .../gest/login/LoginModule.java | 11 +- .../gest/login/dto/RefreshRequestDTO.java | 14 +++ ...ESTConsumer.java => AuthRESTConsumer.java} | 63 +++++++++- ...=> AuthenticationRESTConsumerService.java} | 9 +- .../gest/login/viewmodel/LoginViewModel.java | 14 +-- .../OrdiniUscitaElencoModule.java | 5 +- .../rest/OrdiniUscitaElencoRESTConsumer.java | 8 +- .../ProdOrdineProduzioneElencoModule.java | 5 +- .../ProdOrdineProduzioneRESTConsumer.java | 10 +- .../ProdFabbisognoLineeProdRESTConsumer.java | 14 +-- .../ProdRientroMerceOrderDetailModule.java | 5 +- ...odRientroMerceOrderDetailRESTConsumer.java | 8 +- .../RettificaGiacenzeModule.java | 5 +- .../rest/RettificaGiacenzeRESTConsumer.java | 16 +-- .../basket_lu/DialogBasketLUComponent.java | 14 +++ .../basket_lu/DialogBasketLUModule.java | 22 ++++ .../dialogs/basket_lu/DialogBasketLUView.java | 20 ++- .../DialogBasketLU_ViewPagerAdapter.java | 46 ++++--- .../page1/DialogBasketLU_Page1_ViewModel.java | 15 ++- .../DialogScanOrCreateLUViewModel.java | 3 + 61 files changed, 672 insertions(+), 362 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/exception/UnauthorizedAccessException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/login/dto/RefreshRequestDTO.java rename app/src/main/java/it/integry/integrywmsnative/gest/login/rest/{LoginRESTConsumer.java => AuthRESTConsumer.java} (55%) rename app/src/main/java/it/integry/integrywmsnative/gest/login/rest/{LoginRESTConsumerService.java => AuthenticationRESTConsumerService.java} (77%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 40a6eb59..8856f874 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -116,6 +116,8 @@ import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.Dialog import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule; import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreComponent; import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreModule; +import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUComponent; +import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUModule; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent; @@ -173,6 +175,7 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc DialogInputLUProdModule.class, DialogScanArtModule.class, DialogScanOrCreateLUModule.class, + DialogBasketLUModule.class, ProdFabbisognoLineeProdModule.class, VersamentoMerceModule.class, DialogAskMagazzinoProssimitaModule.class, @@ -271,6 +274,8 @@ public interface MainApplicationComponent { DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent(); + DialogBasketLUComponent.Factory dialogBasketLUComponent(); + ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent(); VersamentoMerceComponent.Factory versamentoMerceComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index a8d6cc90..87864ab3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -19,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.menu.MenuRESTConsumer; import it.integry.integrywmsnative.core.menu.MenuService; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -49,6 +50,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.sound.SoundAlertService; import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @@ -94,8 +96,8 @@ public class MainApplicationModule { @Provides @Singleton - MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { - return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer); + MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { + return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer, authRESTConsumer); } @Provides @@ -112,6 +114,13 @@ public class MainApplicationModule { return new Ean128Service(); } + + @Provides + @Singleton + RESTBuilder providesRESTBuilder() { + return new RESTBuilder(); + } + @Provides @Singleton MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) { @@ -138,20 +147,20 @@ public class MainApplicationModule { @Provides @Singleton - OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { - return new OrdiniRESTConsumer(systemRESTConsumer, entityRESTConsumer); + OrdiniRESTConsumer provideOrdiniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { + return new OrdiniRESTConsumer(restBuilder, systemRESTConsumer, entityRESTConsumer); } @Provides @Singleton - GestSetupRESTConsumer provideGestSetupRESTConsumer() { - return new GestSetupRESTConsumer(); + GestSetupRESTConsumer provideGestSetupRESTConsumer(RESTBuilder restBuilder) { + return new GestSetupRESTConsumer(restBuilder); } @Provides @Singleton - ArticoloRESTConsumer provideArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new ArticoloRESTConsumer(systemRESTConsumer); + ArticoloRESTConsumer provideArticoloRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new ArticoloRESTConsumer(restBuilder, systemRESTConsumer); } @Provides @@ -168,41 +177,42 @@ public class MainApplicationModule { @Provides @Singleton - MenuRESTConsumer provideMenuRESTConsumer() { - return new MenuRESTConsumer(); + MenuRESTConsumer provideMenuRESTConsumer(RESTBuilder restBuilder) { + return new MenuRESTConsumer(restBuilder); } @Provides @Singleton - MagazzinoRESTConsumer provideMagazzinoRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) { - return new MagazzinoRESTConsumer(executorService, systemRESTConsumer); + MagazzinoRESTConsumer provideMagazzinoRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) { + return new MagazzinoRESTConsumer(restBuilder, executorService, systemRESTConsumer); } @Provides @Singleton - MesRESTConsumer provideMesRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new MesRESTConsumer(systemRESTConsumer); + MesRESTConsumer provideMesRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new MesRESTConsumer(restBuilder, systemRESTConsumer); } @Provides @Singleton - EntityRESTConsumer provideEntityRESTConsumer() { - return new EntityRESTConsumer(); + EntityRESTConsumer provideEntityRESTConsumer(RESTBuilder restBuilder) { + return new EntityRESTConsumer(restBuilder); } @Provides @Singleton - ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, + ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(RESTBuilder restBuilder, + SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer, EntityRESTConsumer entityRESTConsumer, SettingsManager settingsManager) { - return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager); + return new ColliMagazzinoRESTConsumer(restBuilder, systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager); } @Provides @Singleton - AziendaRESTConsumer provideAziendaRESTConsumer() { - return new AziendaRESTConsumer(); + AziendaRESTConsumer provideAziendaRESTConsumer(RESTBuilder restBuilder) { + return new AziendaRESTConsumer(restBuilder); } @Provides @@ -213,56 +223,56 @@ public class MainApplicationModule { @Provides @Singleton - PrinterRESTConsumer providePrinterRESTConsumer() { - return new PrinterRESTConsumer(); + PrinterRESTConsumer providePrinterRESTConsumer(RESTBuilder restBuilder) { + return new PrinterRESTConsumer(restBuilder); } @Provides @Singleton - SystemRESTConsumer provideSystemRESTConsumer() { - return new SystemRESTConsumer(); + SystemRESTConsumer provideSystemRESTConsumer(RESTBuilder restBuilder) { + return new SystemRESTConsumer(restBuilder); } @Provides @Singleton - PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { - return new PVOrdiniAcquistoRESTConsumer(magazzinoRESTConsumer); + PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new PVOrdiniAcquistoRESTConsumer(restBuilder, magazzinoRESTConsumer); } @Provides @Singleton - PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new PosizioniRESTConsumer(systemRESTConsumer); + PosizioniRESTConsumer providesPosizioniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new PosizioniRESTConsumer(restBuilder, systemRESTConsumer); } @Provides @Singleton - ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer); + ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new ProdFabbisognoLineeProdRESTConsumer(restBuilder, systemRESTConsumer); } @Provides @Singleton - DocInterniRESTConsumer provideDocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { - return new DocInterniRESTConsumer(magazzinoRESTConsumer); + DocInterniRESTConsumer provideDocInterniRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new DocInterniRESTConsumer(restBuilder, magazzinoRESTConsumer); } @Provides @Singleton - GiacenzaRESTConsumer provideGiacenzaRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { - return new GiacenzaRESTConsumer(articoloRESTConsumer); + GiacenzaRESTConsumer provideGiacenzaRESTConsumer(RESTBuilder restBuilder, ArticoloRESTConsumer articoloRESTConsumer) { + return new GiacenzaRESTConsumer(restBuilder, articoloRESTConsumer); } @Provides @Singleton - ImballiRESTConsumer provideImballiRESTConsumer(ExecutorService executorService) { - return new ImballiRESTConsumer(executorService); + ImballiRESTConsumer provideImballiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) { + return new ImballiRESTConsumer(restBuilder, executorService); } @Provides @Singleton - VettoriRESTConsumer provideVettoriRESTConsumer(ExecutorService executorService) { - return new VettoriRESTConsumer(executorService); + VettoriRESTConsumer provideVettoriRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) { + return new VettoriRESTConsumer(restBuilder, executorService); } @Provides @@ -273,44 +283,44 @@ public class MainApplicationModule { @Provides @Singleton - ProductionLinesRESTConsumer provideProductionLinesRESTConsumer() { - return new ProductionLinesRESTConsumer(); + ProductionLinesRESTConsumer provideProductionLinesRESTConsumer(RESTBuilder restBuilder) { + return new ProductionLinesRESTConsumer(restBuilder); } @Provides @Singleton - DocumentRESTConsumer provideDocumentiRESTConsumer() { - return new DocumentRESTConsumer(); + DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder) { + return new DocumentRESTConsumer(restBuilder); } @Provides @Singleton - ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer() { - return new ColliAccettazioneRESTConsumer(); + ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(RESTBuilder restBuilder) { + return new ColliAccettazioneRESTConsumer(restBuilder); } @Provides @Singleton - ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer() { - return new ColliSpedizioneRESTConsumer(); + ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer(RESTBuilder restBuilder) { + return new ColliSpedizioneRESTConsumer(restBuilder); } @Provides @Singleton - ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(SettingsManager settingsManager) { - return new ColliLavorazioneRESTConsumer(settingsManager); + ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(RESTBuilder restBuilder, SettingsManager settingsManager) { + return new ColliLavorazioneRESTConsumer(restBuilder, settingsManager); } @Provides @Singleton - MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer() { - return new MagazzinoAutomaticoRESTConsumer(); + MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer(RESTBuilder restBuilder) { + return new MagazzinoAutomaticoRESTConsumer(restBuilder); } @Provides @Singleton - MagazzinoBufferRESTConsumer provideMagazzinoBufferRESTConsumer() { - return new MagazzinoBufferRESTConsumer(); + MagazzinoBufferRESTConsumer provideMagazzinoBufferRESTConsumer(RESTBuilder restBuilder) { + return new MagazzinoBufferRESTConsumer(restBuilder); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index 5319ee25..4d35d1d7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -19,6 +19,7 @@ import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityThread; +import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; @Singleton public class MainContext { @@ -27,14 +28,16 @@ public class MainContext { private final MenuService menuService; private final AppDatabase appDatabase; private final SystemRESTConsumer systemRESTConsumer; + private final AuthRESTConsumer authRESTConsumer; private Listener mListener; - public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { + public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { this.applicationContext = applicationContext; this.menuService = menuService; this.appDatabase = appDatabase; this.systemRESTConsumer = systemRESTConsumer; + this.authRESTConsumer = authRESTConsumer; } public void init() { @@ -46,14 +49,16 @@ public class MainContext { } - this.initDeviceId(() -> { - this.initDBData(() -> { - this.initMenu(() -> { + //this.initAuthSession(() -> { + this.initDeviceId(() -> { + this.initDBData(() -> { + this.initMenu(() -> { - if (mListener != null) mListener.onContextInitialized(); + if (mListener != null) mListener.onContextInitialized(); + }); }); }); - }); + //}); this.initServerStatusChecker(); @@ -61,6 +66,14 @@ public class MainContext { } + private void initAuthSession(Runnable onComplete) { + this.authRESTConsumer.me(obj -> { + onComplete.run(); + }, ex -> { + if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); + }); + } + private void initDeviceId(Runnable onComplete) { if (SettingsManager.i().getUserSession().getDeviceId() != null) { onComplete.run(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/UnauthorizedAccessException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/UnauthorizedAccessException.java new file mode 100644 index 00000000..a57b0eba --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/UnauthorizedAccessException.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.exception; + +public class UnauthorizedAccessException extends Exception { + public UnauthorizedAccessException() { + super("Accesso non autorizzato. Si prega di effettuare nuovamente l'accesso e riprovare"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java index 3d773ddf..7688fc97 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java @@ -14,8 +14,14 @@ import retrofit2.Response; @Singleton public class MenuRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public MenuRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void retrieveMenu(String rootCodOpz, RunnableArgs onComplete, RunnableArgs onFailed) { - MenuRESTConsumerService menuRESTConsumerService = RESTBuilder.getService(MenuRESTConsumerService.class); + MenuRESTConsumerService menuRESTConsumerService = restBuilder.getService(MenuRESTConsumerService.class); menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java new file mode 100644 index 00000000..c4ca240a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.core.rest; + +import androidx.annotation.NonNull; + +import java.io.IOException; + +import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import okhttp3.Interceptor; +import okhttp3.Response; + +public class AuthInterceptor implements Interceptor { + + private final AuthRESTConsumer authRESTConsumer; + + public AuthInterceptor(AuthRESTConsumer authRESTConsumer) { + this.authRESTConsumer = authRESTConsumer; + } + + @NonNull + @Override + public Response intercept(@NonNull Chain chain) throws IOException { + return null; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java index 1f071272..2aa26fdf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java @@ -19,6 +19,7 @@ public class HttpInterceptor implements Interceptor { final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB(); final String ACCESS_TOKEN = SettingsManager.i().getUserSession().getAccessToken(); + final String APP_TOKEN = "fa3a21af-606b-4129-a22b-aedc2a52c7b6"; final Request request = chain.request(); final HttpUrl url = request.url().newBuilder() @@ -29,6 +30,7 @@ public class HttpInterceptor implements Interceptor { .addHeader("Authorization", "Bearer " + ACCESS_TOKEN) .addHeader("Content-Type", "application/json") .addHeader("Accept", "*/*") + .addHeader("x-app-token", APP_TOKEN) .url(url) .build(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java index 2259ec57..7630d1f2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java @@ -6,6 +6,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.util.concurrent.TimeUnit; +import javax.inject.Singleton; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; @@ -20,29 +21,30 @@ import retrofit2.converter.gson.GsonConverterFactory; * Created by GiuseppeS on 06/03/2018. */ +@Singleton public class RESTBuilder { private static final boolean ADD_LOGGER_INTERCEPTOR = false; - public static T getService(final Class service) { + public T getService(final Class service) { return getService(service, SettingsManager.i().getServer().getProtocol(), SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true); } - public static T getService(final Class service, int timeout) { + public T getService(final Class service, int timeout) { return getService(service, SettingsManager.i().getServer().getProtocol(), SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout); } - public static T getService(final Class service, String protocol, String host, int port, boolean addInterceptors) { + public T getService(final Class service, String protocol, String host, int port, boolean addInterceptors) { return getService(service, protocol, host, port, addInterceptors, true, 60); } - public static T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi) { + public T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi) { return getService(service, protocol, host, port, addInterceptors, addEmsApi, 60); } - public static T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) { + public T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) { OkHttpClient.Builder clientBuilder = getDefaultHttpClient(); clientBuilder.connectTimeout(timeout, TimeUnit.SECONDS); @@ -71,15 +73,6 @@ public class RESTBuilder { } - public static String getDefaultHost() { - return SettingsManager.i().getServer().getHost(); - } - - public static int getDefaultPort() { - return SettingsManager.i().getServer().getPort(); - } - - public static OkHttpClient.Builder getDefaultHttpClient() { TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index 50577a84..59a6c60f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -30,14 +30,16 @@ import retrofit2.Response; @Singleton public class ArticoloRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final SystemRESTConsumer systemRESTConsumer; - public ArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + public ArticoloRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; this.systemRESTConsumer = systemRESTConsumer; } public void searchByBarcode(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { - ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); + ArticoloRESTConsumerService articoloRESTConsumerService = restBuilder.getService(ArticoloRESTConsumerService.class); var request = new SearchArticoloByBarcodeRequestDTO() .setBarcode(barcodeProd) @@ -62,17 +64,12 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { public void getByCodMarts(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { - getByCodMartsStatic(codMartToFind, onComplete, onFailed); - } - - public static void getByCodMartsStatic(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { - var codMarts = Stream.of(codMartToFind) .withoutNulls() .distinct().toList(); - ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); + ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class); articoloRESTConsumer .getByCodMart(new RetrieveArticoloByCodMartRequestDTO() .setCodMarts(codMarts)) @@ -92,7 +89,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { public void getStatoPartita(String codMart, String partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) { - ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); + ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class); articoloRESTConsumer.getStatoPartita(codMart, partitaMag).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -183,7 +180,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { public void updateBarcodeImballo(String codMart, String newBarcodeImballo, Runnable onComplete, RunnableArgs onFailed) { - ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); + ArticoloRESTConsumerService articoloRESTConsumerService = restBuilder.getService(ArticoloRESTConsumerService.class); var request = new UpdateBarcodeImballoRequestDTO() .setCodMart(codMart) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/AziendaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/AziendaRESTConsumer.java index b994b3db..55484a0f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/AziendaRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/AziendaRESTConsumer.java @@ -13,8 +13,14 @@ import retrofit2.Response; @Singleton public class AziendaRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public AziendaRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void retrieveAzienda(RunnableArgs onComplete, RunnableArgs onFailed) { - AziendaRESTConsumerService aziendaRESTConsumerService = RESTBuilder.getService(AziendaRESTConsumerService.class); + AziendaRESTConsumerService aziendaRESTConsumerService = restBuilder.getService(AziendaRESTConsumerService.class); aziendaRESTConsumerService.retrieveDefaultAzienda().enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java index 91dcdb01..b0cbc254 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java @@ -24,8 +24,14 @@ import retrofit2.Response; @Singleton public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements ColliCaricoRESTConsumerInterface { + private final RESTBuilder restBuilder; + + public ColliAccettazioneRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); colliAccettazioneRESTConsumerService.createUDC(createUDCRequestDTO) .enqueue(new Callback<>() { @@ -44,7 +50,7 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements @Override public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); colliAccettazioneRESTConsumerService.closeUDC(closeUDCRequestDTO) .enqueue(new Callback<>() { @@ -62,7 +68,7 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements @Override public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); colliAccettazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO) .enqueue(new Callback<>() { @@ -80,7 +86,7 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements @Override public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); colliAccettazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO) .enqueue(new Callback<>() { @@ -98,7 +104,7 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements @Override public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); colliAccettazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java index 0decfd3a..53d7b9e9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java @@ -41,15 +41,17 @@ import retrofit2.Response; public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements ColliCaricoRESTConsumerInterface, ColliScaricoRESTConsumerInterface { + private final RESTBuilder restBuilder; private final SettingsManager settingsManager; - public ColliLavorazioneRESTConsumer(SettingsManager settingsManager) { + public ColliLavorazioneRESTConsumer(RESTBuilder restBuilder, SettingsManager settingsManager) { + this.restBuilder = restBuilder; this.settingsManager = settingsManager; } @Override public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.createUDC(createUDCRequestDTO) .enqueue(new Callback<>() { @@ -67,7 +69,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.closeUDC(closeUDCRequestDTO) .enqueue(new Callback<>() { @@ -85,7 +87,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO) .enqueue(new Callback<>() { @@ -103,7 +105,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO) .enqueue(new Callback<>() { @@ -120,7 +122,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C } public void createUDS(CreateUDSRequestDTO createUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.createUDS(createUDSRequestDTO) .enqueue(new Callback<>() { @@ -139,7 +141,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void closeUDS(CloseUDSRequestDTO closeUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.closeUDS(closeUDSRequestDTO) .enqueue(new Callback<>() { @@ -157,7 +159,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.insertUDSRow(insertUDSRowRequestDTO) .enqueue(new Callback<>() { @@ -174,7 +176,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C } public void editUDSRow(EditUDSRowRequestDTO editUDSRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.editUDSRow(editUDSRowRequestDTO) .enqueue(new Callback<>() { @@ -192,7 +194,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.deleteUDSRow(deleteUDSRowRequestDTO) .enqueue(new Callback<>() { @@ -210,7 +212,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C @Override public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO) .enqueue(new Callback<>() { @@ -249,7 +251,7 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C createUDSFromArtRequestDTO .setCodJfas(posizione.getPosizione()); } - ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); + ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); colliLavorazioneRESTConsumerService.createUDSFromArt(createUDSFromArtRequestDTO) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 4249e1fc..4f1679a7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -48,19 +48,21 @@ import retrofit2.Response; @Singleton public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRESTConsumer; - private final ArticoloRESTConsumer mArticoloRESTConsumer; - private final EntityRESTConsumer mEntityRESTConsumer; - private final SettingsManager mSettingsManager; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRESTConsumer; + private final ArticoloRESTConsumer articoloRESTConsumer; + private final EntityRESTConsumer entityRESTConsumer; + private final SettingsManager settingsManager; - public ColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, + public ColliMagazzinoRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer, EntityRESTConsumer entityRESTConsumer, SettingsManager settingsManager) { - this.mSystemRESTConsumer = systemRESTConsumer; - this.mArticoloRESTConsumer = articoloRESTConsumer; - this.mEntityRESTConsumer = entityRESTConsumer; - this.mSettingsManager = settingsManager; + this.restBuilder = restBuilder; + this.systemRESTConsumer = systemRESTConsumer; + this.articoloRESTConsumer = articoloRESTConsumer; + this.entityRESTConsumer = entityRESTConsumer; + this.settingsManager = settingsManager; } public void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { @@ -78,7 +80,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null)); } - this.mEntityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback() { + this.entityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -102,7 +104,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } } - this.mEntityRESTConsumer.processEntityList(mtbColtsToSave, true, MtbColt.class, onComplete, onFailed); + this.entityRESTConsumer.processEntityList(mtbColtsToSave, true, MtbColt.class, onComplete, onFailed); } @@ -280,7 +282,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -305,10 +307,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void fillMtbAartsOfMtbColts(List mtbColts, RunnableArgs> onComplete, RunnableArgs onFailed) { - fillMtbAartsOfMtbColtsStatic(mtbColts, onComplete, onFailed); - } - - public static void fillMtbAartsOfMtbColtsStatic(List mtbColts, RunnableArgs> onComplete, RunnableArgs onFailed) { List codMarts = new ArrayList<>(); for (MtbColt mtbColt : mtbColts) { @@ -320,9 +318,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> { + articoloRESTConsumer.getByCodMarts(codMarts, arts -> { - if (arts != null && arts.size() > 0) { + if (arts != null && !arts.isEmpty()) { for (MtbColt mtbColt : mtbColts) { for (MtbColr mtbColr : mtbColt.getMtbColr()) { @@ -331,7 +329,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { List mtbAartStream = Stream.of(arts) .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList(); - if (mtbAartStream != null && mtbAartStream.size() > 0) { + if (!mtbAartStream.isEmpty()) { foundMtbAart = mtbAartStream.get(0); } @@ -380,7 +378,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { testata.setMtbColr(new ObservableArrayList<>()); - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColloInGiac(onlyResiduo, throwExcIfNull, testata).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -417,7 +415,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null); } - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService .spostaULInPosizione(codMdep, posizioneString, @@ -453,13 +451,13 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - public static void retrieveBasketColli(RunnableArgs> onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + public void retrieveBasketColli(RunnableArgs> onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "getColliInBasket", mtbColts -> { - fillMtbAartsOfMtbColtsStatic(mtbColts, onComplete, onFailed); + fillMtbAartsOfMtbColts(mtbColts, onComplete, onFailed); }, onFailed); } @@ -480,7 +478,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setNewNumCnf(newNumCnf) .setNewQtaCol(newQtaTot); - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.creaRettificaCollo( SettingsManager.i().getUserSession().getDepo().getCodMdep(), rettificaULDTO @@ -514,7 +512,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setSourceMtbColt(mtbColtToMoveClone) .setDestinationMtbColt(mtbColtDestClone); - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -540,7 +538,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null); } - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.assegnaLottoSuColloScarico(sourceMtbColtClone).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -565,7 +563,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null); } - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.versamentoAutomaticoUL(sourceMtbColtClone).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -580,7 +578,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .map(x -> x.getCodMart().trim()) .toList(); - mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + articoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { for (var mtbColr : allMtbColr) { MtbAart foundMtbAart = null; @@ -613,7 +611,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone(); sourceMtbColtClone.setMtbColr(new ObservableArrayList<>()); - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.confirmGiacenzaUL(sourceMtbColtClone).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -651,7 +649,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - this.mSystemRESTConsumer.>processSql(query, typeOfObjectsList, data -> { + this.systemRESTConsumer.>processSql(query, typeOfObjectsList, data -> { onComplete.run(data.get(0)); }, onFailed); } @@ -661,7 +659,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { CanULBeDeletedRequestDTO canULBeDeletedRequestDTO = new CanULBeDeletedRequestDTO() .setMtbColt(mtbColt); - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.canULBeDeleted(canULBeDeletedRequestDTO) .enqueue(new Callback<>() { @@ -679,7 +677,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void deleteUL(DeleteULRequestDTO deleteULRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.deleteUL(deleteULRequestDTO) .enqueue(new Callback<>() { @@ -702,7 +700,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { return; } - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = restBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.printUL(printULRequestDTO) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java index 962e077b..1e948e3b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java @@ -24,9 +24,14 @@ import retrofit2.Response; @Singleton public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements ColliScaricoRESTConsumerInterface { + private final RESTBuilder restBuilder; + + public ColliSpedizioneRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void createUDS(CreateUDSRequestDTO createUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = restBuilder.getService(ColliSpedizioneRESTConsumerService.class); colliSpedizioneRESTConsumerService.createUDS(createUDSRequestDTO) .enqueue(new Callback<>() { @@ -44,7 +49,7 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } public void closeUDS(CloseUDSRequestDTO closeUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = restBuilder.getService(ColliSpedizioneRESTConsumerService.class); colliSpedizioneRESTConsumerService.closeUDS(closeUDSRequestDTO) .enqueue(new Callback<>() { @@ -62,7 +67,7 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } public void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = restBuilder.getService(ColliSpedizioneRESTConsumerService.class); colliSpedizioneRESTConsumerService.insertUDSRow(insertUDSRowRequestDTO) .enqueue(new Callback<>() { @@ -79,7 +84,7 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } public void editUDSRow(EditUDSRowRequestDTO editUDSRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = restBuilder.getService(ColliSpedizioneRESTConsumerService.class); colliSpedizioneRESTConsumerService.editUDSRow(editUDSRowRequestDTO) .enqueue(new Callback<>() { @@ -96,7 +101,7 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = restBuilder.getService(ColliSpedizioneRESTConsumerService.class); colliSpedizioneRESTConsumerService.deleteUDSRow(deleteUDSRowRequestDTO) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java index 92740653..fb92321c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java @@ -20,8 +20,14 @@ import retrofit2.Response; public class DocumentRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public DocumentRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void createDocsFromColli(List listColli, RunnableArgs> onComplete, RunnableArgs onFailed) { - DocumentiRESTConsumerService documentiRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); + DocumentiRESTConsumerService documentiRESTConsumerService = restBuilder.getService(DocumentiRESTConsumerService.class); documentiRESTConsumerService.createDocsFromColli(listColli).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -36,7 +42,7 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer { } public void createDocFromColli(LoadColliDTO loadColliDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - DocumentiRESTConsumerService documentiRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); + DocumentiRESTConsumerService documentiRESTConsumerService = restBuilder.getService(DocumentiRESTConsumerService.class); documentiRESTConsumerService.createDocFromColli(loadColliDTO).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -54,7 +60,7 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer { public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs onComplete, RunnableArgs onFailed) { - var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); + var inventarioRESTConsumerService = restBuilder.getService(DocumentiRESTConsumerService.class); inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp, codAnagForn) .enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java index 7ecfc092..ffd71a85 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java @@ -23,6 +23,11 @@ import retrofit2.Response; @Singleton public class EntityRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public EntityRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void processEntity(T entityToSave, final ISimpleOperationCallback callback, Class type) { @@ -30,7 +35,7 @@ public class EntityRESTConsumer extends _BaseRESTConsumer { if (callback != null) callback.onFailed(ex); }; - EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); + EntityRESTConsumerService service = restBuilder.getService(EntityRESTConsumerService.class); service .processEntity(entityToSave) .enqueue(new Callback<>() { @@ -74,7 +79,7 @@ public class EntityRESTConsumer extends _BaseRESTConsumer { if (onFailed != null) onFailed.run(ex); }; - EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); + EntityRESTConsumerService service = restBuilder.getService(EntityRESTConsumerService.class); Call>> request = service.processEntityList(singleTransaction, entitiesToSave); request.enqueue(new Callback<>() { @Override @@ -124,7 +129,7 @@ public class EntityRESTConsumer extends _BaseRESTConsumer { @Deprecated public void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type) { - EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); + EntityRESTConsumerService service = restBuilder.getService(EntityRESTConsumerService.class); Call> request = service.processEntity(entityToSave); request.enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java index fcd030f3..09ce6386 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java @@ -20,9 +20,15 @@ import retrofit2.Response; @Singleton public class GestSetupRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public GestSetupRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void getValue(String gestName, String sectionName, String keySection, RunnableArgs onComplete, RunnableArgs onFailed) { - GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); + GestSetupRESTConsumerService service = restBuilder.getService(GestSetupRESTConsumerService.class); service.getGestSetupValue(gestName, sectionName, keySection) .enqueue(new Callback<>() { @@ -51,7 +57,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { } public void getValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) { - GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); + GestSetupRESTConsumerService service = restBuilder.getService(GestSetupRESTConsumerService.class); service.getGestSetupValue(gestName, sectionName, keySection, codMdep).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -81,7 +87,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { public void getValues(String codMdep, List stbGestSetupList, RunnableArgs> onComplete, RunnableArgs onFailed) { var stbGestSetups = stbGestSetupList.stream().map(x -> (StbGestSetup) x).collect(Collectors.toList()); - GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); + GestSetupRESTConsumerService service = restBuilder.getService(GestSetupRESTConsumerService.class); service.getGestSetupValues(codMdep, stbGestSetups).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java index 0541f82c..5198de3b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java @@ -25,15 +25,17 @@ import retrofit2.Response; @Singleton public class GiacenzaRESTConsumer extends _BaseRESTConsumer { - private final ArticoloRESTConsumer mArticoloRESTConsumer; + private final RESTBuilder restBuilder; + private final ArticoloRESTConsumer articoloRESTConsumer; - public GiacenzaRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { - this.mArticoloRESTConsumer = articoloRESTConsumer; + public GiacenzaRESTConsumer(RESTBuilder restBuilder, ArticoloRESTConsumer articoloRESTConsumer) { + this.restBuilder = restBuilder; + this.articoloRESTConsumer = articoloRESTConsumer; } public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs> onComplete, RunnableArgs onFailed) { - GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class); giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione()).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -44,7 +46,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { .map(x -> x.getCodMart().trim()) .toList(); - mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + articoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { for (var row : inventarioList) { MtbAart foundMtbAart = null; @@ -75,7 +77,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { } public void getGiacenzeInPosizione(List posizioni, boolean withTestataCollo, RunnableArgs> onComplete, RunnableArgs onFailed) { - GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class); giacenzaRESTConsumerService.retrieveAvailableItems(posizioni, withTestataCollo).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -85,7 +87,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { .map(x -> x.getCodMart().trim()) .toList(); - mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + articoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { for (var articoli : inventarioList) { List mvwSitArtUdcDetInventario = articoli.getMvwSitArtUdcDetInventarioDTO(); if (mvwSitArtUdcDetInventario != null && !mvwSitArtUdcDetInventario.isEmpty()){ @@ -117,7 +119,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { } public void getGiacenzeByArticolo(String codMart, String partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) { - GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class); var serviceRESTResponseCall = UtilityString.isNullOrEmpty(partitaMag) ? giacenzaRESTConsumerService.retrieveAvailableItemsByArt(codMart) : @@ -132,7 +134,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { .distinct() .toList(); - mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + articoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { for (var row : inventarioList) { MtbAart foundMtbAart = null; @@ -161,7 +163,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs onComplete, RunnableArgs onFailed) { - GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class); giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom) .enqueue(new Callback<>() { @@ -200,9 +202,9 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { return; } - mArticoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> { + articoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> { - mArticoloRESTConsumer.fillMtbAartsWithMtbUntMis(mtbAarts, newMtbAarts -> { + articoloRESTConsumer.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())) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java index 5c899ef4..08aa21c9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java @@ -17,15 +17,17 @@ import retrofit2.Response; @Singleton public class ImballiRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final ExecutorService executorService; - public ImballiRESTConsumer(ExecutorService executorService) { + public ImballiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) { + this.restBuilder = restBuilder; this.executorService = executorService; } public List retrieveTipiColloSyncronized(MtbTCol.FlagUiUlEnum tipoImballo) throws Exception { - ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class); + ImballiRESTConsumerService service = restBuilder.getService(ImballiRESTConsumerService.class); Response>> response = service.retrieveTipiCollo(tipoImballo) .execute(); @@ -45,7 +47,7 @@ public class ImballiRESTConsumer extends _BaseRESTConsumer { public void registraCaricoSyncronized(String codAnag, List imballi) throws Exception { - ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class); + ImballiRESTConsumerService service = restBuilder.getService(ImballiRESTConsumerService.class); Response> response = service.registraCarico( new RegistraCaricoImballiRequestDTO() .setCodAnag(codAnag) @@ -68,7 +70,7 @@ public class ImballiRESTConsumer extends _BaseRESTConsumer { public void registraScaricoSyncronized(String codVettore, List imballi) throws Exception { - ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class); + ImballiRESTConsumerService service = restBuilder.getService(ImballiRESTConsumerService.class); Response> response = service.registraScarico( new RegistraScaricoImballiRequestDTO() .setCodVettore(codVettore) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/InventarioRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/InventarioRESTConsumer.java index 10fb6f71..9968f3f2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/InventarioRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/InventarioRESTConsumer.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; import java.util.List; +import javax.inject.Inject; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -20,9 +21,15 @@ import retrofit2.Response; @Singleton public class InventarioRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + @Inject + public InventarioRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void loadInventario(long inventoryId, RunnableArgs onComplete, RunnableArgs onFailed) { - var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class); + var inventarioRESTConsumerService = restBuilder.getService(InventarioRESTConsumerService.class); inventarioRESTConsumerService.retrieve(inventoryId) .enqueue(new Callback<>() { @Override @@ -39,7 +46,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer { public void loadInventarioArts(long inventoryId, RunnableArgs onComplete, RunnableArgs onFailed) { - var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class); + var inventarioRESTConsumerService = restBuilder.getService(InventarioRESTConsumerService.class); inventarioRESTConsumerService.retrieveArts(inventoryId) .enqueue(new Callback<>() { @Override @@ -55,7 +62,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer { } public List makeSynchronousRetrieveRequest() throws Exception { - var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120); + var inventarioRESTConsumerService = restBuilder.getService(InventarioRESTConsumerService.class, 120); var response = inventarioRESTConsumerService.retrieve() .execute(); @@ -70,7 +77,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer { var request = new InsertInventarioRequestDTO() .setMtbInvent(inventarioToInsert); - var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 300); + var inventarioRESTConsumerService = restBuilder.getService(InventarioRESTConsumerService.class, 300); inventarioRESTConsumerService .insert(inventarioToInsert.getIdInventario(), request) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java index 27807571..c69f8452 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java @@ -15,8 +15,15 @@ import retrofit2.Response; @Singleton public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer { + + private final RESTBuilder restBuilder; + + public MagazzinoAutomaticoRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void pickItems(MtbDepoPosizione posizione, MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); + MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = restBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); magazzinoAutomaticoRESTConsumerService.pickItems(posizione.getPosizione(), magazzinoAutomaticoPickItemsRequestDTO) .enqueue(new Callback<>() { @Override @@ -34,7 +41,7 @@ public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer { public void putItems(MtbDepoPosizione posizione, MagazzinoAutomaticoPutItemsRequestDTO magazzinoAutomaticoPutItemsRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); + MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = restBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); magazzinoAutomaticoRESTConsumerService.putItems(posizione.getPosizione(), magazzinoAutomaticoPutItemsRequestDTO) .enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoBufferRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoBufferRESTConsumer.java index 5ba6535c..e4e711c7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoBufferRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoBufferRESTConsumer.java @@ -15,8 +15,14 @@ import retrofit2.Response; @Singleton public class MagazzinoBufferRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public MagazzinoBufferRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void isVersamentoStarted(MtbDepoPosizione posizione, MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = RESTBuilder.getService(MagazzinoBufferRESTConsumerService.class); + MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = restBuilder.getService(MagazzinoBufferRESTConsumerService.class); magazzinoBufferRESTConsumerService.isVersamentoStarted(posizione.getPosizione(), magazzinoBufferVersamentoMaterialeRequestDTO) .enqueue(new Callback<>() { @Override @@ -32,7 +38,7 @@ public class MagazzinoBufferRESTConsumer extends _BaseRESTConsumer { } public void startVersamentoMateriale(MtbDepoPosizione posizione, MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = RESTBuilder.getService(MagazzinoBufferRESTConsumerService.class); + MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = restBuilder.getService(MagazzinoBufferRESTConsumerService.class); magazzinoBufferRESTConsumerService.startVersamentoMateriale(posizione.getPosizione(), magazzinoBufferVersamentoMaterialeRequestDTO) .enqueue(new Callback<>() { @Override @@ -48,7 +54,7 @@ public class MagazzinoBufferRESTConsumer extends _BaseRESTConsumer { } public void endVersamentoMateriale(MtbDepoPosizione posizione, MagazzinoBufferVersamentoMaterialeCloseRequestDTO magazzinoBufferVersamentoMaterialeCloseRequestDTO, Runnable onComplete, RunnableArgs onFailed) { - MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = RESTBuilder.getService(MagazzinoBufferRESTConsumerService.class); + MagazzinoBufferRESTConsumerService magazzinoBufferRESTConsumerService = restBuilder.getService(MagazzinoBufferRESTConsumerService.class); magazzinoBufferRESTConsumerService.endVersamentoMateriale(posizione.getPosizione(), magazzinoBufferVersamentoMaterialeCloseRequestDTO) .enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index af1b4f46..addb98b6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -16,16 +16,18 @@ import retrofit2.Response; @Singleton public class MagazzinoRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final ExecutorService executorService; - private final SystemRESTConsumer mSystemRESTConsumer; + private final SystemRESTConsumer systemRESTConsumer; - public MagazzinoRESTConsumer(ExecutorService executorService, SystemRESTConsumer mSystemRESTConsumer) { + public MagazzinoRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; this.executorService = executorService; - this.mSystemRESTConsumer = mSystemRESTConsumer; + this.systemRESTConsumer = systemRESTConsumer; } public void saveTerminalinoWMS(SaveDTO saveDTO, Runnable onComplete, RunnableArgs onFailed) { - MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + MagazzinoRESTConsumerService service = restBuilder.getService(MagazzinoRESTConsumerService.class); service.saveTerminalinoWMS(saveDTO) .enqueue(new Callback<>() { @Override @@ -42,7 +44,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { public MtbPartitaMag retrievePartitaMagSyncronized(String partitaMag, String codMart) throws Exception { - MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + MagazzinoRESTConsumerService service = restBuilder.getService(MagazzinoRESTConsumerService.class); Response> response = service.retrievePartitaMag(codMart, partitaMag) .execute(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java index 53c70d65..a14aec33 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java @@ -4,7 +4,6 @@ import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Date; import java.util.List; import javax.inject.Singleton; @@ -14,7 +13,6 @@ import it.integry.integrywmsnative.core.model.JtbFasi; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import retrofit2.Call; import retrofit2.Callback; @@ -23,14 +21,16 @@ import retrofit2.Response; @Singleton public class MesRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRESTConsumer; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRESTConsumer; - public MesRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - this.mSystemRESTConsumer = systemRESTConsumer; + public MesRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; + this.systemRESTConsumer = systemRESTConsumer; } public void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs> onComplete, RunnableArgs onFailed) { - MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class); + MesRESTConsumerService mesRESTConsumerService = restBuilder.getService(MesRESTConsumerService.class); mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas, idMateriale) .enqueue(new Callback<>() { @@ -47,7 +47,7 @@ public class MesRESTConsumer extends _BaseRESTConsumer { } public void getOrdiniLavorazione(String flagEvaso, String codJfas, String codAnag, RunnableArgs> onComplete, RunnableArgs onFailed) { - MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class); + MesRESTConsumerService mesRESTConsumerService = restBuilder.getService(MesRESTConsumerService.class); mesRESTConsumerService.getOrdiniLavorazione(null, flagEvaso, codJfas, codAnag) .enqueue(new Callback<>() { @@ -65,7 +65,7 @@ public class MesRESTConsumer extends _BaseRESTConsumer { public void getOrdiniLavorazione(String flagEvaso, RunnableArgs> onComplete, RunnableArgs onFailed) { - MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class); + MesRESTConsumerService mesRESTConsumerService = restBuilder.getService(MesRESTConsumerService.class); mesRESTConsumerService.getOrdiniLavorazione(flagEvaso) .enqueue(new Callback>>() { @@ -85,7 +85,7 @@ public class MesRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - this.mSystemRESTConsumer.processSql( + this.systemRESTConsumer.processSql( "SELECT * FROM jtb_fasi WHERE cod_jfas_parent = " + UtilityDB.valueToString(codJfasParent), typeOfObjectsList, onComplete, diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java index 03262225..ed490355 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java @@ -37,16 +37,19 @@ import retrofit2.Response; @Singleton public class OrdiniRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + private final SystemRESTConsumer mSystemRESTConsumer; private final EntityRESTConsumer mEntityRESTConsumer; - public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { + public OrdiniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { + this.restBuilder = restBuilder; this.mSystemRESTConsumer = systemRESTConsumer; this.mEntityRESTConsumer = entityRESTConsumer; } public void getSuggestedPickingList(String codMdep, List sitArtOrdList, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); + OrdiniRESTConsumerService service = restBuilder.getService(OrdiniRESTConsumerService.class, 90); service .getSuggestedPickingList(codMdep, sitArtOrdList) .enqueue(new Callback<>() { @@ -123,7 +126,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class); + OrdiniRESTConsumerService service = restBuilder.getService(OrdiniRESTConsumerService.class); service.getOrdiniInevasi(codMdep, gestione.getText()) .enqueue(new Callback<>() { @@ -156,7 +159,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { .setIdViaggio(x.getIdViaggio())) .toList(); - OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); + OrdiniRESTConsumerService service = restBuilder.getService(OrdiniRESTConsumerService.class, 90); service.getArticoliFromOrdini(codMdep, getPickingListDTOs).enqueue(new Callback<>() { @Override @@ -180,7 +183,6 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { }); } - public void getBancaliGiaRegistrati(List orders, GestioneEnum gestione, int segno, RunnableArgs> onComplete, RunnableArgs onFailed) { String whereCondGestione = ""; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index 16459e4d..e489314f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -28,14 +28,16 @@ import retrofit2.Response; @Singleton public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final MagazzinoRESTConsumer magazzinoRESTConsumer; - public PVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { + public PVOrdiniAcquistoRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) { + this.restBuilder = restBuilder; this.magazzinoRESTConsumer = magazzinoRESTConsumer; } public void retrieveArticoli(String codAlis, String codMdep, RunnableArgs onSuccess, RunnableArgs onFailed) { - PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); + PVOrdiniAcquistoRESTConsumerService ordiniARestService = restBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); ordiniARestService.retrieveArticoli(codAlis, codMdep, null) .enqueue(new Callback<>() { @Override @@ -59,7 +61,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { } public void retrieveArticolo(String codAlis, String codMdep, String barcode, RunnableArgs onSuccess, RunnableArgs onFailed) { - PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); + PVOrdiniAcquistoRESTConsumerService ordiniARestService = restBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); ordiniARestService.retrieveArticoli(codAlis, codMdep, barcode) .enqueue(new Callback<>() { @Override @@ -98,7 +100,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { saveDTO.setGestione("O"); saveDTO.setOrdineDTO(ordineDTO); - PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); + PVOrdiniAcquistoRESTConsumerService ordiniARestService = restBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); ordiniARestService.save(codMdep, saveDTO) .enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java index 25cf1d01..1663c1c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java @@ -21,16 +21,18 @@ import retrofit2.Response; @Singleton public class PosizioniRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRESTConsumer; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRESTConsumer; - public PosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - this.mSystemRESTConsumer = systemRESTConsumer; + public PosizioniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; + this.systemRESTConsumer = systemRESTConsumer; } public void getAvailablePosizioni(RunnableArgs> onComplete, RunnableArgs onFailed) { String codMdep = null; - PosizioniRESTConsumerService posizioniRESTConsumerService = RESTBuilder.getService(PosizioniRESTConsumerService.class); + PosizioniRESTConsumerService posizioniRESTConsumerService = restBuilder.getService(PosizioniRESTConsumerService.class); posizioniRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -57,7 +59,7 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - mSystemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { if (onComplete != null) onComplete.run(value); }, ex -> { if (onFailed != null) onFailed.run(ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index b7822bf8..5bf4fbc5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -29,6 +29,12 @@ import retrofit2.Response; @Singleton public class PrinterRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public PrinterRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public enum Type { PRIMARIA, SECONDARIA @@ -39,7 +45,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { String printerTypeStr = printerType != null ? printerType.toString() : null; - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); + PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class); printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -65,7 +71,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { return; } - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); + PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class); printerService .printCollo(testataColloToPrint) .enqueue(new Callback<>() { @@ -98,7 +104,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { Stream.of(params) .forEach(x -> jasperDTO.getParams().add(new JasperPairDTO(x.getKey(), x.getValue()))); - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); + PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class); printerService .processPrintReport(printerName, quantity, jasperDTO) .enqueue(new Callback<>() { @@ -128,7 +134,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { Stream.of(params) .forEach(x -> reportTypeDTO.getParams().add(new JasperPairDTO(x.getKey(), x.getValue()))); - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); + PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class); printerService .printReportType(reportTypeDTO) .enqueue(new Callback<>() { @@ -162,7 +168,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { return; } - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class, 240); + PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class, 240); Call> callable = printerService.printClosedOrders(codMdep, dto); callable.enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java index 0b802557..97143702 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java @@ -18,8 +18,14 @@ import retrofit2.Response; @Singleton public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public ProductionLinesRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void avviaLineaDiProduzione(String codJfas, Integer hrNum, Runnable onComplete, RunnableArgs onFailed) { - ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + ProductionLinesRESTConsumerService restService = restBuilder.getService(ProductionLinesRESTConsumerService.class); Call> callable = restService.avviaLineaDiProduzione(codJfas, hrNum); callable.enqueue(new Callback<>() { @Override @@ -37,7 +43,7 @@ public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { } public void arrestaLineaDiProduzione(String codJfas, Runnable onComplete, RunnableArgs onFailed) { - ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + ProductionLinesRESTConsumerService restService = restBuilder.getService(ProductionLinesRESTConsumerService.class); Call> callable = restService.arrestaLineaDiProduzione(codJfas); callable.enqueue(new Callback<>() { @Override @@ -55,7 +61,7 @@ public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { } public void avviaProduzioneArticoloSuLinea(String codJfas, String codMart, String partitaMag, Runnable onComplete, RunnableArgs onFailed) { - ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class, 300); + ProductionLinesRESTConsumerService restService = restBuilder.getService(ProductionLinesRESTConsumerService.class, 300); Call> callable = restService.avviaProduzioneArticoloSuLinea(codJfas, codMart, partitaMag); callable.enqueue(new Callback<>() { @Override @@ -73,7 +79,7 @@ public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { } public void getStatoLinee(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { - ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + ProductionLinesRESTConsumerService restService = restBuilder.getService(ProductionLinesRESTConsumerService.class); Call>> callable = restService.getStatoLinee(codMdep); callable.enqueue(new Callback<>() { @Override @@ -90,7 +96,7 @@ public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { public void getLineDetails(ProdLineStatusDTO lineaProd, RunnableArgs onComplete, RunnableArgs onFailed) { - ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + ProductionLinesRESTConsumerService restService = restBuilder.getService(ProductionLinesRESTConsumerService.class); Call>> callable = restService.getStatoLinee(lineaProd.getCodMdepLav()); callable.enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index e08c4594..af500a29 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -36,66 +36,68 @@ import retrofit2.Response; @Singleton public class SystemRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public SystemRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void registerDevice(final Runnable onSuccess, final RunnableArgs onFailed) { - RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO() - .setApp("WMS"); + RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO().setApp("WMS"); - SystemRESTConsumerService systemRESTConsumerService = RESTBuilder.getService(SystemRESTConsumerService.class); - systemRESTConsumerService.registerDevice(registerDeviceRequestDTO) - .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed); - } + SystemRESTConsumerService systemRESTConsumerService = restBuilder.getService(SystemRESTConsumerService.class); + systemRESTConsumerService.registerDevice(registerDeviceRequestDTO).enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed); + } - @Override - public void onFailure(Call> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); } public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) { - NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO() - .setNativeSql(nativeSql); + NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO().setNativeSql(nativeSql); - SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); - service - .processSql(nativeSqlDTO) - .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "ProcessSql", o -> { - Gson gson = UtilityGson.createObject(); + SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); + service.processSql(nativeSqlDTO).enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "ProcessSql", o -> { + Gson gson = UtilityGson.createObject(); - String json = gson.toJson(o); + String json = gson.toJson(o); - InputStream ims = new ByteArrayInputStream(json.getBytes()); - Reader reader = new InputStreamReader(ims); - T gsonObj = gson.fromJson(reader, clazz); + InputStream ims = new ByteArrayInputStream(json.getBytes()); + Reader reader = new InputStreamReader(ims); + T gsonObj = gson.fromJson(reader, clazz); - onComplete.run(gsonObj); - }, onFailed); - } + onComplete.run(gsonObj); + }, onFailed); + } - @Override - public void onFailure(Call> call, Throwable t) { - Logger.e(t, "ProcessSQL"); + @Override + public void onFailure(Call> call, Throwable t) { + Logger.e(t, "ProcessSQL"); - if (t instanceof ConnectException) - onFailed.run(new InvalidConnectionException(RESTBuilder.getDefaultHost(), RESTBuilder.getDefaultPort(), t)); - else - onFailed.run(new Exception(t)); - } - }); + if (t instanceof ConnectException) + onFailed.run(new InvalidConnectionException( + SettingsManager.i().getServer().getHost(), + SettingsManager.i().getServer().getPort(), + t)); + else onFailed.run(new Exception(t)); + } + }); } public void getAvailableCodMdeps(final RunnableArgs> onSuccess, RunnableArgs onFailed) { - SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); + SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); service.getAvailableCodMdeps().enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -123,13 +125,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { } - MailRequestDTO mailDTO = new MailRequestDTO() - .setFrom("sender@integry.it") - .setFromName((BuildConfig.DEBUG ? "[DEBUG] " : "") + "WMS Android") - .setTo(dest) - .setSubject("Bug notification" + currentAzienda) - .setMsgText(message) - .setHtml(true); + MailRequestDTO mailDTO = new MailRequestDTO().setFrom("sender@integry.it").setFromName((BuildConfig.DEBUG ? "[DEBUG] " : "") + "WMS Android").setTo(dest).setSubject("Bug notification" + currentAzienda).setMsgText(message).setHtml(true); sendMail(mailDTO, () -> { if (onComplete != null) onComplete.run(); @@ -142,7 +138,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { public void sendMail(MailRequestDTO mailDTO, Runnable onComplete, RunnableArgs onFailed) { - SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); + SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); service.sendMail(mailDTO).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/VettoriRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/VettoriRESTConsumer.java index b3fb1151..70291dc0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/VettoriRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/VettoriRESTConsumer.java @@ -15,15 +15,17 @@ import retrofit2.Response; @Singleton public class VettoriRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final ExecutorService executorService; - public VettoriRESTConsumer(ExecutorService executorService) { + public VettoriRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) { + this.restBuilder = restBuilder; this.executorService = executorService; } public List retrieveRecentlyUsedInOrdersSyncronized(GestioneEnum gestione) throws Exception { - var service = RESTBuilder.getService(VettoriRESTConsumerService.class); + var service = restBuilder.getService(VettoriRESTConsumerService.class); Response>> response = service.retrieveRecentlyUsedInOrders(gestione) .execute(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java index e513aeca..554fc074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.exception.InvalidLicenseException; +import it.integry.integrywmsnative.core.exception.UnauthorizedAccessException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.CommonRESTException; import it.integry.integrywmsnative.core.rest.model.EsitoType; @@ -39,7 +40,10 @@ public abstract class _BaseRESTConsumer { throw new Exception(response.message()); } } else { - if (response.code() == 404) { + if (response.code() == 401) { + Log.e(logTitle, "Errore " + response.code() + ": Accesso non autorizzato. Si prega di controllare le credenziali e riprovare"); + throw new UnauthorizedAccessException(); + } else if (response.code() == 404) { Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url() + ")"); throw new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"); } else if (response.code() == 550) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoModule.java index 0491cd7a..7a600f27 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoModule.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_bolla_elenco; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.BolleAccettazioneRESTConsumer; @Module(subcomponents = {MainAccettazioneBollaElencoComponent.class}) @@ -9,8 +10,8 @@ public class MainAccettazioneBollaElencoModule { @Provides - BolleAccettazioneRESTConsumer providesBolleAccettazioneRESTConsumer() { - return new BolleAccettazioneRESTConsumer(); + BolleAccettazioneRESTConsumer providesBolleAccettazioneRESTConsumer(RESTBuilder restBuilder) { + return new BolleAccettazioneRESTConsumer(restBuilder); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java index 7bae2e9f..0cb65ac2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java @@ -20,9 +20,14 @@ import retrofit2.Response; @Singleton public class BolleAccettazioneRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public BolleAccettazioneRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void retrieveBolleDaAccettare(RunnableArgs> onComplete, RunnableArgs onFailed) { - BolleAccettazioneRESTConsumerService service = RESTBuilder.getService(BolleAccettazioneRESTConsumerService.class); + BolleAccettazioneRESTConsumerService service = restBuilder.getService(BolleAccettazioneRESTConsumerService.class); service.retrieveElencoBolle() .enqueue(new Callback<>() { @Override @@ -38,7 +43,7 @@ public class BolleAccettazioneRESTConsumer extends _BaseRESTConsumer { } public void retrievePickingListBolle(List bolle, RunnableArgs> onComplete, RunnableArgs onFailed) { - BolleAccettazioneRESTConsumerService service = RESTBuilder.getService(BolleAccettazioneRESTConsumerService.class); + BolleAccettazioneRESTConsumerService service = restBuilder.getService(BolleAccettazioneRESTConsumerService.class); var request = new RetrieveElencoArticoliAccettazioneBollaRequestDTO() .setBolle(bolle); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/rest/AccettazioneBollaPickingRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/rest/AccettazioneBollaPickingRESTConsumer.java index 709e3d94..2c934448 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/rest/AccettazioneBollaPickingRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/rest/AccettazioneBollaPickingRESTConsumer.java @@ -21,13 +21,17 @@ import retrofit2.Response; @Singleton public class AccettazioneBollaPickingRESTConsumer extends _BaseRESTConsumer { + + private final RESTBuilder restBuilder; + @Inject - public AccettazioneBollaPickingRESTConsumer() { + public AccettazioneBollaPickingRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; } public void retrieveAlreadyRegisteredUDC(List bolle, RunnableArgs> onComplete, RunnableArgs onFailed) { - AccettazioneBollaPickingRESTConsumerService service = RESTBuilder.getService(AccettazioneBollaPickingRESTConsumerService.class); + AccettazioneBollaPickingRESTConsumerService service = restBuilder.getService(AccettazioneBollaPickingRESTConsumerService.class); var request = new RetrieveAlreadyRegisteredULAccettazioneBollaRequestDTO() .setBolle(bolle); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoModule.java index 2adf196b..1bc636e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoModule.java @@ -2,14 +2,15 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_elenco; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.rest.OrdiniAccettazioneRESTConsumer; @Module(subcomponents = {MainAccettazioneOrdiniElencoComponent.class}) public class MainAccettazioneOrdiniElencoModule { @Provides - OrdiniAccettazioneRESTConsumer providesOrdiniAccettazioneRESTConsumer() { - return new OrdiniAccettazioneRESTConsumer(); + OrdiniAccettazioneRESTConsumer providesOrdiniAccettazioneRESTConsumer(RESTBuilder restBuilder) { + return new OrdiniAccettazioneRESTConsumer(restBuilder); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/rest/OrdiniAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/rest/OrdiniAccettazioneRESTConsumer.java index 374ad9f5..512bd72c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/rest/OrdiniAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/rest/OrdiniAccettazioneRESTConsumer.java @@ -21,9 +21,14 @@ import retrofit2.Response; @Singleton public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public OrdiniAccettazioneRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } public void getOrdiniInevasi(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + OrdiniAccettazioneRESTConsumerService service = restBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -46,7 +51,7 @@ public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer { .setNumero(x.getNumero())) .toList(); - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + OrdiniAccettazioneRESTConsumerService service = restBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); service.getArticoliFromOrdiniAccettazione(getPickingListDTOs).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java index 416193b7..8306edc7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.ean128.Ean128Service; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; @@ -17,8 +18,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag public class AccettazioneOrdiniPickingModule { @Provides - AccettazioneOrdiniPickingRESTConsumer providesAccettazionePickingRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new AccettazioneOrdiniPickingRESTConsumer(systemRESTConsumer); + AccettazioneOrdiniPickingRESTConsumer providesAccettazionePickingRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new AccettazioneOrdiniPickingRESTConsumer(restBuilder, systemRESTConsumer); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/rest/AccettazioneOrdiniPickingRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/rest/AccettazioneOrdiniPickingRESTConsumer.java index 1ec0f5ee..f5e30fc3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/rest/AccettazioneOrdiniPickingRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/rest/AccettazioneOrdiniPickingRESTConsumer.java @@ -22,15 +22,17 @@ import retrofit2.Response; @Singleton public class AccettazioneOrdiniPickingRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRestConsumer; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRestConsumer; @Inject - public AccettazioneOrdiniPickingRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - this.mSystemRestConsumer = systemRESTConsumer; + public AccettazioneOrdiniPickingRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; + this.systemRestConsumer = systemRESTConsumer; } public void getBancaliGiaRegistrati(List ordiniToShow, RunnableArgs> onComplete, RunnableArgs onFailed) { - AccettazioneOrdiniPickingRESTConsumerService service = RESTBuilder.getService(AccettazioneOrdiniPickingRESTConsumerService.class); + AccettazioneOrdiniPickingRESTConsumerService service = restBuilder.getService(AccettazioneOrdiniPickingRESTConsumerService.class); var request = new RetrieveAlreadyRegisteredULAccettazioneOrdineRequestDTO() .setOrdini(ordiniToShow); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java index a51de127..b606a644 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java @@ -17,14 +17,16 @@ import retrofit2.Response; @Singleton public class DocInterniRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final MagazzinoRESTConsumer magazzinoRESTConsumer; - public DocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { + public DocInterniRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) { + this.restBuilder = restBuilder; this.magazzinoRESTConsumer = magazzinoRESTConsumer; } public void getDocInterniSetup(RunnableArgs onComplete, RunnableArgs onFailed) { - DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class); + DocInterniRESTConsumerService service = restBuilder.getService(DocInterniRESTConsumerService.class); service.getSetupDocInterni().enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariModule.java index 04752e0c..74164fe2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariModule.java @@ -5,6 +5,7 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer; @@ -13,8 +14,8 @@ public class ElencoInventariModule { @Provides @Singleton - InventarioRESTConsumer providesInventarioRESTConsumer() { - return new InventarioRESTConsumer(); + InventarioRESTConsumer providesInventarioRESTConsumer(RESTBuilder restBuilder) { + return new InventarioRESTConsumer(restBuilder); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java index 55d76580..a846c388 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java @@ -4,8 +4,9 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.gest.login.rest.LoginRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel; @Module(subcomponents = LoginComponent.class) @@ -13,13 +14,13 @@ public class LoginModule { @Provides @Singleton - LoginRESTConsumer provideLoginRESTConsumer() { - return new LoginRESTConsumer(); + AuthRESTConsumer provideLoginRESTConsumer(RESTBuilder restBuilder) { + return new AuthRESTConsumer(restBuilder); } @Provides - LoginViewModel providesSpedizioneViewModel(SystemRESTConsumer systemRESTConsumer, LoginRESTConsumer loginRESTConsumer) { - return new LoginViewModel(systemRESTConsumer, loginRESTConsumer); + LoginViewModel providesSpedizioneViewModel(SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { + return new LoginViewModel(systemRESTConsumer, authRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/RefreshRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/RefreshRequestDTO.java new file mode 100644 index 00000000..49958f69 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/RefreshRequestDTO.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.login.dto; + +public class RefreshRequestDTO { + private String refreshToken; + + public String getRefreshToken() { + return refreshToken; + } + + public RefreshRequestDTO setRefreshToken(String refreshToken) { + this.refreshToken = refreshToken; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java similarity index 55% rename from app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java rename to app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java index 974a4aad..bb1fad19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java @@ -4,6 +4,7 @@ import android.util.Log; import java.util.List; +import javax.inject.Inject; import javax.inject.Singleton; import it.integry.integrywmsnative.core.CommonConst; @@ -14,21 +15,29 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; +import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @Singleton -public class LoginRESTConsumer extends _BaseRESTConsumer { +public class AuthRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + @Inject + public AuthRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void retrieveServerData(String codAzienda, RunnableArgs onComplete, RunnableArgs onFailed) { String protocol = CommonConst.Login.Azienda.protocol; String host = CommonConst.Login.Azienda.host; int port = CommonConst.Login.Azienda.port; - LoginRESTConsumerService service = RESTBuilder.getService(LoginRESTConsumerService.class, protocol, host, port, false, true); + AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class, protocol, host, port, false, true); service.loginAzienda(codAzienda).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { @@ -43,9 +52,27 @@ public class LoginRESTConsumer extends _BaseRESTConsumer { }); } + public void me(RunnableArgs onComplete, RunnableArgs onFailed) { + AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class); + + service.me() + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "me", onComplete, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + Log.e("me", t.toString()); + onFailed.run(new Exception(t)); + } + }); + } + public void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { - LoginRESTConsumerService service = RESTBuilder.getService(LoginRESTConsumerService.class, protocol, host, port, false); + AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class, protocol, host, port, false); LoginRequestDTO loginRequestDTO = new LoginRequestDTO() .setUsername(username) @@ -59,12 +86,36 @@ public class LoginRESTConsumer extends _BaseRESTConsumer { @Override public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "Login", onComplete, onFailed); + analyzeAnswer(response, "login", onComplete, onFailed); } @Override public void onFailure(Call> call, final Throwable t) { - Log.e("Login", t.toString()); + Log.e("login", t.toString()); + onFailed.run(new Exception(t)); + } + }); + } + + + public void refreshToken(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { + AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class); + + RefreshRequestDTO refreshRequest = new RefreshRequestDTO() + .setRefreshToken(username); + + service + .refresh(refreshRequest) + .enqueue(new Callback<>() { + + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "refresh", onComplete, onFailed); + } + + @Override + public void onFailure(Call> call, final Throwable t) { + Log.e("refresh", t.toString()); onFailed.run(new Exception(t)); } }); @@ -72,7 +123,7 @@ public class LoginRESTConsumer extends _BaseRESTConsumer { public void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs> onComplete, RunnableArgs onFailed) { - LoginRESTConsumerService service = RESTBuilder.getService(LoginRESTConsumerService.class, protocol, host, port, false); + AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class, protocol, host, port, false); service.retreiveAvailableProfiles(username) .enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java similarity index 77% rename from app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java rename to app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java index f8825d19..2c7aed5f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java @@ -8,13 +8,14 @@ import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; import it.integry.integrywmsnative.gest.login.dto.LoginResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; -public interface LoginRESTConsumerService { +public interface AuthenticationRESTConsumerService { @GET("loginAziendaWms") @@ -26,6 +27,12 @@ public interface LoginRESTConsumerService { @POST("auth/login") Call> loginNew(@Body LoginRequestDTO loginRequestDTO); + @POST("auth/refresh") + Call> refresh(@Body RefreshRequestDTO refreshRequestDTO); + + @GET("auth/me") + Call> me(); + @GET("users/availableProfiles") Call>> retreiveAvailableProfiles(@Query("username") String username); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index bf3d6035..7f0b2a80 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -20,20 +20,20 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.login.dto.AuthTokenClaimsDTO; import it.integry.integrywmsnative.gest.login.exception.InvalidServerCodAziendaException; import it.integry.integrywmsnative.gest.login.exception.InvalidUserDepositException; -import it.integry.integrywmsnative.gest.login.rest.LoginRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; public class LoginViewModel { private final SystemRESTConsumer mSystemRESTConsumer; - private final LoginRESTConsumer mLoginRESTConsumer; + private final AuthRESTConsumer mAuthRESTConsumer; private Listener mListener; @Inject - public LoginViewModel(SystemRESTConsumer systemRESTConsumer, LoginRESTConsumer loginRESTConsumer) { + public LoginViewModel(SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { this.mSystemRESTConsumer = systemRESTConsumer; - this.mLoginRESTConsumer = loginRESTConsumer; + this.mAuthRESTConsumer = authRESTConsumer; } @@ -77,7 +77,7 @@ public class LoginViewModel { private void retrieveServerData(String codAzienda, RunnableArgsss onComplete) { - mLoginRESTConsumer.retrieveServerData(codAzienda, value -> { + mAuthRESTConsumer.retrieveServerData(codAzienda, value -> { final String serverEndpoint = value.getEndpointRestApi(); @@ -102,7 +102,7 @@ public class LoginViewModel { } private void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs onComplete) { - mLoginRESTConsumer.retrieveAvailableProfiles(protocol, host, port, username, availableProfiles -> { + mAuthRESTConsumer.retrieveAvailableProfiles(protocol, host, port, username, availableProfiles -> { if (availableProfiles == null || availableProfiles.isEmpty()) { this.sendError(new Exception("Non è stato trovato alcun profilo per l'utente: " + username)); @@ -123,7 +123,7 @@ public class LoginViewModel { } private void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete) { - mLoginRESTConsumer.authenticate(protocol, host, port, username, password, profileDb, deviceSalt, sessionData -> { + mAuthRESTConsumer.authenticate(protocol, host, port, username, password, profileDb, deviceSalt, sessionData -> { JWT jwt = new JWT(sessionData.getAccessToken()); var claims = jwt.getClaims(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java index 1158283f..4449fdd9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java @@ -4,6 +4,7 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; @@ -14,8 +15,8 @@ public class OrdiniUscitaElencoModule { @Singleton @Provides - OrdiniUscitaElencoRESTConsumer providesOrdiniUscitaElencoRESTConsumer() { - return new OrdiniUscitaElencoRESTConsumer(); + OrdiniUscitaElencoRESTConsumer providesOrdiniUscitaElencoRESTConsumer(RESTBuilder restBuilder) { + return new OrdiniUscitaElencoRESTConsumer(restBuilder); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/rest/OrdiniUscitaElencoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/rest/OrdiniUscitaElencoRESTConsumer.java index ecd3475f..7d524bfe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/rest/OrdiniUscitaElencoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/rest/OrdiniUscitaElencoRESTConsumer.java @@ -18,8 +18,14 @@ import retrofit2.Response; @Singleton public class OrdiniUscitaElencoRESTConsumer extends _BaseRESTConsumer { + private RESTBuilder restBuilder; + + public OrdiniUscitaElencoRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void getOrdiniFromCommessaCollo(String codMdep, MtbColt testataCollo, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniUscitaElencoRESTConsumerService service = RESTBuilder.getService(OrdiniUscitaElencoRESTConsumerService.class); + OrdiniUscitaElencoRESTConsumerService service = restBuilder.getService(OrdiniUscitaElencoRESTConsumerService.class); service.getOrdiniInCommessaCollo( testataCollo.getDataColloS(), testataCollo.getNumCollo(), diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java index a87fdc14..2c0f5239 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java @@ -2,14 +2,15 @@ package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.rest.ProdOrdineProduzioneRESTConsumer; @Module(subcomponents = ProdOrdineProduzioneElencoComponent.class) public class ProdOrdineProduzioneElencoModule { @Provides - ProdOrdineProduzioneRESTConsumer providesProdOrdineProduzioneRESTConsumer() { - return new ProdOrdineProduzioneRESTConsumer(); + ProdOrdineProduzioneRESTConsumer providesProdOrdineProduzioneRESTConsumer(RESTBuilder restBuilder) { + return new ProdOrdineProduzioneRESTConsumer(restBuilder); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java index eaaf8dec..f4e2c934 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java @@ -22,8 +22,14 @@ import retrofit2.Response; @Singleton public class ProdOrdineProduzioneRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; + + public ProdOrdineProduzioneRESTConsumer(RESTBuilder restBuilder) { + this.restBuilder = restBuilder; + } + public void getOrdiniInevasi(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + OrdiniAccettazioneRESTConsumerService service = restBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); service.listOrdiniInevasi(codMdep, "P").enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -46,7 +52,7 @@ public class ProdOrdineProduzioneRESTConsumer extends _BaseRESTConsumer { .setNumero(x.getNumero())) .toList(); - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + OrdiniAccettazioneRESTConsumerService service = restBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); service.getArticoliFromOrdiniAccettazione(getPickingListDTOs).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java index 8f54b725..2ec738a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java @@ -11,12 +11,10 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.consumers.MagazzinoBufferRESTConsumerService; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO; import retrofit2.Call; import retrofit2.Callback; @@ -25,15 +23,17 @@ import retrofit2.Response; @Singleton public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRESTConsumer; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRESTConsumer; - public ProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - this.mSystemRESTConsumer = systemRESTConsumer; + public ProdFabbisognoLineeProdRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; + this.systemRESTConsumer = systemRESTConsumer; } public void loadFabbisogno(String numOrd, String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { - ProdFabbisognoLineeProdRESTConsumerService prodFabbisognoLineeProdRESTConsumerService = RESTBuilder.getService(ProdFabbisognoLineeProdRESTConsumerService.class); + ProdFabbisognoLineeProdRESTConsumerService prodFabbisognoLineeProdRESTConsumerService = restBuilder.getService(ProdFabbisognoLineeProdRESTConsumerService.class); prodFabbisognoLineeProdRESTConsumerService.loadFabbisogno(numOrd, codMdep) .enqueue(new Callback<>() { @Override @@ -73,7 +73,7 @@ public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() {}.getType(); - this.mSystemRESTConsumer.processSql(sql, typeOfObjectsList, onComplete, onFailed); + this.systemRESTConsumer.processSql(sql, typeOfObjectsList, onComplete, onFailed); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java index 2392a0d3..9b9fa9a8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; @@ -11,8 +12,8 @@ import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.Pro public class ProdRientroMerceOrderDetailModule { @Provides - ProdRientroMerceOrderDetailRESTConsumer provideProdRientroMerceOrderDetailRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new ProdRientroMerceOrderDetailRESTConsumer(systemRESTConsumer); + ProdRientroMerceOrderDetailRESTConsumer provideProdRientroMerceOrderDetailRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new ProdRientroMerceOrderDetailRESTConsumer(restBuilder, systemRESTConsumer); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java index 752a7a33..16402e94 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java @@ -32,10 +32,12 @@ import retrofit2.Response; @Singleton public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { + private final RESTBuilder restBuilder; private final SystemRESTConsumer systemRESTConsumer; @Inject - public ProdRientroMerceOrderDetailRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + public ProdRientroMerceOrderDetailRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + this.restBuilder = restBuilder; this.systemRESTConsumer = systemRESTConsumer; } @@ -110,7 +112,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { public void importColloDaProduzione(ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { - ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); + ProdRientroMerceOrderDetailRESTConsumerService service = restBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -131,7 +133,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { public void deleteColloDaProduzione(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) { - ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); + ProdRientroMerceOrderDetailRESTConsumerService service = restBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); service.deleteColloDaProduzione(mtbColtToDelete).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java index f20b3373..d82edd5f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java @@ -4,6 +4,7 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -17,8 +18,8 @@ public class RettificaGiacenzeModule { @Provides @Singleton - RettificaGiacenzeRESTConsumer providesRettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new RettificaGiacenzeRESTConsumer(systemRESTConsumer); + RettificaGiacenzeRESTConsumer providesRettificaGiacenzeRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) { + return new RettificaGiacenzeRESTConsumer(restBuilder, systemRESTConsumer); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java index 3ed3faa7..c13a2f56 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java @@ -30,10 +30,12 @@ import retrofit2.Response; @Singleton public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { - private final SystemRESTConsumer mSystemRestConsumer; + private final RESTBuilder restBuilder; + private final SystemRESTConsumer systemRestConsumer; - public RettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRestConsumer) { - mSystemRestConsumer = systemRestConsumer; + public RettificaGiacenzeRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRestConsumer) { + this.restBuilder = restBuilder; + this.systemRestConsumer = systemRestConsumer; } public void loadListaFornitori(RunnableArgs> onComplete, RunnableArgs onFailed) { @@ -42,14 +44,14 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - mSystemRestConsumer.>processSql(sql, typeOfObjectsList, value -> { + systemRestConsumer.>processSql(sql, typeOfObjectsList, value -> { if (onComplete != null) onComplete.run(value); }, onFailed); } public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs> onComplete, RunnableArgs onError) { - final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class); + final RettificaGiacenzeRESTConsumerService service = restBuilder.getService(RettificaGiacenzeRESTConsumerService.class); service.searchByCodArtFornOrDescrizione(new SearchArticoloByCodArtFornOrDescrizioneRequestDTO() .setCodAlis(codAlis) .setCodArtFornOrDescrizione(codArtForOrDescr)) @@ -72,7 +74,7 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs> onComplete, RunnableArgs onError) { - final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class); + final RettificaGiacenzeRESTConsumerService service = restBuilder.getService(RettificaGiacenzeRESTConsumerService.class); service.searchByCodMartOrBarcode(new SearchArticoloByBarcodeOrCodMartRequestDTO() .setCodMartOrBarcode(codMartOrBarcodeOrDescr)) .enqueue(new Callback<>() { @@ -108,7 +110,7 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { var request = new SaveDocFromPickingRequestDTO() .setColliFromMtbColts(Collections.singletonList(mtbColt)); - final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class); + final RettificaGiacenzeRESTConsumerService service = restBuilder.getService(RettificaGiacenzeRESTConsumerService.class); service.saveDocFromPickingPvm(request) .enqueue(new Callback<>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUComponent.java new file mode 100644 index 00000000..362bb677 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogBasketLUComponent { + + @Subcomponent.Factory + interface Factory { + DialogBasketLUComponent create(); + } + + void inject(DialogBasketLUView dialogBasketLUView); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java new file mode 100644 index 00000000..b8714c7c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java @@ -0,0 +1,22 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel; +import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel; + +@Module(subcomponents = DialogBasketLUComponent.class) +public class DialogBasketLUModule { + + @Provides + DialogBasketLU_Page1_ViewModel providesDialogBasketLUPage1ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new DialogBasketLU_Page1_ViewModel(colliMagazzinoRESTConsumer); + } + + @Provides + DialogBasketLU_Page2_ViewModel providesDialogBasketLUPage2ViewModel() { + return new DialogBasketLU_Page2_ViewModel(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java index 40ee7a73..7c6d90c2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java @@ -14,16 +14,25 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.databinding.DialogBasketLuBinding; +import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel; import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel; public class DialogBasketLUView extends BaseDialogFragment { + @Inject + DialogBasketLU_Page1_ViewModel dialogBasketLUPage1ViewModel; + @Inject + DialogBasketLU_Page2_ViewModel dialogBasketLUPage2ViewModel; + private final RunnableArgs mOnComplete; private DialogBasketLuBinding mBindings; @@ -31,6 +40,11 @@ public class DialogBasketLUView extends BaseDialogFragment { public DialogBasketLUView(RunnableArgs onComplete) { mOnComplete = onComplete; + + MainApplication.appComponent + .dialogBasketLUComponent() + .create() + .inject(this); } @NonNull @@ -51,9 +65,9 @@ public class DialogBasketLUView extends BaseDialogFragment { } private void initViewPager(Dialog dialog) { - List>> views = new ArrayList<>(); - views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class)); - views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class)); + List> views = new ArrayList<>(); + views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, dialogBasketLUPage1ViewModel)); + views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, dialogBasketLUPage2ViewModel)); DialogBasketLU_ViewPagerAdapter viewPagerAdapter = new DialogBasketLU_ViewPagerAdapter(requireContext(), views); mBindings.viewpager.setAdapter(viewPagerAdapter); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java index 1dafa3db..6a54b1d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java @@ -24,12 +24,12 @@ public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements Vie private final Context mContext; - private final List>> mDatasetLayout; + private final List> mDatasetLayout; private final List> mDatasetViews; private DeactivatableViewPager viewPager; - public DialogBasketLU_ViewPagerAdapter(Context context, List>> datasetLayouts) { + public DialogBasketLU_ViewPagerAdapter(Context context, List> datasetLayouts) { this.mContext = context; this.mDatasetLayout = datasetLayouts; this.mDatasetViews = new ArrayList<>(); @@ -45,32 +45,28 @@ public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements Vie LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false); - Class viewModelClass = mDatasetLayout.get(position).getValue(); - IDialogBasketLUViewModel viewModel = null; +// Class viewModelClass = mDatasetLayout.get(position).getValue(); + IDialogBasketLUViewModel viewModel = mDatasetLayout.get(position).getValue(); - try { - viewModel = (IDialogBasketLUViewModel) viewModelClass.newInstance(); - viewModel.setBinding(mBinding); - viewModel.setContext(mContext); - viewModel.setOnDone(data -> { - int newIndex = viewPager.getCurrentItem() + 1; + // viewModel = (IDialogBasketLUViewModel) viewModelClass.newInstance(); + viewModel.setBinding(mBinding); + viewModel.setContext(mContext); + viewModel.setOnDone(data -> { + int newIndex = viewPager.getCurrentItem() + 1; - if(newIndex <= getCount()) { - this.mDatasetViews.get(newIndex).getValue().setInputData(data); - this.mDatasetViews.get(newIndex).getValue().onPreShow(); - viewPager.setCurrentItem(newIndex, true); - } - }); - viewModel.setOnPrev(() -> { - int newIndex = viewPager.getCurrentItem() - 1; + if(newIndex <= getCount()) { + this.mDatasetViews.get(newIndex).getValue().setInputData(data); + this.mDatasetViews.get(newIndex).getValue().onPreShow(); + viewPager.setCurrentItem(newIndex, true); + } + }); + viewModel.setOnPrev(() -> { + int newIndex = viewPager.getCurrentItem() - 1; - if(newIndex >= 0) { - viewPager.setCurrentItem(newIndex, true); - } - }); - } catch (IllegalAccessException | InstantiationException e) { - e.printStackTrace(); - } + if(newIndex >= 0) { + viewPager.setCurrentItem(newIndex, true); + } + }); mBinding.setVariable(it.integry.integrywmsnative.BR.viewmodel, viewModel); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java index 78d73165..d71dff93 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java @@ -9,6 +9,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; +import javax.inject.Inject; + import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; @@ -26,6 +28,13 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel private List availableMtbColts; private DialogBasketLU_Page1_ListAdapter mAdapter; + private final ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer; + + @Inject + public DialogBasketLU_Page1_ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.colliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } + @Override public void setContext(Context context) { this.mContext = context; @@ -47,11 +56,11 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel mBinding.constraintLayout.setMaxHeight((int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.75)); - ColliMagazzinoRESTConsumer.retrieveBasketColli(mtbColts -> { + colliMagazzinoRESTConsumer.retrieveBasketColli(mtbColts -> { availableMtbColts = mtbColts; - if(mtbColts != null && mtbColts.size() > 0) initRecyclerView(availableMtbColts); + if(mtbColts != null && !mtbColts.isEmpty()) initRecyclerView(availableMtbColts); - mBinding.emptyView.setVisibility(mtbColts != null && mtbColts.size() > 0 ? View.GONE : View.VISIBLE); + mBinding.emptyView.setVisibility(mtbColts != null && !mtbColts.isEmpty() ? View.GONE : View.VISIBLE); }, ex -> { mBinding.emptyView.setVisibility(View.VISIBLE); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java index 26a02de5..3339dd8f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu; import com.annimon.stream.Stream; +import javax.inject.Inject; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException; @@ -40,6 +42,7 @@ public class DialogScanOrCreateLUViewModel { private Listener mListener; + @Inject public DialogScanOrCreateLUViewModel(PosizioniRESTConsumer mPosizioniRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { this.mPosizioniRESTConsumer = mPosizioniRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; From 0da31ef8661e1e158821d62c02c3403e48841770 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 7 May 2024 18:14:05 +0200 Subject: [PATCH 03/68] Aggiunto interceptor per il refresh del token --- .idea/deploymentTargetSelector.xml | 8 ++ .../MainApplicationModule.java | 11 ++- .../core/context/MainContext.java | 10 +- .../core/rest/AuthInterceptor.java | 45 ++++++++- .../core/rest/HttpInterceptor.java | 20 +++- .../core/rest/RESTBuilder.java | 8 +- .../core/settings/SettingsModel.java | 10 ++ .../gest/login/LoginModule.java | 26 ++++- ...java => AuthenticationJwtResponseDTO.java} | 10 +- ...r.java => AuthenticationRESTConsumer.java} | 35 ++----- .../AuthenticationRESTConsumerService.java | 8 +- .../gest/login/rest/RefreshRESTConsumer.java | 95 +++++++++++++++++++ .../rest/RefreshRESTConsumerService.java | 17 ++++ .../gest/login/viewmodel/LoginViewModel.java | 16 ++-- 14 files changed, 247 insertions(+), 72 deletions(-) rename app/src/main/java/it/integry/integrywmsnative/gest/login/dto/{LoginJwtResponseDTO.java => AuthenticationJwtResponseDTO.java} (68%) rename app/src/main/java/it/integry/integrywmsnative/gest/login/rest/{AuthRESTConsumer.java => AuthenticationRESTConsumer.java} (74%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumer.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumerService.java diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index cf9149f6..25db81a3 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -7,6 +7,14 @@ diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 87864ab3..dbab9566 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -19,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.menu.MenuRESTConsumer; import it.integry.integrywmsnative.core.menu.MenuService; +import it.integry.integrywmsnative.core.rest.AuthInterceptor; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer; @@ -50,7 +51,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.sound.SoundAlertService; import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; -import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @@ -96,8 +97,8 @@ public class MainApplicationModule { @Provides @Singleton - MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { - return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer, authRESTConsumer); + MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) { + return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer, authenticationRESTConsumer); } @Provides @@ -117,8 +118,8 @@ public class MainApplicationModule { @Provides @Singleton - RESTBuilder providesRESTBuilder() { - return new RESTBuilder(); + RESTBuilder providesRESTBuilder(AuthInterceptor authInterceptor) { + return new RESTBuilder(authInterceptor); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index 4d35d1d7..12b98b0b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityThread; -import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer; @Singleton public class MainContext { @@ -28,16 +28,16 @@ public class MainContext { private final MenuService menuService; private final AppDatabase appDatabase; private final SystemRESTConsumer systemRESTConsumer; - private final AuthRESTConsumer authRESTConsumer; + private final AuthenticationRESTConsumer authenticationRESTConsumer; private Listener mListener; - public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { + public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) { this.applicationContext = applicationContext; this.menuService = menuService; this.appDatabase = appDatabase; this.systemRESTConsumer = systemRESTConsumer; - this.authRESTConsumer = authRESTConsumer; + this.authenticationRESTConsumer = authenticationRESTConsumer; } public void init() { @@ -67,7 +67,7 @@ public class MainContext { private void initAuthSession(Runnable onComplete) { - this.authRESTConsumer.me(obj -> { + this.authenticationRESTConsumer.me(obj -> { onComplete.run(); }, ex -> { if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java index c4ca240a..b4bc2593 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java @@ -2,23 +2,58 @@ package it.integry.integrywmsnative.core.rest; import androidx.annotation.NonNull; +import com.auth0.android.jwt.JWT; + import java.io.IOException; -import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.gest.login.rest.RefreshRESTConsumer; import okhttp3.Interceptor; import okhttp3.Response; public class AuthInterceptor implements Interceptor { - private final AuthRESTConsumer authRESTConsumer; + private final RefreshRESTConsumer refreshRESTConsumer; - public AuthInterceptor(AuthRESTConsumer authRESTConsumer) { - this.authRESTConsumer = authRESTConsumer; + public AuthInterceptor(RefreshRESTConsumer refreshRESTConsumer) { + this.refreshRESTConsumer = refreshRESTConsumer; } @NonNull @Override public Response intercept(@NonNull Chain chain) throws IOException { - return null; + var originalRequest = chain.request(); + var accessToken = SettingsManager.i().getUserSession().getAccessToken(); + var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate(); + + if(accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) { + + // Make the token refresh request + try { + var response = refreshRESTConsumer.makeSynchronousRefreshTokenRequest(); + + JWT jwt = new JWT(response.getAccessToken()); + + SettingsManager.i().getUserSession() + .setAccessToken(response.getAccessToken()) + .setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt())) + .setRefreshToken(response.getRefreshToken()) + .setRefreshTokenExpiryDate(response.getExpiryDate()); + + SettingsManager.update(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + + // Add the access token to the request header + var authorizedRequest = originalRequest.newBuilder() + .header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken()) + .build(); + + return chain.proceed(authorizedRequest); + } else + return chain.proceed(originalRequest); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java index 2aa26fdf..0bc1bef5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest; import java.io.IOException; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.Request; @@ -18,19 +19,30 @@ public class HttpInterceptor implements Interceptor { public Response intercept(Chain chain) throws IOException { final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB(); - final String ACCESS_TOKEN = SettingsManager.i().getUserSession().getAccessToken(); final String APP_TOKEN = "fa3a21af-606b-4129-a22b-aedc2a52c7b6"; + String accessToken = null; + + if(SettingsManager.i().getUserSession().getAccessTokenExpiryDate() != null && + UtilityDate.getNowTime().isBefore(SettingsManager.i().getUserSession().getAccessTokenExpiryDate())) { + accessToken = SettingsManager.i().getUserSession().getAccessToken(); + } + final Request request = chain.request(); final HttpUrl url = request.url().newBuilder() .addQueryParameter("profileDb", PROFILE_DB) .build(); - final Request newRequest = chain.request().newBuilder() - .addHeader("Authorization", "Bearer " + ACCESS_TOKEN) + Request.Builder builder = chain.request().newBuilder() .addHeader("Content-Type", "application/json") .addHeader("Accept", "*/*") - .addHeader("x-app-token", APP_TOKEN) + .addHeader("x-app-token", APP_TOKEN); + + if(accessToken != null) + builder + .addHeader("Authorization", "Bearer " + accessToken); + + var newRequest = builder .url(url) .build(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java index 7630d1f2..24f4e4c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java @@ -24,7 +24,12 @@ import retrofit2.converter.gson.GsonConverterFactory; @Singleton public class RESTBuilder { - private static final boolean ADD_LOGGER_INTERCEPTOR = false; + private final boolean ADD_LOGGER_INTERCEPTOR = false; + private final AuthInterceptor authInterceptor; + + public RESTBuilder(AuthInterceptor authInterceptor) { + this.authInterceptor = authInterceptor; + } public T getService(final Class service) { return getService(service, SettingsManager.i().getServer().getProtocol(), SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true); @@ -53,6 +58,7 @@ public class RESTBuilder { clientBuilder.retryOnConnectionFailure(true); + clientBuilder.addInterceptor(authInterceptor); if (addInterceptors) clientBuilder.addInterceptor(new HttpInterceptor()); if (ADD_LOGGER_INTERCEPTOR) clientBuilder.addInterceptor(new HttpLoggerInterceptor()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java index a8cb448b..dc66ed20 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java @@ -80,6 +80,7 @@ public class SettingsModel { public static class UserSession { private String accessToken; + private LocalDateTime accessTokenExpiryDate; private String refreshToken; private LocalDateTime refreshTokenExpiryDate; private String deviceId; @@ -159,6 +160,15 @@ public class SettingsModel { this.defaultOrdinamentoPickingAccettazioneBolle = defaultOrdinamentoPickingAccettazioneBolle; return this; } + + public LocalDateTime getAccessTokenExpiryDate() { + return accessTokenExpiryDate; + } + + public UserSession setAccessTokenExpiryDate(LocalDateTime accessTokenExpiryDate) { + this.accessTokenExpiryDate = accessTokenExpiryDate; + return this; + } } public Server getServer() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java index a846c388..649a3533 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginModule.java @@ -1,12 +1,16 @@ package it.integry.integrywmsnative.gest.login; +import java.util.concurrent.ExecutorService; + import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.AuthInterceptor; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.RefreshRESTConsumer; import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel; @Module(subcomponents = LoginComponent.class) @@ -14,13 +18,25 @@ public class LoginModule { @Provides @Singleton - AuthRESTConsumer provideLoginRESTConsumer(RESTBuilder restBuilder) { - return new AuthRESTConsumer(restBuilder); + AuthenticationRESTConsumer provideAuthenticationRESTConsumer(RESTBuilder restBuilder) { + return new AuthenticationRESTConsumer(restBuilder); } @Provides - LoginViewModel providesSpedizioneViewModel(SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { - return new LoginViewModel(systemRESTConsumer, authRESTConsumer); + @Singleton + AuthInterceptor provideAuthInterceptor(RefreshRESTConsumer refreshRESTConsumer) { + return new AuthInterceptor(refreshRESTConsumer); + } + + @Provides + @Singleton + RefreshRESTConsumer provideRefreshRESTConsumer(ExecutorService executorService) { + return new RefreshRESTConsumer(executorService); + } + + @Provides + LoginViewModel providesLoginViewModel(SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) { + return new LoginViewModel(systemRESTConsumer, authenticationRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthenticationJwtResponseDTO.java similarity index 68% rename from app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java rename to app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthenticationJwtResponseDTO.java index 1440c75e..f51af87e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/LoginJwtResponseDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/dto/AuthenticationJwtResponseDTO.java @@ -2,7 +2,7 @@ package it.integry.integrywmsnative.gest.login.dto; import java.time.LocalDateTime; -public class LoginJwtResponseDTO { +public class AuthenticationJwtResponseDTO { private String accessToken; private String refreshToken; @@ -14,7 +14,7 @@ public class LoginJwtResponseDTO { return accessToken; } - public LoginJwtResponseDTO setAccessToken(String accessToken) { + public AuthenticationJwtResponseDTO setAccessToken(String accessToken) { this.accessToken = accessToken; return this; } @@ -23,7 +23,7 @@ public class LoginJwtResponseDTO { return refreshToken; } - public LoginJwtResponseDTO setRefreshToken(String refreshToken) { + public AuthenticationJwtResponseDTO setRefreshToken(String refreshToken) { this.refreshToken = refreshToken; return this; } @@ -32,7 +32,7 @@ public class LoginJwtResponseDTO { return expiryDate; } - public LoginJwtResponseDTO setExpiryDate(LocalDateTime expiryDate) { + public AuthenticationJwtResponseDTO setExpiryDate(LocalDateTime expiryDate) { this.expiryDate = expiryDate; return this; } @@ -41,7 +41,7 @@ public class LoginJwtResponseDTO { return expireIn; } - public LoginJwtResponseDTO setExpireIn(long expireIn) { + public AuthenticationJwtResponseDTO setExpireIn(long expireIn) { this.expireIn = expireIn; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumer.java similarity index 74% rename from app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java rename to app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumer.java index bb1fad19..73230b25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumer.java @@ -13,21 +13,20 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; -import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.AuthenticationJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; -import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @Singleton -public class AuthRESTConsumer extends _BaseRESTConsumer { +public class AuthenticationRESTConsumer extends _BaseRESTConsumer { private final RESTBuilder restBuilder; @Inject - public AuthRESTConsumer(RESTBuilder restBuilder) { + public AuthenticationRESTConsumer(RESTBuilder restBuilder) { this.restBuilder = restBuilder; } @@ -71,7 +70,7 @@ public class AuthRESTConsumer extends _BaseRESTConsumer { } - public void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { + public void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class, protocol, host, port, false); LoginRequestDTO loginRequestDTO = new LoginRequestDTO() @@ -85,12 +84,12 @@ public class AuthRESTConsumer extends _BaseRESTConsumer { .enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "login", onComplete, onFailed); } @Override - public void onFailure(Call> call, final Throwable t) { + public void onFailure(Call> call, final Throwable t) { Log.e("login", t.toString()); onFailed.run(new Exception(t)); } @@ -98,28 +97,6 @@ public class AuthRESTConsumer extends _BaseRESTConsumer { } - public void refreshToken(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete, RunnableArgs onFailed) { - AuthenticationRESTConsumerService service = restBuilder.getService(AuthenticationRESTConsumerService.class); - - RefreshRequestDTO refreshRequest = new RefreshRequestDTO() - .setRefreshToken(username); - - service - .refresh(refreshRequest) - .enqueue(new Callback<>() { - - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "refresh", onComplete, onFailed); - } - - @Override - public void onFailure(Call> call, final Throwable t) { - Log.e("refresh", t.toString()); - onFailed.run(new Exception(t)); - } - }); - } public void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs> onComplete, RunnableArgs onFailed) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java index 2c7aed5f..af7b6827 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumerService.java @@ -5,10 +5,9 @@ import java.util.List; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; -import it.integry.integrywmsnative.gest.login.dto.LoginJwtResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.AuthenticationJwtResponseDTO; import it.integry.integrywmsnative.gest.login.dto.LoginRequestDTO; import it.integry.integrywmsnative.gest.login.dto.LoginResponseDTO; -import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -25,10 +24,7 @@ public interface AuthenticationRESTConsumerService { Call> login(@Body LoginRequestDTO loginRequestDTO); @POST("auth/login") - Call> loginNew(@Body LoginRequestDTO loginRequestDTO); - - @POST("auth/refresh") - Call> refresh(@Body RefreshRequestDTO refreshRequestDTO); + Call> loginNew(@Body LoginRequestDTO loginRequestDTO); @GET("auth/me") Call> me(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumer.java new file mode 100644 index 00000000..56c1be3d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumer.java @@ -0,0 +1,95 @@ +package it.integry.integrywmsnative.gest.login.rest; + +import com.google.gson.Gson; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.HttpInterceptor; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityGson; +import it.integry.integrywmsnative.gest.login.dto.AuthenticationJwtResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; +import okhttp3.OkHttpClient; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +@Singleton +public class RefreshRESTConsumer extends _BaseRESTConsumer { + + private final ExecutorService executorService; + + public RefreshRESTConsumer(ExecutorService executorService) { + this.executorService = executorService; + } + + public AuthenticationJwtResponseDTO makeSynchronousRefreshTokenRequest() throws Exception { + RefreshRESTConsumerService service = getService( + RefreshRESTConsumerService.class, + SettingsManager.i().getServer().getProtocol(), + SettingsManager.i().getServer().getHost(), + SettingsManager.i().getServer().getPort(), + true, + true, + 30); + + RefreshRequestDTO refreshRequest = new RefreshRequestDTO() + .setRefreshToken(SettingsManager.i().getUserSession().getRefreshToken()); + + Response> response = service + .refresh(refreshRequest) + .execute(); + + return analyzeAnswer(response, "refreshToken"); + } + + public void makeRefreshTokenRequest(final Runnable onComplete, final RunnableArgs onError) { + executorService.execute(() -> { + try { + makeSynchronousRefreshTokenRequest(); + + if (onComplete != null) + onComplete.run(); + + } catch (Exception ex) { + if (onError != null) onError.run(ex); + } + }); + } + + + private T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) { + OkHttpClient.Builder clientBuilder = RESTBuilder.getDefaultHttpClient(); + + clientBuilder.connectTimeout(timeout, TimeUnit.SECONDS); + clientBuilder.readTimeout(timeout, TimeUnit.SECONDS); + clientBuilder.writeTimeout(timeout, TimeUnit.SECONDS); + + clientBuilder.retryOnConnectionFailure(true); + + if (addInterceptors) clientBuilder.addInterceptor(new HttpInterceptor()); + + OkHttpClient client = clientBuilder.build(); + + String endpoint = protocol + "://" + host + (port > 0 ? ":" + port : "") + "/" + (addEmsApi ? "ems-api/" : ""); + + + Gson gson = UtilityGson.createObject(); + + Retrofit retrofit = new Retrofit.Builder() + .addConverterFactory(GsonConverterFactory.create(gson)) + .baseUrl(endpoint) + .client(client) + .build(); + + return retrofit.create(service); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumerService.java new file mode 100644 index 00000000..257024a6 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/rest/RefreshRESTConsumerService.java @@ -0,0 +1,17 @@ +package it.integry.integrywmsnative.gest.login.rest; + +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.login.dto.AuthenticationJwtResponseDTO; +import it.integry.integrywmsnative.gest.login.dto.RefreshRequestDTO; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.POST; + +public interface RefreshRESTConsumerService { + + + + @POST("auth/refresh") + Call> refresh(@Body RefreshRequestDTO refreshRequestDTO); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index 7f0b2a80..5113e149 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -15,25 +15,26 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityServer; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.login.dto.AuthTokenClaimsDTO; import it.integry.integrywmsnative.gest.login.exception.InvalidServerCodAziendaException; import it.integry.integrywmsnative.gest.login.exception.InvalidUserDepositException; -import it.integry.integrywmsnative.gest.login.rest.AuthRESTConsumer; +import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer; public class LoginViewModel { private final SystemRESTConsumer mSystemRESTConsumer; - private final AuthRESTConsumer mAuthRESTConsumer; + private final AuthenticationRESTConsumer mAuthenticationRESTConsumer; private Listener mListener; @Inject - public LoginViewModel(SystemRESTConsumer systemRESTConsumer, AuthRESTConsumer authRESTConsumer) { + public LoginViewModel(SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) { this.mSystemRESTConsumer = systemRESTConsumer; - this.mAuthRESTConsumer = authRESTConsumer; + this.mAuthenticationRESTConsumer = authenticationRESTConsumer; } @@ -77,7 +78,7 @@ public class LoginViewModel { private void retrieveServerData(String codAzienda, RunnableArgsss onComplete) { - mAuthRESTConsumer.retrieveServerData(codAzienda, value -> { + mAuthenticationRESTConsumer.retrieveServerData(codAzienda, value -> { final String serverEndpoint = value.getEndpointRestApi(); @@ -102,7 +103,7 @@ public class LoginViewModel { } private void retrieveAvailableProfiles(String protocol, String host, int port, String username, RunnableArgs onComplete) { - mAuthRESTConsumer.retrieveAvailableProfiles(protocol, host, port, username, availableProfiles -> { + mAuthenticationRESTConsumer.retrieveAvailableProfiles(protocol, host, port, username, availableProfiles -> { if (availableProfiles == null || availableProfiles.isEmpty()) { this.sendError(new Exception("Non è stato trovato alcun profilo per l'utente: " + username)); @@ -123,7 +124,7 @@ public class LoginViewModel { } private void authenticate(String protocol, String host, int port, String username, String password, String profileDb, String deviceSalt, RunnableArgs onComplete) { - mAuthRESTConsumer.authenticate(protocol, host, port, username, password, profileDb, deviceSalt, sessionData -> { + mAuthenticationRESTConsumer.authenticate(protocol, host, port, username, password, profileDb, deviceSalt, sessionData -> { JWT jwt = new JWT(sessionData.getAccessToken()); var claims = jwt.getClaims(); @@ -134,6 +135,7 @@ public class LoginViewModel { .setProfileDB(profileDb) .setDeviceId(deviceSalt) .setAccessToken(sessionData.getAccessToken()) + .setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt())) .setRefreshToken(sessionData.getRefreshToken()) .setRefreshTokenExpiryDate(sessionData.getExpiryDate()); From 91bca90e5d4cca91c61cf7b4f76ca286225441e7 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 7 May 2024 18:35:51 +0200 Subject: [PATCH 04/68] Fix AuthInterceptor --- .../core/rest/AuthInterceptor.java | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java index b4bc2593..a6878bce 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java @@ -24,35 +24,40 @@ public class AuthInterceptor implements Interceptor { @Override public Response intercept(@NonNull Chain chain) throws IOException { var originalRequest = chain.request(); - var accessToken = SettingsManager.i().getUserSession().getAccessToken(); - var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate(); - if(accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) { + if(SettingsManager.i().getUserSession() != null) { - // Make the token refresh request - try { - var response = refreshRESTConsumer.makeSynchronousRefreshTokenRequest(); + var accessToken = SettingsManager.i().getUserSession().getAccessToken(); + var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate(); - JWT jwt = new JWT(response.getAccessToken()); + if (accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) { - SettingsManager.i().getUserSession() - .setAccessToken(response.getAccessToken()) - .setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt())) - .setRefreshToken(response.getRefreshToken()) - .setRefreshTokenExpiryDate(response.getExpiryDate()); + // Make the token refresh request + try { + var response = refreshRESTConsumer.makeSynchronousRefreshTokenRequest(); - SettingsManager.update(); - } catch (Exception e) { - throw new RuntimeException(e); - } + JWT jwt = new JWT(response.getAccessToken()); + + SettingsManager.i().getUserSession() + .setAccessToken(response.getAccessToken()) + .setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt())) + .setRefreshToken(response.getRefreshToken()) + .setRefreshTokenExpiryDate(response.getExpiryDate()); + + SettingsManager.update(); + } catch (Exception e) { + throw new RuntimeException(e); + } - // Add the access token to the request header - var authorizedRequest = originalRequest.newBuilder() - .header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken()) - .build(); + // Add the access token to the request header + var authorizedRequest = originalRequest.newBuilder() + .header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken()) + .build(); - return chain.proceed(authorizedRequest); + return chain.proceed(authorizedRequest); + } else + return chain.proceed(originalRequest); } else return chain.proceed(originalRequest); } From 7ee59ea81498b3cf697ad91fd9fd7445f72fe298 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 16 Sep 2024 10:33:59 +0200 Subject: [PATCH 05/68] Implementata richiesta commessa in PickingLibero di Lavorazione. Implementato servizio di spostamento arts tra UL in PickingLibero. Implementata generazione documenti in CloseUDS in PickingLibero. --- .idea/deploymentTargetSelector.xml | 8 + app/build.gradle | 14 +- .../MainApplicationComponent.java | 7 +- .../configs/MenuConfiguration.java | 8 +- .../integrywmsnative/core/model/JtbComt.java | 10 + .../consumers/ColliMagazzinoRESTConsumer.java | 58 +-- .../ColliMagazzinoRESTConsumerService.java | 3 +- .../rest/model/CriterioDistribuzioneEnum.java | 42 ++ .../rest/model/SpostaArtsTraULRequestDTO.java | 10 + .../model/SpostaArtsTraULResponseDTO.java | 18 + .../rest/model/uds/CloseUDSRequestDTO.java | 43 ++ .../rest/model/uds/CloseUDSResponseDTO.java | 6 + .../model/uds/InsertUDSRowRequestDTO.java | 11 + .../core/settings/DBSettingsModel.java | 50 +++ .../core/settings/SettingsManager.java | 29 ++ .../AccettazioneBollaPickingViewModel.java | 383 ++++-------------- .../AccettazioneOrdiniPickingActivity.java | 6 +- .../AccettazioneOrdiniPickingViewModel.java | 81 ++-- .../AccettazioneOrdiniPickingListAdapter.java | 12 +- .../picking_libero/PickingLiberoFragment.java | 15 +- .../PickingLiberoViewModel.java | 116 +++--- .../ProdRecuperoMaterialeFragment.java | 1 + .../ProdRecuperMaterialeRESTConsumer.java | 17 +- .../ui/HistoryULsListAdapter.java | 8 +- .../ui/HistoryULsListModel.java | 10 + .../ProdRientroMerceViewModel.java | 12 +- .../ProdRientroMerceOrderDetailFragment.java | 21 +- .../ProdRientroMerceOrderDetailViewModel.java | 53 ++- .../ImportColliDaProduzioneRequestDTO.java | 7 +- .../ProdRiposizionamentoDaProdViewModel.java | 13 +- .../gest/spedizione/SpedizioneActivity.java | 11 +- .../gest/spedizione/SpedizioneViewModel.java | 63 ++- .../spedizione/ui/SpedizioneListAdapter.java | 19 +- .../VersamentoMerceViewModel.java | 3 +- ...leAutoCompleteTwoLinesDropdownAdapter.java | 45 +- ...AutoCompleteTwoLinesDropdownListModel.java | 5 + ...AskCliente_Page1_Cliente_ArrayAdapter.java | 2 +- .../DialogAskCommessaComponent.java | 14 + .../ask_commessa/DialogAskCommessaModule.java | 15 + .../ask_commessa/DialogAskCommessaView.java | 168 ++++++++ .../DialogAskCommessaViewModel.java | 69 ++++ .../DialogInputLUProdTipoColloAdapter.java | 14 +- app/src/main/res/drawable/ic_puzzle.xml | 9 + .../main/res/layout/dialog_ask_commessa.xml | 100 +++++ ...ropdown_simple_item_w_subtitle_bottom.xml} | 0 ...agment_prod_rientro_merce_order_detail.xml | 33 +- .../prod_recupero_materiale_list_item.xml | 101 +++-- app/src/main/res/values/custom_colors.xml | 4 + barcode_base_android_library/build.gradle | 2 +- build.gradle | 8 +- gradle/wrapper/gradle-wrapper.properties | 2 +- honeywellscannerlibrary/build.gradle | 2 +- keyobardemulatorscannerlibrary/build.gradle | 2 +- pointmobilescannerlibrary/build.gradle | 2 +- zebrascannerlibrary/build.gradle | 2 +- 55 files changed, 1166 insertions(+), 601 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java create mode 100644 app/src/main/res/drawable/ic_puzzle.xml create mode 100644 app/src/main/res/layout/dialog_ask_commessa.xml rename app/src/main/res/layout/{dropdown_simple_item_w_subtitle.xml => dropdown_simple_item_w_subtitle_bottom.xml} (100%) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef36..f23a4811 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/app/build.gradle b/app/build.gradle index 898a04a4..1a514540 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,7 +92,7 @@ android { } dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2' implementation fileTree(include: ['*.jar'], dir: 'libs') androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' @@ -103,16 +103,16 @@ dependencies { //Firebase // Import the Firebase BoM - implementation platform('com.google.firebase:firebase-bom:32.8.1') + implementation platform('com.google.firebase:firebase-bom:33.2.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-perf' - implementation 'com.google.android.gms:play-services-basement:18.3.0' + implementation 'com.google.android.gms:play-services-basement:18.4.0' - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.3.2' @@ -127,12 +127,12 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.annimon:stream:1.2.2' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.5' // implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'org.apache.commons:commons-text:1.9' //MVVM - def dagger2_version = '2.46.1' + def dagger2_version = '2.49' api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 40a6eb59..b7c4950a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -110,6 +110,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaComponent; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaModule; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent; @@ -215,7 +217,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc DialogInfoGiacenzaModule.class, ArticoliInGiacenzaModule.class, DialogTracciamentoImballiModule.class, - DialogAskVettoreModule.class + DialogAskVettoreModule.class, + DialogAskCommessaModule.class }) public interface MainApplicationComponent { @@ -361,6 +364,8 @@ public interface MainApplicationComponent { DialogAskVettoreComponent.Factory dialogAskVettoreComponent(); + DialogAskCommessaComponent.Factory dialogAskCommessaComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 64edbc2a..f5319e45 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -88,7 +88,8 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.free_picking) .setTitleIcon(R.drawable.ic_dashboard_picking_libero) .setDrawerIcon(R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, + SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, false))) .addItem(new MenuItem() .setID(R.id.nav_resi_cliente) @@ -124,7 +125,8 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.free_lav_picking) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) .setDrawerIcon(R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, + SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, SettingsManager.iDB().isFlagAskCommessaInPickingLiberoLav()))) .addItem(new MenuItem() .setID(R.id.nav_prod_posizionamento_da_ord) @@ -180,7 +182,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.prod_versamento_su_ordine_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_su_ord) .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true, false))) .addItem(new MenuItem() .setID(R.id.nav_prod_riposizionamento_da_ord) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java index 444ddfb4..b1b7dd54 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.model; public class JtbComt extends EntityBase { private String codJcom; + private String codAnag; private String codJfas; private String codJflav; private String descrizione; @@ -20,6 +21,15 @@ public class JtbComt extends EntityBase { return this; } + public String getCodAnag() { + return codAnag; + } + + public JtbComt setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + public String getCodJfas() { return codJfas; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 4249e1fc..05308af2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -497,38 +498,37 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destMtbColt, Runnable onComplete, RunnableArgs onFailed) { - new Thread(() -> { - MtbColt mtbColtToMoveClone = (MtbColt) sourceMtbColt.clone(); - MtbColt mtbColtDestClone = (MtbColt) destMtbColt.clone(); + public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destMtbColt, boolean flagForceUseRefs, RunnableArgs> onComplete, RunnableArgs onFailed) { + MtbColt mtbColtToMoveClone = (MtbColt) sourceMtbColt.clone(); + MtbColt mtbColtDestClone = (MtbColt) destMtbColt.clone(); - for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { - mtbColtToMoveClone.getMtbColr().get(i) - .setMtbAart(null) - .setMtbPartitaMag(null); + for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { + mtbColtToMoveClone.getMtbColr().get(i) + .setMtbAart(null) + .setMtbPartitaMag(null); + } + + mtbColtDestClone.setMtbColr(null); + + SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO = new SpostaArtsTraULRequestDTO() + .setSourceMtbColt(mtbColtToMoveClone) + .setDestinationMtbColt(mtbColtDestClone) + .setFlagForceUseRefs(flagForceUseRefs); + + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "spostaArtsTraUL", data -> { + onComplete.run(data.getGeneratedMtbColr()); + }, onFailed); } - mtbColtDestClone.setMtbColr(null); - - SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO = new SpostaArtsTraULRequestDTO() - .setSourceMtbColt(mtbColtToMoveClone) - .setDestinationMtbColt(mtbColtDestClone); - - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); - colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "spostaArtsTraUL", data -> { - onComplete.run(); - }, onFailed); - } - - @Override - public void onFailure(Call> call, Throwable t) { - if (onFailed != null) onFailed.run(new Exception(t)); - } - }); - }).start(); + @Override + public void onFailure(Call> call, Throwable t) { + if (onFailed != null) onFailed.run(new Exception(t)); + } + }); } public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs onFailed) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java index 1e13a7d0..d8c1589d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java @@ -7,6 +7,7 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -35,7 +36,7 @@ public interface ColliMagazzinoRESTConsumerService { Call> spostaULInPosizione(@Query("codMdep") String codMdep, @Query("posizione") String posizione, @Body MtbColt mtbColtToMove); @POST("wms/spostaArtsTraUL") - Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); + Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); @POST("wms/assegnaLottoSuColloScarico") Call> assegnaLottoSuColloScarico(@Body MtbColt mtbColt); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java new file mode 100644 index 00000000..a65b3a67 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java @@ -0,0 +1,42 @@ +package it.integry.integrywmsnative.core.rest.model; + +import com.google.gson.annotations.SerializedName; + +public enum CriterioDistribuzioneEnum { + @SerializedName("U") + U("U"), //AGGIORNA IL COLLO ESISTENTE + + @SerializedName("O") + O("O"), //DIVIDE IL COLLO INIZIALE PER ORDINE + + @SerializedName("G") + G("G"), //DIVIDE IL COLLO INIZIALE PER IL GRUPPO BOLLA DEGLI ARTICOLI + + @SerializedName("UP") + UP("UP"), //SI TRATTA DI UN COLLO DI LAVORAZIONE CHE HA SULLE RIGHE I RIFERIMENTI DELL'ORDINE DI PRODUZIONE (GESTIONE_RIF = 'A') + //E VIENE LANCIATA LA NORMALE DISTRIBUZIONE MA NELL'AGGIORNARE IL COLLO VENGONO LETTI I RIFERIMENTI DELL'ORDINE DI LAVORAZIOKNE + // A CUI LA CHIAVE DATA,NUMERO E RIGA ORDINE FANNO RIFERIMENTO + + + @SerializedName("FASE") + FASE("FASE"); + + private final String text; + + CriterioDistribuzioneEnum(String text) { + this.text = text; + } + + + public String getText() { + return this.text; + } + + public static CriterioDistribuzioneEnum fromString(String text) { + for (CriterioDistribuzioneEnum b : CriterioDistribuzioneEnum.values()) { + if (b.text.equalsIgnoreCase(text)) return b; + } + return null; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java index bb1adb64..a658f79c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java @@ -9,6 +9,8 @@ public class SpostaArtsTraULRequestDTO { private MtbColt destinationMtbColt; + private boolean flagForceUseRefs; + public MtbColt getSourceMtbColt() { return sourceMtbColt; } @@ -27,4 +29,12 @@ public class SpostaArtsTraULRequestDTO { return this; } + public boolean isFlagForceUseRefs() { + return flagForceUseRefs; + } + + public SpostaArtsTraULRequestDTO setFlagForceUseRefs(boolean flagForceUseRefs) { + this.flagForceUseRefs = flagForceUseRefs; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java new file mode 100644 index 00000000..457864bd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.rest.model; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColr; + +public class SpostaArtsTraULResponseDTO { + private List generatedMtbColr; + + public List getGeneratedMtbColr() { + return generatedMtbColr; + } + + public SpostaArtsTraULResponseDTO setGeneratedMtbColr(List generatedMtbColr) { + this.generatedMtbColr = generatedMtbColr; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java index f53ca7ea..7277828c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.core.rest.model.uds; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.model.CriterioDistribuzioneEnum; public class CloseUDSRequestDTO { @@ -8,6 +9,20 @@ public class CloseUDSRequestDTO { private String orderCodMdep; private MtbColt mtbColt; + private boolean createDocument; + private String documentCodDtip; + private String documentCodAnag; + + private CriterioDistribuzioneEnum criterioDistribuzione; + + public boolean isCreateDocument() { + return createDocument; + } + + public String getDocumentCodDtip() { + return documentCodDtip; + } + public boolean isPrintSSCC() { return printSSCC; } @@ -34,4 +49,32 @@ public class CloseUDSRequestDTO { this.mtbColt = mtbColt; return this; } + + public CloseUDSRequestDTO setCreateDocument(boolean createDocument) { + this.createDocument = createDocument; + return this; + } + + public CloseUDSRequestDTO setDocumentCodDtip(String documentCodDtip) { + this.documentCodDtip = documentCodDtip; + return this; + } + + public String getDocumentCodAnag() { + return documentCodAnag; + } + + public CloseUDSRequestDTO setDocumentCodAnag(String documentCodAnag) { + this.documentCodAnag = documentCodAnag; + return this; + } + + public CriterioDistribuzioneEnum getCriterioDistribuzione() { + return criterioDistribuzione; + } + + public CloseUDSRequestDTO setCriterioDistribuzione(CriterioDistribuzioneEnum criterioDistribuzione) { + this.criterioDistribuzione = criterioDistribuzione; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java index d24f43f7..c925374e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.model.uds; import java.util.List; +import it.integry.integrywmsnative.core.model.DtbDoct; import it.integry.integrywmsnative.core.model.MtbColt; public class CloseUDSResponseDTO { @@ -9,6 +10,7 @@ public class CloseUDSResponseDTO { private boolean deleted; private List generatedMtbColts; + private DtbDoct generatedDocument; public boolean isSaved() { return saved; @@ -21,4 +23,8 @@ public class CloseUDSResponseDTO { public List getGeneratedMtbColts() { return generatedMtbColts; } + + public DtbDoct getGeneratedDocument() { + return generatedDocument; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java index 4e704c4d..a239437c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java @@ -18,6 +18,8 @@ public class InsertUDSRowRequestDTO { private String partitaMag; private LocalDate dataScad; + private String codJcom; + public MtbColr getSourceMtbColr() { return sourceMtbColr; } @@ -89,4 +91,13 @@ public class InsertUDSRowRequestDTO { this.dataScad = dataScad; return this; } + + public String getCodJcom() { + return codJcom; + } + + public InsertUDSRowRequestDTO setCodJcom(String codJcom) { + this.codJcom = codJcom; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index aaec3140..cadafa1c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -21,6 +21,7 @@ public class DBSettingsModel { private boolean flagMultiClienteOrdV; private boolean flagUseCodAnagAziendale; private boolean flagAskClienteInPickingLibero; + private boolean flagAskCommessaInPickingLiberoLav; private boolean flagPickLiberoAllowEmptyCliente; private boolean flagCanAddExtraItemSpedizione; @@ -82,6 +83,10 @@ public class DBSettingsModel { private boolean flagAskDuplicateUDSSpedizione = false; private boolean suggestDataScad = false; private String docInterniRequestNumDoc; + private String produzioneCodDtipCar; + private boolean produzioneGeneraDocCar; + private String produzioneCodDtipScar; + private boolean produzioneGeneraDocScar; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -172,6 +177,15 @@ public class DBSettingsModel { return this; } + public boolean isFlagAskCommessaInPickingLiberoLav() { + return flagAskCommessaInPickingLiberoLav; + } + + public DBSettingsModel setFlagAskCommessaInPickingLiberoLav(boolean flagAskCommessaInPickingLiberoLav) { + this.flagAskCommessaInPickingLiberoLav = flagAskCommessaInPickingLiberoLav; + return this; + } + public boolean isFlagPickLiberoAllowEmptyCliente() { return flagPickLiberoAllowEmptyCliente; } @@ -703,4 +717,40 @@ public class DBSettingsModel { this.docInterniRequestNumDoc = docInterniRequestNumDoc; return this; } + + public String getProduzioneCodDtipCar() { + return produzioneCodDtipCar; + } + + public DBSettingsModel setProduzioneCodDtipCar(String produzioneCodDtipCar) { + this.produzioneCodDtipCar = produzioneCodDtipCar; + return this; + } + + public boolean isProduzioneGeneraDocCar() { + return produzioneGeneraDocCar; + } + + public DBSettingsModel setProduzioneGeneraDocCar(boolean produzioneGeneraDocCar) { + this.produzioneGeneraDocCar = produzioneGeneraDocCar; + return this; + } + + public String getProduzioneCodDtipScar() { + return produzioneCodDtipScar; + } + + public DBSettingsModel setProduzioneCodDtipScar(String produzioneCodDtipScar) { + this.produzioneCodDtipScar = produzioneCodDtipScar; + return this; + } + + public boolean isProduzioneGeneraDocScar() { + return produzioneGeneraDocScar; + } + + public DBSettingsModel setProduzioneGeneraDocScar(boolean produzioneGeneraDocScar) { + this.produzioneGeneraDocScar = produzioneGeneraDocScar; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index af8b9d70..c390e572 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -228,6 +228,11 @@ public class SettingsManager { .setSection("PICKING_LIBERO") .setKeySection("FLAG_ASK_CLIENTE") .setSetter(dbSettingsModelIstance::setFlagAskClienteInPickingLibero)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PICKING_LIBERO") + .setKeySection("FLAG_ASK_COMMESSA_LAV") + .setSetter(dbSettingsModelIstance::setFlagAskCommessaInPickingLiberoLav)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("PICKING_LIBERO") @@ -563,6 +568,30 @@ public class SettingsManager { .setKeySection("REQUEST_NUM_DOC") .setSetter(dbSettingsModelIstance::setDocInterniRequestNumDoc)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) + .setGestName("W_PORDI_RC") + .setSection("SETUP_DOCUMENTI") + .setKeySection("COD_DTIP_CAR") + .setSetter(dbSettingsModelIstance::setProduzioneCodDtipCar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PRODUZIONE") + .setKeySection("FLAG_GENERA_DOC_CAR") + .setSetter(dbSettingsModelIstance::setProduzioneGeneraDocCar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) + .setGestName("W_PORDI_RC") + .setSection("SETUP_DOCUMENTI") + .setKeySection("COD_DTIP_SCAR") + .setSetter(dbSettingsModelIstance::setProduzioneCodDtipScar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PRODUZIONE") + .setKeySection("FLAG_GENERA_DOC_SCAR") + .setSetter(dbSettingsModelIstance::setProduzioneGeneraDocScar)); + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index 6e8b80eb..8acd56d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -92,13 +92,7 @@ public class AccettazioneBollaPickingViewModel { private final List mHistoryUsedAarts = new ArrayList<>(); @Inject - public AccettazioneBollaPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer, - ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer, - AccettazioneBollaPickingRESTConsumer accettazioneBollaPickingRESTConsumer, - ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, - ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { + public AccettazioneBollaPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, AccettazioneBollaPickingRESTConsumer accettazioneBollaPickingRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; @@ -112,20 +106,14 @@ public class AccettazioneBollaPickingViewModel { this.mBolle = bolle; this.mUseQtaBolla = useQtaOrd; - List mSitArts = Stream.of(sitArts) - .filter(x -> - UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO)) - .toList(); + List mSitArts = Stream.of(sitArts).filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO)).toList(); getEmptyPickingList(mSitArts, this.mPickingList::postValue); defaultGestioneOfUL = GestioneEnum.ACQUISTO; - var availableCodAnags = bolle.stream() - .map(TestataBollaAccettazioneDTO::getCodAnag) - .distinct() - .collect(Collectors.toList()); + var availableCodAnags = bolle.stream().map(TestataBollaAccettazioneDTO::getCodAnag).distinct().collect(Collectors.toList()); defaultCodAnag = availableCodAnags.size() == 1 ? availableCodAnags.get(0) : null; switch (defaultGestioneOfUL) { @@ -136,27 +124,21 @@ public class AccettazioneBollaPickingViewModel { private void getEmptyPickingList(List sitBolleList, RunnableArgs> onComplete) { - List codMarts = Stream.of(sitBolleList) - .map(SitBollaAccettazioneDTO::getCodMart) - .toList(); + List codMarts = Stream.of(sitBolleList).map(SitBollaAccettazioneDTO::getCodMart).toList(); this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> { - List pickingList = Stream.of(sitBolleList) - .map(sitBolla -> { - MtbAart mtbAart = null; + List pickingList = Stream.of(sitBolleList).map(sitBolla -> { + MtbAart mtbAart = null; - for (MtbAart mtbAartItem : listMtbAarts) { - if (mtbAartItem.getCodMart().equalsIgnoreCase(sitBolla.getCodMart())) { - mtbAart = mtbAartItem; - break; - } - } + for (MtbAart mtbAartItem : listMtbAarts) { + if (mtbAartItem.getCodMart().equalsIgnoreCase(sitBolla.getCodMart())) { + mtbAart = mtbAartItem; + break; + } + } - return new PickingObjectDTO() - .setSitBollaAccettazione(sitBolla) - .setMtbAart(mtbAart); - }) - .toList(); + return new PickingObjectDTO().setSitBollaAccettazione(sitBolla).setMtbAart(mtbAart); + }).toList(); onComplete.run(pickingList); }, this::sendError); @@ -219,9 +201,7 @@ public class AccettazioneBollaPickingViewModel { try { numCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()); - this.createNewLU( - numCollo, - CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete); + this.createNewLU(numCollo, CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete); } catch (Exception ex) { this.sendError(ex); } @@ -234,11 +214,7 @@ public class AccettazioneBollaPickingViewModel { } private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - this.createNewLU( - null, - null, - false, - () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); + this.createNewLU(null, null, false, () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); } private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -301,9 +277,7 @@ public class AccettazioneBollaPickingViewModel { private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - var optionalPos = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) - .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) - .findFirst(); + var optionalPos = Stream.of(SettingsManager.iDB().getAvailablePosizioni()).filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())).findFirst(); this.sendFilterPosizioneApplied(optionalPos.get().getPosizione()); onComplete.run(); @@ -325,9 +299,7 @@ public class AccettazioneBollaPickingViewModel { private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) { final List pickingList = mPickingList.getValue(); - List matchPickingObject = Stream.of(pickingList) - .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())) - .toList(); + List matchPickingObject = Stream.of(pickingList).filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())).toList(); for (PickingObjectDTO pickingObjectDTO : matchPickingObject) { pickingObjectDTO.setTempPickData(pickData); @@ -344,11 +316,7 @@ public class AccettazioneBollaPickingViewModel { this.manageDispatchBollaRow(matchedRows.get(0)); } else { //So che il codMart sarà solo 1 - var firstCodMart = Stream.of(matchedRows) - .map(x -> x.getSitBollaAccettazione().getCodMart()) - .distinct() - .findFirst() - .get(); + var firstCodMart = Stream.of(matchedRows).map(x -> x.getSitBollaAccettazione().getCodMart()).distinct().findFirst().get(); this.sendFilterCodMartApplied(firstCodMart); } @@ -359,14 +327,7 @@ public class AccettazioneBollaPickingViewModel { if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownBarcodes()) { //TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato this.sendOnUnknownBarcodeScanned(barcode, notes -> { - this.manageDispatchBollaRow(new PickingObjectDTO() - .setMtbAart(new MtbAart() - .setDescrizione(notes) - .setDescrizioneEstesa(notes) - .setFlagTracciabilita("N") - .setFlagQtaCnfFissa("S") - .setQtaCnf(BigDecimal.ONE) - .setBarCode(barcode))); + this.manageDispatchBollaRow(new PickingObjectDTO().setMtbAart(new MtbAart().setDescrizione(notes).setDescrizioneEstesa(notes).setFlagTracciabilita("N").setFlagQtaCnfFissa("S").setQtaCnf(BigDecimal.ONE).setBarCode(barcode))); onComplete.run(); }, onComplete); } else { @@ -378,29 +339,19 @@ public class AccettazioneBollaPickingViewModel { private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) { if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownItems()) { - this.manageDispatchBollaRow(new PickingObjectDTO() - .setMtbAart(mtbAart) - .setTempPickData(pickDataDTO)); - } else - this.sendError(new NoArtsFoundException()); + this.manageDispatchBollaRow(new PickingObjectDTO().setMtbAart(mtbAart).setTempPickData(pickDataDTO)); + } else this.sendError(new NoArtsFoundException()); } public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { this.manageInfoAggiuntiveRequest((additionalNotes, tCol) -> { - final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO() - .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) - .setAnnotazioni(additionalNotes) - .setCodTcol(tCol != null ? tCol.getCodTcol() : null) - .setNumCollo(customNumCollo) - .setSerCollo(customSerCollo) - .setCodAnag(defaultCodAnag); + final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO().setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()).setAnnotazioni(additionalNotes).setCodTcol(tCol != null ? tCol.getCodTcol() : null).setNumCollo(customNumCollo).setSerCollo(customSerCollo).setCodAnag(defaultCodAnag); this.mColliCaricoRESTConsumer.createUDC(createUDCRequestDTO, createdUDS -> { this.mCurrentMtbColt = createdUDS; - this.mCurrentMtbColt.setMtbColr(new ObservableArrayList<>()) - .setDisablePrint(disablePrint); + this.mCurrentMtbColt.setMtbColr(new ObservableArrayList<>()).setDisablePrint(disablePrint); if (onComplete != null) onComplete.run(); this.sendLUOpened(createdUDS); @@ -429,13 +380,7 @@ public class AccettazioneBollaPickingViewModel { } if (SettingsManager.iDB().isFlagAccettazioneBollaEnableFastPick()) { - this.saveNewRow(pickingObjectDTO, - BigDecimal.ONE, - pickingObjectDTO.getMtbAart().getQtaCnf(), - pickingObjectDTO.getMtbAart().getQtaCnf(), - partitaMag, - null, - false); + this.saveNewRow(pickingObjectDTO, BigDecimal.ONE, pickingObjectDTO.getMtbAart().getQtaCnf(), pickingObjectDTO.getMtbAart().getQtaCnf(), partitaMag, null, false); return; } @@ -443,21 +388,20 @@ public class AccettazioneBollaPickingViewModel { dispatchBollaRow(pickingObjectDTO); } - public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO){ + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) { dispatchBollaRow(pickingObjectDTO, false); } - public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO, boolean longClick) { + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO, boolean executeImmediately) { if (this.mCurrentMtbColt == null) return; AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); - Stream.of(pickingObjectDTO.getWithdrawMtbColrs()) - .forEach(row -> { - numCnfWithdrawRows.addAndGet(row.getNumCnf()); - qtaColWithdrawRows.addAndGet(row.getQtaCol()); - }); + pickingObjectDTO.getWithdrawMtbColrs().forEach(row -> { + numCnfWithdrawRows.addAndGet(row.getNumCnf()); + qtaColWithdrawRows.addAndGet(row.getQtaCol()); + }); BigDecimal totalQtaDoc = null; BigDecimal totalNumCnfDoc = null; @@ -555,11 +499,10 @@ public class AccettazioneBollaPickingViewModel { } if (!this.mUseQtaBolla) { - if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && - UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { + if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); initialQtaTot = initialNumCnf.multiply(initialQtaCnf); - } else if(UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { + } else if (UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { initialNumCnf = BigDecimal.ONE; initialQtaTot = initialNumCnf.multiply(initialQtaCnf); } @@ -571,10 +514,7 @@ public class AccettazioneBollaPickingViewModel { } if (partitaMag == null && dataScad == null) { - HistoryMtbAartDTO historyMtbAartDTO = - pickingObjectDTO.getMtbAart().getCodMart() != null ? - this.getHistoryItemByCodMartIfExists(pickingObjectDTO.getMtbAart().getCodMart()) : - this.getHistoryItemByBarcodeIfExists(pickingObjectDTO.getMtbAart().getBarCode()); + HistoryMtbAartDTO historyMtbAartDTO = pickingObjectDTO.getMtbAart().getCodMart() != null ? this.getHistoryItemByCodMartIfExists(pickingObjectDTO.getMtbAart().getCodMart()) : this.getHistoryItemByBarcodeIfExists(pickingObjectDTO.getMtbAart().getBarCode()); if (historyMtbAartDTO != null) { partitaMag = historyMtbAartDTO.getPartitaMag(); @@ -582,48 +522,18 @@ public class AccettazioneBollaPickingViewModel { } } - if (!longClick){ - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - initialNumCnf, initialQtaCnf, initialQtaTot, - qtaDaEvadere, - numCnfDaEvadere, - qtaCnfDaEvadere, - qtaColDaPrelevare, - numCnfDaPrelevare, - qtaCnfDaPrelevare, - null, - null, - null, - partitaMag, - dataScad, - true, - (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, initialNumCnf, initialQtaCnf, initialQtaTot, partitaMag, dataScad, false); } else { - this.saveNewRow( - pickingObjectDTO, - initialNumCnf, - initialQtaCnf, - initialQtaTot, - partitaMag, - dataScad, - false); + this.sendOnItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, null, null, null, partitaMag, dataScad, true, (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + }); } } - public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal - qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { resetMatchedRows(); @@ -640,31 +550,16 @@ public class AccettazioneBollaPickingViewModel { var sitBolla = pickingObjectDTO.getSitBollaAccettazione(); var firstAvailableBolla = mBolle.get(0); - var insertUDCRowRequestDto = new InsertUDCRowRequestDTO() - .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) - .setDescrizione(pickingObjectDTO.getMtbAart().getCodMart() == null ? pickingObjectDTO.getMtbAart().getDescrizione() : null) - .setBarcode(pickingObjectDTO.getMtbAart().getBarCode()) - .setQtaTot(qtaTot) - .setQtaCnf(qtaCnf) - .setNumCnf(numCnf) - .setPartitaMag(partitaMag) + var insertUDCRowRequestDto = new InsertUDCRowRequestDTO().setCodMart(pickingObjectDTO.getMtbAart().getCodMart()).setDescrizione(pickingObjectDTO.getMtbAart().getCodMart() == null ? pickingObjectDTO.getMtbAart().getDescrizione() : null).setBarcode(pickingObjectDTO.getMtbAart().getBarCode()).setQtaTot(qtaTot).setQtaCnf(qtaCnf).setNumCnf(numCnf).setPartitaMag(partitaMag) // .setCodJcom(pickingObjectDTO.getSitBollaAccettazione().getCodJcom()) - .setDataDoc(sitBolla != null ? sitBolla.getDataDoc() : firstAvailableBolla.getDataDoc()) - .setNumDoc(sitBolla != null ? sitBolla.getNumDoc() : firstAvailableBolla.getNumDoc()) - .setCodDtip(sitBolla != null ? sitBolla.getCodDtip() : firstAvailableBolla.getCodDtip()) - .setSerDoc(sitBolla != null ? sitBolla.getSerDoc() : firstAvailableBolla.getSerDoc()) - .setTargetMtbColt(clonedTargetMtbColt); + .setDataDoc(sitBolla != null ? sitBolla.getDataDoc() : firstAvailableBolla.getDataDoc()).setNumDoc(sitBolla != null ? sitBolla.getNumDoc() : firstAvailableBolla.getNumDoc()).setCodDtip(sitBolla != null ? sitBolla.getCodDtip() : firstAvailableBolla.getCodDtip()).setSerDoc(sitBolla != null ? sitBolla.getSerDoc() : firstAvailableBolla.getSerDoc()).setTargetMtbColt(clonedTargetMtbColt); - if (dataScad != null) - insertUDCRowRequestDto - .setDataScad(dataScad); + if (dataScad != null) insertUDCRowRequestDto.setDataScad(dataScad); mColliCaricoRESTConsumer.insertUDCRow(insertUDCRowRequestDto, insertedMtbColr -> { this.addHistoryItem(insertedMtbColr); - insertedMtbColr - .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) - .setMtbAart(pickingObjectDTO.getMtbAart()); + insertedMtbColr.setUntMis(pickingObjectDTO.getMtbAart().getUntMis()).setMtbAart(pickingObjectDTO.getMtbAart()); pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr); mCurrentMtbColt.getMtbColr().add(insertedMtbColr); @@ -682,66 +577,32 @@ public class AccettazioneBollaPickingViewModel { } public void dispatchRowEdit(MtbColr mtbColrToEdit) { - final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() - .setMtbAart(mtbColrToEdit.getMtbAart()); + final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO().setMtbAart(mtbColrToEdit.getMtbAart()); - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - mtbColrToEdit.getNumCnf(), - mtbColrToEdit.getQtaCnf(), - mtbColrToEdit.getQtaCol(), - null, - null, - null, - null, null, null, - null, null, null, - mtbColrToEdit.getPartitaMag(), - mtbColrToEdit.getDataScadPartita(), - true, - (pickedQuantityDTO, shouldCloseLU) -> { + this.sendOnItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), mtbColrToEdit.getNumCnf(), mtbColrToEdit.getQtaCnf(), mtbColrToEdit.getQtaCol(), null, null, null, null, null, null, null, null, null, mtbColrToEdit.getPartitaMag(), mtbColrToEdit.getDataScadPartita(), true, (pickedQuantityDTO, shouldCloseLU) -> { - this.saveEditedRow(mtbColrToEdit, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); + this.saveEditedRow(mtbColrToEdit, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + }); } - private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal - qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { this.sendOnLoadingStarted(); MtbColr mtbColrClone = (MtbColr) mtbColrToUpdate.clone(); - mtbColrClone.setMtbAart(null) - .setMtbPartitaMag(null); + mtbColrClone.setMtbAart(null).setMtbPartitaMag(null); - var editUDCRowRequest = new EditUDCRowRequestDTO() - .setSourceMtbColr(mtbColrClone) - .setNewNumCnf(numCnf) - .setNewQtaCnf(qtaCnf) - .setNewQtaTot(qtaTot) - .setNewPartitaMag(partitaMag); + var editUDCRowRequest = new EditUDCRowRequestDTO().setSourceMtbColr(mtbColrClone).setNewNumCnf(numCnf).setNewQtaCnf(qtaCnf).setNewQtaTot(qtaTot).setNewPartitaMag(partitaMag); - if (dataScad != null) - editUDCRowRequest - .setNewDataScad(dataScad); + if (dataScad != null) editUDCRowRequest.setNewDataScad(dataScad); this.mColliCaricoRESTConsumer.editUDCRow(editUDCRowRequest, (editedMtbColr) -> { this.addHistoryItem(editedMtbColr); - Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) - .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate)) - .findSingle(); + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate)).findSingle(); - editedMtbColr - .setUntMis(mtbColrToUpdate.getUntMis()) - .setMtbAart(mtbColrToUpdate.getMtbAart()); + editedMtbColr.setUntMis(mtbColrToUpdate.getUntMis()).setMtbAart(mtbColrToUpdate.getMtbAart()); if (pickingObjectDTO.isPresent()) { pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate); @@ -764,30 +625,25 @@ public class AccettazioneBollaPickingViewModel { public void deleteRow(MtbColr mtbColrToDelete) { this.sendMtbColrDeleteRequest(shouldDelete -> { - if (!shouldDelete) - return; + if (!shouldDelete) return; this.sendOnLoadingStarted(); - var deleteUDCRowRequest = new DeleteUDCRowRequestDTO() - .setMtbColrToDelete(mtbColrToDelete); + var deleteUDCRowRequest = new DeleteUDCRowRequestDTO().setMtbColrToDelete(mtbColrToDelete); - this.mColliCaricoRESTConsumer.deleteUDCRow(deleteUDCRowRequest, - () -> { - Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) - .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete)) - .findSingle(); + this.mColliCaricoRESTConsumer.deleteUDCRow(deleteUDCRowRequest, () -> { + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete)).findSingle(); - if (pickingObjectDTO.isPresent()) { - pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); - } + if (pickingObjectDTO.isPresent()) { + pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); + } - this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); - this.resetMatchedRows(); - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); - }, this::sendError); + this.resetMatchedRows(); + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + }, this::sendError); }); } @@ -804,8 +660,7 @@ public class AccettazioneBollaPickingViewModel { this.sendOnLoadingEnded(); }); } else { - CloseUDCRequestDTO closeUDCRequestDTO = new CloseUDCRequestDTO() - .setMtbColt(mCurrentMtbColt); + CloseUDCRequestDTO closeUDCRequestDTO = new CloseUDCRequestDTO().setMtbColt(mCurrentMtbColt); mColliCaricoRESTConsumer.closeUDC(closeUDCRequestDTO, closeUDCResponse -> { Runnable onVersamentoCompleted = () -> { @@ -859,11 +714,9 @@ public class AccettazioneBollaPickingViewModel { MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); cloneMtbColt.setGestione(cloneMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE ? GestioneEnum.PRODUZIONE : cloneMtbColt.getGestioneEnum()); - var printUDSRequestDto = new PrintULRequestDTO() - .setMtbColt(cloneMtbColt); + var printUDSRequestDto = new PrintULRequestDTO().setMtbColt(cloneMtbColt); - this.mColliMagazzinoRESTConsumer.printUL(printUDSRequestDto, onComplete, - ex -> this.sendLUPrintError(ex, onComplete)); + this.mColliMagazzinoRESTConsumer.printUL(printUDSRequestDto, onComplete, ex -> this.sendLUPrintError(ex, onComplete)); } private void postCloseOperations() { @@ -873,8 +726,7 @@ public class AccettazioneBollaPickingViewModel { } private void deleteLU(Runnable onComplete) { - DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO() - .setMtbColt(this.mCurrentMtbColt); + DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO().setMtbColt(this.mCurrentMtbColt); mColliMagazzinoRESTConsumer.deleteUL(deleteULRequestDTO, () -> { this.mCurrentMtbColt = null; @@ -885,44 +737,30 @@ public class AccettazioneBollaPickingViewModel { public void resetMatchedRows() { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { - pickingObjectDTO - .setTempPickData(null); + pickingObjectDTO.setTempPickData(null); } this.mPickingList.postValue(this.mPickingList.getValue()); } private void addHistoryItem(@NonNull MtbColr mtbColr) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) || - (x.getCodMart() == null && x.getBarcode().equalsIgnoreCase(mtbColr.getCodBarre()))) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) || (x.getCodMart() == null && x.getBarcode().equalsIgnoreCase(mtbColr.getCodBarre()))).findFirst(); if (optional.isPresent()) { - optional.get() - .setPartitaMag(mtbColr.getPartitaMag()) - .setDataScad(mtbColr.getDataScadPartita()); + optional.get().setPartitaMag(mtbColr.getPartitaMag()).setDataScad(mtbColr.getDataScadPartita()); } else { - this.mHistoryUsedAarts.add(new HistoryMtbAartDTO() - .setCodMart(mtbColr.getCodMart()) - .setBarcode(mtbColr.getCodBarre()) - .setPartitaMag(mtbColr.getPartitaMag()) - .setDataScad(mtbColr.getDataScadPartita())); + this.mHistoryUsedAarts.add(new HistoryMtbAartDTO().setCodMart(mtbColr.getCodMart()).setBarcode(mtbColr.getCodBarre()).setPartitaMag(mtbColr.getPartitaMag()).setDataScad(mtbColr.getDataScadPartita())); } } private HistoryMtbAartDTO getHistoryItemByCodMartIfExists(@NonNull String codMart) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> x.getCodMart().equalsIgnoreCase(codMart)) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> x.getCodMart().equalsIgnoreCase(codMart)).findFirst(); return optional.isPresent() ? optional.get() : null; } private HistoryMtbAartDTO getHistoryItemByBarcodeIfExists(@NonNull String barcode) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> x.getBarcode().equalsIgnoreCase(barcode)) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> x.getBarcode().equalsIgnoreCase(barcode)).findFirst(); return optional.isPresent() ? optional.get() : null; } @@ -963,43 +801,9 @@ public class AccettazioneBollaPickingViewModel { if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); } - private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, - MtbAart mtbAart, - BigDecimal initialNumCnf, - BigDecimal initialQtaCnf, - BigDecimal initialQtaTot, - BigDecimal totalQtaOrd, - BigDecimal totalNumCnfOrd, - BigDecimal qtaCnfOrd, - BigDecimal totalQtaToBeTaken, - BigDecimal totalNumCnfToBeTaken, - BigDecimal qtaCnfToBeTaken, - BigDecimal totalQtaAvailable, - BigDecimal totalNumCnfAvailable, - BigDecimal qtaCnfAvailable, - String partitaMag, - LocalDate dataScad, - boolean canPartitaMagBeChanged, - RunnableArgss onComplete) { - if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, - mtbAart, - initialNumCnf, - initialQtaCnf, - initialQtaTot, - totalQtaOrd, - totalNumCnfOrd, - qtaCnfOrd, - totalQtaToBeTaken, - totalNumCnfToBeTaken, - qtaCnfToBeTaken, - totalQtaAvailable, - totalNumCnfAvailable, - qtaCnfAvailable, - partitaMag, - dataScad, - canPartitaMagBeChanged, - true, - onComplete); + private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, RunnableArgss onComplete) { + if (this.mListener != null) + mListener.onItemDispatched(pickingObjectDTO, mtbAart, initialNumCnf, initialQtaCnf, initialQtaTot, totalQtaOrd, totalNumCnfOrd, qtaCnfOrd, totalQtaToBeTaken, totalNumCnfToBeTaken, qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, canPartitaMagBeChanged, true, onComplete); } @@ -1019,16 +823,13 @@ public class AccettazioneBollaPickingViewModel { if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete); } - private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO - versamentoAutomaticoULResponseDTO, Runnable onComplete) { + private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) { if (this.mListener != null) mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete); } - private void sendOnUnknownBarcodeScanned(String - barocde, RunnableArgs onComplete, Runnable onAbort) { - if (this.mListener != null) - mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort); + private void sendOnUnknownBarcodeScanned(String barocde, RunnableArgs onComplete, Runnable onAbort) { + if (this.mListener != null) mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort); } public AccettazioneBollaPickingViewModel setListeners(Listener listener) { @@ -1045,25 +846,7 @@ public class AccettazioneBollaPickingViewModel { void onError(Exception ex); - void onItemDispatched(PickingObjectDTO pickingObjectDTO, - MtbAart mtbAart, - BigDecimal initialNumCnf, - BigDecimal initialQtaCnf, - BigDecimal initialQtaTot, - BigDecimal totalQtaOrd, - BigDecimal totalNumCnfOrd, - BigDecimal qtaCnfOrd, - BigDecimal totalQtaToBeTaken, - BigDecimal totalNumCnfToBeTaken, - BigDecimal qtaCnfToBeTaken, - BigDecimal totalQtaAvailable, - BigDecimal totalNumCnfAvailable, - BigDecimal qtaCnfAvailable, - String partitaMag, - LocalDate dataScad, - boolean canPartitaMagBeChanged, - boolean canOverflowQuantity, - RunnableArgss onComplete); + void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, RunnableArgss onComplete); void onFilterCodMartApplied(String codMartToFilter); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 78f42a9e..617a3b2a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -355,7 +355,11 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A }); accettazioneOrdiniPickingListAdapter.setOnItemClicked(clickedItem -> { - this.mViewModel.dispatchOrdineRow(clickedItem); + this.mViewModel.dispatchOrdineRow(clickedItem, false); + }); + + accettazioneOrdiniPickingListAdapter.setOnItemLongClicked(clickedItem -> { + this.mViewModel.dispatchOrdineRow(clickedItem, true); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 68bff77b..ab14ce33 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -141,7 +141,7 @@ public class AccettazioneOrdiniPickingViewModel { .distinct() .collect(Collectors.toList()); - if(codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0); + if (codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0); //Definizione della gestione collo di default @@ -248,7 +248,7 @@ public class AccettazioneOrdiniPickingViewModel { Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO); mColliAccettazioneRESTConsumer.checkBarcodeUl(ean128Model.Sscc, result -> { - if (result){ + if (result) { this.sendWarning("Barcode ul già registrato!", onComplete); } else { //Nel caso trovo un SSCC lo aggiungo @@ -395,13 +395,13 @@ public class AccettazioneOrdiniPickingViewModel { } private void loadMatchedRows(List matchedRows) { - if (matchedRows == null || matchedRows.size() == 0) { + if (matchedRows == null || matchedRows.isEmpty()) { this.sendError(new NoArtsFoundException()); } else if (matchedRows.size() == 1) { - this.dispatchOrdineRow(matchedRows.get(0)); + this.dispatchOrdineRow(matchedRows.get(0), false); } else { //So che il codMart sarà solo 1 - var firstCodMart = Stream.of(matchedRows) + var firstCodMart = matchedRows.stream() .map(x -> x.getSitArtOrdDTO().getCodMart()) .distinct() .findFirst() @@ -414,7 +414,7 @@ public class AccettazioneOrdiniPickingViewModel { public void createNewLU(String customSSCC, Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> { - final List orders = Stream.of(this.mOrders) + final List orders = this.mOrders.stream() .map(x -> { final CreateUDCRequestOrderDTO createUDCRequestOrderDTO = new CreateUDCRequestOrderDTO() .setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null) @@ -432,7 +432,7 @@ public class AccettazioneOrdiniPickingViewModel { return createUDCRequestOrderDTO; }) - .toList(); + .collect(Collectors.toList()); final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO() .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) @@ -457,7 +457,7 @@ public class AccettazioneOrdiniPickingViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, boolean executeImmediately) { if (this.mCurrentMtbColt == null) return; BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); @@ -467,7 +467,7 @@ public class AccettazioneOrdiniPickingViewModel { AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); - Stream.of(pickingObjectDTO.getWithdrawMtbColrs()) + pickingObjectDTO.getWithdrawMtbColrs() .forEach(row -> { numCnfWithdrawRows.addAndGet(row.getNumCnf()); qtaColWithdrawRows.addAndGet(row.getQtaCol()); @@ -568,33 +568,42 @@ public class AccettazioneOrdiniPickingViewModel { } } - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - initialNumCnf, initialQtaCnf, initialQtaTot, - qtaDaEvadere, - numCnfDaEvadere, - qtaCnfDaEvadere, - qtaColDaPrelevare, - numCnfDaPrelevare, - qtaCnfDaPrelevare, - null, - null, - null, - partitaMag, - dataScad, - true, - pickingObjectDTO.getSitArtOrdDTO().getDescrizioneEstesaOrd(), - (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); - + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + qtaColDaPrelevare, + partitaMag, + dataScad, + false); + } else { + this.sendOnItemDispatched( + pickingObjectDTO, + pickingObjectDTO.getMtbAart(), + initialNumCnf, initialQtaCnf, initialQtaTot, + qtaDaEvadere, + numCnfDaEvadere, + qtaCnfDaEvadere, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + null, + null, + null, + partitaMag, + dataScad, + true, + pickingObjectDTO.getSitArtOrdDTO().getDescrizioneEstesaOrd(), + (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java index be2a0554..eb21ba04 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java @@ -21,7 +21,6 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.AccettazioneOrdineInevasoMainListGroupHeaderBinding; @@ -35,6 +34,7 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA private final List mDataset = new ArrayList<>(); private RunnableArgs mOnItemClicked; + private RunnableArgs mOnItemLongClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -77,6 +77,10 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA this.mOnItemClicked = onItemClicked; } + public void setOnItemLongClicked(RunnableArgs onItemLongClicked) { + this.mOnItemLongClicked = onItemLongClicked; + } + @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -154,6 +158,12 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA if (this.mOnItemClicked != null) this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); }); + + holder.mBinding.getRoot().setOnLongClickListener(v -> { + if (this.mOnItemLongClicked != null) + this.mOnItemLongClicked.run(pickingObjectDTO.getOriginalModel()); + return true; + }); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index 2b10d80b..fd94aff5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -38,6 +38,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; @@ -54,6 +55,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaView; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdView; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -90,12 +92,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme private GestioneEnum mCurrentGestione; private boolean mAskCliente; private boolean mAskLineaProd; + private boolean mAskCommessa; public PickingLiberoFragment() { // Required empty public constructor } - public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) { + public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd, boolean flagAskCommessaInPickingLiberoLav) { PickingLiberoFragment fragment = new PickingLiberoFragment(); Bundle args = new Bundle(); @@ -103,6 +106,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme args.putString("gestione", gestioneEnum.getText()); args.putBoolean("askCliente", askCliente); args.putBoolean("askLineaProd", askLineaProd); + args.putBoolean("askCommessa", flagAskCommessaInPickingLiberoLav); fragment.setArguments(args); return fragment; @@ -121,6 +125,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione")); mAskCliente = getArguments().getBoolean("askCliente"); mAskLineaProd = getArguments().getBoolean("askLineaProd"); + mAskCommessa = getArguments().getBoolean("askCommessa"); mToolbarTitleText.setText(getText(getArguments().getInt("title")).toString()); @@ -150,7 +155,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme this.initRecyclerView(); - mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione); + mViewModel.init(mAskCliente, mAskLineaProd, mAskCommessa, mCurrentGestione); return mBindings.getRoot(); } @@ -303,6 +308,12 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme .show(getParentFragmentManager(), DialogAskLineaProdView.class.getName()); } + @Override + public void onLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort) { + DialogAskCommessaView.newInstance(onComplete, onAbort) + .show(getParentFragmentManager(), DialogAskCommessaView.class.getName()); + } + @Override public void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { DialogChooseArtsFromMtbColrList diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 8ea43452..e946dea0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -24,12 +24,14 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.VtbDest; +import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -45,6 +47,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -76,8 +79,11 @@ public class PickingLiberoViewModel { private boolean mFlagAskCliente; private boolean mFlagAskLineaProd; + private boolean mFlagAskCommessa; private GestioneEnum mDefaultGestione; + private JtbComt mDefaultCommessa; + private Listener mListener; @@ -102,9 +108,10 @@ public class PickingLiberoViewModel { } - public void init(boolean flagAskCliente, boolean flagAskLineaProd, GestioneEnum defaultGestione) { + public void init(boolean flagAskCliente, boolean flagAskLineaProd, boolean flagAskCommessa, GestioneEnum defaultGestione) { this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente; this.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd; + this.mFlagAskCommessa = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskCommessa; this.mDefaultGestione = defaultGestione; @@ -142,7 +149,7 @@ public class PickingLiberoViewModel { //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); - } else if (SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()){ + } else if (SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()) { //Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); } else { @@ -316,9 +323,7 @@ public class PickingLiberoViewModel { if (this.mFlagAskCliente) { this.sendLUClienteRequired((vtbDest, codJcom) -> { createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete); - }, () -> { - - }); + }, this::sendOnLoadingEnded); } else { createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete); } @@ -329,15 +334,25 @@ public class PickingLiberoViewModel { this.sendLULineaProdRequired(response -> { createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete); - }, () -> { - this.sendOnLoadingEnded(); - }); + }, this::sendOnLoadingEnded); } else { createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, null, onComplete); } } - private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, Runnable onComplete) { + private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String posizione, Integer idLotto, Runnable onComplete) { + if (this.mFlagAskCommessa) { + this.sendLUCommessaRequired(response -> { + createNewLU_PostCommessaAsk(customNumCollo, customSerCollo, vtbDest, posizione, idLotto, response, onComplete); + + }, this::sendOnLoadingEnded); + } else { + createNewLU_PostCommessaAsk(customNumCollo, customSerCollo, vtbDest, null, null, null, onComplete); + } + } + + private void createNewLU_PostCommessaAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, JtbComt codJcom, Runnable onComplete) { + this.mDefaultCommessa = codJcom; this.sendOnLoadingStarted(); @@ -536,61 +551,23 @@ public class PickingLiberoViewModel { if (!pickedAarts.isEmpty()) { askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> { if (!destNewMtbColr.isEmpty()) { - MtbColt clonedTestata = (MtbColt) this.mCurrentMtbColt.clone(); - clonedTestata.setOperation(CommonModelConsts.OPERATION.UPDATE); - ObservableArrayList mtbColrObservableField = new ObservableArrayList<>(); + destNewMtbColr.forEach(x -> x.setCodJcom(this.mDefaultCommessa.getCodJcom())); - for (int i = 0; i < destNewMtbColr.size(); i++) { - MtbColr cloneMtbColr = (MtbColr) destNewMtbColr.get(i).clone(); + MtbColt clonedTestata = (MtbColt) sourceMtbColt.clone(); + clonedTestata.getMtbColr().clear(); + clonedTestata.getMtbColr().addAll(destNewMtbColr); - cloneMtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + mColliMagazzinoRESTConsumer.spostaArtsTraUL(clonedTestata, + this.mCurrentMtbColt, true, (generatedMtbColrs) -> { - cloneMtbColr - .setGestioneRif(cloneMtbColr.getGestione()) - .setGestione((String) null) + mCurrentMtbColt.getMtbColr().addAll(generatedMtbColrs); - .setSerColloRif(cloneMtbColr.getSerCollo()) - .setSerCollo(null) + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + onComplete.run(); + }, this::sendError); - .setNumColloRif(cloneMtbColr.getNumCollo()) - .setNumCollo(null) - - .setDataColloRif(cloneMtbColr.getDataColloS()) - .setDataCollo((String) null) - - .setPesoLordoKg(null) - .setPesoNettoKg(null); - - mtbColrObservableField.add(cloneMtbColr); - } - - clonedTestata.setMtbColr(mtbColrObservableField); - - new Thread(() -> { - mColliMagazzinoRESTConsumer.saveCollo(clonedTestata, value -> { - for (int i = 0; i < mtbColrObservableField.size(); i++) { - MtbColr initialMtbColr = mtbColrObservableField.get(i); - var startIdx = (value.getMtbColr().size() - mtbColrObservableField.size()); - - initialMtbColr - .setDataCollo(value.getDataColloS()) - .setNumCollo(value.getNumCollo()) - .setGestione(value.getGestione()) - .setSerCollo(value.getSerCollo()); - - initialMtbColr.setRiga(value.getMtbColr().get(startIdx + i).getRiga()); - mCurrentMtbColt.getMtbColr().add(mtbColrObservableField.get(i)); - } - - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); - - onComplete.run(); - - }, this::sendError); - - }).start(); } }, onComplete); } else { @@ -675,7 +652,8 @@ public class PickingLiberoViewModel { .setQtaCnf(qtaCnf) .setNumCnf(numCnf) .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) - .setDatetimeRow(UtilityDate.getDateInstance()); + .setDatetimeRow(UtilityDate.getDateInstance()) + .setCodJcom(this.mDefaultCommessa.getCodJcom()); mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -888,6 +866,7 @@ public class PickingLiberoViewModel { } this.sendOnLoadingStarted(); + this.mDefaultCommessa = null; mColliMagazzinoRESTConsumer.canULBeDeleted(mCurrentMtbColt, canBeDeleted -> { if (canBeDeleted) { @@ -901,7 +880,18 @@ public class PickingLiberoViewModel { } else { this.mColliMagazzinoRESTConsumer.assegnaLottoSuColloScarico(mCurrentMtbColt, () -> { - this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { + + var closeUDSRequest = new CloseUDSRequestDTO() + .setMtbColt(mCurrentMtbColt); + + if (this.mDefaultGestione == GestioneEnum.LAVORAZIONE) { + closeUDSRequest + .setCreateDocument(SettingsManager.iDB().isProduzioneGeneraDocScar()) + .setDocumentCodDtip(SettingsManager.iDB().getProduzioneCodDtipScar()) + .setDocumentCodAnag(SettingsManager.iDB().getInternalCodAnags().stream().filter(InternalCodAnagsDTO::isFornitore).findFirst().get().getCodAnag()); + } + + this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequest, response -> { this.sendLUClosed(); this.sendOnLoadingEnded(); @@ -956,6 +946,10 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort); } + private void sendLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort) { + if (this.mListener != null) mListener.onLUCommessaRequired(onComplete, onAbort); + } + private void sendArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { if (this.mListener != null) mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort); @@ -1014,6 +1008,8 @@ public class PickingLiberoViewModel { void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort); + void onLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort); + void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort); void onItemDispatched(PickingObjectDTO pickingObjectDTO, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index f33cbcce..7999621e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -208,6 +208,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl .setDescrizione(x.getDescrizioneArt()) .setNumCollo(x.getNumColloRif()) .setPartitaMag(x.getPartitaMag()) + .setCodJcom(x.getCodJcom()) .setQtaVersata(x.getQtaCol()) .setUntMisVersata(x.getUntMis()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java index bfa6841a..adfa25e9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java @@ -67,9 +67,10 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { " dtb_ord_steps.gestione as gestione_ord, " + " dtb_ord_steps.hr_num as hr, " + " mtb_colr.riga_ord, " + - " CONVERT(INTEGER, ROUND((CAST(dtb_ord_steps.hr_num AS DECIMAL(20, 5)) / " + - " SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo)) * 100, " + - " 0)) as percentage_hr " + + " CONVERT(INTEGER, ROUND((CAST(dtb_ord_steps.hr_num AS DECIMAL(20, 5)) /\n" + + " IIF(SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo) = 0, 1,\n" + + " SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo))) * 100,\n" + + " 0)) AS percentage_hr " + " FROM mtb_colr " + " INNER JOIN mtb_colt ON mtb_colr.num_collo = mtb_colt.num_collo " + " AND mtb_colr.data_collo = mtb_colt.data_collo " + @@ -249,8 +250,10 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { .setCodJfas(restDTO.getCodJfas()) .setDescrizioneArt(restDTO.getDescrizioneArt()) .setDescrizioneFase(restDTO.getDescrizioneFase()) - .setQtaCol(qtaColTot) - .setNumCnf(numCnfColTot) + .setQtaCol(restDTO.getQtaCol()) + .setNumCnf(restDTO.getNumCnf()) +// .setQtaCol(qtaColTot) +// .setNumCnf(numCnfColTot) .setPartitaMag(restDTO.getPartitaMag()) .setCodJcom(restDTO.getCodJcom()) .setDatetimeRow(restDTO.getDatetimeRow()) @@ -273,7 +276,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { this.mArticoloRESTConsumer.getByCodMarts(codMarts, arts -> { - if (arts != null && arts.size() > 0) { + if (arts != null && !arts.isEmpty()) { for (HistoryVersamentoProdULDTO value : newUlList) { MtbAart foundMtbAart = null; @@ -281,7 +284,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { List mtbAartStream = Stream.of(arts) .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); - if (mtbAartStream != null && mtbAartStream.size() > 0) { + if (mtbAartStream != null && !mtbAartStream.isEmpty()) { foundMtbAart = mtbAartStream.get(0); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java index fd503ac2..1e881e3f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.ui; import android.content.Context; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; @@ -98,7 +99,12 @@ public class HistoryULsListAdapter extends ExtendedSectionedRecyclerView { List filteredList = null; - if(ordiniLavorazioneList != null) - filteredList = Stream.of(ordiniLavorazioneList) - .filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO) - .toList(); + filteredList = ordiniLavorazioneList; +// if(ordiniLavorazioneList != null) +// filteredList = ordiniLavorazioneList.stream() +// .filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO) +// .collect(Collectors.toList()); this.mOrdiniLavorazioneAperti.postValue(filteredList); this.sendOnOrdersLoadingEnded(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java index 7962a280..15bde7f6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java @@ -87,7 +87,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements public ObservableField sumNetKG = new ObservableField<>(BigDecimal.ZERO); public ObservableField sumGrossKG = new ObservableField<>(BigDecimal.ZERO); public ObservableField progress = new ObservableField<>(0); - public boolean isOrderColli = false; + public ObservableField isOrderColli = new ObservableField<>(false); public ProdRientroMerceOrderDetailFragment() { // Required empty public constructor @@ -121,7 +121,6 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements if (currentOrder.getValue() != null) { refreshOrder(); - isOrderColli = currentOrder.getValue().getQtaCnf().compareTo(BigDecimal.ONE) == 0; } this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList); @@ -200,9 +199,15 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements } private void refreshOrder() { + OrdineLavorazioneDTO currentOrd = currentOrder.getValue(); + + if(currentOrd != null) { + isOrderColli.set(currentOrd.getQtaCnf().compareTo(BigDecimal.ONE) == 0); + } + if (mBindings != null) mBindings.invalidateAll(); if (mAdapter != null) mAdapter.clearDataset(); - if (mViewModel != null) mViewModel.setOrder(currentOrder.getValue()); + if (mViewModel != null) mViewModel.setOrder(currentOrd); } private void refreshList(List mtbColts) { @@ -402,6 +407,16 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements return ContextCompat.getDrawable(requireActivity(), R.drawable.label_primary_text); } + public Drawable getUntMisIcon() { + if (currentOrder.getValue() != null) { + if(currentOrder.getValue().getUntOrd().equalsIgnoreCase("KG")) + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_weight_kg); + else + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_puzzle); + } else + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_weight_kg); + } + public Integer getOrderStatusLabelTextColor() { if (currentOrder.getValue() != null) { switch (currentOrder.getValue().getStatoEnum()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java index 152f96a3..1c68cd95 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java @@ -5,7 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Optional; import com.annimon.stream.Stream; -import java.util.Date; +import java.time.LocalDate; import java.util.HashMap; import java.util.List; @@ -68,36 +68,33 @@ public class ProdRientroMerceOrderDetailViewModel { public void createLU(ProdRientroMerceOrderDetailPickedQuantityDTO pickedQuantityDTO) { - new Thread(this::sendOnLoadingStarted).start(); + this.sendOnLoadingStarted(); - new Thread(() -> { + ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO = + new ImportColliDaProduzioneRequestDTO() + .setColliBancale(pickedQuantityDTO.getNumCnf().intValue()) + .setQtaCnf(pickedQuantityDTO.getPesoCollo()) + .setQtaCol(pickedQuantityDTO.getPesoNetto()) + .setCodJcom(currentOrder.getCodJcom()) +// .setCodJfas("OFF") + .setCodJfas(pickedQuantityDTO.getJtbFasi() != null ? pickedQuantityDTO.getJtbFasi().getCodJfas() : null) + .setCodMart(currentOrder.getCodProd()) + .setCodTcol(pickedQuantityDTO.getMtbTCol() != null ? pickedQuantityDTO.getMtbTCol().getCodTcol() : null) + .setDataCollo(LocalDate.now()) + .setDataOrd(currentOrder.getDataOrdD()) + .setNumOrd(currentOrder.getNumOrd()) + .setGestione(currentOrder.getGestione()) + .setPartitaMag(currentOrder.getPartitaMag()) + .setFornitore(currentOrder.getRagSocAnag()) + .setPesoLordo(pickedQuantityDTO.getPesoLordo()) + .setPesoNetto(pickedQuantityDTO.getPesoNetto()); - ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO = - new ImportColliDaProduzioneRequestDTO() - .setColliBancale(pickedQuantityDTO.getNumCnf().intValue()) - .setQtaCnf(pickedQuantityDTO.getPesoCollo()) - .setQtaCol(pickedQuantityDTO.getPesoNetto()) - .setCodJcom(currentOrder.getCodJcom()) - .setCodJfas(pickedQuantityDTO.getJtbFasi() != null ? pickedQuantityDTO.getJtbFasi().getCodJfas() : null) - .setCodMart(currentOrder.getCodProd()) - .setCodTcol(pickedQuantityDTO.getMtbTCol() != null ? pickedQuantityDTO.getMtbTCol().getCodTcol() : null) - .setDataCollo(new Date()) - .setDataOrd(currentOrder.getDataOrdD()) - .setNumOrd(currentOrder.getNumOrd()) - .setGestione(currentOrder.getGestione()) - .setPartitaMag(currentOrder.getPartitaMag()) - .setFornitore(currentOrder.getRagSocAnag()) - .setPesoLordo(pickedQuantityDTO.getPesoLordo()) - .setPesoNetto(pickedQuantityDTO.getPesoNetto()); + this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> { + synchronized (this.mtbColtsOfOrder) { + this.mListener.onDataSaved(mtbColtSaved); + } + }, this::sendError); - this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> { - synchronized (this.mtbColtsOfOrder) { - this.mListener.onDataSaved(mtbColtSaved); - } - }, this::sendError); - - - }).start(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java index e7e53d50..da274fa6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; public class ImportColliDaProduzioneRequestDTO { @@ -15,7 +16,7 @@ public class ImportColliDaProduzioneRequestDTO { private int colliBancale; private BigDecimal qtaCnf; - private Date dataCollo; + private LocalDate dataCollo; private Date dataOrd; private int numOrd; @@ -107,11 +108,11 @@ public class ImportColliDaProduzioneRequestDTO { return this; } - public Date getDataCollo() { + public LocalDate getDataCollo() { return dataCollo; } - public ImportColliDaProduzioneRequestDTO setDataCollo(Date dataCollo) { + public ImportColliDaProduzioneRequestDTO setDataCollo(LocalDate dataCollo) { this.dataCollo = dataCollo; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index f08c9147..d3544ba3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -229,15 +229,20 @@ public class ProdRiposizionamentoDaProdViewModel { } public void loadData() { - List posizioni = Arrays.asList(SettingsManager.iDB().getViewPosizioni().split("\\|")); + String posizioniToSee = SettingsManager.iDB().getViewPosizioni(); + if(posizioniToSee == null || posizioniToSee.isEmpty()) { + this.sendOnInventoriesLoadingEnded(); + return; + } + + List posizioni = Arrays.asList(posizioniToSee.split("\\|")); this.mGiacenzaRESTConsumer.getGiacenzeInPosizione(posizioni, true, availableItems -> { - availableItems = Stream.of(availableItems) + availableItems = availableItems.stream() .sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione)) - .toList(); + .collect(Collectors.toList()); itemsInventario.postValue(availableItems); - this.sendOnInventoriesLoadingEnded(); }, this::sendError); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 2ca1a6a5..34757538 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -39,6 +39,7 @@ import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; +import it.integry.integrywmsnative.core.expansion.RunnableArgssss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; @@ -81,7 +82,6 @@ import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAgg import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; -import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; @@ -319,15 +319,18 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); - spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt, refMtbColr) -> { + RunnableArgssss onItemClicked = (clickedItem, refMtbColt, refMtbColr, executeImmediately) -> { if (!noLUPresent.get() && ((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) || clickedItem.getTempPickData() != null)) { this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt, refMtbColr, - SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()); + SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale(), executeImmediately); } - }); + }; + + spedizioneListAdapter.setOnItemClicked(onItemClicked); + spedizioneListAdapter.setOnItemLongClicked(onItemClicked); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 52d48cfb..34bfd90b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.spedizione; -import androidx.annotation.IntegerRes; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; @@ -11,18 +10,15 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.exception.EmptyLUException; @@ -65,6 +61,7 @@ import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface; +import it.integry.integrywmsnative.core.rest.model.CriterioDistribuzioneEnum; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.LoadColliDTO; @@ -89,7 +86,6 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityPosizione; -import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException; @@ -99,7 +95,6 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadExceptio import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; -import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO; public class SpedizioneViewModel { @@ -882,7 +877,7 @@ public class SpedizioneViewModel { refMtbColt = matchedItem.getTempPickData().getSourceMtbColt(); } MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; - this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null); + this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null, false); } } else { @@ -901,7 +896,7 @@ public class SpedizioneViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) { //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta // MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; @@ -962,20 +957,20 @@ public class SpedizioneViewModel { .findFirst() .orElse(null); - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged, executeImmediately); } }); } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColrs.get(0), canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColrs.get(0), canPartitaMagBeChanged, executeImmediately); } } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged, executeImmediately); } } - private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { + private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); @@ -1104,10 +1099,14 @@ public class SpedizioneViewModel { BigDecimal initialQtaCnf = mUseColliPedana ? pickingObjectDTO.getMtbAart().getQtaCnf() : mUseQtaOrd ? qtaCnfDaPrelevare : null; BigDecimal initialQtaTot = mUseColliPedana ? initialNumCnf.multiply(initialQtaCnf) : mUseQtaOrd ? qtaColDaPrelevare : null; - MtbColt finalRefMtbColt = refMtbColt; - this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); - }); + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, refMtbColt, numCnfDaPrelevare, qtaCnfDaPrelevare, qtaColDaPrelevare, partitaMag, dataScad, false, false); + } else { + MtbColt finalRefMtbColt = refMtbColt; + this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU, true); + }); + } } public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canOverflowOrderQuantity, boolean canPartitaMagBeChanged, RunnableArgss onComplete) { @@ -1230,7 +1229,7 @@ public class SpedizioneViewModel { MtbColt finalRefMtbColt = refMtbColt; this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, null, null, null, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, true, (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU, true); }); } @@ -1391,7 +1390,7 @@ public class SpedizioneViewModel { }, this::sendError); } - public void saveNewRow(PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + public void saveNewRow(PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU, boolean removeFilters) { this.sendOnLoadingStarted(); //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta @@ -1453,7 +1452,7 @@ public class SpedizioneViewModel { if (refMtbColt != null) { - MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && refMtbColt.getMtbColr().size() > 0 ? refMtbColt.getMtbColr().get(0) : null; + MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && !refMtbColt.getMtbColr().isEmpty() ? refMtbColt.getMtbColr().get(0) : null; if (originalRefMtbColr != null) { refMtbColr.setId(originalRefMtbColr.getId()); @@ -1468,7 +1467,11 @@ public class SpedizioneViewModel { } //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei - resetMatchedRows(); + if (removeFilters) + resetMatchedRows(); + else + //Refresh della lista forzato + this.mPickingList.postValue(this.mPickingList.getValue()); this.sendOnRowSaved(); this.sendOnLoadingEnded(); @@ -1620,6 +1623,23 @@ public class SpedizioneViewModel { //.setPrintSSCC(shouldPrint) .setOrderCodMdep(codMdep); + if (this.mColliScaricoRESTConsumer instanceof ColliLavorazioneRESTConsumer && !mIsOrdTrasf) { + closeUDSRequestDto.setCriterioDistribuzione(CriterioDistribuzioneEnum.FASE); + + var codAnag = mTestateOrdini.stream() + .map(OrdineUscitaInevasoDTO::getCodAnagOrd) + .filter(Objects::nonNull) + .distinct() + .findFirst() + .get(); + closeUDSRequestDto.setDocumentCodAnag(codAnag); + + closeUDSRequestDto + .setCreateDocument(SettingsManager.iDB().isProduzioneGeneraDocScar()) + .setDocumentCodDtip(SettingsManager.iDB().getProduzioneCodDtipScar()); + + } + this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> { onComplete.run(closeResponse.getGeneratedMtbColts()); }, this::sendError); @@ -2017,7 +2037,8 @@ public class SpedizioneViewModel { void createDocs() { var loadCollidto = new LoadColliDTO(); - var codAnag = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodAnagOrd) + var codAnag = mTestateOrdini.stream() + .map(OrdineUscitaInevasoDTO::getCodAnagOrd) .filter(Objects::nonNull) .distinct() .findFirst() diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java index b466f34c..88e2bab4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java @@ -25,7 +25,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; -import it.integry.integrywmsnative.core.expansion.RunnableArgsss; +import it.integry.integrywmsnative.core.expansion.RunnableArgssss; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -43,7 +43,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); - private RunnableArgsss mOnItemClicked; + private RunnableArgssss mOnItemClicked; + private RunnableArgssss mOnItemLongClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -83,10 +84,14 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + public void setOnItemClicked(RunnableArgssss onItemClicked) { this.mOnItemClicked = onItemClicked; } + public void setOnItemLongClicked(RunnableArgssss onItemLongClicked) { + this.mOnItemLongClicked = onItemLongClicked; + } + @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -179,7 +184,13 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { if (this.mOnItemClicked != null) - this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr()); + this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr(), false); + }); + + holder.mBinding.getRoot().setOnLongClickListener(v -> { + if (this.mOnItemLongClicked != null) + this.mOnItemLongClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr(), true); + return true; }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java index 8edf5632..e2919259 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java @@ -239,7 +239,8 @@ public class VersamentoMerceViewModel { this.mColliMagazzinoRESTConsumer.spostaArtsTraUL( clonedSourceTestata, destMtbColt, - () -> { + false, + (generatedMtbColrs) -> { this.sendOnDataSaved(); onComplete.run(); }, diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java index 54f9078d..100d3a04 100644 --- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java @@ -11,23 +11,25 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.databinding.ArrayAdapterTwoLinesItemBinding; public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> { private List> mObjects; + private RunnableArgs onTextChanged; public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource) { super(context, resource); } - public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull SimpleAutoCompleteTwoLinesDropdownListModel[] objects) { - super(context, R.layout.array_adapter_two_lines_item, objects); - mObjects = Arrays.asList(objects); + public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource, @NonNull List> objects) { + super(context, resource, objects); + mObjects = objects; } public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull List> objects) { @@ -35,10 +37,15 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter setOnTextChanged(RunnableArgs onTextChanged) { + this.onTextChanged = onTextChanged; + return this; + } + @NonNull @Override public Filter getFilter() { - return new StringFilter(mObjects); + return new StringFilter(mObjects, this.onTextChanged); } @@ -67,9 +74,12 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> sourceObjects; + private final RunnableArgs onTextChanged; - public StringFilter(List> objects) { - if(objects == null) return; + public StringFilter(List> objects, RunnableArgs onTextChanged) { + this.onTextChanged = onTextChanged; + + if (objects == null) return; sourceObjects = new ArrayList<>(); synchronized (this) { @@ -79,17 +89,16 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> filter = new ArrayList<>(); + List> filter = sourceObjects.parallelStream() + .filter(x -> x.getDescription().toLowerCase().contains(filterSeq) || + x.getTitle().toLowerCase().contains(filterSeq)) + .collect(Collectors.toList()); - for (SimpleAutoCompleteTwoLinesDropdownListModel object : sourceObjects) { - // the filtering itself: - if (object.getDescription().toLowerCase().contains(filterSeq) || - object.getTitle().toLowerCase().contains(filterSeq)) - filter.add(object); - } result.count = filter.size(); result.values = filter; @@ -108,13 +117,11 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter 2) { + if (constraint != null && constraint.length() > 2) { ArrayList> filtered = (ArrayList>) results.values; - notifyDataSetChanged(); clear(); - for (int i = 0, l = filtered.size(); i < l; i++) - add(filtered.get(i)); - notifyDataSetInvalidated(); + addAll(filtered); + notifyDataSetChanged(); } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java index 9b3bbe4f..3500208d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java @@ -33,4 +33,9 @@ public class SimpleAutoCompleteTwoLinesDropdownListModel { this.originalModel = originalModel; return this; } + + @Override + public String toString() { + return getTitle() + " - " + getDescription(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java index 6d7f1218..26ada95a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java @@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter onComplete; + private final Runnable onAbort; + + private DialogAskCommessaBinding mBindings; + private Context mContext; + + private int mBarcodeScannerIstanceID; + + private JtbComt selectedJtbComt; + + //Pass here all external parameters + public static DialogAskCommessaView newInstance(RunnableArgs onComplete, Runnable onAbort) { + return new DialogAskCommessaView(onComplete, onAbort); + } + + private DialogAskCommessaView(RunnableArgs onComplete, Runnable onAbort) { + super(); + + this.onComplete = onComplete; + this.onAbort = onAbort; + + MainApplication.appComponent + .dialogAskCommessaComponent() + .create() + .inject(this); + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogAskCommessaBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(false); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .setNeutralButton(R.string.action_close, null) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + //Volutamente vuoto + }) + .create(); + + + alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + var alertDialog = ((AlertDialog) dialogInterface); + + var positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + positiveButton.setOnClickListener(view -> { + if (selectedJtbComt != null) { + this.onComplete.run(this.selectedJtbComt); + alertDialog.dismiss(); + } else { + Snackbar.make(mContext, mBindings.getRoot(), "Seleziona una commessa prima di procedere", Snackbar.LENGTH_LONG).show(); + } + }); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + + BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + } + + @Override + public void onInit(DialogInterface dialogInterface) { + this.initBarcode(); + + this.mViewModel.setListener(this); + this.mViewModel.init(); + } + + private void initBarcode() { + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessful) + .setOnScanFailed(this::onError)); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); +// this.mViewModel.processBarcodeDTO(data, BarcodeManager::enable); + }; + + @Override + public void onCommesseLoaded(List dataList) { + requireActivity().runOnUiThread(() -> { + + var listModel = dataList.stream() + .map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel() + .setTitle(x.getCodJcom()) + .setDescription(x.getDescrizione()) + .setOriginalModel(x)) + .collect(Collectors.toList()); + + + var adapter = new SimpleAutoCompleteTwoLinesDropdownAdapter<>(requireActivity(), listModel); + mBindings.dropdownCommessa.setAdapter(adapter); + + mBindings.inputCliente.getEditText().addTextChangedListener(new TextWatcherAdapter() { + @Override + public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { + selectedJtbComt = null; + } + }); + + mBindings.dropdownCommessa.setOnItemClickListener((parent, view, position, id) -> { + selectedJtbComt = Objects.requireNonNull(adapter.getItem(position)).getOriginalModel(); + }); + + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java new file mode 100644 index 00000000..09fefc23 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java @@ -0,0 +1,69 @@ +package it.integry.integrywmsnative.view.dialogs.ask_commessa; + +import com.google.common.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.JtbComt; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; + +public class DialogAskCommessaViewModel { + + private final SystemRESTConsumer systemRESTConsumer; + + private Listener mListener; + + @Inject + public DialogAskCommessaViewModel(SystemRESTConsumer systemRESTConsumer) { + this.systemRESTConsumer = systemRESTConsumer; + } + + + + public void init() { + Type jtbComtListType = new TypeToken>() {}.getType(); + + this.systemRESTConsumer.>processSql("SELECT * " + + "FROM jtb_comt " + + "WHERE ISNULL(stato_commessa, '') <> 'CHIUSA'", jtbComtListType, data -> { + + this.sendOnCommesseLoaded(data); + + }, this::sendError); + } + + + + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendOnCommesseLoaded(List commesseList) { + if (this.mListener != null) mListener.onCommesseLoaded(commesseList); + } + + public DialogAskCommessaViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + interface Listener extends ILoadingListener { + void onCommesseLoaded(List dataList); + + void onError(Exception ex); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java index c5e85b6e..03e949d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java @@ -6,9 +6,9 @@ import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; -import com.annimon.stream.Stream; - +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import it.integry.integrywmsnative.core.model.MtbTCol; @@ -20,10 +20,12 @@ public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter { - mDataset = Stream.of(data) - .map(x -> new DialogInputLUProdTipoColloListModel() - .setOriginalModel(x)) - .toList(); + if (data != null) + mDataset = data.stream() + .map(x -> new DialogInputLUProdTipoColloListModel() + .setOriginalModel(x)) + .collect(Collectors.toList()); + else mDataset = new ArrayList<>(); clear(); addAll(mDataset); diff --git a/app/src/main/res/drawable/ic_puzzle.xml b/app/src/main/res/drawable/ic_puzzle.xml new file mode 100644 index 00000000..e275ad09 --- /dev/null +++ b/app/src/main/res/drawable/ic_puzzle.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_ask_commessa.xml b/app/src/main/res/layout/dialog_ask_commessa.xml new file mode 100644 index 00000000..482543f4 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_commessa.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml b/app/src/main/res/layout/dropdown_simple_item_w_subtitle_bottom.xml similarity index 100% rename from app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml rename to app/src/main/res/layout/dropdown_simple_item_w_subtitle_bottom.xml diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml index 2679d28e..339b5918 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml @@ -7,6 +7,7 @@ + @@ -301,8 +302,8 @@ + android:layout_weight="1" + android:orientation="vertical"> + android:layout_gravity="end" + android:orientation="horizontal"> + android:orientation="vertical" + android:visibility="@{view.isOrderColli ? View.GONE : View.VISIBLE}"> + android:textStyle="bold" + tools:text="KG" /> + android:textColor="@android:color/black" + tools:text="KG" /> @@ -490,16 +492,16 @@ + android:layout_weight="1" + android:orientation="vertical"> diff --git a/app/src/main/res/layout/prod_recupero_materiale_list_item.xml b/app/src/main/res/layout/prod_recupero_materiale_list_item.xml index 8611989c..87c9bf05 100644 --- a/app/src/main/res/layout/prod_recupero_materiale_list_item.xml +++ b/app/src/main/res/layout/prod_recupero_materiale_list_item.xml @@ -10,7 +10,7 @@ android:paddingVertical="8dp" android:paddingEnd="8dp"> - - + - + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:layout_gravity="center_vertical"> - - + + + android:layout_toEndOf="@id/cod_mart"> + + + @@ -99,16 +115,49 @@ - + - + + + + + + + + + + diff --git a/app/src/main/res/values/custom_colors.xml b/app/src/main/res/values/custom_colors.xml index 230b4313..77a8b4a3 100644 --- a/app/src/main/res/values/custom_colors.xml +++ b/app/src/main/res/values/custom_colors.xml @@ -93,6 +93,10 @@ #0277BD + #FFCC80 + #FFB74D + #FFA726 + #FF9800 #88FB8C00 #FB8C00 #F57C00 diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 71604865..00510dd7 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -32,5 +32,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' } diff --git a/build.gradle b/build.gradle index d0fd349c..69f6067d 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.9.20' - agp_version = '8.4.0' + agp_version = '8.6.0' } repositories { @@ -13,12 +13,12 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:$agp_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.4.1' + classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.firebase:perf-plugin:1.4.2' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' + classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -40,7 +40,7 @@ allprojects { // } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0b456dee..69d0c2a3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Feb 13 15:14:43 CET 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 56891476..0fab9d4d 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -33,6 +33,6 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation project(":honeywellsdk") - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(path: ':barcode_base_android_library') } diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 6b05d719..7137d320 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -32,6 +32,6 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(':barcode_base_android_library') } diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index b084ab91..d42abd4d 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -30,6 +30,6 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(':barcode_base_android_library') } diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 7d952295..798703e1 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' testImplementation 'junit:junit:4.13.2' implementation project(path: ':barcode_base_android_library') } From 6c8fd2518e3d82e41362202592b6ccd3805ea966 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 3 Oct 2024 16:43:10 +0200 Subject: [PATCH 06/68] Stili --- .idea/runConfigurations.xml | 13 + ...agment_prod_rientro_merce_order_detail.xml | 28 +- ...agment_prod_rientro_merce_order_detail.xml | 430 +----------------- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/buttons_style.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 49 insertions(+), 425 deletions(-) create mode 100644 .idea/runConfigurations.xml diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 00000000..931b96c3 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml index a67fc559..a4ba186a 100644 --- a/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml @@ -142,6 +142,7 @@ tools:text="Ordine #218" /> + android:orientation="vertical" + android:visibility="@{view.isOrderColli ? View.GONE : View.VISIBLE}"> + android:textStyle="bold" + tools:text="KG" /> + android:textColor="@android:color/black" + tools:text="KG" /> @@ -1141,14 +1143,22 @@ android:padding="8dp"> + + app:singleClick="@{() -> viewModel.addUL()}" /> + + diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml index 339b5918..e0977529 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml @@ -20,6 +20,10 @@ + + - - + app:singleClick="@{() -> viewModel.addUL()}" /> + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c53e1467..84b76379 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -381,6 +381,7 @@ Seleziona / Crea ordine Aggiungi Aggiungi pedana + Aggiungi unità Chiudi Chiudi ed esporta ordine Chiudi ordine diff --git a/app/src/main/res/values/buttons_style.xml b/app/src/main/res/values/buttons_style.xml index c9e70ff9..f6ad59c2 100644 --- a/app/src/main/res/values/buttons_style.xml +++ b/app/src/main/res/values/buttons_style.xml @@ -9,6 +9,7 @@ @color/colorPrimary + @color/colorPrimary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg b/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg new file mode 100644 index 00000000..2aae171e --- /dev/null +++ b/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ext_sources/ICONS/magnifyng_glass.svg b/ext_sources/ICONS/magnifyng_glass.svg new file mode 100644 index 00000000..ca6d14fc --- /dev/null +++ b/ext_sources/ICONS/magnifyng_glass.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext_sources/ICONS/search.svg b/ext_sources/ICONS/search.svg new file mode 100644 index 00000000..0c9648b3 --- /dev/null +++ b/ext_sources/ICONS/search.svg @@ -0,0 +1,2 @@ + + diff --git a/ext_sources/ICONS/tags.svg b/ext_sources/ICONS/tags.svg new file mode 100644 index 00000000..442e4b7b --- /dev/null +++ b/ext_sources/ICONS/tags.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 2db0027fff3ea2245945a7a47d793d612843554b Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 14 Mar 2025 18:19:09 +0100 Subject: [PATCH 61/68] Correzioni Verifica Giacenze --- .idea/AndroidProjectSystem.xml | 6 +++ .../18.json | 13 ++++-- .../core/context/MainContext.java | 10 ++--- .../core/data_store/db/AppDatabase.java | 1 + .../db/entity/VerificaGiacenzeRowEntity.java | 14 +++++++ .../mapper/VerificaGiacenzeRowMapper.java | 2 + .../rest/consumers/SystemRESTConsumer.java | 22 ---------- .../consumers/SystemRESTConsumerService.java | 4 -- .../rest/model/pv/VerificaGiacenzeRowDTO.java | 9 +++++ .../system/RegisterDeviceRequestDTO.java | 15 ------- .../VerificaGiacenzeFragment.java | 7 ++++ .../VerificaGiacenzeViewModel.java | 40 +++++++++++++++++++ 12 files changed, 94 insertions(+), 49 deletions(-) create mode 100644 .idea/AndroidProjectSystem.xml delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 00000000..4a53bee8 --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json index cab85d70..f62dface 100644 --- a/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json +++ b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 18, - "identityHash": "68c96a8a7f0f544255553297d0206576", + "identityHash": "720c67adcc3f947a0c0ce04d4d04fbe9", "entities": [ { "tableName": "articoli_griglia", @@ -1208,7 +1208,7 @@ }, { "tableName": "verifica_giacenze_rows", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`parent_id` INTEGER, `created_at` INTEGER DEFAULT CURRENT_TIMESTAMP, `cod_mart` TEXT, `partita_mag` TEXT, `descrizione` TEXT, `qta` REAL NOT NULL DEFAULT 0, `num_cnf` REAL NOT NULL DEFAULT 0, `qta_cnf` REAL NOT NULL DEFAULT 0, `scan_cod_barre` TEXT, `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `remote_sync_date` INTEGER, FOREIGN KEY(`parent_id`) REFERENCES `verifica_giacenze`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`parent_id` INTEGER, `created_at` INTEGER DEFAULT CURRENT_TIMESTAMP, `cod_mart` TEXT, `partita_mag` TEXT, `descrizione` TEXT, `qta_in_giacenza` REAL NOT NULL DEFAULT 0, `qta` REAL NOT NULL DEFAULT 0, `num_cnf` REAL NOT NULL DEFAULT 0, `qta_cnf` REAL NOT NULL DEFAULT 0, `scan_cod_barre` TEXT, `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `remote_sync_date` INTEGER, FOREIGN KEY(`parent_id`) REFERENCES `verifica_giacenze`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE )", "fields": [ { "fieldPath": "parentId", @@ -1241,6 +1241,13 @@ "affinity": "TEXT", "notNull": false }, + { + "fieldPath": "qtaInGiacenza", + "columnName": "qta_in_giacenza", + "affinity": "REAL", + "notNull": true, + "defaultValue": "0" + }, { "fieldPath": "qta", "columnName": "qta", @@ -1325,7 +1332,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '68c96a8a7f0f544255553297d0206576')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '720c67adcc3f947a0c0ce04d4d04fbe9')" ] } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index 36812bd0..42d3fe1b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -49,14 +49,14 @@ public class MainContext { //this.initAuthSession(() -> { - this.initDeviceId(() -> { +// this.initDeviceId(() -> { this.initDBData(() -> { this.initMenu(() -> { if (mListener != null) mListener.onContextInitialized(); }); }); - }); +// }); //}); @@ -96,9 +96,9 @@ public class MainContext { SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); SettingsManager.update(); - systemRESTConsumer.registerDevice(onComplete, ex -> { - if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); - }); +// systemRESTConsumer.registerDevice(onComplete, ex -> { +// if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); +// }); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index a01de563..f95d568b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -206,6 +206,7 @@ public abstract class AppDatabase extends RoomDatabase { "cod_mart TEXT, " + "partita_mag TEXT, " + "descrizione TEXT, " + + "qta_in_giacenza REAL NOT NULL DEFAULT 0, " + "qta REAL NOT NULL DEFAULT 0, " + "num_cnf REAL NOT NULL DEFAULT 0, " + "qta_cnf REAL NOT NULL DEFAULT 0, " + diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java index 0ed5d576..4267420b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java @@ -33,6 +33,7 @@ public class VerificaGiacenzeRowEntity extends BaseSyncDTO implements EntityMode public static final String COD_MART = "cod_mart"; public static final String PARTITA_MAG = "partita_mag"; public static final String DESCRIZIONE = "descrizione"; + public static final String QTA_IN_GIACENZA = "qta_in_giacenza"; public static final String QTA = "qta"; public static final String NUM_CNF = "num_cnf"; public static final String QTA_CNF = "qta_cnf"; @@ -54,6 +55,10 @@ public class VerificaGiacenzeRowEntity extends BaseSyncDTO implements EntityMode @ColumnInfo(name = Columns.DESCRIZIONE) private String descrizione; + @NonNull + @ColumnInfo(name = Columns.QTA_IN_GIACENZA, defaultValue = "0") + private BigDecimal qtaInGiacenza; + @NonNull @ColumnInfo(name = Columns.QTA, defaultValue = "0") private BigDecimal qta; @@ -110,6 +115,15 @@ public class VerificaGiacenzeRowEntity extends BaseSyncDTO implements EntityMode this.descrizione = descrizione; } + @NonNull + public BigDecimal getQtaInGiacenza() { + return qtaInGiacenza; + } + + public void setQtaInGiacenza(@NonNull BigDecimal qtaInGiacenza) { + this.qtaInGiacenza = qtaInGiacenza; + } + @NonNull public BigDecimal getQta() { return qta; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java index 5540fc17..dccfad7d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java @@ -15,6 +15,7 @@ public class VerificaGiacenzeRowMapper extends BaseMapper onFailed) { - RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO() - .setApp("WMS"); - - SystemRESTConsumerService systemRESTConsumerService = restBuilder.getService(SystemRESTConsumerService.class); - systemRESTConsumerService.registerDevice(registerDeviceRequestDTO) - .enqueue(new ManagedErrorCallback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed); - } - - @Override - public void onFailure(Call> call, @NonNull final Exception e) { - onFailed.run(e); - } - }); - - } - public T processSqlSynchronized(String nativeSql, final Type clazz) throws Exception { NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO() .setNativeSql(nativeSql); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java index 97e88112..bafaed7a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java @@ -7,7 +7,6 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.system.LatestAppVersionInfoDTO; -import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -19,9 +18,6 @@ public interface SystemRESTConsumerService { @GET("wms/currentVersion") Call retrieveUpdatesInfo(@Query("suffix") String suffix); - @POST("device/register") - Call> registerDevice(@Body RegisterDeviceRequestDTO registerDeviceRequestDTO); - @POST("processSql") Call> processSql(@Body NativeSqlRequestDTO nativeSqlDTO); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java index 3a045797..be97510a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java @@ -8,6 +8,7 @@ public class VerificaGiacenzeRowDTO extends BaseRestDTO { private String codMart; private String partitaMag; + private BigDecimal qtaInGiacenza; private BigDecimal qta; private BigDecimal qtaCnf; private BigDecimal numCnf; @@ -31,6 +32,14 @@ public class VerificaGiacenzeRowDTO extends BaseRestDTO { return this; } + public BigDecimal getQtaInGiacenza() { + return qtaInGiacenza; + } + + public void setQtaInGiacenza(BigDecimal qtaInGiacenza) { + this.qtaInGiacenza = qtaInGiacenza; + } + public BigDecimal getQta() { return qta; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java deleted file mode 100644 index c7b75a62..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java +++ /dev/null @@ -1,15 +0,0 @@ -package it.integry.integrywmsnative.core.rest.model.system; - -public class RegisterDeviceRequestDTO { - - private String app; - - public String getApp() { - return app; - } - - public RegisterDeviceRequestDTO setApp(String app) { - this.app = app; - return this; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java index 0a1562ec..5b2c6f19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java @@ -141,6 +141,13 @@ public class VerificaGiacenzeFragment extends BaseFragment implements ITitledFra this.initRecyclerView(); this.initBarcodeReader(); + + + this.onLoadingStarted(); + executorService.execute(() -> { + mViewModel.randomizeElements(2000); + this.onLoadingEnded(); + }); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java index 11d6b7f7..7433c52b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java @@ -114,6 +114,40 @@ public class VerificaGiacenzeViewModel { currentLoadedAnagrafiche.forEach(x -> x.setFlagTracciabilita("N")); } + public void randomizeElements(int elementsCount) { + + for(int i = 0; i < elementsCount; i++) { + var randomIndex = (int) (Math.random() * currentLoadedAnagrafiche.size()); + var randomAnagrafica = currentLoadedAnagrafiche.get(randomIndex); + + var foundGiacenza = currentLoadedGiacenza.parallelStream() + .filter(x -> x.getCodMart().equalsIgnoreCase(randomAnagrafica.getCodMart())) + .findFirst() + .orElse(null); + var qtaGiacenza = foundGiacenza != null ? foundGiacenza.getQtaInv() : BigDecimal.ZERO; + + var rowToInsert = new VerificaGiacenzeRowEntity(); + rowToInsert.setParentId(currentVerifica.getValue().getId()); + rowToInsert.setCodMart(randomAnagrafica.getCodMart()); + rowToInsert.setDescrizione(randomAnagrafica.getDescrizione()); + rowToInsert.setScanCodBarre(randomAnagrafica.getBarCode()); + rowToInsert.setNumConf(BigDecimal.valueOf((int) (Math.random() * 100))); + rowToInsert.setQtaConf(randomAnagrafica.getQtaCnf()); + rowToInsert.setQta(UtilityBigDecimal.multiply(rowToInsert.getNumConf(), randomAnagrafica.getQtaCnf())); + rowToInsert.setQtaInGiacenza(qtaGiacenza); + + + insertRow(rowToInsert); + + try { + Thread.sleep(50); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + } + public void createNew(String codMdep) { var verificaGiacenzeEntity = new VerificaGiacenzeEntity(); verificaGiacenzeEntity.setCodMdep(codMdep); @@ -134,6 +168,11 @@ public class VerificaGiacenzeViewModel { public void save() throws Exception { + if(currentVerificaRows.getValue().isEmpty()) { + delete(); + return; + } + currentVerifica.getValue().setVerificaGiacenzeRowList(currentVerificaRows.getValue()); SaveNewVerificaRequestDTO saveRequest = new SaveNewVerificaRequestDTO() @@ -223,6 +262,7 @@ public class VerificaGiacenzeViewModel { rowToSave.setNumConf(pickedQuantity.getNumCnf()); rowToSave.setQtaConf(pickedQuantity.getQtaCnf()); rowToSave.setQta(pickedQuantity.getQtaTot()); + rowToSave.setQtaInGiacenza(qtaGiacenza); if (isNewRow) { insertRow(rowToSave); From 64295d565adc2e167e484df4e88b985d70f5248d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 14 Mar 2025 18:19:57 +0100 Subject: [PATCH 62/68] -> v1.45.00 (482) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d88b3855..555788d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 481 - def appVersionName = '1.44.12' + def appVersionCode = 482 + def appVersionName = '1.45.00' signingConfigs { release { From 2f429583942971ec1a0f33084f80667c2c6be729 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 17 Mar 2025 11:50:41 +0100 Subject: [PATCH 63/68] Fix su Rettifica Giacenze --- .idea/deploymentTargetSelector.xml | 2 +- .../RettificaGiacenzeFragment.java | 91 ++++++++++--------- 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 5fb0453b..47a37baa 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,7 +4,7 @@