From 97a6acb8266fff1853c8c0bcd3a8d9301a9da292 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 13 Feb 2024 12:49:47 +0100 Subject: [PATCH] Gestiti i kit nelle variazioni --- .../service/VariazioniPVService.java | 109 +++++++++++------- .../GrigliaAcquistoHandlerService.java | 30 +++-- .../ListiniAcquistoHandlerService.java | 3 +- 3 files changed, 89 insertions(+), 53 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java index 6b8d71862d..8da11e67bf 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java @@ -27,10 +27,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.DecimalFormat; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service @Scope("request") @@ -41,8 +38,9 @@ public class VariazioniPVService { private SetupGest setupGest; @Autowired private GrigliaAcquistoHandlerService grigliaAcquistoHandlerService; - @Autowired - private ListiniAcquistoHandlerService listiniAcquistoHandlerService; + + private HashMap listini = new HashMap<>(); + private List grigliaAcquisto = new ArrayList<>(); public String variazionePrezzoPVXml(VariazioniPvInputDTO variazioniPvDTO) throws Exception { @@ -124,6 +122,15 @@ public class VariazioniPVService { String query = getQueryVariazioni(variazioniPvDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE")); List> elencoVar = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query); + + if (getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) { + grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto(); + grigliaAcquisto = Stream.of(grigliaAcquisto) + .filter(x -> x.getDataValidita().equals(variazioniPvDTO.getDataValidita()) && + x.getCodMdep().equalsIgnoreCase(codMdep)) + .toList(); + } + for (HashMap variazioni : elencoVar) { CodMartType codMart = fillArticoloData(objectFactory, variazioni, variazioniPvDTO, invioIngredienti, getSetupSectionDepo, codMdep, colNameDescrEstesa, @@ -848,56 +855,72 @@ public class VariazioniPVService { private void getDatiGriglia(ObjectFactory objectFactory, String codMart, String codMdep, Date dataValidita, CodMartType codMartType) throws Exception { CodAlisType codAlisType = objectFactory.createCodAlisType(); - List grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto(); - List listini = listiniAcquistoHandlerService.getListini(); - grigliaAcquisto = Stream.of(grigliaAcquisto) + List grigliaArticolo = Stream.of(grigliaAcquisto) .filter(x -> x.getCodMart().equalsIgnoreCase(codMart) && x.getCodMdep().equalsIgnoreCase(codMdep) && x.getDataValidita().equals(dataValidita)) .toList(); - if (grigliaAcquisto.isEmpty()) { - String query = - /*"with arts as (\n" + - "select cod_mart, cod_mart as cod_mart_griglia from mtb_aart\n" + - "union all\n" + - "select cod_mart, cod_comp as cod_mart_griglia from mtb_comp \n"+ - "union all\n" + - "select cod_comp, cod_mart as cod_mart_griglia from mtb_comp )\n"+ */ - "SELECT TOP 1 griglia.data_validita, " + - " griglia.cod_mdep, " + - " griglia.cod_mart, " + - " griglia.tipo_variazione, " + - " ISNULL(griglia.tipo_assortimento, '') AS tipo_assortimento, " + - " griglia.cod_alis, " + - " atb_list.descrizione AS descr_list " + - " FROM atb_list\n" + - "INNER JOIN dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, " + - UtilityDB.valueToString(codMdep) + ", NULL, NULL) griglia ON atb_list.cod_alis = griglia.cod_alis\n" + - //"INNER JOIN arts on griglia.cod_mart = arts.cod_mart_griglia \n" + - " WHERE griglia.tipo_variazione <> 'D' AND " + - " griglia.cod_mart = " + UtilityDB.valueToString(codMart) + "\n " + - " ORDER BY griglia.data_validita DESC "; + if (grigliaArticolo.isEmpty()) { - grigliaAcquisto = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, GrigliaAcquistoDTO.class); + + String query = "select cod_mart from mtb_comp where cod_comp = " + UtilityDB.valueToString(codMart) + " \n" + + "union all\n" + + "select cod_comp from mtb_comp where cod_mart = " + UtilityDB.valueToString(codMart); + + List kits = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query); + + for (String kit : kits) { + grigliaArticolo = Stream.of(grigliaAcquisto) + .filter(x -> x.getCodMart().equalsIgnoreCase(kit) && + x.getCodMdep().equalsIgnoreCase(codMdep) && + x.getDataValidita().equals(dataValidita)) + .toList(); + + if (!grigliaArticolo.isEmpty()) { + break; + } + } + + if (grigliaArticolo.isEmpty()) { + kits.add(codMart); + + query = + "SELECT TOP 1 griglia.data_validita, " + + " griglia.cod_mdep, " + + " griglia.cod_mart, " + + " griglia.tipo_variazione, " + + " ISNULL(griglia.tipo_assortimento, '') AS tipo_assortimento, " + + " griglia.cod_alis, " + + " atb_list.descrizione AS descr_list " + + " FROM atb_list\n" + + "INNER JOIN dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, " + + UtilityDB.valueToString(codMdep) + ", NULL, NULL) griglia ON atb_list.cod_alis = griglia.cod_alis\n" + + " WHERE griglia.tipo_variazione <> 'D' AND " + + " griglia.cod_mart IN (" + UtilityDB.listValueToString(kits) + ")\n " + + " ORDER BY griglia.data_validita DESC "; + + grigliaArticolo = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, GrigliaAcquistoDTO.class); + } } String tipoAssortimento, tipoVariazioneGriglia, codAlis, descrList = null; - if (grigliaAcquisto != null && !grigliaAcquisto.isEmpty()) { - codAlis = grigliaAcquisto.get(0).getCodAlis(); - tipoAssortimento = grigliaAcquisto.get(0).getTipoAssortimento(); - tipoVariazioneGriglia = grigliaAcquisto.get(0).getTipoVariazione(); + if (grigliaArticolo != null && !grigliaArticolo.isEmpty()) { + codAlis = grigliaArticolo.get(0).getCodAlis(); + tipoAssortimento = UtilityString.streNull(grigliaArticolo.get(0).getTipoAssortimento()); + tipoVariazioneGriglia = grigliaArticolo.get(0).getTipoVariazione(); - String codArtForn = grigliaAcquisto.get(0).getCodArtForn(); - listini = Stream.of(listini) - .filter(x -> x.getCodAlis().equalsIgnoreCase(codAlis) && - x.getCodMart().equalsIgnoreCase(codMart) && - x.getCodArtFor().equalsIgnoreCase(codArtForn)) - .toList(); + descrList = listini.get(codAlis); + if (descrList == null) { + String sql = "SELECT descrizione\n" + + "FROM atb_list\n" + + "WHERE cod_alis = " + UtilityDB.valueToString(codAlis); - if (!listini.isEmpty()) descrList = listini.get(0).getDescrizione(); + descrList = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + listini.put(codAlis, descrList); + } } else { codAlis = "NO GRIGLIA"; diff --git a/ems-engine/src/main/java/it/integry/ems/retail/service/GrigliaAcquistoHandlerService.java b/ems-engine/src/main/java/it/integry/ems/retail/service/GrigliaAcquistoHandlerService.java index 421b378c43..3ca8b136f6 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/service/GrigliaAcquistoHandlerService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/service/GrigliaAcquistoHandlerService.java @@ -54,6 +54,16 @@ public class GrigliaAcquistoHandlerService { //return !UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer() && settingsModel.isPrimaryInstance(); } + private static boolean isGestioneAbilitata(MultiDBTransactionManager multiDBTransactionManager) throws Exception { + String sql = + "SELECT CAST(COUNT(*) AS BIT)\n" + + "FROM stb_abil\n" + + "WHERE cod_opz IN ('AG018', 'AG019') \n" + + " AND flag_abil <> 'N'"; + + return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + } + private HashMap checkDbDistributore(MultiDBTransactionManager multiDBTransactionManager) throws Exception{ HashMap returnHashMap = new HashMap<>(); String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName(); @@ -92,16 +102,20 @@ public class GrigliaAcquistoHandlerService { String profileName = databases.get(dbName).get(0).getProfileName(); MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false); - HashMap checkDbDistributore = checkDbDistributore(multiDBTransactionManager); - boolean existSync = (boolean) checkDbDistributore.get("existSync"); + if (isGestioneAbilitata(multiDBTransactionManager)){ + HashMap checkDbDistributore = checkDbDistributore(multiDBTransactionManager); + boolean existSync = (boolean) checkDbDistributore.get("existSync"); - if (!existSync){ - Date startDate = new Date(); + if (!existSync){ + Date startDate = new Date(); - List grigliaAcquistoDTO = getGrigliaAcquisto(multiDBTransactionManager); - grigliaAcquistoCachedData.put(dbName.toUpperCase(), grigliaAcquistoDTO); + List grigliaAcquistoDTO = getGrigliaAcquisto(multiDBTransactionManager); - logger.trace(profileName + " - Griglia acquisto: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs"); + if(!grigliaAcquistoDTO.isEmpty()) + grigliaAcquistoCachedData.put(dbName.toUpperCase(), grigliaAcquistoDTO); + + logger.trace(profileName + " - Griglia acquisto: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs"); + } } multiDBTransactionManager.closeAll(); @@ -156,7 +170,7 @@ public class GrigliaAcquistoHandlerService { if (existSync){ setupList = grigliaAcquistoCachedData.get(dbDistributore.toUpperCase()); }else{ - setupList = grigliaAcquistoCachedData.get(dbName); + setupList = grigliaAcquistoCachedData.get(dbName.toUpperCase()); } if (setupList == null) diff --git a/ems-engine/src/main/java/it/integry/ems/retail/service/ListiniAcquistoHandlerService.java b/ems-engine/src/main/java/it/integry/ems/retail/service/ListiniAcquistoHandlerService.java index 97d870cb6b..dbbfc304d6 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/service/ListiniAcquistoHandlerService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/service/ListiniAcquistoHandlerService.java @@ -51,8 +51,7 @@ public class ListiniAcquistoHandlerService { } private boolean saveCache(){ - return true; -// return !UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer() && settingsModel.isPrimaryInstance(); + return !UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer() && settingsModel.isPrimaryInstance(); } private static boolean isGestioneAbilitata(MultiDBTransactionManager multiDBTransactionManager) throws Exception {