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" +
+ "| Data collo | Numero collo | Articolo | Partita | \n" +
+ "PZ | Cartoni | Posizione |
\n" +
+ "\n" +
+ "\n" +
+ "| [dataCollo] | [numCollo] | [articolo] | [partitaMag] | \n" +
+ "[qtaCol] | [numCnf] | [posizione] |
\n" +
+ "
";
+ }
+
+ 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;
}