diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240808102851.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240808102851.java new file mode 100644 index 0000000000..26d0ea877a --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240808102851.java @@ -0,0 +1,60 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240808102851 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + String value = null; + + if (isCustomerDb(IntegryCustomerDB.Gramm_Gramm)) { + value = String.join("|", + "laboratorio2@gruppomilo.it", + "magazzino.secco@gruppomilo.it", + "confezionamento.secco@gruppomilo.it", + "produzione1@gruppomilo.it", + "logistica@gruppomilo.it", + "produzione.secco@gruppomilo.it", + "ing.controllo@gruppomilo.it" + ); + } + + createSetup( + "MES", "MAIL", "INDIRIZZI_QUARANTENA", + value, "Lista di indirizzi mail divisi da | alla quale mandare i dati dei colli in quarantena.", + null, true + ); + + value = null; + + if (isCustomerDb(IntegryCustomerDB.Gramm_Gramm)) { + value = "

Gentile Utente, di seguito i riferimenti delle pedane che vanno posizionate in Quarantena (dep [codMdep]):

\n" + + "

\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "
Data colloNumero colloArticoloPartitaPZCartoniPosizione
[dataCollo][numCollo][articolo][partitaMag][qtaCol][numCnf][posizione]
"; + } + + createSetup( + "MES", "MAIL", "TESTO_MAIL_QUARANTENA", + value, "Contenuto della mail inviata durante la creazione di un collo in quarantena.", null + ); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/service/MailService.java b/ems-core/src/main/java/it/integry/ems/service/MailService.java index f6ecce631b..cbe5e152bf 100644 --- a/ems-core/src/main/java/it/integry/ems/service/MailService.java +++ b/ems-core/src/main/java/it/integry/ems/service/MailService.java @@ -22,6 +22,7 @@ import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.entity.StbEmail; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.utility.UtilityDB; +import it.integry.ems_model.utility.UtilityList; import it.integry.ems_model.utility.UtilityLocalDate; import it.integry.ems_model.utility.UtilityString; import it.integry.security.utility.CryptoUtils; @@ -202,6 +203,16 @@ public class MailService { replyToName, List emailFileAttachmentList, boolean requestDeliveryNotification, String deliveryNotificationTo) throws Exception { + return sendMailPrimary(multiDBTransactionManager, from, fromName, Arrays.asList(to.split(";")), Arrays.asList(cc.split(";")), Arrays.asList(ccn.split(";")), + subject, msgText, isHtml, isDebug, replyTo, replyToName, emailFileAttachmentList, requestDeliveryNotification, deliveryNotificationTo); + } + + public Message sendMailPrimary(MultiDBTransactionManager multiDBTransactionManager, String from, String + fromName, List listTo, List listCc, List ListCcn, + String subject, String msgText, Boolean isHtml, Boolean isDebug, String replyTo, String + replyToName, List emailFileAttachmentList, boolean requestDeliveryNotification, + String deliveryNotificationTo) throws + Exception { EmailFileSharerSettings fileSharerSettings = internalReadParameter(multiDBTransactionManager, from); @@ -216,21 +227,21 @@ public class MailService { fileSharerSettings.withFrom(fromName + "<" + from + ">"); } - if (!UtilityString.isNullOrEmpty(to)) { - for (String toSplitted : to.split(";")) { - fileSharerSettings.to(toSplitted); + if (!UtilityList.isNullOrEmpty(listTo)) { + for (String to : listTo) { + fileSharerSettings.to(to); } } - if (!UtilityString.isNullOrEmpty(cc)) { - for (String ccSplitted : cc.split(";")) { - fileSharerSettings.cc(ccSplitted); + if (!UtilityList.isNullOrEmpty(listCc)) { + for (String cc : listCc) { + fileSharerSettings.cc(cc); } } - if (!UtilityString.isNullOrEmpty(ccn)) { - for (String ccnSplitted : ccn.split(";")) { - fileSharerSettings.bcc(ccnSplitted); + if (!UtilityList.isNullOrEmpty(ListCcn)) { + for (String ccn : ListCcn) { + fileSharerSettings.bcc(ccn); } } @@ -698,7 +709,7 @@ public class MailService { private String changeRepeatedText(String text, List dati, String nomeUtente) { StringBuilder stringBuilder = new StringBuilder(); - if (text.indexOf("{") > 0){ + if (text.indexOf("{") > 0) { String patternText = text.substring(text.indexOf("{") + 1, text.indexOf("}")); for (CustomEmailDTO.CustomEmailRowDTO var : dati) { stringBuilder.append(changeVariableParts(patternText, var, nomeUtente) + CommonConstants.A_CAPO); diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/MesProductionServiceV2.java b/ems-engine/src/main/java/it/integry/ems/production/service/MesProductionServiceV2.java index 81360884cc..86818ec16b 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/MesProductionServiceV2.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/MesProductionServiceV2.java @@ -15,10 +15,8 @@ import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.production.dto.*; import it.integry.ems.report.dto.JasperDTO; import it.integry.ems.report.dto.PairsDTO; -import it.integry.ems.service.EntityProcessor; -import it.integry.ems.service.HttpRestWrapper; -import it.integry.ems.service.PrinterService; -import it.integry.ems.service.ReportProcessor; +import it.integry.ems.service.*; +import it.integry.ems.service.dto.MailTemplateDataDTO; import it.integry.ems.service.exception.EmptyReportException; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityEntity; @@ -80,6 +78,12 @@ public class MesProductionServiceV2 { @Autowired private ProductionWarehouseService productionWarehouseService; + @Autowired + private MailService mailService; + + @Autowired + private MailTemplateService mailTemplateService; + public BasePanelAnswerDTO callSupervisorServiceGET(String serviceIp, int servicePort, String serviceName, HashMap queryParams) throws Exception { String url = String.format("http://%s:%d/%s", serviceIp, servicePort, serviceName); StringBuilder srb = new StringBuilder(); @@ -1021,6 +1025,40 @@ public class MesProductionServiceV2 { entityProcessor.processEntity(mtbColtToInsert, true, multiDBTransactionManager); + if (dto.isSegnaQuarantena()) { + String indirizziQuarantena = setupGest.getSetup("MES", "MAIL", "INDIRIZZI_QUARANTENA"); + + if (!UtilityString.isNullOrEmpty(indirizziQuarantena)) { + String testoMailQuarantena = setupGest.getSetup("MES", "MAIL", "TESTO_MAIL_QUARANTENA"); + + if (UtilityString.isNullOrEmpty(testoMailQuarantena)) { + throw new GestSetupNotFoundException("MES", "SETUP", "TESTO_MAIL_QUARANTENA"); + } + + testoMailQuarantena = testoMailQuarantena + .replace("[codMdep]", mtbColtToInsert.getCodMdep()) + .replace("[dataCollo]", UtilityLocalDate.formatDate(mtbColtToInsert.getDataCollo(), CommonConstants.DATE_FORMAT_DMY)) + .replace("[numCollo]", String.valueOf(mtbColtToInsert.getNumCollo())) + .replace("[articolo]", String.format("%s - %s", mtbAart.getCodMart(), mtbAart.getDescrizione())) + .replace("[partitaMag]", mtbColrToInsert.getPartitaMag()) + .replace("[qtaCol]", String.valueOf(mtbColrToInsert.getQtaCol())) + .replace("[numCnf]", String.valueOf(mtbColrToInsert.getNumCnf())) + .replace("[posizione]", mtbColtToInsert.getPosizione()); + + String subject = "Pedane in Quarantena"; + + final MailTemplateDataDTO mailTemplateData = new MailTemplateDataDTO() + .setTitle(subject) + .setContent(testoMailQuarantena); + + String htmlMailText = mailTemplateService.getGenericEmailTemplate(MailService.Level.INFO, mailTemplateData); + + // SEND + mailService.sendMailPrimary(multiDBTransactionManager, null, null, Arrays.asList(indirizziQuarantena.split("\\|")), null, null, + subject, htmlMailText, true, false, null, null, + null, false, null); + } + } return mtbColtToInsert; }