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;
|
package it.integry.ems.user;
|
||||||
|
|
||||||
|
import it.integry.ems._context.ApplicationContextProvider;
|
||||||
import it.integry.ems.dto.EntityPermissionsDTO;
|
import it.integry.ems.dto.EntityPermissionsDTO;
|
||||||
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
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.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems.user.dto.UserDTO;
|
import it.integry.ems.user.dto.UserDTO;
|
||||||
import it.integry.ems.user.exception.InvalidUserException;
|
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.base.EntityBase;
|
||||||
import it.integry.ems_model.entity.MtbDepo;
|
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.entity.WtbDepo;
|
||||||
import it.integry.ems_model.exception.DataConverterNotFoundException;
|
import it.integry.ems_model.exception.DataConverterNotFoundException;
|
||||||
import it.integry.ems_model.utility.UtilityDB;
|
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 org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -52,21 +52,12 @@ public class UtilityUser {
|
|||||||
public static UserDTO getCurrentUser(MultiDBTransactionManager multiDBTransactionManager, String username) {
|
public static UserDTO getCurrentUser(MultiDBTransactionManager multiDBTransactionManager, String username) {
|
||||||
if (UtilityString.isNullOrEmpty(username)) return null;
|
if (UtilityString.isNullOrEmpty(username)) return null;
|
||||||
|
|
||||||
String sql =
|
final UserCacheService userCacheService = ApplicationContextProvider.getApplicationContext().getBean(UserCacheService.class);
|
||||||
"SELECT User_name, " +
|
final RequestDataDTO requestData = ApplicationContextProvider.getApplicationContext().getBean(RequestDataDTO.class);
|
||||||
" 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);
|
|
||||||
try {
|
try {
|
||||||
List<UserDTO> result = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, UserDTO.class);
|
final UserDTO userDTO = userCacheService.retrieveUserData(multiDBTransactionManager.getPrimaryDatasource().getProfile(), username, requestData.getApplication());
|
||||||
|
return userDTO;
|
||||||
if (result == null || result.isEmpty()) return null;
|
|
||||||
|
|
||||||
return result.get(0);
|
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
logger.error("User validation", exception);
|
logger.error("User validation", exception);
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -109,6 +109,9 @@ public class UserCacheService {
|
|||||||
if (users == null || users.isEmpty())
|
if (users == null || users.isEmpty())
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
if (password == null || password.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
String finalPasswordHex = UtilityHash.generateHash(password.toUpperCase());
|
String finalPasswordHex = UtilityHash.generateHash(password.toUpperCase());
|
||||||
final Optional<UserDTO> foundUser = users.stream()
|
final Optional<UserDTO> foundUser = users.stream()
|
||||||
.filter(x -> x.getUsername().equalsIgnoreCase(username) &&
|
.filter(x -> x.getUsername().equalsIgnoreCase(username) &&
|
||||||
@@ -123,6 +126,26 @@ public class UserCacheService {
|
|||||||
return foundUser.orElse(null);
|
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 {
|
public void discoverAllUsers(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||||
cacheLock.lock();
|
cacheLock.lock();
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import it.integry.ems.service.EntityProcessor;
|
|||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems_model.base.EntityBase;
|
import it.integry.ems_model.base.EntityBase;
|
||||||
import it.integry.ems_model.base.EntityNotFound;
|
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.entity.*;
|
||||||
import it.integry.ems_model.service.SetupGest;
|
import it.integry.ems_model.service.SetupGest;
|
||||||
import it.integry.ems_model.types.OperationType;
|
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 " +
|
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);
|
"FROM mtb_colr, mtb_aart WHERE mtb_colr.cod_mart = mtb_aart.cod_mart AND " + UtilityQuery.concatFieldListInWhereCond(mtbColtData);
|
||||||
|
|
||||||
PreparedStatement psMtbColr = multiDBTransactionManager.prepareStatement(sqlSelectMtbColrs);
|
List<MtbColr> sourceMtbColrs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sqlSelectMtbColrs, MtbColr.class);
|
||||||
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();
|
|
||||||
|
|
||||||
if (sourceMtbColrs == null) return null;
|
if (sourceMtbColrs == null) return null;
|
||||||
|
|
||||||
|
|
||||||
//Carico tutte le informazioni riguardanti gli articoli
|
//Carico tutte le informazioni riguardanti gli articoli
|
||||||
List<String> codMarts = Stream.of(sourceMtbColrs)
|
List<String> codMarts = sourceMtbColrs.stream()
|
||||||
.withoutNulls()
|
|
||||||
.filter(mtbColr -> mtbColr != null && !UtilityString.isNullOrEmpty(mtbColr.getCodMart()))
|
.filter(mtbColr -> mtbColr != null && !UtilityString.isNullOrEmpty(mtbColr.getCodMart()))
|
||||||
.map(MtbColr::getCodMart)
|
.map(MtbColr::getCodMart)
|
||||||
.toList();
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
List<MtbAart> mtbAarts = productServices.getArticoliByCodMarts(codMarts);
|
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) {
|
private List<MtbColt> splitMtbColrsByCodJfas(MtbColt inputMtbColt, List<DtbOrdt> inputOrders, List<MtbColr> inputMtbColrs) {
|
||||||
final Map<Object, List<HashMap<String, Object>>> ordersByCodJfas = inputOrders.stream()
|
final Map<Object, List<HashMap<String, Object>>> ordersByCodJfas = inputOrders.stream()
|
||||||
.map(x -> new HashMap<String, Object>() {{
|
.map(x -> new HashMap<String, Object>() {{
|
||||||
put("data_ord", x.getDataOrd());
|
put("data_ord", UtilityLocalDate.localDateFromDate(x.getDataOrd()));
|
||||||
put("num_ord", x.getNumOrd());
|
put("num_ord", x.getNumOrd());
|
||||||
put("gestione", x.getGestione());
|
put("gestione", x.getGestione());
|
||||||
put("cod_jfas", x.getCodJfas());
|
put("cod_jfas", x.getCodJfas());
|
||||||
|
|||||||
Reference in New Issue
Block a user