Fix su distribuzione e lettura dati utenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
package it.integry.ems.user;
|
||||
|
||||
import it.integry.ems._context.ApplicationContextProvider;
|
||||
import it.integry.ems.dto.EntityPermissionsDTO;
|
||||
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.user.dto.UserDTO;
|
||||
import it.integry.ems.user.exception.InvalidUserException;
|
||||
import it.integry.ems.user.service.UserCacheService;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.entity.MtbDepo;
|
||||
import it.integry.ems_model.entity.StbUser;
|
||||
import it.integry.ems_model.entity.WtbDepo;
|
||||
import it.integry.ems_model.exception.DataConverterNotFoundException;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
@@ -17,9 +20,6 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
@@ -52,21 +52,12 @@ public class UtilityUser {
|
||||
public static UserDTO getCurrentUser(MultiDBTransactionManager multiDBTransactionManager, String username) {
|
||||
if (UtilityString.isNullOrEmpty(username)) return null;
|
||||
|
||||
String sql =
|
||||
"SELECT User_name, " +
|
||||
" e_mail AS email, " +
|
||||
" Full_name, " +
|
||||
" key_group, " +
|
||||
" CAST(CASE WHEN flag_attivo = 'S' THEN 1 ELSE 0 END AS bit) AS attivo, " +
|
||||
" 'internal' AS type " +
|
||||
"FROM " + StbUser.ENTITY + " " +
|
||||
"WHERE user_name = " + UtilityDB.valueToString(username);
|
||||
final UserCacheService userCacheService = ApplicationContextProvider.getApplicationContext().getBean(UserCacheService.class);
|
||||
final RequestDataDTO requestData = ApplicationContextProvider.getApplicationContext().getBean(RequestDataDTO.class);
|
||||
|
||||
try {
|
||||
List<UserDTO> result = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, UserDTO.class);
|
||||
|
||||
if (result == null || result.isEmpty()) return null;
|
||||
|
||||
return result.get(0);
|
||||
final UserDTO userDTO = userCacheService.retrieveUserData(multiDBTransactionManager.getPrimaryDatasource().getProfile(), username, requestData.getApplication());
|
||||
return userDTO;
|
||||
} catch (Exception exception) {
|
||||
logger.error("User validation", exception);
|
||||
return null;
|
||||
|
||||
@@ -109,6 +109,9 @@ public class UserCacheService {
|
||||
if (users == null || users.isEmpty())
|
||||
return null;
|
||||
|
||||
if (password == null || password.isEmpty())
|
||||
return null;
|
||||
|
||||
String finalPasswordHex = UtilityHash.generateHash(password.toUpperCase());
|
||||
final Optional<UserDTO> foundUser = users.stream()
|
||||
.filter(x -> x.getUsername().equalsIgnoreCase(username) &&
|
||||
@@ -123,6 +126,26 @@ public class UserCacheService {
|
||||
return foundUser.orElse(null);
|
||||
}
|
||||
|
||||
public @Nullable UserDTO retrieveUserData(String profileDb, String username, IntegryApplicationEnum application) {
|
||||
String dbName = settingsModel.getDbNameFromProfileDb(profileDb);
|
||||
|
||||
List<UserDTO> users = cachedUsers.getOrDefault(dbName, null);
|
||||
|
||||
if (users == null || users.isEmpty())
|
||||
return null;
|
||||
|
||||
final Optional<UserDTO> foundUser = users.stream()
|
||||
.filter(x -> x.getUsername().equalsIgnoreCase(username) &&
|
||||
(application == null ||
|
||||
(application == IntegryApplicationEnum.PVM && x.isWeb()) ||
|
||||
(application == IntegryApplicationEnum.CONSEGNA && x.isWeb()) ||
|
||||
(application == IntegryApplicationEnum.WMS && x.isWeb()) ||
|
||||
(application == IntegryApplicationEnum.GESTIONALE_BASE && x.isInternal())))
|
||||
.findFirst();
|
||||
|
||||
return foundUser.orElse(null);
|
||||
}
|
||||
|
||||
|
||||
public void discoverAllUsers(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
cacheLock.lock();
|
||||
|
||||
@@ -11,7 +11,6 @@ import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.base.EntityNotFound;
|
||||
import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
@@ -107,25 +106,15 @@ public class DistribuzioneColliService {
|
||||
String sqlSelectMtbColrs = "SELECT mtb_colr.*, mtb_aart.flag_qta_cnf_fissa as flagQtaCnfFissa " +
|
||||
"FROM mtb_colr, mtb_aart WHERE mtb_colr.cod_mart = mtb_aart.cod_mart AND " + UtilityQuery.concatFieldListInWhereCond(mtbColtData);
|
||||
|
||||
PreparedStatement psMtbColr = multiDBTransactionManager.prepareStatement(sqlSelectMtbColrs);
|
||||
psMtbColr.setQueryTimeout(30);
|
||||
ResultSet rsMtbColr = psMtbColr.executeQuery();
|
||||
|
||||
ResultSetMapper rsMapperMtbColr = new ResultSetMapper();
|
||||
List<MtbColr> sourceMtbColrs = rsMapperMtbColr.mapResultSetToList(rsMtbColr, MtbColr.class, OperationType.SELECT_OBJECT);
|
||||
|
||||
rsMtbColr.close();
|
||||
psMtbColr.close();
|
||||
|
||||
List<MtbColr> sourceMtbColrs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sqlSelectMtbColrs, MtbColr.class);
|
||||
if (sourceMtbColrs == null) return null;
|
||||
|
||||
|
||||
//Carico tutte le informazioni riguardanti gli articoli
|
||||
List<String> codMarts = Stream.of(sourceMtbColrs)
|
||||
.withoutNulls()
|
||||
List<String> codMarts = sourceMtbColrs.stream()
|
||||
.filter(mtbColr -> mtbColr != null && !UtilityString.isNullOrEmpty(mtbColr.getCodMart()))
|
||||
.map(MtbColr::getCodMart)
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<MtbAart> mtbAarts = productServices.getArticoliByCodMarts(codMarts);
|
||||
|
||||
@@ -800,7 +789,7 @@ public class DistribuzioneColliService {
|
||||
private List<MtbColt> splitMtbColrsByCodJfas(MtbColt inputMtbColt, List<DtbOrdt> inputOrders, List<MtbColr> inputMtbColrs) {
|
||||
final Map<Object, List<HashMap<String, Object>>> ordersByCodJfas = inputOrders.stream()
|
||||
.map(x -> new HashMap<String, Object>() {{
|
||||
put("data_ord", x.getDataOrd());
|
||||
put("data_ord", UtilityLocalDate.localDateFromDate(x.getDataOrd()));
|
||||
put("num_ord", x.getNumOrd());
|
||||
put("gestione", x.getGestione());
|
||||
put("cod_jfas", x.getCodJfas());
|
||||
|
||||
Reference in New Issue
Block a user