Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit

This commit is contained in:
2025-01-17 11:26:29 +01:00
5 changed files with 407 additions and 3 deletions

View File

@@ -25,6 +25,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import static it.integry.ems.rules.completing.QueryRules.getSingleValue;
@Service
@Scope("request")
public class SicilianiDMSExportService {
@@ -182,6 +184,321 @@ public class SicilianiDMSExportService {
public EntityExportResponse syncOrgCons(String whereCond, String queryDettPesoViaggio, String dataCons, String userNAme) throws Exception {
EntityExportResponse<List<File>> response = new EntityExportResponse<List<File>>();
String trasmissioneNew = setupGest.getSetup("W_VORGCONS_DISP", "SETUP", "TRAMISSIONE_NEW");
if (trasmissioneNew.equalsIgnoreCase("S")){
response = syncOrgCons_new(whereCond, queryDettPesoViaggio, dataCons, userNAme);
} else {
response = syncOrgCons_old(whereCond, queryDettPesoViaggio, dataCons, userNAme);
}
return response;
}
public EntityExportResponse syncOrgCons_new(String whereCond, String queryDettPesoViaggio, String dataCons, String userNAme) throws Exception {
EntityExportResponse<List<File>> response = new EntityExportResponse<List<File>>();
response.setResponse(new ArrayList<File>());
String profileDBAlyante = setupGest.getSetup("DMS", "PROFILE", "ALYANTE");
String visualizzaCosti = setupGest.getSetup("W_VORGCONS_DISP", "SETUP", "GESTIONE_COSTI");
String disbableCheckCostiAlyante = setupGest.getSetup("W_VORGCONS_DISP", "SETUP", "DISABLE_CHECK_COSTI_ALYANTE");
Connection conn = multiDBTransactionManager.getPrimaryConnection();
// Acquisizione Connection DB ALYANTE
multiDBTransactionManager.addConnection(profileDBAlyante);
Connection conAlyante = multiDBTransactionManager.getDatabaseDataSource(profileDBAlyante).getConnection();
try {
String codiceDitta = setupGest.getSetup("DMS", "SETUP", "CODICE_DITTA");
String serverObject = setupGest.getSetup("DMS", "PROFILE", "DB_INTERSCAMBIO");
String userUnlockIDViaggio = setupGest.getSetupUser(conn, "W_VORGCONS_DISP", "SETUP","ABILITA_SBLOCCO_ID_VIAGGIO", userNAme);
String columnPercPesoOrdine = "";
String tableCostoViaggi = "";
if (visualizzaCosti.compareTo("S") == 0) {
columnPercPesoOrdine = " * percPesoOrd.as_perc_peso_ordine";
tableCostoViaggi = "LEFT OUTER JOIN (" + queryDettPesoViaggio + ")percPesoOrd ON dtb_ordt_local.key_ord = percPesoOrd.key_ord";
}
sql = "SELECT id_viaggio, " +
" lockIdViaggio " +
"from dbo.getStatoIdViaggio4DtCons(" + UtilityDB.valueToString(dataCons) + ")";
List<HashMap<String, Object>> resultMap = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
sql = "select dtb_ordt_local.key_ord_alyante," +
" dtb_ordt_local.key_ord, " +
" dtb_ordt_local.id_viaggio, " +
" dtb_ordt_local.cod_giro," +
" dtb_ordt_local.cod_vvet, " +
" dtb_ordt_local.cod_vvet2, " +
" dtb_ordt_local.cod_vvet3, " +
" dtb_ordt_local.targa, " +
" dtb_ordt_local.piattaforma1," +
" dtb_ordt_local.piattaforma2, " +
" round(costo_kg_std_vett " + columnPercPesoOrdine + ", 5), " + /*Alyante vuole che venga impostato 1 segli importi se non valorizzati*/
" case when dtb_ordt_local.cod_vvet2 is null then 0 else round(costo_kg_std_vett2 " + columnPercPesoOrdine + ", 5) end , " +
" case when dtb_ordt_local.cod_vvet3 is null then 0 else round(costo_kg_std_vett3 " + columnPercPesoOrdine + ", 5) end , " +
" round(costo_kg_con_vett " + columnPercPesoOrdine + ", 5), " +
" case when dtb_ordt_local.cod_vvet2 is null then 0 else round(costo_kg_con_vett2 " + columnPercPesoOrdine + ", 5) end , " +
" case when dtb_ordt_local.cod_vvet3 is null then 0 else round(costo_kg_con_vett3 " + columnPercPesoOrdine + ", 5) end , " +
" case when dtb_ordt_local.piattaforma1 is null then 0 else round(costo_kg_std_piattaforma1 " + columnPercPesoOrdine + ", 5) end , " +
" case when dtb_ordt_local.piattaforma2 is null then 0 else round(costo_kg_std_piattaforma2 " + columnPercPesoOrdine + ", 5) end , " +
" id_contratto_vett1, " +
" case when dtb_ordt_local.cod_vvet2 is null then null else id_contratto_vett2 end , " +
" case when dtb_ordt_local.cod_vvet3 is null then null else id_contratto_vett3 end , " +
" case when dtb_ordt_local.piattaforma1 is null then null else id_contratto_piatt1 end , " +
" case when dtb_ordt_local.piattaforma2 is null then null else id_contratto_piatt2 end , " +
" id_riga_contratto_vett1, " +
" case when dtb_ordt_local.cod_vvet2 is null then null else id_riga_contratto_vett2 end , " +
" case when dtb_ordt_local.cod_vvet3 is null then null else id_riga_contratto_vett3 end , " +
" case when dtb_ordt_local.piattaforma1 is null then null else id_riga_contratto_piatt1 end , " +
" case when dtb_ordt_local.piattaforma2 is null then null else id_riga_contratto_piatt2 end , " +
" case when dtb_ordt_local.piattaforma1 is null then 0 else round(costo_kg_con_piatt1 " + columnPercPesoOrdine + ", 5) end , " +
" case when dtb_ordt_local.piattaforma2 is null then 0 else round(costo_kg_con_piatt2 " + columnPercPesoOrdine + ", 5) end " +
" from dtb_ordt_local INNER JOIN " + serverObject + ".dtb_ordt ON dtb_ordt_local.key_ord_alyante = dtb_ordt.key_ord COLLATE Latin1_General_100_CI_AS " +
" LEFT OUTER JOIN vtb_vett_orgcons_local ON dtb_ordt_local.id_viaggio = vtb_vett_orgcons_local.id_viaggio and " +
" ISNULL(dtb_ordt_local.cod_vvet, '') = ISNULL(vtb_vett_orgcons_local.cod_vvet, '') and " +
" dtb_ordt_local.targa = vtb_vett_orgcons_local.targa and " +
" dtb_ordt_local.cod_giro = vtb_vett_orgcons_local.cod_giro AND " +
" ISNULL(dtb_ordt_local.cod_vvet2, '') = ISNULL(vtb_vett_orgcons_local.cod_vvet2, '') AND " +
" ISNULL(dtb_ordt_local.cod_vvet3, '') = ISNULL(vtb_vett_orgcons_local.cod_vvet3, '') AND " +
" ISNULL(dtb_ordt_local.piattaforma1, '') = ISNULL(vtb_vett_orgcons_local.piattaforma1, '') AND " +
" ISNULL(dtb_ordt_local.piattaforma2, '') = ISNULL(vtb_vett_orgcons_local.piattaforma2, '')" +
" " + tableCostoViaggi + " " +
" where dtb_ordt_local.id_viaggio is not null " +
"order by dtb_ordt_local.id_viaggio, dtb_ordt_local.key_ord";
whereCond = UtilityString.replaceSubString(whereCond, "dtb_ordr", "dtb_ordt_local");
sql = UtilityDB.addwhereCond(sql, whereCond, true);
PreparedStatement ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet res = ps.executeQuery();
logger.error("[SYNC_ORGCONS - QUERY TRASMISSIONE]" + sql);
while (res.next()) {
String keyOrdAlyante = res.getString(1);
String keyOrd = res.getString(2);
Integer idViaggio = res.getInt(3);
String codGiro = res.getString(4);
String codVvet = res.getString(5);
String codVvet2 = res.getString(6);
String codVvet3 = res.getString(7);
String targa = res.getString(8);
String piattaforma1 = res.getString(9);
String piattaforma2 = res.getString(10);
BigDecimal importoVett1 = res.getBigDecimal(11);
BigDecimal importoVett2 = res.getBigDecimal(12);
BigDecimal importoVett3 = res.getBigDecimal(13);
BigDecimal importoConVett1 = res.getBigDecimal(14);
BigDecimal importoConVett2 = res.getBigDecimal(15);
BigDecimal importoConVett3 = res.getBigDecimal(16);
BigDecimal importoPiatt1 = res.getBigDecimal(17);
BigDecimal importoPiatt2 = res.getBigDecimal(18);
String idContrattoVett1 = res.getString(19);
String idContrattoVett2 = res.getString(20);
String idContrattoVett3 = res.getString(21);
String contrattoPiatt1 = res.getString(22);
String contrattoPiatt2 = res.getString(23);
Integer idRigaContrattoVett1 = res.getInt(24);
Integer idRigaContrattoVett2 = res.getInt(25);
Integer idRigaContrattoVett3 = res.getInt(26);
Integer idRigacontrattoPiatt1 = res.getInt(27);
Integer idRigacontrattoPiatt2 = res.getInt(28);
BigDecimal importoConPiatt1 = res.getBigDecimal(29);
BigDecimal importoConPiatt2 = res.getBigDecimal(30);
// Verifica esistenza ordine
Integer flagExistOrd = 0;
sql = "select count(*) from dtb_infoviaggi where chiave_traxal = " + UtilityDB.valueToString(keyOrd);
flagExistOrd = (Integer) getSingleValue(conAlyante, sql);
if (visualizzaCosti.compareTo("N") == 0) {
importoConVett1 = BigDecimal.ONE;
importoConVett2 = BigDecimal.ONE;
importoConVett3 = BigDecimal.ONE;
importoConPiatt1 = BigDecimal.ONE;
importoConPiatt2 = BigDecimal.ONE;
} else {
if (disbableCheckCostiAlyante.equalsIgnoreCase("S")) {
if (codVvet != null && idContrattoVett1 == null && (importoConVett1 == null || importoConVett1.compareTo(BigDecimal.ZERO) == 0)) {
importoConVett1 = BigDecimal.ONE;
}
if (codVvet2 != null && idContrattoVett2 == null && (importoConVett2 == null || importoConVett2.compareTo(BigDecimal.ZERO) == 0)) {
importoConVett2 = BigDecimal.ONE;
}
if (codVvet3 != null && idContrattoVett3 == null && (importoConVett3 == null || importoConVett3.compareTo(BigDecimal.ZERO) == 0)) {
importoConVett3 = BigDecimal.ONE;
}
if (piattaforma1 != null && contrattoPiatt1 == null && (importoConPiatt1 == null || importoConPiatt1.compareTo(BigDecimal.ZERO) == 0)) {
importoConPiatt1 = BigDecimal.ONE;
}
if (piattaforma2 != null && contrattoPiatt2 == null && (importoConPiatt2 == null || importoConPiatt2.compareTo(BigDecimal.ZERO) == 0)) {
importoConPiatt2 = BigDecimal.ONE;
}
}
}
// Verifica se l'id_viaggio è bloccato
Optional<HashMap<String, Object>> lockIdViaggio = Stream.of(resultMap)
.filter(x ->
((Integer) UtilityHashMap.getValueIfExists(x, "id_viaggio")).equals(idViaggio) &&
((String) UtilityHashMap.getValueIfExists(x, "lockIdViaggio")).equalsIgnoreCase("S")).findFirst();
if (!lockIdViaggio.isPresent() || userUnlockIDViaggio.equalsIgnoreCase("S")) {
if (flagExistOrd ==0) {
sql = "INSERT INTO dtb_infoviaggi " +
"( ditta, " +
" key_ord," +
" chiave_traxal," +
" id_viaggio," +
" giro," +
" cod_vvet1," +
" cod_vvet2," +
" cod_vvet3," +
" targa1, " +
" contrattoVet1, " +
" contrattoVet2, " +
" contrattoVet3, " +
" rigacontrattoVet1, " +
" rigacontrattoVet2, " +
" rigacontrattoVet3, " +
" importoVet1, " +
" importoVet2, " +
" importoVet3, " +
" importoForfaitVet1, " +
" importoForfaitVet2, " +
" importoForfaitVet3, " +
" cod_piatt1, " +
" cod_piatt2, " +
" contrattoPiat1, " +
" contrattoPiat2, " +
" rigacontrattoPiat1, " +
" rigacontrattoPiat2, " +
" importoPiat1, " +
" importoPiat2, " +
" importoforfaitPiat1, " +
" importoForfaitPiat2)" +
"VALUES (" + UtilityDB.valueToString(codiceDitta) + ", " +
" " + UtilityDB.valueToString(keyOrdAlyante) + ", " +
" " + UtilityDB.valueToString(keyOrd) + ", " +
" " + UtilityDB.valueToString(idViaggio) + ", " +
" " + UtilityDB.valueToString(codGiro) + ", " +
" " + UtilityDB.valueToString(codVvet) + ", " +
" " + UtilityDB.valueToString(codVvet2) + ", " +
" " + UtilityDB.valueToString(codVvet3) + ", " +
" " + UtilityDB.valueToString(targa) + ", " +
" " + UtilityDB.valueToString(idContrattoVett1) + ", " +
" " + UtilityDB.valueToString(idContrattoVett2) + ", " +
" " + UtilityDB.valueToString(idContrattoVett3) + ", " +
" " + UtilityDB.valueToString(idRigaContrattoVett1) + ", " +
" " + UtilityDB.valueToString(idRigaContrattoVett2) + ", " +
" " + UtilityDB.valueToString(idRigaContrattoVett3) + ", " +
" " + UtilityDB.valueToString(importoVett1) + ", " +
" " + UtilityDB.valueToString(importoVett2) + ", " +
" " + UtilityDB.valueToString(importoVett3) + ", " +
" " + UtilityDB.valueToString(importoConVett1) + ", " +
" " + UtilityDB.valueToString(importoConVett2) + ", " +
" " + UtilityDB.valueToString(importoConVett3) + ", " +
" " + UtilityDB.valueToString(piattaforma1) + ", " +
" " + UtilityDB.valueToString(piattaforma2) + ", " +
" " + UtilityDB.valueToString(contrattoPiatt1) + ", " +
" " + UtilityDB.valueToString(contrattoPiatt2) + ", " +
" " + UtilityDB.valueToString(idRigacontrattoPiatt1) + ", " +
" " + UtilityDB.valueToString(idRigacontrattoPiatt2) + ", " +
" " + UtilityDB.valueToString(importoPiatt1) + ", " +
" " + UtilityDB.valueToString(importoPiatt2) + ", " +
" " + UtilityDB.valueToString(importoConPiatt1) + ", " +
" " + UtilityDB.valueToString(importoConPiatt2) + ")"; /*Al momento per motivi di Alyante abbiamo dovuto valorizzare a 1 tutti gli importi*/
} else {
sql = "UPDATE dtb_infoviaggi " +
" SET ditta = " + UtilityDB.valueToString(codiceDitta) + ", " +
" key_ord =" + UtilityDB.valueToString(keyOrdAlyante) + ", " +
" chiave_traxal = " + UtilityDB.valueToString(keyOrd) + ", " +
" id_viaggio = " + UtilityDB.valueToString(idViaggio) + ", " +
" giro = " + UtilityDB.valueToString(codGiro) + ", " +
" cod_vvet1 = " + UtilityDB.valueToString(codVvet) + ", " +
" cod_vvet2 = " + UtilityDB.valueToString(codVvet2) + ", " +
" cod_vvet3 = " + UtilityDB.valueToString(codVvet3) + ", " +
" targa1 = " + UtilityDB.valueToString(targa) + ", " +
" cod_piatt1 = " + UtilityDB.valueToString(piattaforma1) + ", " +
" cod_piatt2 = " + UtilityDB.valueToString(piattaforma2) + ", " +
" contrattoVet1 = " + UtilityDB.valueToString(idContrattoVett1) + ", " +
" contrattoVet2 = " + UtilityDB.valueToString(idContrattoVett2) + ", " +
" contrattoVet3 = " + UtilityDB.valueToString(idContrattoVett3) + ", " +
" rigaContrattoVet1 = " + UtilityDB.valueToString(idRigaContrattoVett1) + ", " +
" rigaContrattoVet2 = " + UtilityDB.valueToString(idRigaContrattoVett2) + ", " +
" rigaContrattoVet3 = " + UtilityDB.valueToString(idRigaContrattoVett3) + ", " +
" importoVet1 = " + UtilityDB.valueToString(importoVett1) + ", " +
" importoVet2 = " + UtilityDB.valueToString(importoVett2) + ", " +
" importoVet3 = " + UtilityDB.valueToString(importoVett3) + ", " +
" importoForfaitVet1 = " + UtilityDB.valueToString(importoConVett1) + ", " +
" importoForfaitVet2 = " + UtilityDB.valueToString(importoConVett2) + ", " +
" importoForfaitVet3 = " + UtilityDB.valueToString(importoConVett3) + ", " +
" contrattoPiat1 = " + UtilityDB.valueToString(contrattoPiatt1) + ", " +
" contrattoPiat2 = " + UtilityDB.valueToString(contrattoPiatt2) + ", " +
" rigaContrattoPiat1 = " + UtilityDB.valueToString(idRigacontrattoPiatt1) + ", " +
" rigaContrattoPiat2 = " + UtilityDB.valueToString(idRigacontrattoPiatt2) + ", " +
" importoPiat1 = " + UtilityDB.valueToString(importoPiatt1) + ", " +
" importoPiat2 = " + UtilityDB.valueToString(importoPiatt2) + ", " +
" importoForfaitPiat1 = " + UtilityDB.valueToString(importoConPiatt1) + ", " +
" importoForfaitPiat2 = " + UtilityDB.valueToString(importoConPiatt2) + " " +
" WHERE key_ord = " + UtilityDB.valueToString(keyOrdAlyante);
}
PreparedStatement infoUpd = conAlyante.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
infoUpd.executeUpdate();
infoUpd.close();
}
}
res.close();
ps.close();
// Cancellazione ID_Viaggio inviati ad Alyante, ma non più presenti in DMS
sql = "select dtb_ordt_local.key_ord, " +
" dtb_infoviaggi.id_viaggio " +
" from dtb_ordt_local INNER JOIN " + serverObject + ".dtb_infoviaggi ON dtb_ordt_local.key_ord_alyante = dtb_infoviaggi.key_ord COLLATE Latin1_General_100_CI_AS " +
" where dtb_ordt_local.id_viaggio is null ";
whereCond = UtilityString.replaceSubString(whereCond, "dtb_ordr", "dtb_ordt_local");
sql = UtilityDB.addwhereCond(sql, whereCond, true);
ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
res = ps.executeQuery();
while (res.next()) {
String keyOrd = res.getString(1);
String idViaggio = res.getString(2);
// Verifica se l'id_viaggio è bloccato
Optional<HashMap<String, Object>> lockIdViaggio = Stream.of(resultMap)
.filter(x ->
((Integer) UtilityHashMap.getValueIfExists(x, "id_viaggio")).equals(idViaggio) &&
((String) UtilityHashMap.getValueIfExists(x, "lockIdViaggio")).equalsIgnoreCase("S")).findFirst();
if (!lockIdViaggio.isPresent() || userUnlockIDViaggio.equalsIgnoreCase("S")) {
sql = "delete from dtb_infoviaggi " +
" from dtb_infoviaggi " +
" where chiave_traxal = " + UtilityDB.valueToString(keyOrd);
PreparedStatement infoUpd = conAlyante.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
infoUpd.executeUpdate();
infoUpd.close();
}
}
res.close();
ps.close();
conAlyante.commit();
} catch (Exception e) {
//conAlyante.rollback();
if (sql != null) {
logger.error("[SYNC_ORGCONS]" + sql);
}
throw new Exception(e.getMessage());
}
return response;
}
public EntityExportResponse syncOrgCons_old(String whereCond, String queryDettPesoViaggio, String dataCons, String userNAme) throws Exception {
EntityExportResponse<List<File>> response = new EntityExportResponse<List<File>>();
response.setResponse(new ArrayList<File>());
String profileDBAlyante = setupGest.getSetup("DMS", "PROFILE", "ALYANTE");
String visualizzaCosti = setupGest.getSetup("W_VORGCONS_DISP", "SETUP", "GESTIONE_COSTI");
@@ -435,9 +752,9 @@ public class SicilianiDMSExportService {
// Cancellazione ID_Viaggio inviati ad Alyante, ma non più presenti in DMS
sql = "select dtb_ordt_local.key_ord, " +
" dtb_infoviaggi.id_viaggio " +
" from dtb_ordt_local INNER JOIN " + serverObject + ".dtb_infoviaggi ON dtb_ordt_local.key_ord_alyante = dtb_infoviaggi.key_ord COLLATE Latin1_General_100_CI_AS " +
" where dtb_ordt_local.id_viaggio is null ";
" dtb_infoviaggi.id_viaggio " +
" from dtb_ordt_local INNER JOIN " + serverObject + ".dtb_infoviaggi ON dtb_ordt_local.key_ord_alyante = dtb_infoviaggi.key_ord COLLATE Latin1_General_100_CI_AS " +
" where dtb_ordt_local.id_viaggio is null ";
whereCond = UtilityString.replaceSubString(whereCond, "dtb_ordr", "dtb_ordt_local");
sql = UtilityDB.addwhereCond(sql, whereCond, true);
@@ -476,4 +793,5 @@ public class SicilianiDMSExportService {
}
return response;
}
}

View File

@@ -721,6 +721,13 @@ public class PuddyService {
String serieVG = res.getString(23);
i++;
// Se si tratta di un cliente non presente in VG allora viene letto il codice cliente nuovo fittizio dell'agente
if (codAnagVG == null){
codAnagVG = setupGest.getSetup("PUDDY", "ORDINI_VENDITA", "NUOVO_CLIENT_AGENTE_" + codVage);
codVdesVG = (String) getSingleValue(conn, "select cod_vdes from vtb_dest where cod_anag = " + UtilityDB.valueToString(codAnagVG));
}
String codVageAss = codVage;
String codAnagAss = codAnag;
String codVdesAss = codVdes;