aggiunto invio dell'errore

This commit is contained in:
2024-11-06 14:20:45 +01:00
parent 0fe15ae2eb
commit 0dc4a0a2a5

View File

@@ -1097,102 +1097,119 @@ public class VariazioniPvService {
public void exportByTipoReport(String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
List<String> tipiReport = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(tipoReport))
tipiReport.add(tipoReport);
else {
tipiReport.add("V"); //Variazioni
tipiReport.add("P"); //Promozioni
tipiReport.add("G"); //Griglie
}
boolean existVariazioni = false;
Date dataValidita = null;
if (variazioniPvInputDTO != null) {
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
dataValidita = variazioniPvInputDTO.getDataValidita();
}
if (dataValidita == null)
dataValidita = UtilityDate.RelativeDateTime(UtilityDate.getTodayWithoutTime(), 1);
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
List<RunnableArgsThrowable<Triple<String, String, List<VariazioniDettaglioDTO>>>> calls = new ArrayList<>();
for (VariazioniDTO pv : listini) {
for (String report : tipiReport) {
final Date finalDataValidita = dataValidita;
final String finalProfileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
calls.add(() -> {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(finalProfileDb)) {
String codVlis = pv.getCodVlis();
logger.debug(
String.format("Variazioni: Export [CodListino: %s, TipoReport: %s, Validità: %s]",
codVlis,
report,
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(finalDataValidita)));
return new Triple<>(codVlis, report, exportVariazioni(mdb, codVlis, finalDataValidita, report, variazioniPvInputDTO));
}
});
}
}
final ArrayList<Result<Triple<String, String, List<VariazioniDettaglioDTO>>>> results = UtilityThread.executeParallel(calls, 6);
final List<Triple<String, String, List<VariazioniDettaglioDTO>>> completedExports = results.stream()
.filter(x -> x instanceof Result.Success)
.map(x -> ((Result.Success<Triple<String, String, List<VariazioniDettaglioDTO>>>) x).getData())
.collect(Collectors.toList());
final List<Exception> generatedErrors = results.stream()
.filter(x -> x instanceof Result.Error)
.map(x -> ((Result.Error<?>) x).getError())
.collect(Collectors.toList());
String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), "VARIAZIONE PV", "XML_DIALOGO", "EMAIL_FOR_LOG");
if (!UtilityString.isNullOrEmpty(emailForLog)) {
StringBuilder sb = new StringBuilder();
for (Triple<String, String, List<VariazioniDettaglioDTO>> completedExport : completedExports) {
if(completedExport.getThird().isEmpty())
continue;
sb.append("Esportazione ")
.append(completedExport.getSecond())
.append(" punto vendita ")
.append(completedExport.getFirst())
.append(" (").append(completedExport.getThird().size()).append(" variazioni)")
.append(" avvenuta con successo\n\r");
try {
if (!UtilityString.isNullOrEmpty(tipoReport))
tipiReport.add(tipoReport);
else {
tipiReport.add("V"); //Variazioni
tipiReport.add("P"); //Promozioni
tipiReport.add("G"); //Griglie
}
if(!generatedErrors.isEmpty())
sb.append("\n\r\n\rErrori\n\r");
for (Exception generatedError : generatedErrors) {
sb.append("Messaggio errore: ")
.append(generatedError.getMessage())
.append("\n\r");
boolean existVariazioni = false;
Date dataValidita = null;
if (variazioniPvInputDTO != null) {
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
dataValidita = variazioniPvInputDTO.getDataValidita();
}
if (dataValidita == null)
dataValidita = UtilityDate.RelativeDateTime(UtilityDate.getTodayWithoutTime(), 1);
mailService.sendMailPrimary(multiDBTransactionManager,
null, null,
emailForLog, null, null,
"Esportazione variazioni", sb.toString(), false, false,
null, null, null,
false, null);
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
List<RunnableArgsThrowable<Triple<String, String, List<VariazioniDettaglioDTO>>>> calls = new ArrayList<>();
for (VariazioniDTO pv : listini) {
for (String report : tipiReport) {
final Date finalDataValidita = dataValidita;
final String finalProfileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
calls.add(() -> {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(finalProfileDb)) {
String codVlis = pv.getCodVlis();
logger.debug(
String.format("Variazioni: Export [CodListino: %s, TipoReport: %s, Validità: %s]",
codVlis,
report,
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(finalDataValidita)));
return new Triple<>(codVlis, report, exportVariazioni(mdb, codVlis, finalDataValidita, report, variazioniPvInputDTO));
}
});
}
}
final ArrayList<Result<Triple<String, String, List<VariazioniDettaglioDTO>>>> results = UtilityThread.executeParallel(calls, 6);
final List<Triple<String, String, List<VariazioniDettaglioDTO>>> completedExports = results.stream()
.filter(x -> x instanceof Result.Success)
.map(x -> ((Result.Success<Triple<String, String, List<VariazioniDettaglioDTO>>>) x).getData())
.collect(Collectors.toList());
final List<Exception> generatedErrors = results.stream()
.filter(x -> x instanceof Result.Error)
.map(x -> ((Result.Error<?>) x).getError())
.collect(Collectors.toList());
if (!UtilityString.isNullOrEmpty(emailForLog)) {
StringBuilder sb = new StringBuilder();
// for (Triple<String, String, List<VariazioniDettaglioDTO>> completedExport : completedExports) {
// if (completedExport.getThird().isEmpty())
// continue;
//
// sb.append("Esportazione ")
// .append(completedExport.getSecond())
// .append(" punto vendita ")
// .append(completedExport.getFirst())
// .append(" (").append(completedExport.getThird().size()).append(" variazioni)")
// .append(" avvenuta con successo\n\r");
// }
if (!generatedErrors.isEmpty())
sb.append("\n\r\n\rErrori\n\r");
for (Exception generatedError : generatedErrors) {
sb.append("Messaggio errore: ")
.append(generatedError.getMessage())
.append("\n\r");
}
mailService.sendMailPrimary(multiDBTransactionManager,
null, null,
emailForLog, null, null,
"Esportazione variazioni", sb.toString(), false, false,
null, null, null,
false, null);
}
}catch (Exception e ){
if (!UtilityString.isNullOrEmpty(emailForLog)) {
mailService.sendMailPrimary(multiDBTransactionManager,
null, null,
emailForLog, null, null,
"Errore nella procedura di esportazione variazioni", e.getMessage(), false, false,
null, null, null,
false, null);
} else {
mailService.sendSystemErrorLog(
"Errore nella procedura di esportazione variazioni " + multiDBTransactionManager.getPrimaryDatasource().getDbName(),
"Errore nella procedura di esportazione variazioni ",
"Errore nella procedura di esportazione variazioni",
e, new Date());
}
throw e;
}
}
private List<VariazioniDettaglioDTO> exportVariazioni(MultiDBTransactionManager multiDBTransactionManager, String codVlis, Date dataValidita, String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {