diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240927121750.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240927121750.java new file mode 100644 index 0000000000..ced6bdaaf5 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240927121750.java @@ -0,0 +1,35 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240927121750 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createSetup("EXPORT_SCADENZE", "DOCFINANCE", "ATTIVO", "N", +"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false, +false, false, false, null, false, null); + createSetup("EXPORT_SCADENZE", "DOCFINANCE", "EMAIL_FOR_LOG", null, +"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false, +false, false, false, null, false, null); + createSetup("EXPORT_SCADENZE", "DOCFINANCE", "GG_CANC_FILE", null, +"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false, +false, false, false, null, false, null); + createSetup("EXPORT_SCADENZE", "DOCFINANCE", "IMPORT_REST", "S", +"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false, +false, false, false, null, false, null); + createSetup("EXPORT_SCADENZE", "DOCFINANCE", "PATH_FILE", null, +"Directory dove vengono salvati i file temporanei, se non รจ configurata i file saranno salvati in c:\\mlSetupWS\\TEMP_EXPORT", false, null, false, false, +false, false, false, null, false, null); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java index 2ef24ff1ba..660edbf9a6 100644 --- a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java +++ b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java @@ -430,6 +430,10 @@ public class UtilityDB { } public static void executeStatement(Connection connection, String... sqls) throws SQLException { + executeStatement(connection, Arrays.asList(sqls)); + } + + public static void executeStatement(Connection connection, List sqls) throws SQLException { Statement statement = connection.createStatement(); for (String sql : sqls) { diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/dto/ScadenzeDocFinanceDTO.java b/ems-engine/src/main/java/it/integry/ems/contabil/dto/ScadenzeDocFinanceDTO.java new file mode 100644 index 0000000000..83f85c29ba --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/contabil/dto/ScadenzeDocFinanceDTO.java @@ -0,0 +1,565 @@ +package it.integry.ems.contabil.dto; + +import it.integry.ems_model.annotation.DtoField; +import it.integry.ems_model.annotation.SqlField; + +public class ScadenzeDocFinanceDTO { + @SqlField(value = "tipo_pagamento") + @DtoField(startPosition = 0, maxLength = 2, fillChar = " ") + private String tipoPagamento; + + @SqlField(value = "importo") + @DtoField(startPosition = 2, maxLength = 16, fillChar = " ") + private String importo; + + @SqlField(value = "divisa_scadenza") + @DtoField(startPosition = 18, maxLength = 5, fillChar = " ") + private String divisaScadenza; + + @SqlField(value = "cambio") + @DtoField(startPosition = 23, maxLength = 9, fillChar = " ") + private String cambio; + + @SqlField(value = "controvalore") + @DtoField(startPosition = 32, maxLength = 16, fillChar = " ") + private String controvalore; + + @SqlField(value = "document_type") + @DtoField(startPosition = 48, maxLength = 2, fillChar = " ") + private String documentType; + + @SqlField(value = "type") + @DtoField(startPosition = 50, maxLength = 5, fillChar = " ") + private String type; + + @SqlField(value = "raiting") + @DtoField(startPosition = 55, maxLength = 2, fillChar = " ") + private String rating; + + @SqlField(value = "data_scadenza") + @DtoField(startPosition = 57, maxLength = 8, fillChar = " ") + private String dataScadenza; + + @SqlField(value = "data_valuta") + @DtoField(startPosition = 65, maxLength = 8, fillChar = " ") + private String dataValuta; + + @SqlField(value = "banca") + @DtoField(startPosition = 73, maxLength = 8, fillChar = " ") + private String banca; + + @SqlField(value = "rbn") + @DtoField(startPosition = 81, maxLength = 4, fillChar = " ") + private String rbn; + + @SqlField(value = "bloccata") + @DtoField(startPosition = 85, maxLength = 1, fillChar = " ") + private String bloccata; + + @SqlField(value = "voce") + @DtoField(startPosition = 86, maxLength = 6, fillChar = " ") + private String voce; + + @SqlField(value = "piano_dei_conti") + @DtoField(startPosition = 92, maxLength = 16, fillChar = " ") + private String pianoDeiConti; + + @SqlField(value = "descrizione") + @DtoField(startPosition = 108, maxLength = 40, fillChar = " ") + private String descrizione; + + @SqlField(value = "ABI") + @DtoField(startPosition = 148, maxLength = 5, fillChar = " ") + private String abi; + + @SqlField(value = "CAB") + @DtoField(startPosition = 153, maxLength = 5, fillChar = " ") + private String cab; + + @SqlField(value = "blank") + @DtoField(startPosition = 158, maxLength = 10, fillChar = " ") + private String blank; + + @SqlField(value = "provenienza") + @DtoField(startPosition = 168, maxLength = 2, fillChar = " ") + private String provenienza; + + @SqlField(value = "sezione") + @DtoField(startPosition = 170, maxLength = 6, fillChar = " ") + private String sezione; + + @SqlField(value = "cambio_della_gestione") + @DtoField(startPosition = 176, maxLength = 9, fillChar = " ") + private String cambioDellaGestione; + + @SqlField(value = "numero_doc_origine") + @DtoField(startPosition = 185, maxLength = 12, fillChar = " ") + private String numeroDocOrigine; + + @SqlField(value = "chiave_coge") + @DtoField(startPosition = 197, maxLength = 26, fillChar = " ") + private String chiaveCoge; + + @SqlField(value = "azienda") + @DtoField(startPosition = 223, maxLength = 10, fillChar = " ") + private String azienda; + + @SqlField(value = "fleg_raggruppa_effetti") + @DtoField(startPosition = 233, maxLength = 1, fillChar = " ") + private String flegRaggruppaEffetti; + + @SqlField(value = "numero_cc") + @DtoField(startPosition = 234, maxLength = 12, fillChar = " ") + private String numeroCc; + + @SqlField(value = "cin") + @DtoField(startPosition = 246, maxLength = 1, fillChar = " ") + private String cin; + + @SqlField(value = "piano_dei_conti_di_pagamento") + @DtoField(startPosition = 247, maxLength = 16, fillChar = " ") + private String pianoDeiContiDiPagamento; + + @SqlField(value = "paese") + @DtoField(startPosition = 263, maxLength = 2, fillChar = " ") + private String paese; + + @SqlField(value = "chk_paese") + @DtoField(startPosition = 265, maxLength = 2, fillChar = " ") + private String chkPaese; + + @SqlField(value = "data_documento") + @DtoField(startPosition = 267, maxLength = 8, fillChar = " ") + private String dataDocumento; + + @SqlField(value = "note") + @DtoField(startPosition = 275, maxLength = 80, fillChar = " ") + private String note; + + @SqlField(value = "cod_bic") + @DtoField(startPosition = 355, maxLength = 11, fillChar = " ") + private String codBic; + + @SqlField(value = "iban") + @DtoField(startPosition = 366, maxLength = 34, fillChar = " ") + private String iban; + + @SqlField(value = "tipo_codice") + @DtoField(startPosition = 400, maxLength = 1, fillChar = " ") + private String tipoCodice; + + @SqlField(value = "codice_riferimento") + @DtoField(startPosition = 401, maxLength = 16, fillChar = " ") + private String codiceRiferimento; + + @SqlField(value = "stato_conf") + @DtoField(startPosition = 417, maxLength = 1, fillChar = " ") + private String stato_conf; + + @SqlField(value = "banca_fin_conf") + @DtoField(startPosition = 418, maxLength = 8, fillChar = " ") + private String bancaFinConf; + + @SqlField(value = "rbn_fin_conf") + @DtoField(startPosition = 426, maxLength = 4, fillChar = " ") + private String rbnFinCnf; + + @SqlField(value = "banca_estera") + @DtoField(startPosition = 430, maxLength = 35, fillChar = " ") + private String bancaEstera; + + @SqlField(value = "sportello_banca_estera") + @DtoField(startPosition = 465, maxLength = 35, fillChar = " ") + private String sportelloBancaEstera; + + @SqlField(value = "codice_mandato") + @DtoField(startPosition = 500, maxLength = 35, fillChar = " ") + private String codiceMandato; + + public String getTipoPagamento() { + return tipoPagamento; + } + + public ScadenzeDocFinanceDTO setTipoPagamento(String tipoPagamento) { + this.tipoPagamento = tipoPagamento; + return this; + } + + public String getImporto() { + return importo; + } + + public ScadenzeDocFinanceDTO setImporto(String importo) { + this.importo = importo; + return this; + } + + public String getDivisaScadenza() { + return divisaScadenza; + } + + public ScadenzeDocFinanceDTO setDivisaScadenza(String divisaScadenza) { + this.divisaScadenza = divisaScadenza; + return this; + } + + public String getCambio() { + return cambio; + } + + public ScadenzeDocFinanceDTO setCambio(String cambio) { + this.cambio = cambio; + return this; + } + + public String getControvalore() { + return controvalore; + } + + public ScadenzeDocFinanceDTO setControvalore(String controvalore) { + this.controvalore = controvalore; + return this; + } + + public String getDocumentType() { + return documentType; + } + + public ScadenzeDocFinanceDTO setDocumentType(String documentType) { + this.documentType = documentType; + return this; + } + + public String getType() { + return type; + } + + public ScadenzeDocFinanceDTO setType(String type) { + this.type = type; + return this; + } + + public String getRating() { + return rating; + } + + public ScadenzeDocFinanceDTO setRating(String rating) { + this.rating = rating; + return this; + } + + public String getDataScadenza() { + return dataScadenza; + } + + public ScadenzeDocFinanceDTO setDataScadenza(String dataScadenza) { + this.dataScadenza = dataScadenza; + return this; + } + + public String getDataValuta() { + return dataValuta; + } + + public ScadenzeDocFinanceDTO setDataValuta(String dataValuta) { + this.dataValuta = dataValuta; + return this; + } + + public String getBanca() { + return banca; + } + + public ScadenzeDocFinanceDTO setBanca(String banca) { + this.banca = banca; + return this; + } + + public String getRbn() { + return rbn; + } + + public ScadenzeDocFinanceDTO setRbn(String rbn) { + this.rbn = rbn; + return this; + } + + public String getBloccata() { + return bloccata; + } + + public ScadenzeDocFinanceDTO setBloccata(String bloccata) { + this.bloccata = bloccata; + return this; + } + + public String getVoce() { + return voce; + } + + public ScadenzeDocFinanceDTO setVoce(String voce) { + this.voce = voce; + return this; + } + + public String getPianoDeiConti() { + return pianoDeiConti; + } + + public ScadenzeDocFinanceDTO setPianoDeiConti(String pianoDeiConti) { + this.pianoDeiConti = pianoDeiConti; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public ScadenzeDocFinanceDTO setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getAbi() { + return abi; + } + + public ScadenzeDocFinanceDTO setAbi(String abi) { + this.abi = abi; + return this; + } + + public String getCab() { + return cab; + } + + public ScadenzeDocFinanceDTO setCab(String cab) { + this.cab = cab; + return this; + } + + public String getBlank() { + return blank; + } + + public ScadenzeDocFinanceDTO setBlank(String blank) { + this.blank = blank; + return this; + } + + public String getProvenienza() { + return provenienza; + } + + public ScadenzeDocFinanceDTO setProvenienza(String provenienza) { + this.provenienza = provenienza; + return this; + } + + public String getSezione() { + return sezione; + } + + public ScadenzeDocFinanceDTO setSezione(String sezione) { + this.sezione = sezione; + return this; + } + + public String getCambioDellaGestione() { + return cambioDellaGestione; + } + + public ScadenzeDocFinanceDTO setCambioDellaGestione(String cambioDellaGestione) { + this.cambioDellaGestione = cambioDellaGestione; + return this; + } + + public String getNumeroDocOrigine() { + return numeroDocOrigine; + } + + public ScadenzeDocFinanceDTO setNumeroDocOrigine(String numeroDocOrigine) { + this.numeroDocOrigine = numeroDocOrigine; + return this; + } + + public String getChiaveCoge() { + return chiaveCoge; + } + + public ScadenzeDocFinanceDTO setChiaveCoge(String chiaveCoge) { + this.chiaveCoge = chiaveCoge; + return this; + } + + public String getAzienda() { + return azienda; + } + + public ScadenzeDocFinanceDTO setAzienda(String azienda) { + this.azienda = azienda; + return this; + } + + public String getFlegRaggruppaEffetti() { + return flegRaggruppaEffetti; + } + + public ScadenzeDocFinanceDTO setFlegRaggruppaEffetti(String flegRaggruppaEffetti) { + this.flegRaggruppaEffetti = flegRaggruppaEffetti; + return this; + } + + public String getNumeroCc() { + return numeroCc; + } + + public ScadenzeDocFinanceDTO setNumeroCc(String numeroCc) { + this.numeroCc = numeroCc; + return this; + } + + public String getCin() { + return cin; + } + + public ScadenzeDocFinanceDTO setCin(String cin) { + this.cin = cin; + return this; + } + + public String getPianoDeiContiDiPagamento() { + return pianoDeiContiDiPagamento; + } + + public ScadenzeDocFinanceDTO setPianoDeiContiDiPagamento(String pianoDeiContiDiPagamento) { + this.pianoDeiContiDiPagamento = pianoDeiContiDiPagamento; + return this; + } + + public String getPaese() { + return paese; + } + + public ScadenzeDocFinanceDTO setPaese(String paese) { + this.paese = paese; + return this; + } + + public String getChkPaese() { + return chkPaese; + } + + public ScadenzeDocFinanceDTO setChkPaese(String chkPaese) { + this.chkPaese = chkPaese; + return this; + } + + public String getDataDocumento() { + return dataDocumento; + } + + public ScadenzeDocFinanceDTO setDataDocumento(String dataDocumento) { + this.dataDocumento = dataDocumento; + return this; + } + + public String getNote() { + return note; + } + + public ScadenzeDocFinanceDTO setNote(String note) { + this.note = note; + return this; + } + + public String getCodBic() { + return codBic; + } + + public ScadenzeDocFinanceDTO setCodBic(String codBic) { + this.codBic = codBic; + return this; + } + + public String getIban() { + return iban; + } + + public ScadenzeDocFinanceDTO setIban(String iban) { + this.iban = iban; + return this; + } + + public String getTipoCodice() { + return tipoCodice; + } + + public ScadenzeDocFinanceDTO setTipoCodice(String tipoCodice) { + this.tipoCodice = tipoCodice; + return this; + } + + public String getCodiceRiferimento() { + return codiceRiferimento; + } + + public ScadenzeDocFinanceDTO setCodiceRiferimento(String codiceRiferimento) { + this.codiceRiferimento = codiceRiferimento; + return this; + } + + public String getStato_conf() { + return stato_conf; + } + + public ScadenzeDocFinanceDTO setStato_conf(String stato_conf) { + this.stato_conf = stato_conf; + return this; + } + + public String getBancaFinConf() { + return bancaFinConf; + } + + public ScadenzeDocFinanceDTO setBancaFinConf(String bancaFinConf) { + this.bancaFinConf = bancaFinConf; + return this; + } + + public String getRbnFinCnf() { + return rbnFinCnf; + } + + public ScadenzeDocFinanceDTO setRbnFinCnf(String rbnFinCnf) { + this.rbnFinCnf = rbnFinCnf; + return this; + } + + public String getBancaEstera() { + return bancaEstera; + } + + public ScadenzeDocFinanceDTO setBancaEstera(String bancaEstera) { + this.bancaEstera = bancaEstera; + return this; + } + + public String getSportelloBancaEstera() { + return sportelloBancaEstera; + } + + public ScadenzeDocFinanceDTO setSportelloBancaEstera(String sportelloBancaEstera) { + this.sportelloBancaEstera = sportelloBancaEstera; + return this; + } + + public String getCodiceMandato() { + return codiceMandato; + } + + public ScadenzeDocFinanceDTO setCodiceMandato(String codiceMandato) { + this.codiceMandato = codiceMandato; + return this; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/export/ScadenzeExporter.java b/ems-engine/src/main/java/it/integry/ems/contabil/export/ScadenzeExporter.java index 22f77e2b11..c13a1e2a68 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/export/ScadenzeExporter.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/export/ScadenzeExporter.java @@ -1,8 +1,10 @@ package it.integry.ems.contabil.export; +import it.integry.ems.contabil.export.services.ScadenzeExporterService; import it.integry.ems.export.base.BaseEntityExporter; import it.integry.ems.export.base.EntityExportResponse; import it.integry.ems.export.base.IEntityExporter; +import org.springframework.web.context.ContextLoader; public class ScadenzeExporter extends BaseEntityExporter implements IEntityExporter { @@ -12,10 +14,12 @@ public class ScadenzeExporter extends BaseEntityExporter implements IEntityExpor ScadenzeExporterFormat format = ScadenzeExporterFormat.fromString(super.format); EntityExportResponse entityExportResponse = null; + ScadenzeExporterService scadenzeExporterService = ContextLoader.getCurrentWebApplicationContext().getBean(ScadenzeExporterService.class); + if (format != null) { switch (format) { case DOCFINANCE: - + entityExportResponse = scadenzeExporterService.exportDocFinance(super.type, super.format); break; default: throw new Exception("Tipo " + format + " non supportato"); diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/export/services/ScadenzeExporterService.java b/ems-engine/src/main/java/it/integry/ems/contabil/export/services/ScadenzeExporterService.java new file mode 100644 index 0000000000..e3f65a89ef --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/contabil/export/services/ScadenzeExporterService.java @@ -0,0 +1,117 @@ +package it.integry.ems.contabil.export.services; + +import it.integry.ems.contabil.dto.ScadenzeDocFinanceDTO; +import it.integry.ems.export.base.EntityExportResponse; +import it.integry.ems.file_formatter.txt.TxtMapper; +import it.integry.ems.response.FileItem; +import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; +import it.integry.ems_model.utility.UtilityDB; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@Scope("request") +public class ScadenzeExporterService { + + @Autowired + private MultiDBTransactionManager multiDBTransactionManager; + + public EntityExportResponse> exportDocFinance(String type, String format) throws Exception { + EntityExportResponse> entityExportResponse = new EntityExportResponse<>(); + entityExportResponse.setResponse(new ArrayList<>()); + + String sql = "SELECT ISNULL(gtb_tipi_paga_intercode.intercode, ctb_scad.cod_paga) /*leggere da tabella di trascodifica*/ AS 'tipo_pagamento'\n" + + " , REPLACE(CAST(\n" + + " FORMAT(\n" + + " (ctb_scad.imp_dare + ctb_scad.imp_avere),\n" + + " IIF(ctb_part.tipo_partita = 0, '-', '+') + '00000000000.000'\n" + + " ) AS VARCHAR), '.',\n" + + " ',') AS 'importo'\n" + + " , gtb_divi.cod_divi AS 'divisa_scadenza'\n" + + " , REPLACE(CAST(FORMAT(ctb_part.cambio, '00000.000') AS VARCHAR), '.',\n" + + " ',') AS 'cambio'\n" + + " , REPLACE(CAST(\n" + + " FORMAT(\n" + + " ((ctb_scad.imp_dare + ctb_scad.imp_avere) / ctb_part.cambio),\n" + + " IIF(ctb_part.tipo_partita = 0, '-', '+') + '00000000000.000'\n" + + " ) AS VARCHAR), '.',\n" + + " ',') AS 'controvalore'\n" + + " , '00001' AS 'type'\n" + + " , 'N' AS 'raiting'\n" + + " , REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_scadenza'\n" + + " , REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_valuta'\n" + + " , LEFT(gtb_banc_azi_intercode.intercode, 8) AS 'banca'\n" + + " , RIGHT(gtb_banc_azi_intercode.intercode, 4) AS 'rbn'\n" + + " , 'N' AS 'bloccata'\n" + + " , IIF(ctb_part.tipo_anag = 'F', '0201', '0101') AS 'voce'\n" + + " , gtb_anag.diacod AS 'piano_dei_conti'\n" + + " , gtb_anag.rag_soc AS 'descrizione'\n" + + " , ctb_part.cod_abi AS 'ABI'\n" + + " , ctb_part.cod_cab AS 'CAB'\n" + + " , '' AS 'blank'\n" + + " , 'CO' AS 'provenienza'\n" + + " , '' AS 'sezione'\n" + + " , '' AS 'cambio_della_gestione'\n" + + " , CAST(ctb_part.num_doc AS VARCHAR) AS 'numero_doc_origine'\n" + + " , ISNULL(CTB_SCAD.INTERCODE,\n" + + " RIGHT(CAST(ctb_part.anno_part AS VARCHAR), 2) +\n" + + " IIF(ctb_part.tipo_anag = 'c', FORMAT(ctb_part.num_doc, REPLICATE('0', 5)),\n" + + " CAST(ctb_part.num_doc AS VARCHAR) + SPACE(5 - LEN(CAST(ctb_part.num_doc AS VARCHAR)))) +\n" + + " FORMAT(ctb_scad.id_riga, '000') +\n" + + " FORMAT(DENSE_RANK() OVER (PARTITION BY ctb_part.cod_anag, ctb_part.num_doc ORDER BY ctb_scad.data_doc),\n" + + " '000')) AS 'chiave_coge'\n" + + " , 'ROSSOGARGA' AS 'azienda'\n" + + " , ctb_part.iban AS 'numero_cc'\n" + + " , SUBSTRING(ctb_part.iban, 5, 1) AS 'cin'\n" + + " , LEFT(ctb_part.iban, 2) AS 'paese'\n" + + " , SUBSTRING(ctb_part.iban, 3, 2) AS 'chk_paese'\n" + + " , REPLACE(CONVERT(VARCHAR(10), ctb_part.data_doc, 103), '/', '') AS 'data_documento'\n" + + " , ctb_parr.des_agg AS 'note'\n" + + " , IIF(vtb_clie.cod_anag IS NULL, atb_forn.cod_bic, vtb_clie.cod_bic) AS 'cod_bic'\n" + + " , ctb_part.iban\n" + + "FROM ctb_part\n" + + " INNER JOIN ctb_scad ON ctb_part.tipo_anag = ctb_scad.tipo_anag AND ctb_part.cod_anag = ctb_scad.cod_anag AND\n" + + " ctb_part.anno_part = ctb_scad.anno_part AND ctb_part.ser_doc = ctb_scad.ser_doc AND\n" + + " ctb_part.num_doc = ctb_scad.num_doc\n" + + " INNER JOIN gtb_anag ON ctb_part.cod_anag = gtb_anag.cod_anag\n" + + " INNER JOIN gtb_paga ON ctb_scad.cod_paga = gtb_paga.cod_paga\n" + + " LEFT OUTER JOIN gtb_tipi_paga_intercode ON gtb_paga.tipo_paga = gtb_tipi_paga_intercode.tipo_paga\n" + + " LEFT OUTER JOIN gtb_banc ON ctb_part.cod_banc = gtb_banc.cod_banc\n" + + " LEFT OUTER JOIN gtb_banc_azi ON gtb_banc.cod_banc = gtb_banc_azi.cod_banc\n" + + " LEFT OUTER JOIN gtb_banc_azi_intercode ON gtb_banc_azi.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" + + " gtb_banc_azi_intercode.formato = 'docfi'\n" + + " LEFT OUTER JOIN vtb_clie ON ctb_part.cod_anag = vtb_clie.cod_anag AND ctb_part.tipo_anag = 'C'\n" + + " LEFT OUTER JOIN atb_forn ON ctb_part.cod_anag = atb_forn.cod_anag AND ctb_part.tipo_anag = 'F'\n" + + " INNER JOIN gtb_divi ON ctb_part.cod_divi = gtb_divi.cod_divi\n" + + " OUTER APPLY (SELECT TOP 1 ctb_parr.*\n" + + " FROM ctb_parr\n" + + " INNER JOIN ctb_caus\n" + + " ON ctb_parr.cod_ccau = ctb_caus.cod_ccau AND ctb_caus.azione_su_partita = 0\n" + + " WHERE ctb_part.tipo_anag = ctb_parr.tipo_anag\n" + + " AND ctb_part.cod_anag = ctb_parr.cod_anag\n" + + " AND ctb_part.anno_part = ctb_parr.anno_part\n" + + " AND ctb_part.ser_doc = ctb_parr.ser_doc\n" + + " AND ctb_part.num_doc = ctb_parr.num_doc\n" + + " ORDER BY ctb_parr.data_cmov) ctb_parr\n" + + "WHERE ctb_scad.data_pag IS NULL"; + List scadenzeDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ScadenzeDocFinanceDTO.class); + + TxtMapper txtMapper = new TxtMapper() + .setFieldsSplitChar(""); + String fileContent = txtMapper.serialize(scadenzeDocFinance); + + if (fileContent != null) { + String filename = "scadenze.txt"; + FileItem returnFile = new FileItem(filename, fileContent, "txt"); + entityExportResponse.getResponse().add(returnFile); + + return entityExportResponse; + } + + return null; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/MrpDailyMaterialReqService.java b/ems-engine/src/main/java/it/integry/ems/production/service/MrpDailyMaterialReqService.java index e2b314b590..d638d71e2e 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/MrpDailyMaterialReqService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/MrpDailyMaterialReqService.java @@ -6,9 +6,11 @@ import com.annimon.stream.Stream; import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.production.dto.MRP.*; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; -import it.integry.ems_model.entity.CtbScad; import it.integry.ems_model.service.SetupGest; -import it.integry.ems_model.utility.*; +import it.integry.ems_model.utility.UtilityBigDecimal; +import it.integry.ems_model.utility.UtilityDB; +import it.integry.ems_model.utility.UtilityHashMap; +import it.integry.ems_model.utility.UtilityString; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -104,7 +106,8 @@ public class MrpDailyMaterialReqService { int id = 0; logger.debug(MrpDailyMaterialReqService.class.getSimpleName() + " - articoli caricati: " + datiArt.size()); - Map> listArticoli = Stream.of(mrpDailyMaterialReqDetDTO).collect(Collectors.groupingBy(MrpDailyMaterialReqDetDTO::getCodMart)); + Map> listArticoli = Stream.of(mrpDailyMaterialReqDetDTO) + .collect(Collectors.groupingBy(MrpDailyMaterialReqDetDTO::getCodMart)); for (MrpDailyMaterialReqDTO art : datiArt) { boolean inclusiSospesi = getSetupIncluseSospesi(art.getCodMgrp(), setupGruppi); diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java index eb9800a7fb..41f333eb75 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java @@ -70,7 +70,6 @@ public class ExchangeColliImportService { MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO, ExchangeImportSchemaManagerService.SchemaType colliSchemaType) throws Exception { - boolean useTempTable = true; try { @@ -91,88 +90,108 @@ public class ExchangeColliImportService { testataTableName = null; } - List exchangeImportedMtbColts = importColliLavorazione( - exchangeMultiDb.getPrimaryConnection(), - UtilityLocalDate.getNow().minusWeeks(1), - UtilityLocalDate.getNow(), - true, false, testataTableName, righeTableName); + exchangeImportDataManagerService.prepareData(exchangeMultiDb.getPrimaryConnection(), useTempTable, exchangeImportSchemaManagerService.getTablesBySchemaType(colliSchemaType)); - List exchangeUpdatedMtbColts = importColliLavorazione( - exchangeMultiDb.getPrimaryConnection(), - UtilityLocalDate.getNow().minusWeeks(1), - UtilityLocalDate.getNow(), - false, useTempTable, testataTableName, righeTableName); + AtomicInteger dataCount = new AtomicInteger(0); + AtomicInteger importedCounter = new AtomicInteger(0); - List importedMtbColts = exchangeImportedMtbColts.stream() - .map(x -> (EquatableEntityInterface) x) - .collect(Collectors.toList()); + LocalDate startDate = LocalDate.of(2024, 7, 1); - List updatedMtbColts = exchangeUpdatedMtbColts.stream() - .map(x -> (EquatableEntityInterface) x) - .collect(Collectors.toList()); + Result firstErrorObjectIfPresent = null; - List allMtbColts = exchangeImportDataManagerService - .runSync(MtbColt.class, importedMtbColts, updatedMtbColts); + while (startDate.isBefore(UtilityLocalDate.getNow())) { - allMtbColts.forEach(x -> { - x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()); - ((MtbColt) x).getMtbColr().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation())); - }); + final LocalDate tempStartDate = startDate; + final LocalDate tempEndDate = startDate; + startDate = startDate.plusDays(1); - AtomicInteger importedCounter = new AtomicInteger(); + List exchangeImportedMtbColts = importColliLavorazione( + exchangeMultiDb.getPrimaryConnection(), + tempStartDate, + tempEndDate, + true, false, testataTableName, righeTableName); - List calls = new ArrayList<>(); - for (EquatableEntityInterface dataToSave : allMtbColts) { + List exchangeUpdatedMtbColts = importColliLavorazione( + exchangeMultiDb.getPrimaryConnection(), + tempStartDate, + tempEndDate, + false, useTempTable, testataTableName, righeTableName); - calls.add(() -> { + List importedMtbColts = exchangeImportedMtbColts.stream() + .map(x -> (EquatableEntityInterface) x) + .collect(Collectors.toList()); - logger.debug("Importati {} colli di {}", importedCounter.incrementAndGet(), allMtbColts.size()); - try (MultiDBTransactionManager exchangeMultiDbThread = new MultiDBTransactionManager(exchangeMultiDb.getPrimaryDatasource().getProfile(), false); - MultiDBTransactionManager internalMultiDbThread = new MultiDBTransactionManager(internalMultiDb.getPrimaryDatasource().getProfile(), false)) { + List updatedMtbColts = exchangeUpdatedMtbColts.stream() + .map(x -> (EquatableEntityInterface) x) + .collect(Collectors.toList()); - MtbColt mtbColtToSave = (MtbColt) dataToSave; - if (mtbColtToSave.hasDocument() && mtbColtToSave.getOperation() == OperationType.DELETE) { - MtbColt mtbColtRemoveDocument = (MtbColt) mtbColtToSave.clone(); - mtbColtRemoveDocument.setMtbColr(new ArrayList<>()) - .setCodDtip(EmsRestConstants.NULL) - .setSerDoc(EmsRestConstants.NULL) - .setDataDoc(EmsRestConstants.DATE_NULL) - .setOperation(OperationType.UPDATE); + List allMtbColts = exchangeImportDataManagerService + .runSync(MtbColt.class, importedMtbColts, updatedMtbColts); - entityProcessor.processEntity(mtbColtRemoveDocument, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO); + dataCount.addAndGet(allMtbColts.size()); - mtbColtToSave.setCodDtip(EmsRestConstants.NULL) - .setSerDoc(EmsRestConstants.NULL) - .setDataDoc(EmsRestConstants.DATE_NULL); - } - - entityProcessor.processEntity(mtbColtToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO); - singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, testataTableName, useTempTable); - singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, righeTableName, useTempTable); - - internalMultiDbThread.commitAll(); - exchangeMultiDbThread.commitAll(); - } catch (Exception ex) { - MtbColt collo = (MtbColt) dataToSave; - logger.error("Errore durante l'importazione del collo [num: " + collo.getNumCollo() + ", " + - "data: " + UtilityLocalDate.formatDate(collo.getDataCollo(), CommonConstants.DATE_FORMAT_DMY) + ", " + - "serie: " + collo.getSerCollo() + ", " + - "gestione: " + collo.getGestione() + "]", - ex); - - throw ex; - } + allMtbColts.forEach(x -> { + x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()); + ((MtbColt) x).getMtbColr().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation())); }); + + + List calls = new ArrayList<>(); + for (EquatableEntityInterface dataToSave : allMtbColts) { + + calls.add(() -> { + + logger.debug("Importati {} colli di {}", importedCounter.incrementAndGet(), dataCount); + try (MultiDBTransactionManager exchangeMultiDbThread = new MultiDBTransactionManager(exchangeMultiDb.getPrimaryDatasource().getProfile(), false); + MultiDBTransactionManager internalMultiDbThread = new MultiDBTransactionManager(internalMultiDb.getPrimaryDatasource().getProfile(), false)) { + + MtbColt mtbColtToSave = (MtbColt) dataToSave; + if (mtbColtToSave.hasDocument() && mtbColtToSave.getOperation() == OperationType.DELETE) { + MtbColt mtbColtRemoveDocument = (MtbColt) mtbColtToSave.clone(); + mtbColtRemoveDocument.setMtbColr(new ArrayList<>()) + .setCodDtip(EmsRestConstants.NULL) + .setSerDoc(EmsRestConstants.NULL) + .setDataDoc(EmsRestConstants.DATE_NULL) + .setNumDoc(EmsRestConstants.INTEGER_NULL) + .setOperation(OperationType.UPDATE); + + entityProcessor.processEntity(mtbColtRemoveDocument, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO); + + mtbColtToSave.setCodDtip(null) + .setSerDoc(null) + .setDataDoc(null) + .setNumDoc(null); + } + + entityProcessor.processEntity(mtbColtToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO); + singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, testataTableName, useTempTable); + singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, righeTableName, useTempTable); + + internalMultiDbThread.commitAll(); + exchangeMultiDbThread.commitAll(); + } catch (Exception ex) { + MtbColt collo = (MtbColt) dataToSave; + logger.error("Errore durante l'importazione del collo [num: " + collo.getNumCollo() + ", " + + "data: " + UtilityLocalDate.formatDate(collo.getDataCollo(), CommonConstants.DATE_FORMAT_DMY) + ", " + + "serie: " + collo.getSerCollo() + ", " + + "gestione: " + collo.getGestione() + "]", + ex); + + throw ex; + } + }); + } + + final ArrayList> results = UtilityThread.executeParallel(calls); + + firstErrorObjectIfPresent = results.stream() + .filter(x -> x instanceof Result.Error) + .findFirst() + .orElse(null); + } - final ArrayList> results = UtilityThread.executeParallel(calls); - - final Result firstErrorObjectIfPresent = results.stream() - .filter(x -> x instanceof Result.Error) - .findFirst() - .orElse(null); - if (firstErrorObjectIfPresent != null) throw ((Result.Error) firstErrorObjectIfPresent).getError(); } finally { if (useTempTable) @@ -181,7 +200,8 @@ public class ExchangeColliImportService { } private List importColliLavorazione(Connection connection, - LocalDate minDate, LocalDate maxDate, boolean retrieveAlreadyImported, boolean useTempTable, String testataTableName, String righeTableName) throws Exception { + LocalDate minDate, LocalDate maxDate, boolean retrieveAlreadyImported, boolean useTempTable, String + testataTableName, String righeTableName) throws Exception { String mtbColtLavOriginalName = testataTableName; String mtbColtLavTableName = mtbColtLavOriginalName + (useTempTable ? "_tmp" : ""); @@ -189,16 +209,6 @@ public class ExchangeColliImportService { String mtbColrLavTableName = mtbColrLavOriginalName + (useTempTable ? "_tmp" : ""); - if (useTempTable) { - UtilityDB.executeStatement(connection, - "INSERT INTO " + mtbColtLavTableName + - " SELECT * FROM " + mtbColtLavOriginalName, - "INSERT INTO " + mtbColrLavTableName + - " SELECT * FROM " + mtbColrLavOriginalName - ); - } - - final List mtbColtLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbColt.class, mtbColtLavTableName, Query.format("data_collo BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); @@ -222,7 +232,8 @@ public class ExchangeColliImportService { } - private void singleUpdateImported(Connection connection, MtbColt importedDataKey, String tableName, boolean useTempTable) throws Exception { + private void singleUpdateImported(Connection connection, MtbColt importedDataKey, String tableName, + boolean useTempTable) throws Exception { final HashMap importedKey = new HashMap() {{ put("data_collo", importedDataKey.getDataCollo()); put("ser_collo", importedDataKey.getSerCollo()); @@ -234,7 +245,8 @@ public class ExchangeColliImportService { } - public List getCertificati(String profileDb, String codAnag, LocalDate dataCert, String codMart, String codVdes, String partitaMag) throws Exception { + public List getCertificati(String profileDb, String codAnag, LocalDate dataCert, String + codMart, String codVdes, String partitaMag) throws Exception { try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileDb)) { diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java index c6b76d59d9..68ee31b5d3 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java @@ -12,10 +12,8 @@ import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.sql.Connection; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; +import java.sql.SQLException; +import java.util.*; import java.util.stream.Collectors; @SuppressWarnings({"rawtypes", "unchecked"}) @@ -23,6 +21,20 @@ import java.util.stream.Collectors; public class ExchangeImportDataManagerService { + public void prepareData(Connection connection, boolean useTempTable, String... tables) throws SQLException { + prepareData(connection, useTempTable, Arrays.asList(tables)); + } + + public void prepareData(Connection connection, boolean useTempTable, List tables) throws SQLException { + if (useTempTable) { + final List sqls = tables.stream() + .map(x -> String.format("INSERT INTO %s_tmp SELECT * FROM %s", x, x)) + .collect(Collectors.toList()); + + UtilityDB.executeStatement(connection, sqls); + } + } + public List retrieveDataFromExchange(Connection connection, Class clazz, String tableName, diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportSchemaManagerService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportSchemaManagerService.java index 3a22c21b76..c0fd538b76 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportSchemaManagerService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportSchemaManagerService.java @@ -73,6 +73,10 @@ public class ExchangeImportSchemaManagerService { put(SchemaType.ValorizzazioneCertificati, Collections.singletonList("valorizzazione_certificati")); }}; + public List getTablesBySchemaType(SchemaType schemaType) { + return schemaToTableBinding.get(schemaType); + } + public void syncSchema(Connection connection, SchemaType schemaType, boolean createTempTablesToo) throws Exception { SQLServerDBSchemaManager sqlServerDBSchemaManager = new SQLServerDBSchemaManager(connection); diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java index 09a1218197..d756ab3d1d 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java @@ -1,6 +1,5 @@ package it.integry.ems.system.exchange.service; -import it.integry.ems.expansion.RunnableThrowable; import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.production.agribook.AgribookFieldService; import it.integry.ems.production.agribook.model.AgribookNewFieldRequestDTO; @@ -23,7 +22,10 @@ import org.springframework.stereotype.Service; import java.sql.Connection; import java.time.LocalDate; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -50,11 +52,15 @@ public class ExchangeOrdiniImportService { public void importOrdiniLavorazione(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception { + ExchangeImportSchemaManagerService.SchemaType schemaType = ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione; + boolean useTempTable = true; try { - exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione, useTempTable); + exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), schemaType, useTempTable); + exchangeImportDataManagerService.prepareData(exchangeMultiDb.getPrimaryConnection(), useTempTable, + exchangeImportSchemaManagerService.getTablesBySchemaType(schemaType)); final List exchangeImportedMtbColts = importOrdiniLavorazione( exchangeMultiDb.getPrimaryConnection(), @@ -93,17 +99,13 @@ public class ExchangeOrdiniImportService { ); final Exception[] firstExceptionToThrow = {null}; - - final AtomicInteger[] importedCounter = {new AtomicInteger()}; + final AtomicInteger importedCounter = new AtomicInteger(); for (List listToProcess : splittedOrders) { - List calls = new ArrayList<>(); - for (EquatableEntityInterface dataToSave : listToProcess) { - //calls.add(() -> { - logger.debug("Importati {} ordini di {}", importedCounter[0].incrementAndGet(), allData.size()); + logger.debug("Importati {} ordini di {}", importedCounter.incrementAndGet(), allData.size()); try { entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO); @@ -118,15 +120,12 @@ public class ExchangeOrdiniImportService { logger.error("Errore durante l'importazione dell'ordine [num: " + order.getNumOrd() + "," + "data: " + order.getDataOrd() + "," + "gestione: " + order.getGestione() + "]", ex); + internalMultiDb.rollbackAll(); - //throw ex; + exchangeMultiDb.rollbackAll(); } - //}); } - - - //UtilityThread.executeParallel(calls); } if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0]; @@ -145,15 +144,6 @@ public class ExchangeOrdiniImportService { String dtbOrdrTableName = dtbOrdrOriginalTableName + (useTempTable ? "_tmp" : ""); - if (useTempTable) { - UtilityDB.executeStatement(connection, - "INSERT INTO " + dtbOrdtTableName + - " SELECT * FROM " + dtbOrdtOriginalTableName, - "INSERT INTO " + dtbOrdrTableName + - " SELECT * FROM " + dtbOrdrOriginalTableName - ); - } - List dtbOrdtLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbOrdt.class, dtbOrdtTableName, Query.format("data_ord BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); diff --git a/ems-engine/src/main/java/it/integry/ems/system/export/services/anagrafiche/AnagraficaDocFinanceService.java b/ems-engine/src/main/java/it/integry/ems/system/export/services/anagrafiche/AnagraficaDocFinanceService.java index 103f5b1962..2aad6a5ce7 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/export/services/anagrafiche/AnagraficaDocFinanceService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/export/services/anagrafiche/AnagraficaDocFinanceService.java @@ -61,7 +61,7 @@ public class AnagraficaDocFinanceService { " LEFT OUTER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" + " LEFT OUTER JOIN gtb_banc_azi_intercode ON vtb_clie.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" + " gtb_banc_azi_intercode.formato = 'DOCFINANCE'\n" + - "WHERE (data_ins >= CAST(DATEADD(MONTH, -1, GETDATE()) AS DATE)\n" + + "WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" + " OR data_mod = CAST(GETDATE() AS DATE))\n" + "UNION ALL\n" + "SELECT 'ROSSOGARGA' AS azienda,\n" + @@ -91,7 +91,7 @@ public class AnagraficaDocFinanceService { " NULL AS cod_bic,\n" + " NULL AS voce_finanziaria\n" + "FROM ctb_cont\n" + - "WHERE (data_ins >= CAST(DATEADD(MONTH, -1, GETDATE()) AS DATE)\n" + + "WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" + " OR data_mod = CAST(GETDATE() AS DATE))"; List anagraficaDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AnagraficaDocFinanceDTO.class); @@ -100,7 +100,7 @@ public class AnagraficaDocFinanceService { String fileContent = txtMapper.serialize(anagraficaDocFinance); if (fileContent != null) { - String filename = String.format("Anagrafiche_%s.txt", UtilityDate.formatDate(new Date(), "ddMMyyyyHHmm")); + String filename = "anagrafiche.txt"; FileItem returnFile = new FileItem(filename, fileContent, "txt"); entityExportResponse.getResponse().add(returnFile);