Merge branch 'develop' into feature/export_documenti_intesa

This commit is contained in:
2025-04-23 13:04:04 +02:00
4 changed files with 114 additions and 36 deletions

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250423120529 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("CONSEGNA", "EMAIL", "ENABLE_EMAIL", "N",
"Attiva la notifica tramite mail delle bolle firmate", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250423120657 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("CONSEGNA", "EMAIL", "OGGETTO", null,
null, false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250423120811 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("CONSEGNA", "EMAIL", "MESSAGGIO", null,
null, false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -13,6 +13,7 @@ import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
@@ -39,6 +40,9 @@ public class ConSegnaService {
@Autowired
private MailService mailService;
@Autowired
private SetupGest setupGest;
public List<DatiClientiDTO> getDatiConsegne(ConSegnaRequestDataDTO consegnaRequestData) throws Exception {
String username = consegnaRequestData.getUsername();
Date minDataDoc = UtilityDate.isNull(consegnaRequestData.getMinDataDoc(), new Date());
@@ -375,46 +379,50 @@ public class ConSegnaService {
public void notifyUser(DatiConsegneDTO datiConsegna) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
boolean enable = setupGest.getSetupBoolean(conn, "CONSEGNA", "EMAIL", "ENABLE_EMAIL");
String subject = "";
String msgText = "";
if (enable){
String subject = setupGest.getSetup(conn, "CONSEGNA", "EMAIL", "OGGETTO");
String msgText = setupGest.getSetup(conn, "CONSEGNA", "EMAIL", "MESSAGGIO");
String sql = Query.format(
"SELECT e_mail\n" +
"FROM vtb_clie_pers_rif\n" +
" INNER JOIN stb_tipi_indirizzi ON stb_tipi_indirizzi.tipo_indirizzo = vtb_clie_pers_rif.tipo_indirizzo\n" +
"WHERE tipo_documento = %s\n" +
" AND cod_anag = %s",
datiConsegna.getCodDtip(),
datiConsegna.getCodAnag()
);
String elencoEmail = String.join(",", UtilityDB.executeSimpleQueryOnlyFirstColumn(conn, sql));
String sql = it.integry.ems_model.utility.Query.format(
"SELECT e_mail\n" +
"FROM vtb_clie_pers_rif\n" +
" INNER JOIN stb_tipi_indirizzi ON stb_tipi_indirizzi.tipo_indirizzo = vtb_clie_pers_rif.tipo_indirizzo\n" +
"WHERE tipo_documento = %s\n" +
" AND cod_anag = %s\n" +
" AND stb_tipi_indirizzi.tipo_indirizzo = 'UFFICIO ACQUISTI'\n" +
" AND ((:codVdes IS NULL AND cod_vdes IS NULL) OR (:codVdes IS NOT NULL AND ISNULL(cod_vdes, :codVdes) = :codVdes))",
datiConsegna.getCodDtip(), datiConsegna.getCodAnag()
).replace(":codVdes", UtilityDB.valueToString(datiConsegna.getCodVdes()));
String elencoEmail = String.join(",", UtilityDB.executeSimpleQueryOnlyFirstColumn(conn, sql));
sql = Query.format(
"SELECT TOP 1 data_doc,\n" +
" ser_doc,\n" +
" num_doc,\n" +
" cod_anag,\n" +
" cod_dtip,\n" +
" versione\n" +
"FROM dtb_doc_pdf\n" +
"WHERE cod_dtip = %s\n" +
" AND cod_anag = %s\n" +
" AND data_doc = %s\n" +
" AND num_doc = %s\n" +
" AND ser_doc = %s\n" +
" AND filename LIKE %s\n" +
"ORDER BY versione DESC",
datiConsegna.getCodDtip(), datiConsegna.getCodAnag(),
datiConsegna.getDataDoc(), datiConsegna.getNumDoc(),
datiConsegna.getSerDoc(), DocumentiIntesaExportService.SIGNED_PREFIX
);
DtbDocPdf dtbDocPdf = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, DtbDocPdf.class);
dtbDocPdf.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(dtbDocPdf, multiDBTransactionManager);
sql = Query.format(
"SELECT TOP 1 data_doc,\n" +
" ser_doc,\n" +
" num_doc,\n" +
" cod_anag,\n" +
" cod_dtip,\n" +
" versione\n" +
"FROM dtb_doc_pdf\n" +
"WHERE cod_dtip = %s\n" +
" AND cod_anag = %s\n" +
" AND data_doc = %s\n" +
" AND num_doc = %s\n" +
" AND ser_doc = %s\n" +
" AND filename LIKE %s\n" +
"ORDER BY versione DESC",
datiConsegna.getCodDtip(), datiConsegna.getCodAnag(),
datiConsegna.getDataDoc(), datiConsegna.getNumDoc(),
datiConsegna.getSerDoc(), DocumentiIntesaExportService.SIGNED_PREFIX
);
DtbDocPdf dtbDocPdf = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, DtbDocPdf.class);
dtbDocPdf.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(dtbDocPdf, multiDBTransactionManager);
if (!elencoEmail.isEmpty()) {
mailService.sendMail(null, null, elencoEmail, null, null, subject, msgText, false, new FileItem(dtbDocPdf.getFilename(), dtbDocPdf.getFilecontent()));
if (!elencoEmail.isEmpty()) {
mailService.sendMail(null, null, elencoEmail, null, null, subject, msgText, false, new FileItem(dtbDocPdf.getFilename(), dtbDocPdf.getFilecontent()));
}
}
}
}