Aggiunto checkDbDistributore

This commit is contained in:
2024-02-12 17:07:46 +01:00
parent b84c488de0
commit c6d9ee4432

View File

@@ -14,6 +14,7 @@ import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.docx4j.wml.U;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ContextLoader;
@@ -53,6 +54,30 @@ public class GrigliaAcquistoHandlerService {
//return !UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer() && settingsModel.isPrimaryInstance();
}
private HashMap<String, Object> checkDbDistributore(MultiDBTransactionManager multiDBTransactionManager) throws Exception{
HashMap<String, Object> returnHashMap = new HashMap<>();
String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName();
String sql = "SELECT db_distributore FROM azienda";
String dbDistributore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
returnHashMap.put("dbDistributore", dbDistributore);
if (dbDistributore == null){
returnHashMap.put("existSync", false);
return returnHashMap;
}
sql = "SELECT CAST(COUNT(*) AS BIT)\n" +
"FROM " + dbDistributore + ".dbo.stb_subscription\n" +
"WHERE table_name = 'atb_griglie'\n" +
" AND flag_attivo = 'S'\n" +
" AND user_name = " + UtilityDB.valueToString(dbName);
boolean existSync = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
returnHashMap.put("existSync", existSync);
return returnHashMap;
}
public void internalCache(HashMap<String, List<GrigliaAcquistoDTO>> grigliaAcquistoCachedData) {
try {
String historyProfileDb = settingsController.getHistoryProfileDb();
@@ -64,53 +89,54 @@ public class GrigliaAcquistoHandlerService {
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
for (String dbName : databases.keySet()) {
if (dbName.equalsIgnoreCase("carelli")){
String profileName = databases.get(dbName).get(0).getProfileName();
String profileName = databases.get(dbName).get(0).getProfileName();
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
HashMap<String, Object> checkDbDistributore = checkDbDistributore(multiDBTransactionManager);
boolean existSync = (boolean) checkDbDistributore.get("existSync");
if (!existSync){
Date startDate = new Date();
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
List<GrigliaAcquistoDTO> grigliaAcquistoDTO = getGrigliaAcquisto(multiDBTransactionManager);
grigliaAcquistoCachedData.put(dbName, grigliaAcquistoDTO);
logger.trace(profileName + " - Griglia acquisto: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
multiDBTransactionManager.closeAll();
}
multiDBTransactionManager.closeAll();
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
String a = "";
}
private List<GrigliaAcquistoDTO> getGrigliaAcquisto(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
List<GrigliaAcquistoDTO> grigliaAcquisto = new ArrayList<>();
// for (int i = 0; i < DAYS; i++) {
// Date dataValidita = UtilityDate.getTodayWithoutTime();
// dataValidita = UtilityDate.dateAdd(dataValidita, i);
//
// String sql = "SELECT cod_alis,\n" +
// " cod_mdep,\n" +
// " " + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + " AS data_validita,\n" +
// " note,\n" +
// " cod_art_for,\n" +
// " cod_mart,\n" +
// " tipo_assortimento,\n" +
// " tipo_variazione,\n" +
// " last_griglia\n" +
// "FROM dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, NULL, NULL, NULL)\n" +
// "WHERE tipo_variazione <> 'D'";
//
// List<GrigliaAcquistoDTO> tempGrigliaAcquisto = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GrigliaAcquistoDTO.class);
// if (tempGrigliaAcquisto != null && !tempGrigliaAcquisto.isEmpty())
// grigliaAcquisto.addAll(tempGrigliaAcquisto);
// }
for (int i = 0; i < DAYS; i++) {
Date dataValidita = UtilityDate.getTodayWithoutTime();
dataValidita = UtilityDate.dateAdd(dataValidita, i);
String sql = "select * from grigliAcquistoCache";
String sql = "SELECT cod_alis,\n" +
" cod_mdep,\n" +
" " + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + " AS data_validita,\n" +
" note,\n" +
" cod_art_for,\n" +
" cod_mart,\n" +
" tipo_assortimento,\n" +
" tipo_variazione,\n" +
" last_griglia\n" +
"FROM dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, NULL, NULL, NULL)\n" +
"WHERE tipo_variazione <> 'D'";
grigliaAcquisto = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GrigliaAcquistoDTO.class);
List<GrigliaAcquistoDTO> tempGrigliaAcquisto = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GrigliaAcquistoDTO.class);
if (tempGrigliaAcquisto != null && !tempGrigliaAcquisto.isEmpty())
grigliaAcquisto.addAll(tempGrigliaAcquisto);
}
return grigliaAcquisto;
}
@@ -121,8 +147,18 @@ public class GrigliaAcquistoHandlerService {
if (!saveCache()) {
return getGrigliaAcquisto(multiDBTransactionManager);
} else {
List<GrigliaAcquistoDTO> setupList;
HashMap<String, Object> checkDbDistributore = checkDbDistributore(multiDBTransactionManager);
String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName();
List<GrigliaAcquistoDTO> setupList = grigliaAcquistoCachedData.get(dbName);
boolean existSync = (boolean) checkDbDistributore.get("existSync");
String dbDistributore = (String) checkDbDistributore.get("dbDistributore");
if (existSync){
setupList = grigliaAcquistoCachedData.get(dbDistributore);
}else{
setupList = grigliaAcquistoCachedData.get(dbName);
}
if (setupList == null)
return getGrigliaAcquisto(multiDBTransactionManager);
return setupList;