diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/AbstractCRMController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/AbstractCRMController.java index 9b91eabd..2d9e27a7 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/AbstractCRMController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/AbstractCRMController.java @@ -8,6 +8,8 @@ import java.util.List; import it.valueteam.gnp.dao.db.hb.*; import it.valueteam.gnp.dao.db.hb.crm.*; import it.valueteam.gnp.manager.*; +import it.valueteam.gnp.obj.*; + import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP; import it.valueteam.gnp.utility.*; import org.hibernate.StaleObjectStateException; @@ -34,12 +36,6 @@ import it.valueteam.gnp.exception.infobus.IBSendException; import it.valueteam.gnp.exception.xml.MalformedXmlException; import it.valueteam.gnp.helper.MultiLineaHelper; import it.valueteam.gnp.log.ProcessLogger; -import it.valueteam.gnp.obj.ApplicationCostants; -import it.valueteam.gnp.obj.CRMMap; -import it.valueteam.gnp.obj.ProcessMapper; -import it.valueteam.gnp.obj.StatoRichiestaDon; -import it.valueteam.gnp.obj.StatoRichiestaDonNatOlo; -import it.valueteam.gnp.obj.StatoRichiestaNPg35; import it.valueteam.gnp.obj.jms.NotificationMessage; import it.valueteam.gnp.obj.jms.NotificationMessageIF; import it.valueteam.gnp.obj.jms.UniqueIdNotificationMessage; @@ -50,6 +46,7 @@ import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController; import it.valueteam.gnp.systemcontroller.formatcontroller.crm.AbstractCRMFormatController; import it.valueteam.gnp.systemcontroller.formatcontroller.crm.CRMRFormatController; import it.valueteam.gnp.systemcontroller.monitoraggio.E2EContoller; +import tim.infobus.data.TID; import javax.transaction.UserTransaction; @@ -693,7 +690,11 @@ public abstract class AbstractCRMController extends SystemController implements break; case NotificationMessageIF.NotificationType_CRMB_ESITO_VERIFICA_DONOR_OUT_82: - inviaNotificaEsitoDonorOut82(messaggio); + inviaNotificaN9CRMBDonorOut82(messaggio); + break; + + case NotificationMessageIF.NotificationType_CRMB_DONOR_OUT_82: + inviaNotificaN10CRMBDonorOut82(messaggio); break; default: @@ -872,8 +873,7 @@ public abstract class AbstractCRMController extends SystemController implements "codice esito: " + codiceEsito + " - id richiesta: " + gnpCrmNotifyDonorOut.getCodiceRichiesta()); if (!codiceEsito.equals("0")) { String descrizione = respObj.getDescrizioneEsito(); - throw new Exception("esito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " - + gnpCrmNotifyDonorOut.getCodiceRichiesta()); + throw new Exception("esito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + gnpCrmNotifyDonorOut.getCodiceRichiesta()); } log.write("9999", "inviaNotificaDonorOut - FINE"); } @@ -2933,8 +2933,8 @@ public abstract class AbstractCRMController extends SystemController implements * @param messaggio * @throws Exception */ - protected void inviaNotificaEsitoDonorOut82(NotificationMessage messaggio) throws Exception { - log.write("9999", "inviaNotificaEsitoDonorOut82"); + protected void inviaNotificaN9CRMBDonorOut82(NotificationMessage messaggio) throws Exception { + log.write("9999", "inviaNotificaN9CRMBDonorOut82 - INIZIO - unique id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id()); GnpCrmNotifyDonorOutDAO dao = new GnpCrmNotifyDonorOutDAO(); Long uniqueId = ((UniqueIdNotificationMessage) messaggio).getUnique_id(); @@ -3013,7 +3013,7 @@ public abstract class AbstractCRMController extends SystemController implements eventReq.setCorpo(corpo); String xml = CrmXAO.getXmlFromSetEvDBCFXReq(eventReq); - log.write("9999", "xml: " + xml); + log.write("9999", "xml Request: " + xml); CRMCommunicationManager crmClient; if (CRMMap.PIATTAFORMA_B.equalsIgnoreCase(gnpCrmNotifyDonorOut.getSistComp())) { @@ -3023,17 +3023,334 @@ public abstract class AbstractCRMController extends SystemController implements } String respXml = crmClient.sendFileMultipart(xml); - SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility - .getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); + SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility.getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); String codiceEsito = respObj.getCodiceEsito(); - log.write("9999", - "codice esito: " + codiceEsito + " - id richiesta: " + gnpCrmNotifyDonorOut.getCodiceRichiesta()); + String descrizione = null; if (!codiceEsito.equals("0")) { - String descrizione = respObj.getDescrizioneEsito(); - throw new Exception("esito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " - + gnpCrmNotifyDonorOut.getCodiceRichiesta()); + descrizione = respObj.getDescrizioneEsito(); } - log.write("9999", "inviaNotificaEsitoDonorOut82 - FINE"); + log.write("9999", "esito Notifica N9 CRMB: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + gnpCrmNotifyDonorOut.getCodiceRichiesta()); + + log.write("9999", "inviaNotificaN9CRMBDonorOut82 - FINE - unique id:" + ((UniqueIdNotificationMessage) messaggio).getUnique_id()); } } + + private void inviaNotificaN10CRMBDonorOut82(NotificationMessage messaggio) throws Exception { + log.write("9999", "inviaNotificaN10CRMBDonorOut82 INIZIO - unique id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id()); + + GnpCrmNotifyDonorOutDAO gnpCrmNotifyDonorOutDao = new GnpCrmNotifyDonorOutDAO(); + GnpCrmNotifyDonorOut gnpCrmNotifyDonorOut = new GnpCrmNotifyDonorOutDAO().findById(((UniqueIdNotificationMessage) messaggio).getUnique_id()); + + if (gnpCrmNotifyDonorOut == null) + log.write("0010", "gnpCrmNotifyDonorOut nullo"); + + int daScodare = gnpCrmNotifyDonorOut.getDaScodare().intValue(); + + switch (daScodare) { + case 0: + case 3: + //se non ci sono record da aggiornare il messaggio e' gia' stato scodato + //e dunque viene solamente loggato l'id_richiesta + log.write("9999", "RICHIESTA GIA' SCODATA :[" + Func.getFieldDescription(gnpCrmNotifyDonorOut) + "]"); + break; + case 1: + log.write("9999", Func.getFieldDescription(gnpCrmNotifyDonorOut)); + + if (DBSSMap.EVENTO_PRENOTIFICA.equals(gnpCrmNotifyDonorOut.getTipoEvento())) { + invioNotificaN10PrenotificaCRMB(gnpCrmNotifyDonorOut); + log.write("9999", "invio [Prenotifica] a DBSS - id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id() + " - FINE"); + } else if (DBSSMap.EVENTO_ESPLETAMENTO.equals(gnpCrmNotifyDonorOut.getTipoEvento())) { + invioNotificaN10EspletamentoCRMB(gnpCrmNotifyDonorOut); + log.write("9999", "invio [Espletamento] a DBSS - id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id() + " - FINE"); + } + else if (DBSSMap.EVENTO_ESPLETAMENTO_KO.equals(gnpCrmNotifyDonorOut.getTipoEvento())) { + invioNotificaN10EspletamentoKOCRMB(gnpCrmNotifyDonorOut); + log.write("9999", "invio [Espletamento KO] a DBSS - id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id() + " - FINE"); + } else if (DBSSMap.EVENTO_ANNULLAMENTO.equals(gnpCrmNotifyDonorOut.getTipoEvento())) { + invioNotificaN10AnnullamentoCRMB(gnpCrmNotifyDonorOut); + log.write("9999", "invio [Annullamento] a DBSS - id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id() + " - FINE"); + } else { + log.write("9999", "inviaNotificaDbssDonorOut - unique id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id() + " - evento non riconosciuto"); + } + gnpCrmNotifyDonorOutDao.save(gnpCrmNotifyDonorOut); + } + log.write("9999", "inviaNotificaN10CRMBDonorOut82 - FINE - unique id: " + ((UniqueIdNotificationMessage) messaggio).getUnique_id()); + } + + + private void invioNotificaN10PrenotificaCRMB(GnpCrmNotifyDonorOut notifica) throws Exception { + log.write("9999", "invioNotificaN10PrenotificaCRMB INIZIO - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + + GnpRichiesteDonor82DAO richDonor82DAO = new GnpRichiesteDonor82DAO(); + GnpRichiesteDonor82 richiesta82 = richDonor82DAO.findById(notifica.getCodiceRichiesta()); + + String businessID = new TID().toString(); + String transactionID = new TID().toString(); + + notifica.setDaScodare((long) 0); + notifica.setDataInvioMessaggio(new Date()); + notifica.setBusinessId(businessID); + notifica.setTransactionId(transactionID); + + SetEventiDBCFXRequest eventReq = new SetEventiDBCFXRequest(); + Corpo corpo = new Corpo(); + + corpo.setDirectoryNumber(notifica.getDirectoryNumber()); + corpo.setCodiceRichiesta(notifica.getCodiceSessione()); + corpo.setTipoEvento(notifica.getTipoEvento()); + corpo.setDAC(new SimpleDateFormat(dimStrFormat).format(notifica.getDac())); + corpo.setAmbito(notifica.getAmbito()); + corpo.setIdentificativoOperatoreDonating(notifica.getIdOperatoreDonating()); + corpo.setDataInvioMessaggio(new SimpleDateFormat(dimStrFormat).format(new Date())); + corpo.setCodiceOrdineOLO(notifica.getCodiceOrdineOlo()); + if(!Func.isNull(notifica.getNote())) + corpo.setNote(notifica.getNote()); + + corpo.setFlagNP(notifica.getFlagNp()); + corpo.setDataOrdine(new SimpleDateFormat(dimStrFormat).format(notifica.getDataOrdine())); + if (notifica.getAggiuntivi() != null) { + String[] aggiuntivi = notifica.getAggiuntivi().split(";"); + ListaAggiuntivi tagDnAgg = new ListaAggiuntivi(); + for (String singleDn : aggiuntivi) { + ListaAggiuntiviItem numero = new ListaAggiuntiviItem(); + numero.setAggiuntivo(singleDn); + tagDnAgg.addListaAggiuntiviItem(numero); + } + corpo.setListaAggiuntivi(tagDnAgg); + } + corpo.setOAO(notifica.getCodiceOloRecipient()); + + // I dati di COS, COR e COW non vengono passati a CRMB, poiche' mancano nell'interfaccia esposta a DBCFX + + eventReq.setCorpo(corpo); + String xml = CrmXAO.getXmlFromSetEvDBCFXReq(eventReq); + log.write("9999", "xml Request: " + xml); + + CRMCommunicationManager crmClient; + if (CRMMap.PIATTAFORMA_B.equalsIgnoreCase(notifica.getSistComp())) { + crmClient = new CRMCommunicationManager("CRMB", "NOTIFICHE"); + } else { + crmClient = new CRMCommunicationManager("CRMR", "NOTIFICHE"); + } + String respXml = crmClient.sendFileMultipart(xml); + + SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility.getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); + String codiceEsito = respObj.getCodiceEsito(); + + if (!codiceEsito.equals("0")) { + String descrizione = respObj.getDescrizioneEsito(); + log.write("9999", "Notifica N10-Prenotifica CRMB - codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + throw new Exception("codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + } + log.write("9999", "Notifica N10-Prenotifica CRMB - codiceEsito: " + codiceEsito + " - id richiesta: " + notifica.getCodiceRichiesta()); + + // Aggiornamento della DAC nella tabella GNP_RICHIESTE_D82 a valle dell'evento di Prenotifica + if (richiesta82 != null && richiesta82.getDac() == null) { + log.write("9999", "Richiesta Del.82 Business - id richiesta: " + richiesta82.getIdRichiesta() + " set DAC:" + notifica.getDac().toString()); + richiesta82.setDac(notifica.getDac()); + richDonor82DAO.merge(richiesta82); + } + + log.write("9999", "invioNotificaN10PrenotificaCRMB FINE - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + } + + private void invioNotificaN10EspletamentoCRMB(GnpCrmNotifyDonorOut notifica) throws Exception { + log.write("9999", "invioNotificaN10EspletamentoCRMB - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + + String businessID = new TID().toString(); + String transactionID = new TID().toString(); + + notifica.setDaScodare((long) 0); + notifica.setDataInvioMessaggio(new Date()); + notifica.setBusinessId(businessID); + notifica.setTransactionId(transactionID); + + SetEventiDBCFXRequest eventReq = new SetEventiDBCFXRequest(); + Corpo corpo = new Corpo(); + + corpo.setDirectoryNumber(notifica.getDirectoryNumber()); + corpo.setCodiceRichiesta(notifica.getCodiceSessione()); + corpo.setNativoTLC(notifica.getNativoTlc()); + corpo.setTipoEvento(notifica.getTipoEvento()); + corpo.setDES(new SimpleDateFormat(dimStrFormat).format(notifica.getDes())); + corpo.setAmbito(notifica.getAmbito()); + corpo.setIdentificativoOperatoreDonating(notifica.getIdOperatoreDonating()); + corpo.setDataInvioMessaggio(new SimpleDateFormat(dimStrFormat).format(new Date())); + corpo.setCodiceOrdineOLO(notifica.getCodiceOrdineOlo()); + if(!Func.isNull(notifica.getNote())) + corpo.setNote(notifica.getNote()); + corpo.setFlagNP(notifica.getFlagNp()); + corpo.setDataOrdine(new SimpleDateFormat(dimStrFormat).format(notifica.getDataOrdine())); + if (notifica.getAggiuntivi() != null) { + String[] aggiuntivi = notifica.getAggiuntivi().split(";"); + ListaAggiuntivi tagDnAgg = new ListaAggiuntivi(); + for (String singleDn : aggiuntivi) { + ListaAggiuntiviItem numero = new ListaAggiuntiviItem(); + numero.setAggiuntivo(singleDn); + tagDnAgg.addListaAggiuntiviItem(numero); + } + corpo.setListaAggiuntivi(tagDnAgg); + } + corpo.setOAO(notifica.getCodiceOloRecipient()); + + // I dati di COS, COR e COW non vengono passati a CRMB, poiche' mancano nell'interfaccia esposta a DBCFX + + eventReq.setCorpo(corpo); + String xml = CrmXAO.getXmlFromSetEvDBCFXReq(eventReq); + log.write("9999", "xml Request: " + xml); + + CRMCommunicationManager crmClient; + if (CRMMap.PIATTAFORMA_B.equalsIgnoreCase(notifica.getSistComp())) { + crmClient = new CRMCommunicationManager("CRMB", "NOTIFICHE"); + } else { + crmClient = new CRMCommunicationManager("CRMR", "NOTIFICHE"); + } + String respXml = crmClient.sendFileMultipart(xml); + + SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility.getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); + String codiceEsito = respObj.getCodiceEsito(); + + if (!codiceEsito.equals("0")) { + String descrizione = respObj.getDescrizioneEsito(); + log.write("9999", "Notifica N10-Espletamento CRMB - codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + throw new Exception("codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + } + log.write("9999", "Notifica N10-Espletamento CRMB codiceEsito: " + codiceEsito + " - id richiesta: " + notifica.getCodiceRichiesta()); + + log.write("9999", "invioNotificaN10EspletamentoCRMB FINE - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + } + + private void invioNotificaN10EspletamentoKOCRMB(GnpCrmNotifyDonorOut notifica) throws Exception { + log.write("9999", "invioNotificaN10EspletamentoKOCRMB - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + + String businessID = new TID().toString(); + String transactionID = new TID().toString(); + + notifica.setDaScodare((long) 0); + notifica.setDataInvioMessaggio(new Date()); + notifica.setBusinessId(businessID); + notifica.setTransactionId(transactionID); + + SetEventiDBCFXRequest eventReq = new SetEventiDBCFXRequest(); + Corpo corpo = new Corpo(); + + corpo.setDirectoryNumber(notifica.getDirectoryNumber()); + corpo.setCodiceRichiesta(notifica.getCodiceSessione()); + corpo.setNativoTLC(notifica.getNativoTlc()); + corpo.setTipoEvento(notifica.getTipoEvento()); + corpo.setDES(new SimpleDateFormat(dimStrFormat).format(notifica.getDes())); + corpo.setAmbito(notifica.getAmbito()); + corpo.setIdentificativoOperatoreDonating(notifica.getIdOperatoreDonating()); + corpo.setDataInvioMessaggio(new SimpleDateFormat(dimStrFormat).format(new Date())); + corpo.setCodiceOrdineOLO(notifica.getCodiceOrdineOlo()); + if(!Func.isNull(notifica.getNote())) + corpo.setNote(notifica.getNote()); + corpo.setFlagNP(notifica.getFlagNp()); + corpo.setDataOrdine(new SimpleDateFormat(dimStrFormat).format(notifica.getDataOrdine())); + if (notifica.getAggiuntivi() != null) { + String[] aggiuntivi = notifica.getAggiuntivi().split(";"); + ListaAggiuntivi tagDnAgg = new ListaAggiuntivi(); + for (String singleDn : aggiuntivi) { + ListaAggiuntiviItem numero = new ListaAggiuntiviItem(); + numero.setAggiuntivo(singleDn); + tagDnAgg.addListaAggiuntiviItem(numero); + } + corpo.setListaAggiuntivi(tagDnAgg); + } + corpo.setOAO(notifica.getCodiceOloRecipient()); + + // I dati di COS, COR e COW non vengono passati a CRMB, poiche' mancano nell'interfaccia esposta a DBCFX + + eventReq.setCorpo(corpo); + String xml = CrmXAO.getXmlFromSetEvDBCFXReq(eventReq); + log.write("9999", "xml Request: " + xml); + + CRMCommunicationManager crmClient; + if (CRMMap.PIATTAFORMA_B.equalsIgnoreCase(notifica.getSistComp())) { + crmClient = new CRMCommunicationManager("CRMB", "NOTIFICHE"); + } else { + crmClient = new CRMCommunicationManager("CRMR", "NOTIFICHE"); + } + String respXml = crmClient.sendFileMultipart(xml); + + SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility.getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); + String codiceEsito = respObj.getCodiceEsito(); + + if (!codiceEsito.equals("0")) { + String descrizione = respObj.getDescrizioneEsito(); + log.write("9999", "Notifica N10-EspletamentoKO CRMB - codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + throw new Exception("codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + } + log.write("9999", "Notifica N10-EspletamentoKO CRMB codiceEsito: " + codiceEsito + " - id richiesta: " + notifica.getCodiceRichiesta()); + + + log.write("9999", "invioNotificaN10EspletamentoKOCRMB FINE - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + } + + private void invioNotificaN10AnnullamentoCRMB(GnpCrmNotifyDonorOut notifica) throws Exception { + log.write("9999", "invioNotificaN10AnnullamentoCRMB - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + + String businessID = new TID().toString(); + String transactionID = new TID().toString(); + + notifica.setDaScodare((long) 0); + notifica.setDataInvioMessaggio(new Date()); + notifica.setBusinessId(businessID); + notifica.setTransactionId(transactionID); + + SetEventiDBCFXRequest eventReq = new SetEventiDBCFXRequest(); + Corpo corpo = new Corpo(); + + corpo.setDirectoryNumber(notifica.getDirectoryNumber()); + corpo.setCodiceRichiesta(notifica.getCodiceSessione()); + corpo.setNativoTLC(notifica.getNativoTlc()); + corpo.setTipoEvento(notifica.getTipoEvento()); + corpo.setDES(new SimpleDateFormat(dimStrFormat).format(notifica.getDes())); + corpo.setAmbito(notifica.getAmbito()); + corpo.setIdentificativoOperatoreDonating(notifica.getIdOperatoreDonating()); + corpo.setDataInvioMessaggio(new SimpleDateFormat(dimStrFormat).format(new Date())); + corpo.setCodiceOrdineOLO(notifica.getCodiceOrdineOlo()); + if(!Func.isNull(notifica.getNote())) + corpo.setNote(notifica.getNote()); + corpo.setFlagNP(notifica.getFlagNp()); + corpo.setDataOrdine(new SimpleDateFormat(dimStrFormat).format(notifica.getDataOrdine())); + if (notifica.getAggiuntivi() != null) { + String[] aggiuntivi = notifica.getAggiuntivi().split(";"); + ListaAggiuntivi tagDnAgg = new ListaAggiuntivi(); + for (String singleDn : aggiuntivi) { + ListaAggiuntiviItem numero = new ListaAggiuntiviItem(); + numero.setAggiuntivo(singleDn); + tagDnAgg.addListaAggiuntiviItem(numero); + } + corpo.setListaAggiuntivi(tagDnAgg); + } + corpo.setOAO(notifica.getCodiceOloRecipient()); + + // I dati di COS, COR e COW non vengono passati a CRMB, poiche' mancano nell'interfaccia esposta a DBCFX + + eventReq.setCorpo(corpo); + String xml = CrmXAO.getXmlFromSetEvDBCFXReq(eventReq); + log.write("9999", "xml Request: " + xml); + + CRMCommunicationManager crmClient; + if (CRMMap.PIATTAFORMA_B.equalsIgnoreCase(notifica.getSistComp())) { + crmClient = new CRMCommunicationManager("CRMB", "NOTIFICHE"); + } else { + crmClient = new CRMCommunicationManager("CRMR", "NOTIFICHE"); + } + String respXml = crmClient.sendFileMultipart(xml); + + SetEventiDBCFXResponse respObj = (SetEventiDBCFXResponse) XmlUtility.getCastorXmlObjectFromXmlString(SetEventiDBCFXResponse.class, respXml, true); + String codiceEsito = respObj.getCodiceEsito(); + + if (!codiceEsito.equals("0")) { + String descrizione = respObj.getDescrizioneEsito(); + log.write("9999", "Notifica N10-Annullamento CRMB - codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + throw new Exception("codiceEsito: " + codiceEsito + " - descrizione: " + descrizione + " - id richiesta: " + notifica.getCodiceRichiesta()); + } + log.write("9999", "Notifica N10-Annullamento CRMB codiceEsito: " + codiceEsito + " - id richiesta: " + notifica.getCodiceRichiesta()); + + log.write("9999", "invioNotificaN10AnnullamentoCRMB FINE - codice richiesta: " + notifica.getCodiceRichiesta() + " - unique id: " + notifica.getUniqueId()); + } + } diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/CRMBController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/CRMBController.java index 623fd28c..7ddfef88 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/CRMBController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/crm/CRMBController.java @@ -50,7 +50,7 @@ public class CRMBController extends AbstractCRMController implements RecoveryIF private static final String versione = "1.0.0"; private static CRMBController onlyInstance; - protected GnpCrmNotifyDonorOutDAO crmbNotifyDonorOutDAO = null; + //protected GnpCrmNotifyDonorOutDAO crmbNotifyDonorOutDAO = null; /** @@ -58,7 +58,7 @@ public class CRMBController extends AbstractCRMController implements RecoveryIF * @throws Exception */ private CRMBController() throws Exception { - crmbNotifyDonorOutDAO = new GnpCrmNotifyDonorOutDAO(); + //crmbNotifyDonorOutDAO = new GnpCrmNotifyDonorOutDAO(); } /** @@ -726,9 +726,52 @@ public class CRMBController extends AbstractCRMController implements RecoveryIF crmbNotifyDonorOut = (new CRMBFormatController()).createNotificaCsDonor82(richiesta); + GnpCrmNotifyDonorOutDAO crmbNotifyDonorOutDAO = new GnpCrmNotifyDonorOutDAO(); crmbNotifyDonorOutDAO.save(crmbNotifyDonorOut); + return crmbNotifyDonorOut; } + public void notificaN10CRMBFase3(GnpRichiesteDonor82 richiesta, GnpNowD82RichiesteIn nowIn) throws Exception { + log.write("9999", "CRMBController.notificaN10CRMBFase3(richiesta donor 82" + richiesta.getIdRichiesta() + " - INIZIO"); + try { + CRMBFormatController formatController = new CRMBFormatController(); + GnpCrmNotifyDonorOut gnpNotifyDonorOut = formatController.createNotificaDonor82(richiesta, nowIn, log); + GnpCrmNotifyDonorOutDAO dao = new GnpCrmNotifyDonorOutDAO(); + dao.save(gnpNotifyDonorOut); + notificaVariazioneStatoCRMB(gnpNotifyDonorOut, "USCITA DEL 82 BUSINESS"); + } catch (Exception ex) { + log.write("9999", "PROBLEMI DURANTE L'INVIO IN CODA DELLA NOTIFICA A " + getSystemProviderDesc() + "- ID_RICHIESTA : " + + (richiesta != null ? richiesta.getIdRichiesta() : "NON IDENTIFICATA") + " - " + ex.toString()); + throw ex; + } + log.write("9999", "CRMBController.notificaN10CRMBFase3 FINE"); + } + + private void notificaVariazioneStatoCRMB(GnpCrmNotifyDonorOut gnpCrmNotifyDonorOut, String processo) { + log.write("9999", "CRMBController.notificaVariazioneStatoCRMB(GnpCrmNotifyDonorOut gnpNotifyDonorOut, String processo) - " + + "unique id: " + gnpCrmNotifyDonorOut.getUniqueId() + " - processo: " + processo); + + try { + NotificationMessage message = creaNotificaDonorOut82(gnpCrmNotifyDonorOut.getUniqueId()); + inserisciNotificaInCoda(message); + + log.write("9999", "CRMBController.notificaVariazioneStatoCRMB(GnpCrmNotifyDonorOut gnpNotifyDonorOut, String processo) - " + + "unique id: " + gnpCrmNotifyDonorOut.getUniqueId() + " - processo: " + processo + " - FINE"); + + } catch (Exception e) { + e.printStackTrace(); + log.write("0010", "CRMBController.notificaVariazioneStatoCRMB(GnpCrmNotifyDonorOut gnpNotifyDonorOut, String processo) - " + + "unique id: " + gnpCrmNotifyDonorOut.getUniqueId() + " - processo: " + processo + " - FINE CON ECCEZIONE"); + } + } + + protected NotificationMessage creaNotificaDonorOut82(Long uniqueId){ + UniqueIdNotificationMessage messaggio = new UniqueIdNotificationMessage(); + messaggio.setUnique_id(uniqueId); + messaggio.setNotificationType(NotificationMessageIF.NotificationType_CRMB_DONOR_OUT_82); + messaggio.setSystemProvider(NotificationMessageIF.SystemProvider_CRMB); + return messaggio; + } } diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/AbstractCRMFormatController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/AbstractCRMFormatController.java index e9bccc15..de2cf780 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/AbstractCRMFormatController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/AbstractCRMFormatController.java @@ -12,6 +12,7 @@ import it.valueteam.gnp.exception.xml.MalformedXmlException; import it.valueteam.gnp.log.ProcessLogger; import it.valueteam.gnp.manager.RequestManagerDonor82; import it.valueteam.gnp.obj.*; +import it.valueteam.gnp.obj.jms.NotificationMessage; import it.valueteam.gnp.systemcontroller.ControllerFactory; import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF; import it.valueteam.gnp.systemcontroller.formatcontroller.FormatController; @@ -403,7 +404,7 @@ public abstract class AbstractCRMFormatController extends FormatController { /** * crea l'oggetto AbstractGnpCrmOutRec a partire dalla richiesta in ingresso * se naturalemnte risciuma a parsarla - * @param crmInRec AbstractGnpCrmInRec + * * @return AbstractGnpCrmOutRec */ public abstract AbstractGnpCrmOutRec createResponseObject() throws Exception; @@ -422,10 +423,14 @@ public abstract class AbstractCRMFormatController extends FormatController { /** * crea l'oggetto AbstractGnpCrmOutRec a partire dalla richiesta di business * se naturalemnte risciuma a parsarla - * @param crmInRec - * @param crmInRec AbstractGnpCrmInRec + * + * @param richiestaRec * @param tipoChiamata - * @return AbstractGnpCrmOutRec + * @param evento + * @param esito + * @param causaleScarto + * @return + * @throws Exception */ public AbstractGnpCrmOutRec createCustomResponseObject(GnpRichiesteRec richiestaRec,String tipoChiamata,String evento, String esito, String causaleScarto) throws Exception @@ -436,7 +441,7 @@ public abstract class AbstractCRMFormatController extends FormatController { /** * createCrmScartInRec * @param tracciato - * @param crmInRec GnpCrmInRec + * @param tracciato GnpCrmInRec * * @return GnpCrmScartiIn */ @@ -682,7 +687,7 @@ public abstract class AbstractCRMFormatController extends FormatController { * Esegue tutti i controlli di business * esegue i controlli di compatibilita' stato_attuale_richiesta-tipo_evento in ingresso * e in controlli sulla duplicazione della richiesta - tipo_evento - * @param gnpCrmInRec AbstractGnpCrmInRec + * @param notificaFromCRM AbstractGnpCrmInRec * @throws Exception * @return boolean - se false scarto e non rispondo a crm */ @@ -906,11 +911,15 @@ public abstract class AbstractCRMFormatController extends FormatController { return false; } - /*** + + /** * notExistRequest * Esegue i controlli di duplicazione dele richieste (coppia id_esigenza-tipo_evento) - * @param gnpCrmInRec AbstractGnpCrmInRec - * @return boolean true se non esiste altrimenti false + * + * @param idEsigenza + * @param tipoEvento + * @return + * @throws Exception */ protected abstract boolean existRequest(String idEsigenza, String tipoEvento) throws Exception; @@ -2084,7 +2093,7 @@ public abstract class AbstractCRMFormatController extends FormatController { /** * setIdRichiestaRicavato * utilizzato per fare l'update della tabella di out dopo la creazione della notifica verso i sistemi CRM - * @param long Long + * @param idRichiestaRic Long */ protected void setIdRichiestaRicavato(Long idRichiestaRic) { @@ -2174,31 +2183,28 @@ public abstract class AbstractCRMFormatController extends FormatController { public AbstractGnpCrmDonorIn getCrmDonorInBean(EsitoVerificaCS esito) throws Exception { return createCrmDonorIn(esito); } + /** * Crea il bean AbstractGnpCrmInRec a partire dall'oggetto castor ottenuto * dal tracciato in ingresso proveniente da crm * - * @param notificaFromCRM - * NotificaFromCRM - * @param ibSystem - * String + * @param esito + * @return * @throws Exception - * @return AbstractGnpCrmInRec */ protected abstract AbstractGnpCrmDonorIn createCrmDonorIn(EsitoVerificaCS esito) throws Exception; public AbstractGnpCrmScartiDonorIn getCrmDonorScartiIn(EsitoVerificaCS esito, String causale) throws Exception { return createCrmScartiDonorIn(esito, causale); } + /** * Crea il bean AbstractGnpCrmInRec a partire dall'oggetto castor ottenuto * dal tracciato in ingresso proveniente da crm * - * @param notificaFromCRM - * NotificaFromCRM - * @param ibSystem - * String + * @param esito + * @param causale + * @return * @throws Exception - * @return AbstractGnpCrmInRec */ protected abstract AbstractGnpCrmScartiDonorIn createCrmScartiDonorIn(EsitoVerificaCS esito, String causale) throws Exception; /** @@ -2522,7 +2528,6 @@ public abstract class AbstractCRMFormatController extends FormatController { // Di default viene preimpostato a N notifyOut.setFlagNp("N"); - // 20171213 DBCFX_RU_254 BEGIN notifyOut.setNote(CAMPO_NOTE_DEFAULT_NGA_XDSL); @@ -3089,4 +3094,5 @@ public abstract class AbstractCRMFormatController extends FormatController { } return OK_VALIDAZIONE; } + } diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/CRMBFormatController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/CRMBFormatController.java index cd698326..3ba0c389 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/CRMBFormatController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/crm/CRMBFormatController.java @@ -8,7 +8,9 @@ import it.valueteam.gnp.dao.xml.crm.crmtodbcfx.NotificaFromCRM; import it.valueteam.gnp.dao.xml.crm.dbcfxtocrm.NotificaRid; import it.valueteam.gnp.dao.xml.crm.dbcfxtocrm.http.*; import it.valueteam.gnp.dao.xml.crm.donor.crmtodbcfx.EsitoVerificaCS; +import it.valueteam.gnp.log.ProcessLogger; import it.valueteam.gnp.obj.*; +import it.valueteam.gnp.obj.jms.NotificationMessage; import it.valueteam.gnp.utility.DateUtils; import it.valueteam.gnp.utility.Func; import it.valueteam.gnp.utility.Resources; @@ -44,6 +46,10 @@ public class CRMBFormatController extends AbstractCRMFormatController { protected static final String AMBITO_USCITA_82 = "USCITANP_DEL82"; + private static final String FLAG_NATIVO_YES = "Y"; + private static final String CRM_COMPETENZA_BUSINESS = "B"; + + private static final String CAMPO_NOTE_DEFAULT_NGA_XDSL = "MANTENIMENTOPRODOTTI:0|BANDADACESSARE:F+D|"; public CRMBFormatController() { } @@ -838,6 +844,92 @@ extends AbstractCRMFormatController { return crmbNotifyDonorOut; } + public GnpCrmNotifyDonorOut createNotificaDonor82(GnpRichiesteDonor82 richiesta, GnpNowD82RichiesteIn nowIn, ProcessLogger log) throws Exception{ + GnpCrmNotifyDonorOut notifyOut = new GnpCrmNotifyDonorOut(); + notifyOut.setDaScodare((long) 1); + notifyOut.setAmbito(AMBITO_USCITA_82); + String tipoEvento = nowIn.getTipoEvento(); + + if (tipoEvento.equalsIgnoreCase("2")) { + notifyOut.setTipoEvento(DBSSMap.EVENTO_PRENOTIFICA); + } else if (tipoEvento.equalsIgnoreCase("0")) { + notifyOut.setTipoEvento(DBSSMap.EVENTO_ESPLETAMENTO); + } else if (tipoEvento.equalsIgnoreCase("1")) { + notifyOut.setTipoEvento(DBSSMap.EVENTO_ESPLETAMENTO_KO); + } else { //TIPO EVENTO 3 + notifyOut.setTipoEvento(DBSSMap.EVENTO_ANNULLAMENTO); + } + + notifyOut.setSistComp(CRM_COMPETENZA_BUSINESS); + notifyOut.setCodiceSegreto(richiesta.getCos()); + // Per la Del.82 in continuità con la Del.274 in mancanza del DN1 da NOW mappiamo il COR (Codice Risorsa) + notifyOut.setDirectoryNumber(nowIn.getNpDn1() != null ? nowIn.getNpDn1() : richiesta.getCor()); + notifyOut.setIdOperatoreDonating(richiesta.getCowDonating()); + notifyOut.setCognomeCliente(richiesta.getCognomeCliente()); + notifyOut.setCodiceRichiesta(richiesta.getIdRichiesta()); + notifyOut.setCodiceOrdineOlo(nowIn.getCodiceOrdineWhs()); + notifyOut.setNativoTlc(FLAG_NATIVO_YES); + notifyOut.setDac(nowIn.getDataDac()); + + if(null != nowIn.getNote()) { + notifyOut.setNote(nowIn.getNote()); + } + else { // In continuità con la Del. 274 se il campo note è NULL settiamo i valori di default + if (DBSSMap.EVENTO_ANNULLAMENTO.equals(notifyOut.getTipoEvento())){ + notifyOut.setNote(Resources.getNOW_CAMPO_NOTE_DEFAULT_SR_DBSS()); + } + else if (DBSSMap.EVENTO_ESPLETAMENTO.equals(notifyOut.getTipoEvento())){ + notifyOut.setNote(CAMPO_NOTE_DEFAULT_NGA_XDSL); + } + else if (DBSSMap.EVENTO_ESPLETAMENTO_KO.equals(notifyOut.getTipoEvento())){ + notifyOut.setNote(Resources.getNOW_CAMPO_NOTE_DEFAULT_SR_DBSS()); + } + else if (DBSSMap.EVENTO_PRENOTIFICA.equals(notifyOut.getTipoEvento())){ + notifyOut.setNote(CAMPO_NOTE_DEFAULT_NGA_XDSL); + } + } + + String aggiuntivi = ""; + if (!Func.isNull(nowIn.getNpDn2())) aggiuntivi += nowIn.getNpDn2() + ";"; + if (!Func.isNull(nowIn.getNpDn3())) aggiuntivi += nowIn.getNpDn3() + ";"; + if (!Func.isNull(nowIn.getNpDn4())) aggiuntivi += nowIn.getNpDn4() + ";"; + if (!Func.isNull(nowIn.getNpDn5())) aggiuntivi += nowIn.getNpDn5() + ";"; + if (!Func.isNull(nowIn.getNpDn6())) aggiuntivi += nowIn.getNpDn6() + ";"; + if (!Func.isNull(nowIn.getNpDn7())) aggiuntivi += nowIn.getNpDn7() + ";"; + if (!Func.isNull(nowIn.getNpDn8())) aggiuntivi += nowIn.getNpDn8() + ";"; + if (!Func.isNull(nowIn.getNpDn9())) aggiuntivi += nowIn.getNpDn9() + ";"; + if (!Func.isNull(nowIn.getNpDn10())) aggiuntivi += nowIn.getNpDn10() + ";"; + if (aggiuntivi.endsWith(";")) aggiuntivi = aggiuntivi.substring(0, aggiuntivi.length()-1); + if (!aggiuntivi.equals("")) notifyOut.setAggiuntivi(aggiuntivi); + + //TODO adeguamento IS NP flag, se ci sono numerazioni metto ad "Y" altrimenti ad "N" + if (nowIn.getNpDn1() != null) { + notifyOut.setFlagNp("Y"); + } else { + notifyOut.setFlagNp("N"); + } + + notifyOut.setSistComp(richiesta.getCrmCompetenza()); + + if ( + (DBSSMap.EVENTO_ESPLETAMENTO).equals(notifyOut.getTipoEvento()) || + (DBSSMap.EVENTO_ANNULLAMENTO).equals(notifyOut.getTipoEvento()) || + (DBSSMap.EVENTO_ESPLETAMENTO_KO).equals(notifyOut.getTipoEvento()) + ) { + notifyOut.setDes(nowIn.getDataEspletamento()); + } + + notifyOut.setDataOrdine(richiesta.getDataRicezione()); + notifyOut.setDataInvioMessaggio(nowIn.getDataNotifica()); + notifyOut.setCow(richiesta.getCowDonating()); + notifyOut.setIdOperatoreDonor("TLC"); + notifyOut.setCodiceOloRecipient(nowIn.getCodiceOperatoreRecipient()); + notifyOut.setCor(richiesta.getCor()); + notifyOut.setCodiceSessione(richiesta.getCodiceSessione()); + + return notifyOut; + } + } diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/dbss/DBSSFormatController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/dbss/DBSSFormatController.java index ccf8553d..3801ef3c 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/dbss/DBSSFormatController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/dbss/DBSSFormatController.java @@ -1704,7 +1704,6 @@ public class DBSSFormatController extends FormatController { notifyOut.setDirectoryNumber(nowIn.getNpDn1() != null ? nowIn.getNpDn1() : richiesta.getCor()); notifyOut.setIdOperatoreDonating(richiesta.getCowDonating()); notifyOut.setCognomeCliente(richiesta.getCognomeCliente()); - notifyOut.setCodiceRichiesta(richiesta.getIdRichiesta()); notifyOut.setCodiceOrdineOlo(nowIn.getCodiceOrdineWhs()); notifyOut.setNativoTlc(FLAG_NATIVO_YES); diff --git a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/now/NowController.java b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/now/NowController.java index 73fd0979..c601f231 100644 --- a/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/now/NowController.java +++ b/gnpdev/dbcfx/src/it/valueteam/gnp/systemcontroller/formatcontroller/now/NowController.java @@ -19,6 +19,7 @@ import it.telecomitalia.soa.soap.soapheader.HeaderType; import it.telecomitalia.soa.soap.soapheader.InteractionDateType; import it.valueteam.gnp.dao.db.hb.*; import it.valueteam.gnp.manager.RequestManagerDonor82; +import it.valueteam.gnp.systemcontroller.crm.CRMBController; import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController; import it.valueteam.gnp.utility.DateUtils; @@ -244,7 +245,7 @@ public class NowController extends SystemController { } else { // DBCFX_RU_363 - Offerta Open Fiber FTTH (Business): aggiunto else per lo scenario Business getCrmCompetenza == "B" // invocare notifiche espletamenti (N10) verso CRMB - + CRMBController.getInstance().notificaN10CRMBFase3(richiesta, nowDonorIn); } DbcfxgoController.getInstance().inviaNotificaDbcfxgoD82(richiesta, null, null, nowDonorIn, null); diff --git a/gnpdev/wsdbcfx/wsdl/crmdonor/CRM_TO_DBCFX_DONOR.xsd b/gnpdev/wsdbcfx/wsdl/crmdonor/CRM_TO_DBCFX_DONOR.xsd index c1c30068..f1f0f4ac 100644 --- a/gnpdev/wsdbcfx/wsdl/crmdonor/CRM_TO_DBCFX_DONOR.xsd +++ b/gnpdev/wsdbcfx/wsdl/crmdonor/CRM_TO_DBCFX_DONOR.xsd @@ -26,7 +26,6 @@ -