Gestiti i kit nelle variazioni

This commit is contained in:
2024-02-13 12:49:47 +01:00
parent ae03d4f5f4
commit 97a6acb826
3 changed files with 89 additions and 53 deletions

View File

@@ -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<String, String> listini = new HashMap<>();
private List<GrigliaAcquistoDTO> 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<HashMap<String, Object>> 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<String, Object> 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<GrigliaAcquistoDTO> grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
List<ListiniOrdiniAcquistoDTO> listini = listiniAcquistoHandlerService.getListini();
grigliaAcquisto = Stream.of(grigliaAcquisto)
List<GrigliaAcquistoDTO> 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<String> 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";

View File

@@ -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<String, Object> checkDbDistributore(MultiDBTransactionManager multiDBTransactionManager) throws Exception{
HashMap<String, Object> 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<String, Object> checkDbDistributore = checkDbDistributore(multiDBTransactionManager);
boolean existSync = (boolean) checkDbDistributore.get("existSync");
if (isGestioneAbilitata(multiDBTransactionManager)){
HashMap<String, Object> checkDbDistributore = checkDbDistributore(multiDBTransactionManager);
boolean existSync = (boolean) checkDbDistributore.get("existSync");
if (!existSync){
Date startDate = new Date();
if (!existSync){
Date startDate = new Date();
List<GrigliaAcquistoDTO> grigliaAcquistoDTO = getGrigliaAcquisto(multiDBTransactionManager);
grigliaAcquistoCachedData.put(dbName.toUpperCase(), grigliaAcquistoDTO);
List<GrigliaAcquistoDTO> 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)

View File

@@ -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 {