First Commit from Source Code Reply

This commit is contained in:
vincenzofariello
2024-05-09 17:40:24 +02:00
parent 11e3b57c5b
commit 107a016cb9
35225 changed files with 1111346 additions and 1 deletions

View File

@@ -0,0 +1,249 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.GnpPitagoraOutFile;
import it.valueteam.gnp.dao.db.hb.GnpPitagoraOutFileDAO;
import it.valueteam.gnp.dao.db.hb.GnpPitagoraOutRecDAO;
import it.valueteam.gnp.dao.db.hb.GnpPitagoraStoricoOut;
import it.valueteam.gnp.dao.db.hb.GnpPitagoraStoricoOutDAO;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.StatoFilePitagora;
import it.valueteam.gnp.utility.FilePitagoraStateManager;
import java.util.Date;
import java.util.List;
public class PitagoraFileManagerRec {
//private PitagoraFileManagerRec() {}
protected PitagoraFileManagerRec() {}
public static Long avanzaStatoInCreato(String fileName) throws Exception
{
GnpPitagoraOutFileDAO gnpPitagoraOutFileDAO = new GnpPitagoraOutFileDAO();
GnpPitagoraOutFile gnpPitagoraOutFile = new GnpPitagoraOutFile();
int statoIniziale = StatoFilePitagora.NO_STATE;
int statoCorrente = StatoFilePitagora.CREATO;
gnpPitagoraOutFile.setNomeFile(fileName);
gnpPitagoraOutFile.setStato(new Long(statoCorrente));
gnpPitagoraOutFileDAO.save(gnpPitagoraOutFile);
insertStoricoRichiestaRec(statoIniziale, statoCorrente, gnpPitagoraOutFile);
return gnpPitagoraOutFile.getIdFilePitagora();
}
private static void insertStoricoRichiestaRec(int statoDa, int statoA, GnpPitagoraOutFile gnpPitagoraOutFile) throws Exception{
GnpPitagoraStoricoOut gnpPitagoraStoricoOut = new GnpPitagoraStoricoOut();
GnpPitagoraStoricoOutDAO gnpPitagoraStoricoOutDAO = new GnpPitagoraStoricoOutDAO();
gnpPitagoraStoricoOut.setIdFilePitagora(gnpPitagoraOutFile.getIdFilePitagora());
gnpPitagoraStoricoOut.setDataLavorazione(new Date());
gnpPitagoraStoricoOut.setStatoDa(new Long(statoDa));
gnpPitagoraStoricoOut.setStatoA(new Long(statoA));
gnpPitagoraStoricoOutDAO.save(gnpPitagoraStoricoOut);
}
public static void avanzaStatoInInviato(String nomeFile, ProcessLogger log) throws Exception {
GnpPitagoraOutFileDAO dao = new GnpPitagoraOutFileDAO();
Long idFilePitagora = dao.getIdFileFromNomeFile(nomeFile);
if( idFilePitagora == null )
{
log.write("9999", "FILE PER PITAGORA NON TROVATO - NOME FILE - " + nomeFile);
return;
}
GnpPitagoraOutFile outFile = dao.findById(idFilePitagora);
int statoPartenza = outFile.getStato().intValue();
int nuovoStato = StatoFilePitagora.INVIATO;
try
{
if( FilePitagoraStateManager.checkTransition(idFilePitagora, nuovoStato) )
{
outFile.setDataInvio(new Date());
outFile.setStato(new Long(nuovoStato));
insertStoricoRichiestaRec(statoPartenza, nuovoStato, outFile);
dao.merge(outFile);
}
else
{
throw new Exception("Transizione di stato non possibile per il file");
}
}
catch (Exception ex) {
ex.printStackTrace();
log.write("9999",
"NON ESEGUITA TRANSIZIONE DI STATO PER IL FILE PITAGORA - " +
nomeFile + " ID " + idFilePitagora + " DA STATO : " +
StatoFilePitagora.getStatoDescr(statoPartenza) +
" IN STATO INVIATO : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInNonInviato(String nomeFile, ProcessLogger log) throws Exception
{
GnpPitagoraOutFileDAO dao = new GnpPitagoraOutFileDAO();
Long idFilePitagora = dao.getIdFileFromNomeFile(nomeFile);
if( idFilePitagora == null )
{
log.write("9999", "FILE PER PITAGORA NON TROVATO - NOME FILE - " + nomeFile);
return;
}
GnpPitagoraOutFile outFile = dao.findById(idFilePitagora);
int statoPartenza = outFile.getStato().intValue();
int nuovoStato = StatoFilePitagora.NON_INVIATO;
try
{
if( FilePitagoraStateManager.checkTransition(idFilePitagora, nuovoStato) )
{
outFile.setStato(new Long(nuovoStato));
insertStoricoRichiestaRec(statoPartenza, nuovoStato, outFile);
dao.merge(outFile);
}
else
{
throw new Exception("Transizione di stato non possibile per il file");
}
}
catch (Exception ex) {
log.write("9999",
"NON ESEGUITA TRANSIZIONE DI STATO PER IL FILE PITAGORA - " +
nomeFile + " ID " + idFilePitagora + " DA STATO : " +
StatoFilePitagora.getStatoDescr(statoPartenza) +
" IN STATO NON_INVIATO : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInElaboratoPitagora(Long idRichiesta, ProcessLogger log) throws Exception
{
// Prima di tutto devi trovare l'ID del file a partire dall'ID richiesta
GnpPitagoraOutRecDAO pitagoraOutRecDAO = new GnpPitagoraOutRecDAO();
Long idFilePitagora = pitagoraOutRecDAO.getIdFileFromIdRichiesta(idRichiesta);
// Se non è stato trovato, tanti saluti
if( idFilePitagora == null )
return;
GnpPitagoraOutFileDAO dao = new GnpPitagoraOutFileDAO();
List<GnpPitagoraOutFile> outFileList = dao.findByProperty(GnpPitagoraOutFileDAO.HB_PROP_ID_FILE, idFilePitagora);
if( outFileList == null || outFileList.size() == 0 )
{
log.write("9999", "FILE PER PITAGORA NON TROVATO - ID FILE - " + idFilePitagora);
return;
}
if( outFileList.size() > 1 )
{
log.write("9999", "Troppi record trovati per il file con ID " + idFilePitagora);
throw new Exception("Troppi record trovati per il file con ID " + idFilePitagora);
}
GnpPitagoraOutFile outFile = outFileList.get(0);
int statoPartenza = outFile.getStato().intValue();
int nuovoStato = StatoFilePitagora.ELABORATOPITAGORA;
try
{
// Se il file è già nello stato ELABORATOPITAGORA non fare nulla (se non loggare)
if( statoPartenza == nuovoStato )
{
log.write("9999", "Il file è già in stato ELABORATOPITAGORA, transizione non necessaria");
}
else if( FilePitagoraStateManager.checkTransition(idFilePitagora, nuovoStato) )
{
outFile.setStato(new Long(nuovoStato));
insertStoricoRichiestaRec(statoPartenza, nuovoStato, outFile);
dao.merge(outFile);
}
else
{
throw new Exception("Transizione di stato non possibile per il file");
}
}
catch (Exception ex) {
log.write("9999",
"NON ESEGUITA TRANSIZIONE DI STATO PER IL FILE PITAGORA CON ID - " +
idFilePitagora + " DA STATO : " +
StatoFilePitagora.getStatoDescr(statoPartenza) +
" IN STATO ELABORATOPITAGORA : " + ex.toString());
throw ex;
}
}
public static Long avanzaStatoInRifiutato(String nomeFile, ProcessLogger log) throws Exception
{
GnpPitagoraOutFileDAO dao = new GnpPitagoraOutFileDAO();
Long idFilePitagora = dao.getIdFileFromNomeFile(nomeFile);
if( idFilePitagora == null )
{
log.write("9999", "FILE PER PITAGORA NON TROVATO - NOME FILE - " + nomeFile);
return null;
}
GnpPitagoraOutFile outFile = dao.findById(idFilePitagora);
int statoPartenza = outFile.getStato().intValue();
int nuovoStato = StatoFilePitagora.RIFIUTATO;
try
{
if( FilePitagoraStateManager.checkTransition(idFilePitagora, nuovoStato) )
{
outFile.setStato(new Long(nuovoStato));
insertStoricoRichiestaRec(statoPartenza, nuovoStato, outFile);
dao.merge(outFile);
return idFilePitagora;
}
else
{
throw new StateTransitionNotPossibleException("Transizione di stato non possibile per il file");
}
}
catch( StateTransitionNotPossibleException stnpEx )
{
log.write("9999",
"NON ESEGUITA TRANSIZIONE DI STATO PER IL FILE PITAGORA - " +
nomeFile + " ID " + idFilePitagora + " DA STATO : " +
StatoFilePitagora.getStatoDescr(statoPartenza) +
" IN STATO RIFIUTATO. IL MESSAGGIO VIENE SCODATO E NON SARA' RIELABORATO.");
return null;
}
catch (Exception ex) {
log.write("9999",
"NON ESEGUITA TRANSIZIONE DI STATO PER IL FILE PITAGORA - " +
nomeFile + " ID " + idFilePitagora + " DA STATO : " +
StatoFilePitagora.getStatoDescr(statoPartenza) +
" IN STATO RIFIUTATO : " + ex.toString());
throw ex;
}
}
}

View File

@@ -0,0 +1,8 @@
package it.valueteam.gnp.manager;
public class PitagoraXdslFileManagerRec extends PitagoraFileManagerRec{
protected PitagoraXdslFileManagerRec(){
super();
}
}

View File

@@ -0,0 +1,454 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.exception.MessageToDiscardException;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.obj.olo.OLOMap;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.crm.AbstractCRMController;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.olo.OLOController;
import it.valueteam.gnp.utility.DoubleDonatingStateManager;
import it.valueteam.gnp.utility.Func;
import it.valueteam.gnp.utility.StateManager;
import java.util.Date;
public class RequestDoppioDonatingManager {
private RequestDoppioDonatingManager() {
}
/**
* avanzaStatoValidataOK
*
* @param richiestaRec GnpGestioneRichiestaRec
* @param log ProcessLogger
*/
public static void avanzaStatoInInviata(GnpDoppioDonatingOloBridge richiestaDD, String nomeFile, ProcessLogger log) throws StateTransitionNotPossibleException, Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInInviata - idRichiesta: " + richiestaDD.getIdRichiesta() + " nome file: " + nomeFile);
int statoPartenza = richiestaDD.getStato().intValue();
GnpDoppioDonatingOloBridgeDAO ddBridgeDAO = new GnpDoppioDonatingOloBridgeDAO();
try {
int status = DoubleDonatingStateManager.CheckTransition(richiestaDD, StatoRichiestaDoppioDonating.INVIATA);
if (status != DoubleDonatingStateManager.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato INVIATA
richiestaDD.setStato((long) StatoRichiestaDoppioDonating.INVIATA);
ddBridgeDAO.merge(richiestaDD);
insertStoricoRichiestaDoppioDonating(statoPartenza, nomeFile, ApplicationCostants.IO_OUTPUT, richiestaDD);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - UNIQUE_ID - " +
richiestaDD.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) +
" IN STATO INVIATA");
if (StatoRichiestaDoppioDonating.isStatoFinale((long) statoPartenza)) {
throw new MessageToDiscardException("Messaggio scartato per richiesta in stato finale: " + richiestaDD.getIdRichiesta(), richiestaDD.getIdRichiesta().toString());
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
} catch (Exception ex) {
//0009 W - NON ESEGUITA TRANSIZIONE DI STATO UNIQUE_ID
log.write("0009", richiestaDD.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO INVIATA : " + ex.toString());
throw ex;
}
}
/**
* avanzaStatoInAcquisita
*
* @param crmInRec GnpCrmInRec
* @param flagBlackList
* @param log ProcessLogger
*/
public static void avanzaStatoInAccettata(GnpDoppioDonatingOloBridge richiestaDoppioDonating, String codiceSessioneOlo, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInAcettata - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
boolean flagFonia = richiestaDoppioDonating.getTipoServizio().equals(ApplicationCostants.TIPO_CHIAMATA_FONIA_F);
GnpRichiesteRecDAO richDAO = new GnpRichiesteRecDAO();
GnpRichiesteRec richiesta = richDAO.findById(richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
try {
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.ACCETTATA);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato validating
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.ACCETTATA);
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
log.write("0008", richiestaDoppioDonating.getUniqueId().toString() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO ACCETTATA");
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
if (flagFonia) {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiesta.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiesta.getIdRichiesta(),
DBSSMap.CHIAMATA_FONIA,
DBSSMap.EVENTO_ACCETTAZIONE_OLO,
DBSSMap.ESITO_OK,
null, codiceSessioneOlo);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiesta.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiesta.getIdRichiesta(),
CRMMap.CHIAMATA_FONIA,
CRMMap.EVENTO_ACCETTAZIONE_OLO,
CRMMap.ESITO_OK,
null);
}
} else {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiesta.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiesta.getIdRichiesta(),
DBSSMap.CHIAMATA_ADSL,
DBSSMap.EVENTO_ACCETTAZIONE_OLO,
DBSSMap.ESITO_OK,
null, codiceSessioneOlo);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiesta.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiesta.getIdRichiesta(),
CRMMap.CHIAMATA_ADSL,
CRMMap.EVENTO_ACCETTAZIONE_OLO,
CRMMap.ESITO_OK,
null);
}
}
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - UNIQUE_ID - " +
richiestaDoppioDonating.getUniqueId() + " DA STATO : " +
StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) +
" IN STATO ACCETTATA");
if (StatoRichiestaDoppioDonating.isStatoFinale((long) statoPartenza)) {
throw new MessageToDiscardException("Messaggio scartato per richiesta in stato finale: " + richiesta.getIdRichiesta(), richiesta.getIdRichiesta().toString());
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
} catch (Exception ex) {
//0009 W - NON ESEGUITA TRANSIZIONE DI STATO UNIQUE_ID
log.write("0009", richiestaDoppioDonating.getUniqueId() + " DA STATO : " +
StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) +
" IN STATO ACCETTATA : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInDaReinviare(GnpDoppioDonatingOloBridge richiestaDoppioDonating, int codiceCausale, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInDaReinviare - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
GnpRichiesteRecDAO recDAO = new GnpRichiesteRecDAO();
GnpRichiesteRec richiestaRec = null;
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
try {
// recuper la richiesta di business di appartenenza
richiestaRec = recDAO.findById(richiestaDoppioDonating.getIdRichiesta());
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.DA_REINVIARE);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato DA_REINVIARE
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.DA_REINVIARE);
richiestaDoppioDonating.setDaInviare((long) 1);
if (statoPartenza == StatoRichiestaDoppioDonating.INVIATA) {
richiestaDoppioDonating.setDataReinvioOlo(Func.calcolaDataReinvioOLO(ApplicationCostants.GIORNI_PER_KO_SUPERMENTO_SOGLIA_VER_FORMALI));
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(richiestaRec.getIdRichiesta(), DBSSMap.NOTIFICA_RICICLO);
} else {
//NOTIFICA A CRM PER SUPERAMENTO SOGLIA, POI CONTROLLO LATO CRM CONTROLLER SE LA NOTIFICA E' GI<47> STATA INVIATA
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaRec.getIdRichiesta(), CRMMap.NOTIFICA_RICICLO);
}
} else {// provengo dallo stato ACCETTATA
richiestaDoppioDonating.setDataReinvioOlo(Func.calcolaDataReinvioOLO(ApplicationCostants.GIORNI_PER_KO_TRASLOCO_VER_GESTIONALI));
int numKOTrasloco = richiestaDoppioDonating.getNumKoTraslocoOlo() == null ? 0 : richiestaDoppioDonating.getNumKoTraslocoOlo().intValue();
richiestaDoppioDonating.setNumKoTraslocoOlo((long) (numKOTrasloco + 1));
// cristiano modifica per X11 2012
if (richiestaDoppioDonating.getNumKoTraslocoOlo() == 1) {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(richiestaRec.getIdRichiesta(), DBSSMap.NOTIFICA_RICICLO_TRASLOCO_OLO);
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaDoppioDonating.getIdRichiesta(), CRMMap.NOTIFICA_RICICLO_TRASLOCO_OLO);
}
}
}
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
log.write("0008", "RICHIESTA DOPPIO DONATING: " + richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza)
+ " IN STATO DA_REINVIARE");
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - ID_RICHIESTA - "
+ richiestaDoppioDonating.getUniqueId()
+ " DA STATO : "
+ StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO DA_REINVIARE. "
+ " STATO DELLA RICHIESTA DI BUSINESS: " + (richiestaRec != null ?
StatoRichiestaRec.getStatoDescr(richiestaRec.getStato().intValue()) :
"SCONOSCIUTO"));
if (StatoRichiestaDoppioDonating.isStatoFinale((long) statoPartenza)) {
throw new MessageToDiscardException("Messaggio scartato per richiesta in stato finale: " + richiestaRec.getIdRichiesta(), richiestaRec.getIdRichiesta().toString());
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO UNIQUE_ID
log.write("0009", richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza)
+ " IN STATO DA_REINVIARE : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInAccettataKO(GnpDoppioDonatingOloBridge richiestaDoppioDonating, int codiceCausaleKoOLO, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInAccettataKO - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
//boolean flagFonia=true;
// correzione bug 18-08-2009
boolean flagFonia = richiestaDoppioDonating.getTipoServizio().equals(ApplicationCostants.TIPO_CHIAMATA_FONIA_F);
GnpRichiesteRecDAO recDAO = new GnpRichiesteRecDAO();
GnpRichiesteRec richiestaRec = null;
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = null;
try {
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.ACCETTATAKO);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
// recupero la richiesta di business a cui <20> associata questa di doppio donating
richiestaRec = recDAO.findById(richiestaDoppioDonating.getIdRichiesta());
recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.ACCETTATAKO);
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
log.write("0008", richiestaDoppioDonating.getUniqueId().toString() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO ACCETTATAKO");
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
if (flagFonia) {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiestaDoppioDonating.getIdRichiesta(),
DBSSMap.CHIAMATA_FONIA,
DBSSMap.EVENTO_ACCETTAZIONE_OLO,
DBSSMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO), null);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiestaDoppioDonating.getIdRichiesta(),
CRMMap.CHIAMATA_FONIA,
CRMMap.EVENTO_ACCETTAZIONE_OLO,
CRMMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO));
}
} else {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiestaDoppioDonating.getIdRichiesta(),
DBSSMap.CHIAMATA_ADSL,
DBSSMap.EVENTO_ACCETTAZIONE_OLO,
DBSSMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO), null);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiestaDoppioDonating.getIdRichiesta(),
CRMMap.CHIAMATA_ADSL,
CRMMap.EVENTO_ACCETTAZIONE_OLO,
CRMMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO));
}
}
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - ID_RICHIESTA - " + richiestaDoppioDonating.getUniqueId()
+ " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO ACCETTATAKO");
if (StatoRichiestaDoppioDonating.isStatoFinale((long) statoPartenza)) {
throw new MessageToDiscardException("Messaggio scartato per richiesta in stato finale: " + richiestaDoppioDonating.getIdRichiesta(), richiestaDoppioDonating.getIdRichiesta().toString());
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009", "" + richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO ACCETTATAKO : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInRifiutata(GnpDoppioDonatingOloBridge richiestaDoppioDonating, int codiceCausaleKoOLO, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInRifiutata - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
//boolean flagFonia=true;
//correzione bug 18-08-2009
boolean flagFonia = richiestaDoppioDonating.getTipoServizio().equals(ApplicationCostants.TIPO_CHIAMATA_FONIA_F);
GnpRichiesteRec richiestaRec = null;
GnpRichiesteRecDAO recDAO = new GnpRichiesteRecDAO();
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = null;
try {
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.RIFIUTATA);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
// recupero la richiesta di business a cui <20> associata questa di doppio donating
richiestaRec = recDAO.findById(richiestaDoppioDonating.getIdRichiesta());
// salvo la richiesta con stato ESPLETATA
recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.RIFIUTATA);
// Se il rifiuto <20> per KO TRASLOCO, incrementa anche il numero di tentativi fatti
if (codiceCausaleKoOLO == ApplicationCostants.KO_TRASLOCO_VER_GESTIONALI) {
int numKoTrasloco = richiestaRec.getNumKoTraslocoOlo().intValue() + 1;
richiestaDoppioDonating.setNumKoTraslocoOlo((long) numKoTrasloco);
}
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
log.write("0008", "" + richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO RIFIUTATA");
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
if (flagFonia) {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiestaDoppioDonating.getIdRichiesta(),
DBSSMap.CHIAMATA_FONIA,
DBSSMap.EVENTO_VALIDAZIONE_OLO,
DBSSMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO), null);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiestaDoppioDonating.getIdRichiesta(),
CRMMap.CHIAMATA_FONIA,
CRMMap.EVENTO_VALIDAZIONE_OLO,
CRMMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO));
}
} else {
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaRec.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaVariazioneStatoRichiestaDoppioDonating(
richiestaDoppioDonating.getIdRichiesta(),
DBSSMap.CHIAMATA_ADSL,
DBSSMap.EVENTO_VALIDAZIONE_OLO,
DBSSMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO), null);
} else {
AbstractCRMController crmController = (AbstractCRMController) ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
crmController.notificaVariazioneStatoRichiestaDoppioDonating(richiestaDoppioDonating.getIdRichiesta(),
CRMMap.CHIAMATA_ADSL,
CRMMap.EVENTO_VALIDAZIONE_OLO,
CRMMap.ESITO_KO,
Integer.toString(codiceCausaleKoOLO));
}
}
} else {
//0009 W - NON ESEGUITA TRANSIZIONE DI STATO
log.write("0009", richiestaDoppioDonating.getUniqueId() + " IN STATO RIFIUTATA");
if (StatoRichiestaDoppioDonating.isStatoFinale((long) statoPartenza)) {
throw new MessageToDiscardException("Messaggio scartato per richiesta in stato finale: " + richiestaDoppioDonating.getIdRichiesta(), richiestaDoppioDonating.getIdRichiesta().toString());
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
} catch (Exception ex) {
//0009 W - NON ESEGUITA TRANSIZIONE DI STATO
log.write("0009", richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO RIFIUTATA : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInValidata(GnpDoppioDonatingOloBridge richiestaDoppioDonating, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInValidata - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = null;
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.VALIDATA);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
//per la notifica di emissione faccio l'update della DAC
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.VALIDATA);
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
log.write("0008", "" + richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO VALIDAT");
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - UNIQUE_ID - " +
richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO VALIDATA");
}
}
public static void avanzaStatoInDisdetta(GnpDoppioDonatingOloBridge richiestaDoppioDonating, ProcessLogger log) throws Exception {
log.write("0009", "RequestDoppioDonatingManager - avanzaStatoInDisdetta - idRichiesta: " + richiestaDoppioDonating.getIdRichiesta());
int statoPartenza = richiestaDoppioDonating.getStato().intValue();
GnpDoppioDonatingOloBridgeDAO recDoppioDonatingDAO = null;
int status = DoubleDonatingStateManager.CheckTransition(richiestaDoppioDonating, StatoRichiestaDoppioDonating.DISDETTA);
if (status != StateManager.TRANSIZIONE_NON_POSSIBILE) {
recDoppioDonatingDAO = new GnpDoppioDonatingOloBridgeDAO();
if (notificaDisdetta(richiestaDoppioDonating)) {
OLOController.getInstance().notificaEventoDoppioDonating(
richiestaDoppioDonating,
OLOMap.TIPO_EVENTO_INTERRUZIONE_MIGRAZIONE,
richiestaDoppioDonating.getTipoServizio());
}
richiestaDoppioDonating.setStato((long) StatoRichiestaDoppioDonating.DISDETTA);
recDoppioDonatingDAO.merge(richiestaDoppioDonating);
insertStoricoRichiestaDoppioDonating(statoPartenza, null, ApplicationCostants.IO_INPUT, richiestaDoppioDonating);
log.write("0008", "" + richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO DISDETTA");
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA DI TIPO DOPPIO DONATING - UNIQUE_ID - " +
richiestaDoppioDonating.getUniqueId() + " DA STATO : " + StatoRichiestaDoppioDonating.getStatoDescr(statoPartenza) + " IN STATO DISDETTA");
}
}
/**
* @param stato_da
* @param richiestaddBridge
* @throws Exception
*/
public static void insertStoricoRichiestaDoppioDonating(int stato_da, String nomeFile, int i_o, GnpDoppioDonatingOloBridge richiestaDoppioDonating) throws Exception {
GnpStoricoRichiesteDdDAO richRec = new GnpStoricoRichiesteDdDAO();
//creo lo storico
GnpStoricoRichiesteDd storico = new GnpStoricoRichiesteDd();
storico.setIdRichiesta(richiestaDoppioDonating.getUniqueId());
storico.setNomeFile(nomeFile);
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaDoppioDonating.getStato());
storico.setDfw(richiestaDoppioDonating.getDfw());
storico.setDac(richiestaDoppioDonating.getDac());
storico.setDataIO(new Date());
storico.setDataLavorazione(new Date());
storico.setIO((long) i_o);
richRec.save(storico);
}
/**
* Metodo che determina se bisogna notificare a OLO la disdetta della richiesta
*
* @param richiestaRec
* @param tipoDisdetta
* @return
* @throws Exception
*/
private static boolean notificaDisdetta(GnpDoppioDonatingOloBridge richiestaDD) throws Exception {
switch (richiestaDD.getStato().intValue()) {
case StatoRichiestaDoppioDonating.INVIATA:
case StatoRichiestaDoppioDonating.ACCETTATA:
case StatoRichiestaDoppioDonating.VALIDATA:
return true;
}
return false;
}
}

View File

@@ -0,0 +1,270 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteA375Npg35;
import it.valueteam.gnp.dao.db.hb.GnpRichiesteA375Npg35DAO;
import it.valueteam.gnp.dao.db.hb.GnpStoricoA375Npg35;
import it.valueteam.gnp.dao.db.hb.GnpStoricoA375Npg35DAO;
import it.valueteam.gnp.dao.db.hb.crm.AbstractGnpCrmInRec;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.CRMMap;
import it.valueteam.gnp.obj.StatoRichiestaA375NPg35;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.pitagora.WSPitagoraController;
import it.valueteam.gnp.utility.StateManagerA375Npg35;
import java.util.Date;
public class RequestManagerA375NPg35 {
public RequestManagerA375NPg35() {};
/**
* avanzaStatoInAcquisita
*
* @param crmInRec GnpCrmInRec
* @param flagBlackList
* @param log ProcessLogger
*/
public static void avanzaStatoInAcquisita(AbstractGnpCrmInRec crmInRec, String processo, ProcessLogger log) throws
Exception {
GnpRichiesteA375Npg35 richiestaA375Npg35 = null;
GnpRichiesteA375Npg35DAO A375Npg35DAO = null;
int statoPartenza = StateManagerA375Npg35.RICHIESTA_NON_PRESENTE;
// Riempio il bean di RichiestaRecipient a partire da quello di Attivazione per rientro
//try {
richiestaA375Npg35 = creaRichiestaRientroCrmRec(crmInRec,processo);
// salvo la richiesta con stato acquisita
A375Npg35DAO = new GnpRichiesteA375Npg35DAO();
A375Npg35DAO.save(richiestaA375Npg35);
log.write("9999", "RequestManagerA375NPg35.avanzaStatoInAcquisita() creata la richiesta "+richiestaA375Npg35.getIdRichiesta());
insertStoricoA375Npg35(statoPartenza, richiestaA375Npg35);
WSPitagoraController.getInstance().gestisciNPg35DaInviareAlWS(richiestaA375Npg35);
}
public static void insertStoricoA375Npg35(int stato_da, GnpRichiesteA375Npg35 richiestaA375Npg35) throws Exception {
GnpStoricoA375Npg35DAO richA375Npg35 = new GnpStoricoA375Npg35DAO();
//creo lo storico
GnpStoricoA375Npg35 storico = new GnpStoricoA375Npg35();
storico.setIdRichiesta(richiestaA375Npg35.getIdRichiesta());
storico.setStatoDa(new Long(stato_da));
storico.setStatoA(richiestaA375Npg35.getStato());
richA375Npg35.save(storico);
}
private static GnpRichiesteA375Npg35 creaRichiestaRientroCrmRec(AbstractGnpCrmInRec crmInRec,String processo) throws Exception {
GnpRichiesteA375Npg35 richiestaA375Npg35 = new GnpRichiesteA375Npg35();
richiestaA375Npg35.setIdEsigenza(crmInRec.getIdEsigenza());
richiestaA375Npg35.setStato(new Long(StatoRichiestaA375NPg35.ACQUISITA));
richiestaA375Npg35.setProcesso(processo);
richiestaA375Npg35.setPiattaformaProvenienza(crmInRec.getPiattaformaProvenienza());
richiestaA375Npg35.setCanaleProvenienza(crmInRec.getCanaleProvenienza());
if( crmInRec.getDac() != null )
richiestaA375Npg35.setDac(crmInRec.getDac());
richiestaA375Npg35.setCos(crmInRec.getCos());
richiestaA375Npg35.setSla(crmInRec.getSla());
richiestaA375Npg35.setDet(crmInRec.getDet());
richiestaA375Npg35.setCow(crmInRec.getCow());
richiestaA375Npg35.setNumeroTelefono(crmInRec.getNumeroTelefono());
richiestaA375Npg35.setRecapitoAlternativo(crmInRec.getRecapitoAlternativo());
richiestaA375Npg35.setCodiceFiscalePartitaIva(crmInRec.getCodiceFiscalePartivaIva());
richiestaA375Npg35.setNominativoCliente(crmInRec.getNominativoCliente());
richiestaA375Npg35.setCor(crmInRec.getCor());
richiestaA375Npg35.setCos2(crmInRec.getCos2());
richiestaA375Npg35.setCor2(crmInRec.getCor2());
richiestaA375Npg35.setDn(crmInRec.getNumeroTelefono());
richiestaA375Npg35.setCodCorrelazione(crmInRec.getCodCorrelazione());
richiestaA375Npg35.setFlagDichiarazione(crmInRec.getFlagDichiarazione());
richiestaA375Npg35.setDataCheck(new Date());
richiestaA375Npg35.setIdSolution(crmInRec.getIdSolution());
richiestaA375Npg35.setCanaleProvenienza(crmInRec.getCanaleProvenienza());
richiestaA375Npg35.setDataOperazione(crmInRec.getDataOperazione());
richiestaA375Npg35.setDataRicezione(new Date());
richiestaA375Npg35.setCausaleRifiuto(crmInRec.getCausaleRifiuto());
richiestaA375Npg35.setNumTotRichieste(crmInRec.getNumTotRichieste());
richiestaA375Npg35.setMarcaggio(crmInRec.getMarcaggio());
richiestaA375Npg35.setCanaleVendita(crmInRec.getCanaleVendita());
richiestaA375Npg35.setUniqueIdCrmIn(crmInRec.getUniqueId());
return richiestaA375Npg35;
}
public static void avanzaStatoInAttesaVerifica(GnpRichiesteA375Npg35 richiestaA375Npg35 , ProcessLogger log) throws
StateTransitionNotPossibleException, Exception {
int statoPartenza = richiestaA375Npg35.getStato().intValue();
GnpRichiesteA375Npg35DAO A375Npg35DAO = new GnpRichiesteA375Npg35DAO();
try {
int status = StateManagerA375Npg35.CheckTransition(richiestaA375Npg35.getIdRichiesta(), StatoRichiestaA375NPg35.ATTESA_VERIFICA, richiestaA375Npg35.getProcesso());
if (status != StateManagerA375Npg35.TRANSIZIONE_NON_POSSIBILE) {
A375Npg35DAO = new GnpRichiesteA375Npg35DAO();
richiestaA375Npg35.setStato(new Long(StatoRichiestaA375NPg35.ATTESA_VERIFICA));
A375Npg35DAO.merge(richiestaA375Npg35);
log.write("0008", richiestaA375Npg35.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza)+ " IN STATO ATTESAVERIFICA");
insertStoricoA375Npg35(statoPartenza,richiestaA375Npg35);
//DbcfxgoController.getInstance().notificaVariazioneStatoDbcfxgo(richiestaA375Npg35, richiestaA375Npg35);
//BamController.getInstance().notificaVariazioneStatoBAM(richiestaA375Npg35, richiestaA375Npg35);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richiestaA375Npg35.getIdRichiesta()
+ " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) + " IN STATO ATTESAVERIFICA");
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
} catch (Exception ex) {
ex.printStackTrace();
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009", richiestaA375Npg35.getIdRichiesta() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza)
+ " IN STATO ATTESAVERIFICA : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInVerificataOK(GnpRichiesteA375Npg35 richiestaA375Npg35, ProcessLogger log)
throws Exception
{
int statoPartenza = richiestaA375Npg35.getStato().intValue();
GnpRichiesteA375Npg35DAO recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
try {
int status = StateManagerA375Npg35.CheckTransition(richiestaA375Npg35.getIdRichiesta(), StatoRichiestaA375NPg35.VERIFICATAOK, richiestaA375Npg35.getProcesso());
if (status != StateManagerA375Npg35.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato VERIFICATAOK
recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
richiestaA375Npg35.setStato(new Long(StatoRichiestaA375NPg35.VERIFICATAOK));
richiestaA375Npg35.setVerificataA375("1");
recA375Gnp35DAO.merge(richiestaA375Npg35);
// Se la verifica di Pitagora era comunque fallita, notifica CRM che si va comunque avanti
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaA375Npg35.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaA375Npg35, CRMMap.NOTIFICA_VALIDATAPITAGORA_A375);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richiestaA375Npg35.getIdRichiesta()
+ " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) + " IN STATO VERIFICATAOK");
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009", richiestaA375Npg35.getIdRichiesta() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza)
+ " IN STATO VERIFICATAOK : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInVerificataKO(GnpRichiesteA375Npg35 richiestaA375Npg35, String codiceKOPitagora, String descKOPitagora, ProcessLogger log)
throws Exception
{
log.write("9999", "2010X1: WSPitagoraController.processaEsitoA375Npg35() INIZIO");
int statoPartenza = richiestaA375Npg35.getStato().intValue();
GnpRichiesteA375Npg35DAO recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
try {
int status =StateManagerA375Npg35.CheckTransition(richiestaA375Npg35.getIdRichiesta(), StatoRichiestaA375NPg35.VERIFICATAOK, richiestaA375Npg35.getProcesso());
if (status != StateManagerA375Npg35.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato validating
recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
richiestaA375Npg35.setStato(new Long(StatoRichiestaA375NPg35.VERIFICATAKO));
richiestaA375Npg35.setVerificataA375("1");
richiestaA375Npg35.setCodiceRifiutoPitagora(codiceKOPitagora);
richiestaA375Npg35.setMotivoRifiutoPitagora(descKOPitagora);
recA375Gnp35DAO.merge(richiestaA375Npg35);
log.write("0008", richiestaA375Npg35.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza)+ " IN STATO VERIFICATAKO");
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaA375Npg35.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaA375Npg35, CRMMap.NOTIFICA_RIFIUTATAPITAGORA_A375);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richiestaA375Npg35.getIdRichiesta()
+ " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) + " IN STATO VERIFICATAKO");
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009",richiestaA375Npg35.getIdRichiesta() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza)
+ " IN STATO VERIFICATAKO : " + ex.toString());
throw ex;
}
log.write("9999", "2010X1: WSPitagoraController.processaEsitoA375Npg35() FINE");
}
public static void avanzaStatoInRifiutataPitagora(GnpRichiesteA375Npg35 richiestaA375Npg35
, String codiceRifiutoPitagora, String motivoRifiuto, ProcessLogger log) throws
StateTransitionNotPossibleException, Exception {
int statoPartenza = richiestaA375Npg35.getStato().intValue();
GnpRichiesteA375Npg35DAO recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
try {
int status = StateManagerA375Npg35.CheckTransition(richiestaA375Npg35.getIdRichiesta(), StatoRichiestaA375NPg35.RIFIUTATAPITAGORA,richiestaA375Npg35.getProcesso());
if (status != StateManagerA375Npg35.TRANSIZIONE_NON_POSSIBILE) {
// salvo la richiesta con stato ESPLETATA
recA375Gnp35DAO = new GnpRichiesteA375Npg35DAO();
richiestaA375Npg35.setStato(new Long(StatoRichiestaA375NPg35.RIFIUTATAPITAGORA));
richiestaA375Npg35.setCodiceRifiutoPitagora(codiceRifiutoPitagora);
recA375Gnp35DAO.merge(richiestaA375Npg35);
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaA375Npg35.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaA375Npg35, CRMMap.NOTIFICA_RIFIUTATAPITAGORA);
// 0008 ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA:
log.write("0008",richiestaA375Npg35.getIdRichiesta().toString() + " DA STATO : " +StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) +
" IN STATO RIFIUTATAPITAGORA");
} else {
log.write("9999","TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richiestaA375Npg35.getIdRichiesta() + " DA STATO : " +
StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) +
" IN STATO RIFIUTATAPITAGORA");
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
} catch (Exception ex) {
//0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009",richiestaA375Npg35.getIdRichiesta() + " DA STATO : " + StatoRichiestaA375NPg35.getStatoDescr(statoPartenza) +
" IN STATO RIFIUTATAPITAGORA : " + ex.toString());
throw ex;
}
}
}

View File

@@ -0,0 +1,837 @@
package it.valueteam.gnp.manager;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.*;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerCSNPg35;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import it.valueteam.gnp.ws.utlities.WSRestHandler;
import org.apache.http.Header;
import org.apache.http.message.BasicHeader;
import tim.infobus.data.TID;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Date;
import java.util.List;
public class RequestManagerCSNPg103 {
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
//public static final int RET_CODE_ERR_GEN_FROM_WS = 99;
//public static final int RET_CODE_PARAM_NUM_LINEA_MANC_FROM_WS = 1;
//public static final int RET_CODE_RIS_NON_TROVATO_FROM_WS = 2;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC = "LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE = "Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC = "CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE = "L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC = "CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE = "L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS = "VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE = "VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA = "VERIFICA_CODICE_SEGRETO_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE = "VERIFICA CODICE SEGRETO NON GESTITA DBSS";
public RequestManagerCSNPg103() {
}
/**
* avanzaStatoInAcquisita
*/
public static void avanzaStatoInAcquisita(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteCsNpg103 richiestaCs;
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
int statoPartenza = StateManagerCSNPg35.RICHIESTA_NON_PRESENTE;
richiestaCs = creaRichiesta(richiestaFenp, ProcessMapper.proc_CS_NPg103);
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaCs.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoCSNpg103(statoPartenza, richiestaCs);
log.write("9999", "RequestManagerCSNPg103.avanzaStatoInAcquisita() creata la richiesta " + richiestaCs.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaCs.getCodiceSegreto());
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom = null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaCs.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if (Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : " + richiestaCs.getIdRichiesta() + " COW: " + richiestaCs.getCodiceSegreto() + " DN:" + richiestaCs.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaCs.getDn(), richiestaCs.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if (anagCowLineaTelecom != null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : ID RICHIESTA: " + richiestaCs.getIdRichiesta() + " COW VECCHIO: " + richiestaCs.getCodiceSegreto() +
" COW NUOVO:" + anagCowLineaTelecom.getCowNew() + " DN:" + richiestaCs.getDn());
anagCowTelecom = new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
// 152248 - 227248 nuovo set cow/codSegreto
richiestaCs.setCow(anagCowTelecom.getCow());
richiestaCs.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
}
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaCs, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
log.write("9999", "AnagCowTelecom codice cow non presente nella vecchia anagrafica e non presente in tabella di trascodifica GNP_ANAG_COW_LINEA_TELECOM idRichiesta : " + richiestaCs.getIdRichiesta() + " DN:" + richiestaCs.getDn() + " COW: " + richiestaCs.getCodiceSegreto() +
" AVANZA RIFIUTATO: " + ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// controllare GNP_VERIFICA_CS_WHITELIST
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteList(richiestaFenp.getDn(), richiestaFenp.getCodiceSegreto(), richiestaCs.getCodiceSegreto()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ESPLETATA DN: " + richiestaFenp.getDn());
//RE: URGENTE - Anomalia DBCFX_SM_501 - Richiesta riscontri.
/*
* Nel caso in cui la numerazione è presente nella whiteList, viene prima tentata l'invocazione del servizio
* CustomerLocation, in caso negativo utilizza la piattaformaCompetenza.
*/
// TODO C07? DBSS/SL inserisco qui chiamata al nuovo servizio checkIsCessatoRiattivabile
boolean checkIsCessatoRiattivabile = callCheckCessatoRiattivabile(richiestaCs, richiestaFenp, log); //sostituire con la chiamata
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if (checkIsCessatoRiattivabile) {
richiestaCs.setPiattaformaCompetenza("D");
} else if (!callCheckRetailPlatformWhiteList(richiestaCs, richiestaFenp, log)) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :" + richiestaFenp.getDn()
+ "Recupero la piattaforma di competenza dall'Anagrafica : " + anagCowTelecom.getCrmCompetenza());
richiestaCs.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
if (anagCowTelecom.getCrmCompetenza() != null && "R".equals(anagCowTelecom.getCrmCompetenza())){
richiestaCs.setPiattaformaCompetenza("D");
}
}
if (richiestaCs.getPiattaformaCompetenza() == null) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :" + richiestaFenp.getDn()
+ "Caso anomalo che non dovrebbe mai succeddere nell'eventualita' risetto il crm di competenza : " + anagCowTelecom.getCrmCompetenza());
richiestaCs.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaCs, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
avanzaStatoInEspletata(richiestaCs, log);
} else if (verificaWhiteList != null && !verificaWhiteList) {
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaCs, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
log.write("9999", "Risultato Verifica in WhiteList [FALSE]. Passaggio in RIFIUTATA");
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
//verificaWhiteList == null
else {
log.write("9999", "Risultato Verifica in WhiteList [NULL]. Verifico con i sistemi Retail");
// TODO C07? DBSS/SL inserisco qui chiamata al nuovo servizio checkIsCessatoRiattivabile
boolean checkIsCessatoRiattivabile = callCheckCessatoRiattivabile(richiestaCs, richiestaFenp, log); //sostituire con la chiamata
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
boolean utenzaDbss = false;
if (checkIsCessatoRiattivabile) {
utenzaDbss = true;
richiestaCs.setPiattaformaCompetenza("D"); //setto DBSS
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaCs, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
}
if (!utenzaDbss) {
boolean callCheckRetailPlatform = callCheckRetailPlatform(richiestaCs, richiestaFenp, log);
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaCs, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
if (!callCheckRetailPlatform) {
log.write("9999", "callCheckRetailPlatform false: " + richiestaCs.getIdRichiesta() + " COW: " + richiestaCs.getCodiceSegreto() + "CRM recuperato: " + richiestaCs.getPiattaformaCompetenza());
return;
}
}
// 152248 - 227248
int KO_D274 = verificaFase2Del274(richiestaCs.getDn());
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if (isUtenzaDBSS(richiestaCs.getPiattaformaCompetenza())) {
utenzaDbss = true;
log.write("9999", "isUtenzaDBSS : " + richiestaCs.getPiattaformaCompetenza() + " DN:" + richiestaCs.getDn());
if (KO_D274 != 0) {
richiestaCs.setPiattaformaCompetenza("D");
// LANCIO TC5 per errore 10
if (KO_D274 == 10) {
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else {
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
} else if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaCs, richiestaFenp, log);
}
}
if (!utenzaDbss) {
// rimossa come da mail Buglioni del 30/01/2023
/*if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaCs.getTipoLinea() != null && richiestaCs.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInEspletata(richiestaCs, log);
} else {*/
if (KO_D274 != 0) {
richiestaCs.setPiattaformaCompetenza("B");
// LANCIO TC5 per errore 10
if (KO_D274 == 10) {
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else {
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
} else if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)) {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: " + richiestaCs.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaCs.getPiattaformaCompetenza());
crmController.notificaCRM(richiestaCs, richiestaFenp, CRMMap.PRENOTIFICA);
} else {
// non è né CRMB né DBSS
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
}
}
}
public static boolean callCheckCessatoRiattivabile(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws Exception {
WSRestHandler handler = new WSRestHandler();
boolean valueToReturn = handler.getListCease(richiestaCs, log);
return valueToReturn;
}
/**
* avanzaStatoInAcquisitaTool
*/
//C06 RE: GATEWAY DBCFX : metodo parallelo utilizzato solo ed esclusivamente dal tool della DE MARIA
public static void avanzaStatoInAcquisitaTool(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
log.write("9999", "START avanzaStatoInAcquisitaTool DN:" + richiestaFenp.getDn() + "NomeFile: " + richiestaFenp.getNomeFile());
GnpRichiesteCsNpg103 richiestaCs;
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerCSNPg35.RICHIESTA_NON_PRESENTE;
richiestaCs = creaRichiesta(richiestaFenp, ProcessMapper.proc_CS_NPg103);
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaCs.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoCSNpg103(statoPartenza, richiestaCs);
log.write("9999", "RequestManagerCSNPg103.avanzaStatoInAcquisita() creata la richiesta " + richiestaCs.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaCs.getCodiceSegreto());
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom = null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaCs.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if (Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : " + richiestaCs.getIdRichiesta() + " COW: " + richiestaCs.getCodiceSegreto() + " DN:" + richiestaCs.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaCs.getDn(), richiestaCs.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if (anagCowLineaTelecom != null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : " + richiestaCs.getIdRichiesta() + " COW VECCHIO: " + richiestaCs.getCodiceSegreto() +
" COW NUOVO:" + anagCowLineaTelecom.getCowNew() + " DN:" + richiestaCs.getDn());
anagCowTelecom = new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
anagCowTelecom.setCrmCompetenza(richiestaFenp.getPiattaformaNotifica());
richiestaCs.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
}
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
log.write("9999", "AnagCowTelecom idRichiesta : " + richiestaCs.getIdRichiesta() + " COW: " + richiestaCs.getCodiceSegreto() + "AVANZA RIFIUTATO: " + ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
//C06 RE: GATEWAY DBCFX :utilizzo la piattaforma
log.write("9999", "Piattaforma notificata : " + richiestaFenp.getPiattaformaNotifica() + " DN:" + richiestaCs.getDn());
richiestaCs.setPiattaformaCompetenza(richiestaFenp.getPiattaformaNotifica());
// 152248 - 227248
boolean esisteD274suDN;
esisteD274suDN = verificaEsitoFase2Del274(richiestaCs.getDn());
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if (isUtenzaDBSS(richiestaCs.getPiattaformaCompetenza())) {
log.write("9999", "isUtenzaDBSS : " + richiestaCs.getPiattaformaCompetenza() + " DN:" + richiestaCs.getDn());
if (esisteD274suDN) {
richiestaCs.setPiattaformaCompetenza("D");
// LANCIO TC5 per errore 10
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaCs, richiestaFenp, log);
}
} else {
// rimossa come da mail Buglioni del 30/01/2023
/*if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaCs.getTipoLinea() != null && richiestaCs.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInEspletata(richiestaCs, log);
} else {*/
if (esisteD274suDN) {
richiestaCs.setPiattaformaCompetenza("B");
// LANCIO TC5 per errore 10
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)) {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: " + richiestaCs.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaCs.getPiattaformaCompetenza());
crmController.notificaCRM(richiestaCs, richiestaFenp, CRMMap.PRENOTIFICA);
//avanzaStatoInPresaInCarico(richiestaCs, log);
} else {
// non è né CRMB né DBSS
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
// }
}
log.write("9999", "END avanzaStatoInAcquisitaTool DN:" + richiestaFenp.getDn() + "IdRichiesta: " + richiestaCs.getIdRichiesta() + " NomeFile: " + richiestaFenp.getNomeFile());
}
// 152248 - verifico se ci sono esiti fase2 del 274
private static boolean verificaEsitoFase2Del274(String dn) {
GnpRichiesteDonorDAO donorDAO = new GnpRichiesteDonorDAO();
List richiesteDonor = donorDAO.findByProperty("dn",dn);
if (!richiesteDonor.isEmpty()) {
for (Object o : richiesteDonor) {
GnpRichiesteDonor richDonor = (GnpRichiesteDonor) o;
if ((richDonor.getDataScadenza().after(new Date())) && richDonor.getStato() != 7
&& richDonor.getStato() != 8 && richDonor.getStato() != 9) {
return true;
}
}
}
/*
GnpNowDonorInDAO nowDonorInDAO = new GnpNowDonorInDAO();
List richiesteNowDonorIn = nowDonorInDAO.findByProperty("idLinea", dn);
if (!richiesteNowDonorIn.isEmpty()) {
for (Object o : richiesteNowDonorIn) {
GnpNowDonorIn gnpNowDonorIn = (GnpNowDonorIn) o;
Date ricevutaEntro15gg = DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), -15, 0, 0, 0);
if (ricevutaEntro15gg.before(DateUtils.setHourAndMinute(gnpNowDonorIn.getDataRicezione(), 0, 0, 0))) {
return true;
}
}
}*/
return false;
}
// 152248 - verifico se ci sono esiti fase2 del 274
public static int verificaFase2Del274(String dn) {
int codice_rifiuto = 0;
GnpRichiesteDonorDAO donorDAO = new GnpRichiesteDonorDAO();
List richiesteDonor = donorDAO.findByProperty("dn",dn);
if (!richiesteDonor.isEmpty()) {
for (Object o : richiesteDonor) {
GnpRichiesteDonor richDonor = (GnpRichiesteDonor) o;
if ((richDonor.getDataScadenza().after(new Date())) && richDonor.getStato() != 7
&& richDonor.getStato() != 8 && richDonor.getStato() != 9) {
codice_rifiuto = 10;
GnpNowDonorInDAO nowDonorInDAO = new GnpNowDonorInDAO();
List richiesteNowDonorIn = nowDonorInDAO.findByProperty("idLinea", dn);
if (!richiesteNowDonorIn.isEmpty()) {
for (Object o2 : richiesteNowDonorIn) {
GnpNowDonorIn gnpNowDonorIn = (GnpNowDonorIn) o2;
if (gnpNowDonorIn.getDataRicezione().after(richDonor.getDataRicezione())
&& (richDonor.getDac() != null) && (new Date().after(richDonor.getDac()))){
codice_rifiuto = 27;
}
}
}
return codice_rifiuto;
}
}
}
return codice_rifiuto;
}
private static void callVerificaCSDBSS(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws Exception {
log.write("9999", "Chiamata VerificaCS delibera 103");
// nuova chiamata verifica CS
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(richiestaCs, richiestaFenp, DBSSMap.PRENOTIFICA);
//String esito = null;
/*if (dbssResponse != null) {
esito = esito = dbssResponse.getProcessData().getReturnCode();
log.write("9999", "Esito presa in carico Verifica CS con DBSS: ["+esito+"]");
}*/
log.write("9999", "END Richiesta Verifica CS con DBSS");
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
private static String isPiattaformaNotifica(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) {
log.write("9999", " START isPiattaformaNotifica : " + richiestaFenp.getIdRichiesta() + " DN: " + richiestaFenp.getDn() + " Piattaforma notifica: " + richiestaFenp.getPiattaformaNotifica());
return richiestaFenp.getPiattaformaNotifica();
}
protected static boolean callCheckRetailPlatform(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiesteFenpIn, ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " + richiestaCs.getIdRichiesta() + "DN: " + richiestaCs.getDn());
String methSig = "[RequestManagerCSNPg103].[callCheckRetailPlatform] ";
boolean res = false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaCs.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body, log);
res = gestisciResponseCheckRetail(methSig, resp, log, richiestaCs, richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatform : " + richiestaCs.getIdRichiesta() + "DN: " + richiestaCs.getDn() + "con esito: " + res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig, RetrieveByLineNumberResponseMessage resp, ProcessLogger log, GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig + " non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig + " PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//MODIFICA INGLISA IN CASO DI UTENZA NON TROVATA NON PASSO IN RIFIUTATA MA CHIAMO B
//avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS" +
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode + "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaCs, richiesteFenp, ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC, ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE + retCode, log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode + "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaCs, richiesteFenp, ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC, ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE + retCode, log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaCs.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
protected static boolean callCheckRetailPlatformWhiteList(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiesteFenpIn, ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatformWhiteList : " + richiestaCs.getIdRichiesta() + "DN: " + richiestaCs.getDn());
String methSig = "[RequestManagerCSNPg103].[callCheckRetailPlatformWhiteList] ";
boolean res = false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaCs.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body, log);
res = gestisciResponseCheckRetailWhiteList(methSig, resp, log, richiestaCs, richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatformWhiteList : " + richiestaCs.getIdRichiesta() + "DN: " + richiestaCs.getDn() + "con esito: " + res);
return res;
}
private static boolean gestisciResponseCheckRetailWhiteList(String methSig, RetrieveByLineNumberResponseMessage resp, ProcessLogger log, GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS");
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode + "corrispondente a un errore interno di CCC");
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode + "corrispondente a un errore interno di CCC");
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaCs.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
private static void buildScartiVerificaCs(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiestaFenp, String tipoAnomalia, String descrizioneAnomalia, ProcessLogger log) {
log.write("9999", "START buildScartiVerificaCs DN: " + richiestaCs.getDn() + "Idrichiesta: " + richiestaCs.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao = new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs = new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaCs.getIdRichiesta());
scartiVerificaCs.setDn(richiestaCs.getDn());
scartiVerificaCs.setNomeFile(richiestaFenp.getNomeFile());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setTipoComunicazione(richiestaFenp.getTipoComunicazione());
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaCs.getCodiceSegreto());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999", "END buildScartiVerificaCs DN: " + richiestaCs.getDn() + "Idrichiesta: " + richiestaCs.getIdRichiesta());
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body, ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN [" + requestDn + "]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage Ottenuta risposta DN [" + requestDn + "] codice [" + retCode + "]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage Ottenuta risposta DN [" + requestDn + "] descrizione [" + descr + "]");
return retrieveByLineNumberResponseMessage;
}
public static void insertStoricoCSNpg103(int stato_da, GnpRichiesteCsNpg103 richiestaNpg103) throws Exception {
GnpStoricoCsNpg103DAO storicoDAO = new GnpStoricoCsNpg103DAO();
//creo lo storico
GnpStoricoCsNpg103 storico = new GnpStoricoCsNpg103();
storico.setIdRichiesta(richiestaNpg103.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaNpg103.getStato());
storicoDAO.save(storico);
}
private static GnpRichiesteCsNpg103 creaRichiesta(GnpFenpRichiesteIn fenpIn, String processo) throws Exception {
GnpRichiesteCsNpg103 richiestaNpg103 = new GnpRichiesteCsNpg103();
richiestaNpg103.setStato((long) StatoRichiestaCSNPg35.ACQUISITA);
richiestaNpg103.setProcesso(processo);
richiestaNpg103.setCodOpRecipient(fenpIn.getCodOpRecipient());
richiestaNpg103.setCodiceOrdine(fenpIn.getCodiceOrdine());
richiestaNpg103.setDataOrdine(fenpIn.getDataOrdine());
richiestaNpg103.setDataRicezione(new Date());
richiestaNpg103.setDn(fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
richiestaNpg103.setDac(fenpIn.getDac());
richiestaNpg103.setNominativoCliente(fenpIn.getNominativoCliente());
richiestaNpg103.setCodiceSegreto(fenpIn.getCodiceSegreto());
richiestaNpg103.setTelReferenteRich(fenpIn.getTelReferenteRich());
richiestaNpg103.setEmailReferenteRich(fenpIn.getEmailReferenteRich());
richiestaNpg103.setDataInvioMessaggio(fenpIn.getDataInvioMessaggio());
richiestaNpg103.setCodOpDonating(fenpIn.getCodOpDonating());
richiestaNpg103.setCodOpDonor(fenpIn.getCodOpDonor());
richiestaNpg103.setIdCorrelazione(fenpIn.getIdCorrelazione());
richiestaNpg103.setNumTotRichieste(fenpIn.getNumTotRichieste());
richiestaNpg103.setTipoLinea(fenpIn.getTipoLinea()); //2018_C08 TipoLinea DONE NO-OP qui arrivano solo valori validi, letto tal quale, il mittente deve valorizzarlo bene
if ("1".equals(richiestaNpg103.getTipoLinea())) {
richiestaNpg103.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 5, 18, 15, 0));
} else {
richiestaNpg103.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 1, 18,15, 0));
}
return richiestaNpg103;
}
/**
* avanzaStatoInPresaInCarico
*/
public static void avanzaStatoInPresaInCarico(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "START avanzaStatoInPresaInCarico Idrichiesta: " + richiesta.getIdRichiesta() + "da stato " + statoPartenza + " a : " + StatoRichiestaCSNPg35.PRESAINCARICO);
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.PRESAINCARICO, ProcessMapper.proc_CS_NPg103);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.PRESAINCARICO);
npg103DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN PRESAINCARICO");
insertStoricoCSNpg103(statoPartenza, richiesta);
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiesta.getPiattaformaCompetenza());
crmController.inviaVerificaCsNpg103(richiesta);
} else {
log.write("9999", "avanzaStatoInPresaInCarico Idrichiesta: " + richiesta.getIdRichiesta() + " Transazione non possibile stato partenza: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
log.write("9999", "FINE avanzaStatoInPresaInCarico Idrichiesta: " + richiesta.getIdRichiesta());
}
/**
* avanzaStatoInAttesaVerifica
*/
public static void avanzaStatoInAttesaVerifica(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ATTESAVERIFICA, ProcessMapper.proc_CS_NPg103);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ATTESAVERIFICA);
npg103DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ATTESAVERIFICA");
insertStoricoCSNpg103(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInRifiutata
*/
public static void avanzaStatoInRifiutata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log, String codMotivoRifiuto) throws
Exception {
log.write("9999", "avanzaStatoInRifiutata :" + richiesta.getIdRichiesta());
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
try {
if (statoPartenza != StatoRichiestaCSNPg35.RIFIUTATA) {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.RIFIUTATA, ProcessMapper.proc_CS_NPg103);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.RIFIUTATA);
npg103DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN RIFIUTATA");
OLOControllerFENP.getInstance().notificaEvento(richiesta, codMotivoRifiuto);
insertStoricoCSNpg103(statoPartenza, richiesta);
}
} else {
log.write("9999", "Esito ignorato perché richiesta " + richiesta.getIdRichiesta() + "gia in stato RIFIUTATA");
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
*/
public static void avanzaStatoInEspletata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "START avanzaStatoInEspletata processo CSNPg103 idRichiesta: " + richiesta.getIdRichiesta() + "DA: " + statoPartenza + "a :" + StatoRichiestaCSNPg35.ESPLETATA);
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ESPLETATA, ProcessMapper.proc_CS_NPg103);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ESPLETATA);
npg103DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoCSNpg103(statoPartenza, richiesta);
} else {
log.write("9999", " avanzaStatoInEspletata processo CSNPg103 id Richiesta: " + richiesta.getIdRichiesta() + " Transazione non possibile stato partenza: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
log.write("9999", "END avanzaStatoInEspletata processo CSNPg103 " + richiesta.getIdRichiesta());
}
public static void avanzaStatoInAnnullata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "RequestManagerCSNPG103 avanzaStatoInAnnullata");
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ANNULLATA, ProcessMapper.proc_CS_NPg103);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ANNULLATA);
npg103DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ANNULLATA");
insertStoricoCSNpg103(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,729 @@
package it.valueteam.gnp.manager;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.BusinessInteractionRelationship_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicSpecificationRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CustomerOrderItemRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductBundleRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductCharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductOrderRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductSpecCharacteristicRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.Request_LineNumber;
import it.telecomitalia.soa.wirelinelinecodequery.x20150511.VerifySecretCodeResponse;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.WirelineLineCodeQueryResponseUtils;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.Func;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerCSNPg35;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import java.util.Date;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
public class RequestManagerCSNPg35 {
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
//public static final int RET_CODE_ERR_GEN_FROM_WS = 99;
//public static final int RET_CODE_PARAM_NUM_LINEA_MANC_FROM_WS = 1;
//public static final int RET_CODE_RIS_NON_TROVATO_FROM_WS = 2;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC="LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE="Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC="CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC="CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS="VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE="VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA="VERIFICA_CODICE_SEGRETO_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE="VERIFICA CODICE SEGRETO NON GESTITA DBSS";
public RequestManagerCSNPg35() {
}
/**
* avanzaStatoInAcquisita
*/
public static void avanzaStatoInAcquisita(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteCsNpg35 richiestaCs;
GnpRichiesteCsNpg35DAO richDAO = new GnpRichiesteCsNpg35DAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerCSNPg35.RICHIESTA_NON_PRESENTE;
richiestaCs = creaRichiesta(richiestaFenp, ProcessMapper.proc_CS_NPg35);
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaCs.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoCSNpg35(statoPartenza, richiestaCs);
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp.getProgId(), DbcfxgoMap.TIPO_NOTIFICA_DONATING, false);
log.write("9999", "RequestManagerCSNPg35.avanzaStatoInAcquisita() creata la richiesta " + richiestaCs.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaCs.getCodiceSegreto());
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao=new GnpAnagCowTelecomDAO();;
GnpAnagCowTelecom anagCowTelecom=cowDao.findById(richiestaCs.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaCs.getIdRichiesta()+" COW: "+richiestaCs.getCodiceSegreto()+" DN:"+richiestaCs.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaCs.getDn(),richiestaCs.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : ID RICHIESTA: "+richiestaCs.getIdRichiesta()+" COW VECCHIO: "+richiestaCs.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaCs.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiestaCs.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
}
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
log.write("9999", "AnagCowTelecom codice cow non presente nella vecchia anagrafica e non presente in tabella di trascodifica GNP_ANAG_COW_LINEA_TELECOM idRichiesta : "+richiestaCs.getIdRichiesta()+" DN:"+richiestaCs.getDn()+" COW: "+richiestaCs.getCodiceSegreto()+ " AVANZA RIFIUTATO: "+ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// controllare GNP_VERIFICA_CS_WHITELIST
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteList(richiestaFenp.getDn(), richiestaFenp.getCodiceSegreto(),richiestaCs.getCodiceSegreto()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ESPLETATA DN: "+richiestaFenp.getDn());
//RE: URGENTE - Anomalia DBCFX_SM_501 - Richiesta riscontri.
/*
* Nel caso in cui la numerazione è presente nella whiteList, viene prima tentata l'invocazione del servizio
* CustomerLocation, in caso negativo utilizza la piattaformaCompetenza.
*/
if(!callCheckRetailPlatformWhiteList(richiestaCs,richiestaFenp,log)) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Recupero la piattaforma di competenza dall'Anagrafica : "+anagCowTelecom.getCrmCompetenza());
richiestaCs.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
if(richiestaCs.getPiattaformaCompetenza()==null) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Caso anomalo che non dovrebbe mai succeddere nell'eventualita' risetto il crm di competenza : "+anagCowTelecom.getCrmCompetenza());
richiestaCs.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
avanzaStatoInEspletata(richiestaCs, log);
}
else if (verificaWhiteList != null && !verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [FALSE]. Passaggio in RIFIUTATA");
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
//verificaWhiteList == null
else {
log.write("9999", "Risultato Verifica in WhiteList [NULL]. Verifico con i sistemi Retail");
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
/* C06 RE: GATEWAY DBCFX :Studio per il tracciamento di eventi non correttamente gestiti dal sistema
* cambio implementazione del recupero della piattaforma di competenza, non si basa più sull'anagrafica (anagCowTelecom)
* ma tramite il localizzatore. Per maggiori dettagli vedi mail
*/
if (!callCheckRetailPlatform(richiestaCs,richiestaFenp,log)) {
log.write("9999", "callCheckRetailPlatform false: "+richiestaCs.getIdRichiesta()+" COW: "+richiestaCs.getCodiceSegreto()+"CRM recuperato: "+richiestaCs.getPiattaformaCompetenza());
return;
}
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
boolean utenzaDbss = false;
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaCs.getPiattaformaCompetenza())){
utenzaDbss=true;
log.write("9999", "isUtenzaDBSS : "+richiestaCs.getPiattaformaCompetenza()+" DN:"+richiestaCs.getDn());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaCs,dbssDonorOutRecDAO,richiestaFenp,log);
}
}
if (!utenzaDbss) {
if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaCs.getTipoLinea() != null && richiestaCs.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInEspletata(richiestaCs, log);
} else {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInPresaInCarico(richiestaCs, log);
}
}
}
}
/**
* avanzaStatoInAcquisitaTool
*/
//C06 RE: GATEWAY DBCFX : metodo parallelo utilizzato solo ed esclusivamente dal tool della DE MARIA
public static void avanzaStatoInAcquisitaTool(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
log.write("9999", "START avanzaStatoInAcquisitaTool DN:"+richiestaFenp.getDn()+ "NomeFile: "+richiestaFenp.getNomeFile());
GnpRichiesteCsNpg35 richiestaCs;
GnpRichiesteCsNpg35DAO richDAO = new GnpRichiesteCsNpg35DAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerCSNPg35.RICHIESTA_NON_PRESENTE;
richiestaCs = creaRichiesta(richiestaFenp, ProcessMapper.proc_CS_NPg35);
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaCs.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoCSNpg35(statoPartenza, richiestaCs);
log.write("9999", "RequestManagerCSNPg35.avanzaStatoInAcquisita() creata la richiesta " + richiestaCs.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaCs.getCodiceSegreto());
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaCs.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaCs.getIdRichiesta()+" COW: "+richiestaCs.getCodiceSegreto()+" DN:"+richiestaCs.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaCs.getDn(),richiestaCs.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaCs.getIdRichiesta()+" COW VECCHIO: "+richiestaCs.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaCs.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
anagCowTelecom.setCrmCompetenza(richiestaFenp.getPiattaformaNotifica());
richiestaCs.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCs);
}
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
log.write("9999", "AnagCowTelecom idRichiesta : "+richiestaCs.getIdRichiesta()+" COW: "+richiestaCs.getCodiceSegreto()+ "AVANZA RIFIUTATO: "+ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
//C06 RE: GATEWAY DBCFX :utilizzo la piattaforma
log.write("9999", "Piattaforma notificata : "+richiestaFenp.getPiattaformaNotifica()+" DN:"+richiestaCs.getDn());
richiestaCs.setPiattaformaCompetenza(richiestaFenp.getPiattaformaNotifica());
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaCs.getPiattaformaCompetenza())){
log.write("9999", "isUtenzaDBSS : "+richiestaCs.getPiattaformaCompetenza()+" DN:"+richiestaCs.getDn());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaCs,dbssDonorOutRecDAO,richiestaFenp,log);
}
}else {
if (richiestaCs.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaCs.getTipoLinea() != null && richiestaCs.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInEspletata(richiestaCs, log);
} else {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: "+richiestaCs.getIdRichiesta());
avanzaStatoInPresaInCarico(richiestaCs, log);
}
}
log.write("9999", "END avanzaStatoInAcquisitaTool DN:"+richiestaFenp.getDn()+"IdRichiesta: "+richiestaCs.getIdRichiesta()+" NomeFile: "+richiestaFenp.getNomeFile());
}
private static void callVerificaCSDBSS(GnpRichiesteCsNpg35 richiestaCs,GnpDbssDonorOutDAO dbssDonorOutRecDAO,GnpFenpRichiesteIn richiestaFenp,ProcessLogger log) throws Exception {
log.write("9999", "Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiestaCs.getDn()+"]");
// chiamata al WS WirelineLineCodeQuery
DBSSController dbssController = DBSSController.getInstance();
GnpDbssDonorOut dbssDonorOut = dbssController.creaRichiestaVerificaCS(richiestaCs);
VerifySecretCodeResponse dbssResponse = dbssController.callVerificaCS(dbssDonorOut);
String esito = null;
if (dbssResponse != null) {
WirelineLineCodeQueryResponseUtils util = new WirelineLineCodeQueryResponseUtils(dbssResponse);
esito = dbssResponse.getProcessData().getReturnCode();
log.write("9999", "Esito Verifica codice segreto con DBSS: ["+esito+"]");
if (util.isCodiceSegretoCorretto()) {
log.write("9999", "Codice Segreto Corretto : ["+esito+"]+ " +richiestaCs.getDn());
// ESITO OK
// Valorizzazione del CODICE_CLIENTE
dbssDonorOut.setRespCodiceCliente(util.getCodiceCliente());
avanzaStatoInEspletata(richiestaCs, log);
} else if (util.isCodiceSegretoErrato()) {
log.write("9999", "Codice Segreto errato : ["+esito+"]+ " +richiestaCs.getDn());
// ESITO KO, codice CIM codice segreto errato
richiestaCs.setPiattaformaCompetenza("D");
avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
} else if (util.isNumerazioneNonGestita()) {
log.write("9999", "Numerazione non gestita : ["+esito+"]+ " +richiestaCs.getDn());
buildScartiVerificaCs(richiestaCs,richiestaFenp,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE,log);
}
dbssDonorOut.setRespCodEsito(esito);
dbssDonorOut.setRespDataRicezione(new Date());
dbssDonorOutRecDAO.merge(dbssDonorOut);
}else {
log.write("9999", "WirelineLineCodeQuery Response null caso anomalo]");
// C06 RE: GATEWAY DBCFX E CORRETTO IN QUESTO CASO METTERLO NEI CASI ANOMALI
buildScartiVerificaCs(richiestaCs,richiestaFenp,VERIFICA_CS_ERRATA_DBSS,VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE,log);
}
log.write("9999", "END Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiestaCs.getDn()+"]");
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
private static String isPiattaformaNotifica(GnpFenpRichiesteIn richiestaFenp,ProcessLogger log) {
log.write("9999", " START isPiattaformaNotifica : " +richiestaFenp.getIdRichiesta() + " DN: "+richiestaFenp.getDn()+" Piattaforma notifica: "+richiestaFenp.getPiattaformaNotifica());
return richiestaFenp.getPiattaformaNotifica();
}
protected static boolean callCheckRetailPlatform(GnpRichiesteCsNpg35 richiestaCs,GnpFenpRichiesteIn richiesteFenpIn,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " +richiestaCs.getIdRichiesta() + "DN: "+ richiestaCs.getDn());
String methSig = "[RequestManagerCSNPg35].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaCs.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetail(methSig,resp,log,richiestaCs,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatform : " +richiestaCs.getIdRichiesta() + "DN: "+ richiestaCs.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteCsNpg35 richiestaCs,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +" non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig +" PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//MODIFICA INGLISA IN CASO DI UTENZA NON TROVATA NON PASSO IN RIFIUTATA MA CHIAMO B
//avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS"+
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//avanzaStatoInRifiutata(richiestaCs, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaCs,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE+retCode,log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaCs,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE+retCode,log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaCs.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
protected static boolean callCheckRetailPlatformWhiteList(GnpRichiesteCsNpg35 richiestaCs,GnpFenpRichiesteIn richiesteFenpIn,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatformWhiteList : " +richiestaCs.getIdRichiesta() + "DN: "+ richiestaCs.getDn());
String methSig = "[RequestManagerCSNPg35].[callCheckRetailPlatformWhiteList] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaCs.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetailWhiteList(methSig,resp,log,richiestaCs,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatformWhiteList : " +richiestaCs.getIdRichiesta() + "DN: "+ richiestaCs.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetailWhiteList(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteCsNpg35 richiestaCs,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS");
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaCs.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
private static void buildScartiVerificaCs(GnpRichiesteCsNpg35 richiestaCs,GnpFenpRichiesteIn richiestaFenp,String tipoAnomalia,String descrizioneAnomalia,ProcessLogger log) {
log.write("9999","START buildScartiVerificaCs DN: " + richiestaCs.getDn()+"Idrichiesta: "+richiestaCs.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao=new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs=new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaCs.getIdRichiesta());
scartiVerificaCs.setDn(richiestaCs.getDn());
scartiVerificaCs.setNomeFile(richiestaFenp.getNomeFile());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setTipoComunicazione(richiestaFenp.getTipoComunicazione());
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaCs.getCodiceSegreto());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999","END buildScartiVerificaCs DN: " + richiestaCs.getDn()+"Idrichiesta: "+richiestaCs.getIdRichiesta());
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body,ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN ["+requestDn+"]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] codice ["+retCode+"]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] descrizione ["+descr+"]");
return retrieveByLineNumberResponseMessage;
}
public static void insertStoricoCSNpg35(int stato_da, GnpRichiesteCsNpg35 richiestaNpg35) throws Exception {
GnpStoricoCsNpg35DAO storicoDAO = new GnpStoricoCsNpg35DAO();
//creo lo storico
GnpStoricoCsNpg35 storico = new GnpStoricoCsNpg35();
storico.setIdRichiesta(richiestaNpg35.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaNpg35.getStato());
storicoDAO.save(storico);
}
private static GnpRichiesteCsNpg35 creaRichiesta(GnpFenpRichiesteIn fenpIn, String processo) throws Exception {
GnpRichiesteCsNpg35 richiestaNpg35 = new GnpRichiesteCsNpg35();
richiestaNpg35.setStato((long) StatoRichiestaCSNPg35.ACQUISITA);
richiestaNpg35.setProcesso(processo);
richiestaNpg35.setCodOpRecipient(fenpIn.getCodOpRecipient());
richiestaNpg35.setCodiceOrdine(fenpIn.getCodiceOrdine());
richiestaNpg35.setDataOrdine(fenpIn.getDataOrdine());
richiestaNpg35.setDataRicezione(new Date());
richiestaNpg35.setDn(fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
richiestaNpg35.setDac(fenpIn.getDac());
richiestaNpg35.setNominativoCliente(fenpIn.getNominativoCliente());
richiestaNpg35.setCodiceSegreto(fenpIn.getCodiceSegreto());
richiestaNpg35.setTelReferenteRich(fenpIn.getTelReferenteRich());
richiestaNpg35.setEmailReferenteRich(fenpIn.getEmailReferenteRich());
richiestaNpg35.setDataInvioMessaggio(fenpIn.getDataInvioMessaggio());
richiestaNpg35.setCodOpDonating(fenpIn.getCodOpDonating());
richiestaNpg35.setCodOpDonor(fenpIn.getCodOpDonor());
richiestaNpg35.setTipoLinea(fenpIn.getTipoLinea()); //2018_C08 TipoLinea DONE NO-OP qui arrivano solo valori validi, letto tal quale, il mittente deve valorizzarlo bene
return richiestaNpg35;
}
/**
* avanzaStatoInPresaInCarico
*/
public static void avanzaStatoInPresaInCarico(GnpRichiesteCsNpg35 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "START avanzaStatoInPresaInCarico Idrichiesta: "+richiesta.getIdRichiesta()+ "da stato "+statoPartenza+" a : "+StatoRichiestaCSNPg35.PRESAINCARICO);
GnpRichiesteCsNpg35DAO npg35DAO = new GnpRichiesteCsNpg35DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.PRESAINCARICO, ProcessMapper.proc_CS_NPg35);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.PRESAINCARICO);
npg35DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN PRESAINCARICO");
insertStoricoCSNpg35(statoPartenza, richiesta);
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiesta.getPiattaformaCompetenza());
crmController.inviaVerificaCsNpg35(richiesta);
}else {
log.write("9999", "avanzaStatoInPresaInCarico Idrichiesta: "+richiesta.getIdRichiesta() +" Transazione non possibile stato partenza: "+statoPartenza);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
log.write("9999", "FINE avanzaStatoInPresaInCarico Idrichiesta: "+richiesta.getIdRichiesta());
}
/**
* avanzaStatoInAttesaVerifica
*/
public static void avanzaStatoInAttesaVerifica(GnpRichiesteCsNpg35 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg35DAO npg35DAO = new GnpRichiesteCsNpg35DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ATTESAVERIFICA, ProcessMapper.proc_CS_NPg35);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ATTESAVERIFICA);
npg35DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ATTESAVERIFICA");
insertStoricoCSNpg35(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInRifiutata
*/
public static void avanzaStatoInRifiutata(GnpRichiesteCsNpg35 richiesta, ProcessLogger log, String codMotivoRifiuto) throws
Exception {
log.write("9999", "avanzaStatoInRifiutata :" + richiesta.getIdRichiesta());
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg35DAO npg35DAO = new GnpRichiesteCsNpg35DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.RIFIUTATA, ProcessMapper.proc_CS_NPg35);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.RIFIUTATA);
npg35DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN RIFIUTATA");
OLOControllerFENP.getInstance().notificaEvento(richiesta, codMotivoRifiuto);
insertStoricoCSNpg35(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
*/
public static void avanzaStatoInEspletata(GnpRichiesteCsNpg35 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "START avanzaStatoInEspletata processo CSNPg35 idRichiesta: "+richiesta.getIdRichiesta()+ "DA: "+statoPartenza+"a :"+StatoRichiestaCSNPg35.ESPLETATA);
GnpRichiesteCsNpg35DAO npg35DAO = new GnpRichiesteCsNpg35DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ESPLETATA, ProcessMapper.proc_CS_NPg35);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ESPLETATA);
npg35DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoCSNpg35(statoPartenza, richiesta);
}else {
log.write("9999"," avanzaStatoInEspletata processo CSNPg35 id Richiesta: "+richiesta.getIdRichiesta()+" Transazione non possibile stato partenza: "+statoPartenza);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
log.write("9999", "END avanzaStatoInEspletata processo CSNPg35 "+richiesta.getIdRichiesta());
}
public static void avanzaStatoInAnnullata(GnpRichiesteCsNpg35 richiesta, ProcessLogger log) throws Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "RequestManagerCSNPG35 avanzaStatoInAnnullata");
GnpRichiesteCsNpg35DAO npg35DAO = new GnpRichiesteCsNpg35DAO();
try {
int status = StateManagerCSNPg35.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaCSNPg35.ANNULLATA, ProcessMapper.proc_CS_NPg35);
if (status != StateManagerCSNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCSNPg35.ANNULLATA);
npg35DAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCSNPg35.getStatoDescr(statoPartenza) + " IN ANNULLATA");
/*
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiesta.getPiattaformaCompetenza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(richiesta, DBSSMap.NOTIFICA_ANNULLATA);
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiesta.getPiattaformaCompetenza());
crmController.notificaCRM(richiesta, CRMMap.NOTIFICA_ANNULLAMENTO);
}
*/
insertStoricoCSNpg35(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
public static GnpRichiesteCsNpg35 getReq(GnpFenpRichiesteIn fenpRichiestaIn) {
GnpRichiesteCsNpg35DAO dao = new GnpRichiesteCsNpg35DAO();
GnpRichiesteCsNpg35 rich = dao.findById(fenpRichiestaIn.getIdRichiesta());
return rich;
}
}

View File

@@ -0,0 +1,354 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.Func;
import it.valueteam.gnp.utility.StateManagerCessConRientro;
import it.valueteam.gnp.utility.UserTransactionUtility;
import javax.transaction.UserTransaction;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @version 2.0 DBCFX_RU_253 201712 Del.35 Cessazione con Rientro
* veicolare a FENP/OLO in TC13 la DAC calcolata da CRMB
* @version 3.0 2018_C04 R1C-17-1441 Cessazione con Rientro NCD (gestione CRMR)
* Logica sul valore di CODICE_ESITO:
* a. codice 0 (OK): avanza in 05: ESPLETATA , notifica TC13 OK finale a FENP e termina;
* b. codice KO "linea non CRMB" (30820 | 40013), gira la richiesta a CRMR (non piu' DBSS);
* c. codice KO "linea non CRMR" (90909) , gira la richiesta a DBSS;
* d. codice KO "timeout scaduto" (80808) , avanza in 04: RIFIUTATA, NON notifica TC13 KO finale a FENP e termina;
* e. codice KO altro: avanza in 04: RIFIUTATA , notifica TC13 KO finale a FENP e termina;
* Nei TC13 KO gira tal quale il codice ricevuto.
* NOTA: obsoleti evento ANNULLAMENTO, stato 03: ANNULLATA e notifica TC11;
* annullamento commerciale = codice KO in (22 | 23 | 25) => 04: RIFIUTATA (con TC13 KO).
* @version 4.0 2018_C05 DBCFX_SM_432 aggiunta gestione transizione di stato da 2:INVIATA_RETAIL su se' stessa
* @version 5.0 2018_C05 DBCFX_SM_433 corretta gestione transazione, i metodi di questa classe non aprono ne' chiudono transazioni, apertura e chiusura sono gestite da chi li richiama
*/
public class RequestManagerCessazioneConRientro {
// R1C-17-1441 BEGIN
private final static String ESITO_LINEA_TIMEOUT_SCADUTO = "80808";
// R1C-17-1441 END
public RequestManagerCessazioneConRientro() {
}
/**
* avanzaStatoInAcquisita
*/
public static GnpRichCessazione avanzaStatoInAcquisita(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws Exception {
String methSig = "[avanzaStatoInAcquisita] ";
log.write("0008", methSig + "begin");
GnpRichCessazione richiestaCess;
GnpRichCessazioneDAO richDAO = new GnpRichCessazioneDAO();
int statoPartenza = StateManagerCessConRientro.RICHIESTA_NON_PRESENTE;
log.write("0008", methSig + " in acquisizione da [GNP_FENP_RICHIESTE_IN] a [GNP_RICH_CESSAZIONE]");
richiestaCess = creaRichiesta(richiestaFenp, ProcessMapper.proc_CESSAZIONE_CON_RIENTRO);
// salvo la richiesta con stato acquisita
richDAO.save(richiestaCess);
log.write("0008", methSig + " acquisita da [GNP_FENP_RICHIESTE_IN] a [GNP_RICH_CESSAZIONE] con ID_RICHIESTA ["+ richiestaCess.getIdRichiesta()+"]");
//allineo id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaCess.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
log.write("0008", methSig + " aggiornata in [GNP_RICH_CESSAZIONE] con ID_RICHIESTA ["+richiestaCess.getIdRichiesta()+"]");
insertStoricoCess(statoPartenza, richiestaCess, log);
boolean is103 = richiestaFenp.getNomeFile().startsWith("103N_") || richiestaFenp.getNomeFile().startsWith("103R_");
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp.getProgId(), DbcfxgoMap.TIPO_NOTIFICA_DONATING, is103);
log.write("9999", methSig + "storicizzata in [GNP_STORICO_RICH_CESS] con ID_RICHIESTA ["+richiestaCess.getIdRichiesta()+"]");
return richiestaCess;
}
public static void insertStoricoCess(int stato_da, GnpRichCessazione richiesta, ProcessLogger log) throws Exception {
log.write("9999", "insertStoricoCess begin");
GnpStoricoRichCessDAO storicoDAO = new GnpStoricoRichCessDAO();
//creo lo storico
GnpStoricoRichCess storico = new GnpStoricoRichCess();
storico.setIdRichiesta(richiesta.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiesta.getStato());
storicoDAO.save(storico);
log.write("9999", "insertStoricoCess end");
}
/**
* @version 3.0 2018_C04 R1C-17-1441 Cessazione con Rientro NCD (gestione CRMR)
* Nessuna modifica in quanto DBCFX interroga per primo CRMB;
* @version 3.1 2018_C08 DBCFX_RU_272 allineamento a tracciati NP_N.xsd e NP_R.xsd modificati unilateralmente da FENP
* NO-OP acquisisce tal quale il TC12 Valid_Formale_Cessazione su NP_R.xsd
*/
private static GnpRichCessazione creaRichiesta(GnpFenpRichiesteIn fenpIn, String processo) throws Exception {
GnpRichCessazione richiesta = new GnpRichCessazione();
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.ACQUISITA);
richiesta.setProcesso(processo);
richiesta.setCodiceOrdine(fenpIn.getCodiceOrdine());
richiesta.setDataOrdine(fenpIn.getDataOrdine());
richiesta.setDataRicezione(new Date());
richiesta.setDn(fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
richiesta.setNominativoCliente(fenpIn.getNominativoCliente());
richiesta.setTelReferenteRich(fenpIn.getTelReferenteRich());
richiesta.setEmailReferenteRich(fenpIn.getEmailReferenteRich());
richiesta.setDataInvioMessaggio(fenpIn.getDataInvioMessaggio());
richiesta.setCodOpDonating(fenpIn.getCodOpDonating());
if (!Func.isNull(fenpIn.getCodOpReturning())) {
richiesta.setCodOpDonating(fenpIn.getCodOpReturning());
}
richiesta.setCodOpDonor(fenpIn.getCodOpDonor());
richiesta.setTipoLinea(fenpIn.getTipoLinea()); //2018_C08 TipoLinea DONE NO-OP qui arrivano solo valori validi, letto tal quale, il mittente deve valorizzarlo bene
// Default to CRMB
richiesta.setPiattaformaCompetenza(CRMMap.PIATTAFORMA_B);
richiesta.setDac(fenpIn.getDac());
return richiesta;
}
/**
* avanzaStatoInInviataRetail
* @version 3.0 2018_C04 R1C-17-1441 Cessazione con Rientro NCD (gestione CRMR)
* migliorati i log
* @version 4.0 2018_C05 DBCFX_SM_432 aggiunta gestione transizione di stato da 2:INVIATA_RETAIL su se' stessa
* @version 5.0 2018_C05 DBCFX_SM_433 corretta gestione transazione, i metodi di questa classe non aprono ne' chiudono transazioni, apertura e chiusura sono gestite da chi li richiama
*/
public static void avanzaStatoInInviataRetail(GnpRichCessazione richiesta, ProcessLogger log) throws Exception {
String methSig = "[avanzaStatoInInviataRetail] ";
log.write("0008", methSig + "begin");
GnpRichCessazioneDAO cessDAO = new GnpRichCessazioneDAO();
try {
int statoPartenza = richiesta.getStato().intValue();
log.write("0008", methSig + "[GNP_RICH_CESSAZIONE] ID_RICHIESTA ["+richiesta.getIdRichiesta()+"] verifica transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a INVIATA_RETAIL");
//SM_432
if (StatoRichiestaCessazioneConRientro.INVIATA_RETAIL == statoPartenza) {
log.write("0008", methSig + "[GNP_RICH_CESSAZIONE] ID_RICHIESTA ["+richiesta.getIdRichiesta()+"] cicla in STATO INVIATA_RETAIL");
}
else {
int status = StateManagerCessConRientro.CheckTransition(richiesta.getStato().intValue(), StatoRichiestaCessazioneConRientro.INVIATA_RETAIL, log);
if (StateManagerCessConRientro.TRANSIZIONE_NON_POSSIBILE == status) {
log.write("0008", methSig + "[GNP_RICH_CESSAZIONE] ID_RICHIESTA ["+richiesta.getIdRichiesta()+"] transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a INVIATA_RETAIL non ammessa");
} else {
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.INVIATA_RETAIL);
cessDAO.merge(richiesta);
log.write("0008", methSig + "ID_RICHIESTA [" + richiesta.getIdRichiesta().toString() + "] transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a INVIATA_RETAIL");
insertStoricoCess(statoPartenza, richiesta, log);
log.write("0008", methSig + "ID_RICHIESTA [" + richiesta.getIdRichiesta().toString() + "] transizione a INVIATA_RETAIL storicizzata in [GNP_STORICO_RICH_CESS]");
}
}
} catch (Exception ex) {
log.write("9999", methSig + "FAIL: ["+ex.getClass().getName()+"] " + ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInRifiutata
* @version 3.0 2018_C04 R1C-17-1441 Cessazione con Rientro NCD (gestione CRMR)
* Logica sul valore di CODICE_ESITO:
* a. codice 0 (OK): avanza in 05: ESPLETATA , notifica TC13 OK finale a FENP e termina;
* b. codice KO "linea non CRMB" (30820 | 40013), gira la richiesta a CRMR (non piu' DBSS);
* c. codice KO "linea non CRMR" (90909) , gira la richiesta a DBSS;
* d. codice KO "timeout scaduto" (80808) , avanza in 04: RIFIUTATA, NON notifica TC13 KO finale a FENP e termina;
* e. codice KO altro: avanza in 04: RIFIUTATA , notifica TC13 KO finale a FENP e termina;
* Nei TC13 KO gira tal quale il codice ricevuto.
* @version 3.1 2018_C08 DBCFX_RU_272 RIMORCHIO colta l'occasione per prevenzione possibile anomalia
* il campo [GNP_FENP_RICHIESTE_OUT].[CODICE_MOTIVO_RIFIUTO_CS] e' lungo VARCHAR2(2)
* se per errore arriva un valore piu lungo di 2 ricodifichiamo (su 23 impossibilita tecnica)
* Rifiuto cliente => CODICE_ESITO=22
* Impossibilita tecnica => CODICE_ESITO=23
* Singolo aggiuntivo ISDN errato => CODICE_ESITO=25
*/
public static void avanzaStatoInRifiutata(GnpRichCessazione richiesta, ProcessLogger log, String codMotivoRifiuto) throws Exception {
String methSig = "[avanzaStatoInRifiutata] ";
log.write("0008", methSig + "begin");
// variabile inizializzata a uno stato non valido
int statoPartenza = -2;
GnpRichCessazioneDAO cessDAO = new GnpRichCessazioneDAO();
//SM_433
//UserTransaction utx = null;
try {
Long idRichiesta = richiesta.getIdRichiesta();
methSig = "[avanzaStatoInRifiutata] idRichiesta ["+idRichiesta+"] ";
statoPartenza = richiesta.getStato().intValue();
log.write("0008", methSig + "[GNP_RICH_CESSAZIONE] verifica transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a RIFIUTATA");
//SM_401
//utx = UserTransactionUtility.beginUserTransaction(); //SM_433
int status = StateManagerCessConRientro.CheckTransition(statoPartenza, StatoRichiestaCessazioneConRientro.RIFIUTATA, log);
if (StateManagerCessConRientro.TRANSIZIONE_NON_POSSIBILE == status) {
log.write("0008", methSig + "transizione DA STATO : " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN RIFIUTATA codice ["+codMotivoRifiuto+"] non ammessa");
} else {
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.RIFIUTATA);
cessDAO.merge(richiesta);
// R1C-17-1441 BEGIN
//log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN RIFIUTATA");
if(ESITO_LINEA_TIMEOUT_SCADUTO.equals(codMotivoRifiuto)) {
log.write("0008", methSig + "transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN RIFIUTATA codice ["+codMotivoRifiuto+"] SENZA notifica a FENP R1C-17-1441");
} else {
log.write("0008", methSig + "transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN RIFIUTATA codice ["+codMotivoRifiuto+"] CON notifica a FENP R1C-17-1441");
// 2018_C08 DBCFX_RU_272 RIMORCHIO BEGIN
if(codMotivoRifiuto == null || "".equals(codMotivoRifiuto) || 2 < codMotivoRifiuto.length()) {
log.write("0008", "Il valore di codMotivoRifiuto è "+ codMotivoRifiuto +" viene settato al valore di default 23");
codMotivoRifiuto = "23";
}
// 2018_C08 DBCFX_RU_272 RIMORCHIO END
// OLOControllerFENP.getInstance().notificaEvento(richiesta, ApplicationCostants.PROCESSO_FENP.VALID_TECNICA_CESSAZIONE, codMotivoRifiuto);
}
// R1C-17-1441 END
insertStoricoCess(statoPartenza, richiesta, log);
log.write("0008", methSig + "transizione IN RIFIUTATA codice ["+codMotivoRifiuto+"] storicizzata in [GNP_STORICO_RICH_CESS]");
//SM_433
/*
if (null != utx) {
UserTransactionUtility.endUserTransaction(utx, true);
} else {
log.write("9999", methSig + "transazione nulla");
}
*/
}
} catch (Exception ex) {
log.write("9999", methSig + "FAIL: ["+ex.getClass().getName()+"] " + ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
* @version 2.0 DBCFX_RU_253 201712 Del.35 Cessazione con Rientro
* veicolare a FENP/OLO in TC13 la DAC calcolata da CRMB
* il WS riceve DAC X(10) nel formato dd-MM-yyyy
*/
public static void avanzaStatoInEspletata(GnpRichCessazione richiesta, ProcessLogger log, String dacAsString) throws Exception {
String methSig = "[avanzaStatoInEspletata] ";
log.write("0008", methSig + "begin");
// variabile inizializzata a uno stato non valido
int statoPartenza = -2;
//UserTransaction utx = null; //SM_433
GnpRichCessazioneDAO cessDAO = new GnpRichCessazioneDAO();
try {
Long idRichiesta = richiesta.getIdRichiesta();
methSig = "[avanzaStatoInEspletata] idRichiesta ["+idRichiesta+"] DAC ["+dacAsString+"] ";
statoPartenza = richiesta.getStato().intValue();
log.write("0008", methSig + "[GNP_RICH_CESSAZIONE] verifica transizione DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a ESPLETATA");
//SM_401
//utx = UserTransactionUtility.beginUserTransaction(); //SM_433
int status = StateManagerCessConRientro.CheckTransition(statoPartenza, StatoRichiestaCessazioneConRientro.ESPLETATA, log);
if (StateManagerCessConRientro.TRANSIZIONE_NON_POSSIBILE == status) {
log.write("0008", methSig + " DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a ESPLETATA non ammessa");
} else {
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.ESPLETATA);
// DBCFX_RU_253 BEGIN
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
if(null != dacAsString) {
richiesta.setDac(sdf.parse(dacAsString));
}
// DBCFX_RU_253 END
cessDAO.merge(richiesta);
log.write("0008", methSig + " DA STATO: " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " a ESPLETATA con notifica a FENP");
//OLOControllerFENP.getInstance().notificaEvento(richiesta, ApplicationCostants.PROCESSO_FENP.VALID_TECNICA_CESSAZIONE, null);
insertStoricoCess(statoPartenza, richiesta, log);
log.write("0008", methSig + "transizione IN ESPLETATA storicizzata in [GNP_STORICO_RICH_CESS]");
//SM_433
/*
if (utx != null) {
UserTransactionUtility.endUserTransaction(utx, true);
} else {
log.write("9999", methSig + "transazione nulla");
}
*/
}
} catch (Exception ex) {
log.write("9999", methSig + "FAIL: ["+ex.getClass().getName()+"] " + ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
* @version 2.0 DBCFX_RU_253 201712 Del.35 Cessazione con Rientro
* veicolare a FENP/OLO in TC13 la DAC calcolata da CRMB
* @deprecated questo non dovrebbe piu' essere usato perche' non ha la DAC,
* usare la versione a 3 parametri
*/
public static void avanzaStatoInEspletata(GnpRichCessazione richiesta, ProcessLogger log) throws Exception {
UserTransaction utx = null;
int statoPartenza = richiesta.getStato().intValue();
GnpRichCessazioneDAO cessDAO = new GnpRichCessazioneDAO();
try {
//SM_401
utx = UserTransactionUtility.beginUserTransaction();
int status = StateManagerCessConRientro.CheckTransition(richiesta.getStato().intValue(), StatoRichiestaCessazioneConRientro.ESPLETATA, log);
if (status != StateManagerCessConRientro.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.ESPLETATA);
cessDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN ESPLETATA");
//OLOControllerFENP.getInstance().notificaEvento(richiesta, ApplicationCostants.PROCESSO_FENP.VALID_TECNICA_CESSAZIONE, null);
insertStoricoCess(statoPartenza, richiesta, log);
if (utx != null) {
UserTransactionUtility.endUserTransaction(utx, true);
}
else {
log.write("9999","transazione nulla");
}
}
} catch (Exception ex) {
log.write("9999", "eccezione "+ex.getMessage());
throw ex;
}
}
/**
* @version 3.0 2018_C04 R1C-17-1441 Cessazione con Rientro NCD (gestione CRMR)
* @deprecated obsoleti evento ANNULLAMENTO, stato 03: ANNULLATA e notifica TC11;
* annullamento commerciale => codice KO in (22|23|25) => 04: RIFIUTATA (TC13 KO).
*/
public static void avanzaStatoInAnnullata(GnpRichCessazione richiesta, ProcessLogger log) throws Exception {
int statoPartenza = richiesta.getStato().intValue();
log.write("9999", "RequestManagerCessazioneConRientro avanzaStatoInAnnullata");
GnpRichCessazioneDAO cessDAO = new GnpRichCessazioneDAO();
try {
int status = StateManagerCessConRientro.CheckTransition(richiesta.getStato().intValue(), StatoRichiestaCessazioneConRientro.ANNULLATA, log);
if (status != StateManagerCessConRientro.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaCessazioneConRientro.ANNULLATA);
cessDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaCessazioneConRientro.getStatoDescr(statoPartenza) + " IN ANNULLATA");
//OLOControllerFENP.getInstance().notificaEvento(richiesta, ApplicationCostants.PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, null);
insertStoricoCess(statoPartenza, richiesta, log);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,674 @@
package it.valueteam.gnp.manager;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.BusinessInteractionRelationship_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicSpecificationRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CustomerOrderItemRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductBundleRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductCharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductOrderRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductSpecCharacteristicRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.Request_LineNumber;
import it.telecomitalia.soa.wirelinelinecodequery.x20150511.VerifySecretCodeResponse;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.WirelineLineCodeQueryResponseUtils;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerDonNatOlo;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import java.util.Date;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
public class RequestManagerDonNatOlo {
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC="LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE="Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC="CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC="CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS="VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE="VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA="VERIFICA_CODICE_SEGRETO_NUMERAZIONE_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE="VERIFICA CODICE SEGRETO NUMERAZIONE NON GESTITA DBSS";
public RequestManagerDonNatOlo() {
}
/**
* avanzaStatoInAcquisita
*/
public static void avanzaStatoInAcquisita(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerDonNatOlo.RICHIESTA_NON_PRESENTE;
GnpRichiesteDonNatOlo richiestaDonNatOlo = creaRichiesta(richiestaFenp, ProcessMapper.proc_DON_NAT_OLO);
//DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaDonNatOlo.getCodiceSegreto());
// salvo la richiesta con stato acquisita sulla tabella GNP_RICHIESTE_DON_NAT_OLO
richDAO.save(richiestaDonNatOlo);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoDonNatOlo(statoPartenza, richiestaDonNatOlo);
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp.getProgId(), DbcfxgoMap.TIPO_NOTIFICA_DONATING, false);
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+" DN:"+richiestaDonNatOlo.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaDonNatOlo.getDn(),richiestaDonNatOlo.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW VECCHIO: "+richiestaDonNatOlo.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaDonNatOlo.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiestaDonNatOlo.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaDonNatOlo);
}
log.write("9999", "RequestManagerDonNatOlo.avanzaStatoInAcquisita() creata la richiesta " + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaDonNatOlo.getCodiceSegreto());
if (anagCowTelecom == null) {
log.write("9999", "anagCowTelecom null avanza in Rifiutata" + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del DN : " + richiestaDonNatOlo.getDn());
//COW NON VALIDO: RIFIUTATA motivo rif.14
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// controllare GNP_VERIFICA_CS_WHITELIST
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteList(richiestaFenp.getDn(), richiestaFenp.getCodiceSegreto(),richiestaDonNatOlo.getCodiceSegreto()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ESPLETATA "+richiestaFenp.getDn());
//RE: URGENTE - Anomalia DBCFX_SM_501 - Richiesta riscontri.
/*
* Nel caso in cui la numerazione è presente nella whiteList, viene prima tentata l'invocazione del servizio
* CustomerLocation, in caso negativo utilizza la piattaformaCompetenza.
*/
if (!callCheckRetailPlatformWhiteList(richiestaDonNatOlo,richiestaFenp,log)) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Recupero la piattaforma di competenza dall'Anagrafica : "+anagCowTelecom.getCrmCompetenza());
richiestaDonNatOlo.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
if(richiestaDonNatOlo.getPiattaformaCompetenza()==null) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Caso anomalo che non dovrebbe mai succeddere nell'eventualita' risetto il crm di competenza : "+anagCowTelecom.getCrmCompetenza());
richiestaDonNatOlo.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
avanzaStatoInEspletata(richiestaDonNatOlo, log);
}
else if (verificaWhiteList != null && !verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [FALSE]. Passaggio in RIFIUTATA"+richiestaFenp.getDn());
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
//verificaWhiteList == null
else {
log.write("9999", "Risultato Verifica in WhiteList [NULL]. Verifico con i sistemi Retail");
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
/* C06 RE: GATEWAY DBCFX :Studio per il tracciamento di eventi non correttamente gestiti dal sistema
* cambio implementazione del recupero della piattaforma di competenza, non si basa più sull'anagrafica (anagCowTelecom)
* ma tramite il localizzatore. Per maggiori dettagli vedi mail
*/
if (!callCheckRetailPlatform(richiestaDonNatOlo,richiestaFenp,log)) {
log.write("9999", "callCheckRetailPlatform : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+"CRM recuperato: "+richiestaDonNatOlo.getPiattaformaCompetenza());
return;
}
//salvo la richiesta in particolare mi serve per salvare il CRM di competenza ricavato dal servizio
richDAO.save(richiestaDonNatOlo);
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
boolean utenzaDbss = false;
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaDonNatOlo.getPiattaformaCompetenza())){
utenzaDbss=true;
log.write("9999", "isUtenzaDBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaDonNatOlo,richiestaFenp,log,dbssDonorOutRecDAO);
}
}
// Se l'utenza non e' DBSS rimango sul vecchio processo
if (!utenzaDbss) {
log.write("9999", "Utenza non DBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn()+" Id-Richiesta: "+richiestaDonNatOlo.getIdRichiesta());
if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaDonNatOlo.getTipoLinea() != null && richiestaDonNatOlo.getTipoLinea().equals("1")) {
log.write("9999", "PIATTAFORMA_B e LINEA 1 direttamente in Espletato : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn()+" Id-Richiesta: "+richiestaDonNatOlo.getIdRichiesta());
avanzaStatoInEspletata(richiestaDonNatOlo, log);
} else {
log.write("9999", "inviaVerificaCsDonNatOlo : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn()+" Id-Richiesta: "+richiestaDonNatOlo.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaDonNatOlo.getPiattaformaCompetenza());
crmController.inviaVerificaCsDonNatOlo(richiestaDonNatOlo);
}
}
}
}
/**
* avanzaStatoInAcquisita
*/
//C06 RE: GATEWAY DBCFX : metodo parallelo utilizzato solo ed esclusivamente dal tool della DE MARIA
public static void avanzaStatoInAcquisitaTool(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerDonNatOlo.RICHIESTA_NON_PRESENTE;
GnpRichiesteDonNatOlo richiestaDonNatOlo = creaRichiesta(richiestaFenp, ProcessMapper.proc_DON_NAT_OLO);
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaDonNatOlo.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+" DN:"+richiestaDonNatOlo.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaDonNatOlo.getDn(),richiestaDonNatOlo.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW VECCHIO: "+richiestaDonNatOlo.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaDonNatOlo.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiestaDonNatOlo.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaDonNatOlo);
}
//C06 RE: GATEWAY DBCFX :utilizzo la piattaforma
log.write("9999", "Piattaforma notificata : "+richiestaFenp.getPiattaformaNotifica()+" DN:"+richiestaDonNatOlo.getDn());
richiestaDonNatOlo.setPiattaformaCompetenza(richiestaFenp.getPiattaformaNotifica());
// salvo la richiesta con stato acquisita sulla tabella GNP_RICHIESTE_DON_NAT_OLO
richDAO.save(richiestaDonNatOlo);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoDonNatOlo(statoPartenza, richiestaDonNatOlo);
log.write("9999", "RequestManagerDonNatOlo.avanzaStatoInAcquisita() creata la richiesta " + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaDonNatOlo.getCodiceSegreto());
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaDonNatOlo.getPiattaformaCompetenza())){
log.write("9999", "isUtenzaDBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaDonNatOlo,richiestaFenp,log,dbssDonorOutRecDAO);
}
}else {
// Se l'utenza non e' DBSS rimango sul vecchio processo
if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaDonNatOlo.getTipoLinea() != null && richiestaDonNatOlo.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
avanzaStatoInEspletata(richiestaDonNatOlo, log);
} else {
log.write("9999", "inviaVerificaCsDonNatOlo: "+richiestaDonNatOlo.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaDonNatOlo.getPiattaformaCompetenza());
crmController.inviaVerificaCsDonNatOlo(richiestaDonNatOlo);
}
}
}
private static void callVerificaCSDBSS(GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiestaFenp,ProcessLogger log,GnpDbssDonorOutDAO dbssDonorOutRecDAO) throws Exception {
log.write("9999", "Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiestaDonNatOlo.getDn()+"]");
// chiamata al WS WirelineLineCodeQuery
DBSSController dbssController = DBSSController.getInstance();
GnpDbssDonorOut dbssDonorOut = dbssController.creaRichiestaVerificaCS(richiestaDonNatOlo);
VerifySecretCodeResponse dbssResponse = dbssController.callVerificaCS(dbssDonorOut);
String esito = null;
if (dbssResponse != null) {
WirelineLineCodeQueryResponseUtils util = new WirelineLineCodeQueryResponseUtils(dbssResponse);
esito = dbssResponse.getProcessData().getReturnDescription();
log.write("9999", "Esito Verifica codice segreto con DBSS: ["+esito+"]");
if (util.isCodiceSegretoCorretto()) {
log.write("9999", "Codice Segreto Corretto : ["+esito+"]+ " +richiestaDonNatOlo.getDn());
richiestaDonNatOlo.setPiattaformaCompetenza("D");
// Valorizzazione del CODICE_CLIENTE
dbssDonorOut.setRespCodiceCliente(util.getCodiceCliente());
avanzaStatoInEspletata(richiestaDonNatOlo, log);
} else if (util.isCodiceSegretoErrato()) {
log.write("9999", "Codice Segreto errato : ["+esito+"]+ " +richiestaDonNatOlo.getDn());
// ESITO KO, codice CIM codice segreto errato
richiestaDonNatOlo.setPiattaformaCompetenza("D");
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
} else if (util.isNumerazioneNonGestita()) {
log.write("9999", "Numerazione non gestita : ["+esito+"]+ " +richiestaDonNatOlo.getDn());
buildScartiVerificaCs(richiestaDonNatOlo,richiestaFenp,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE,log);
}
dbssDonorOut.setRespCodEsito(esito);
dbssDonorOut.setRespDataRicezione(new Date());
dbssDonorOutRecDAO.merge(dbssDonorOut);
}else {
log.write("9999", "Esito respone Numerazione vuota : ["+esito+"]+ " +richiestaDonNatOlo.getDn());
buildScartiVerificaCs(richiestaDonNatOlo,richiestaFenp,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE,log);
}
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
protected static boolean callCheckRetailPlatform(GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenpIn,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn());
String methSig = "[RequestManagerCSNPg35].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonNatOlo.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetail(methSig,resp,log,richiestaDonNatOlo,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatform : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +" non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig +" PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//MODIFICA INGLISA IN CASO DI UTENZA NON TROVATA NON PASSO IN RIFIUTATA MA CHIAMO B
//avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS "+
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE,PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDonNatOlo,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE+retCode,log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDonNatOlo,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE+retCode,log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDonNatOlo.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
protected static boolean callCheckRetailPlatformWhiteList(GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenpIn,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatformWhiteList : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn());
String methSig = "[RequestManagerCSNPg35].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonNatOlo.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetailWhiteList(methSig,resp,log,richiestaDonNatOlo,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatformWhiteList : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetailWhiteList(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +"non avanza stato in rifiutato perche presente in whitelist : " + retCode);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS");
log.write("9999", methSig +"non avanza stato in rifiutato perche presente in whitelist : " + retCode);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
log.write("9999", methSig +"non scrive sul evento anomalo perche presente in whitelist : " + retCode);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
log.write("9999", methSig +" non scrive sul evento anomalo perche presente in whitelist : " + retCode);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDonNatOlo.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body,ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN ["+requestDn+"]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] codice ["+retCode+"]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "RequestManagerCSNPg35 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] descrizione ["+descr+"]");
return retrieveByLineNumberResponseMessage;
}
private static void buildScartiVerificaCs(GnpRichiesteDonNatOlo richiestaDonNatOlo,GnpFenpRichiesteIn richiestaFenp,String tipoAnomalia,String descrizioneAnomalia,ProcessLogger log) {
log.write("9999","START buildScartiVerificaCs DN: " + richiestaDonNatOlo.getDn()+"Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao=new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs=new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
scartiVerificaCs.setDn(richiestaDonNatOlo.getDn());
scartiVerificaCs.setNomeFile(richiestaFenp.getNomeFile());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setTipoComunicazione(richiestaFenp.getTipoComunicazione());
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaDonNatOlo.getCodiceSegreto());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999","END buildScartiVerificaCs DN: " + richiestaDonNatOlo.getDn()+"Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
}
public static void insertStoricoDonNatOlo(int stato_da, GnpRichiesteDonNatOlo richiestaDonNatOlo) throws Exception {
GnpStoricoDonNatOloDAO storicoDAO = new GnpStoricoDonNatOloDAO();
//creo lo storico
GnpStoricoDonNatOlo storico = new GnpStoricoDonNatOlo();
storico.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaDonNatOlo.getStato());
storicoDAO.save(storico);
}
private static GnpRichiesteDonNatOlo creaRichiesta(GnpFenpRichiesteIn fenpIn, String processo) throws Exception {
GnpRichiesteDonNatOlo richiestaDonNatOlo = new GnpRichiesteDonNatOlo();
richiestaDonNatOlo.setStato((long) StatoRichiestaDonNatOlo.ACQUISITA);
richiestaDonNatOlo.setProcesso(processo);
richiestaDonNatOlo.setCodOpRecipient(fenpIn.getCodOpRecipient());
richiestaDonNatOlo.setCodiceOrdine(fenpIn.getCodiceOrdine());
richiestaDonNatOlo.setDataOrdine(fenpIn.getDataOrdine());
richiestaDonNatOlo.setDataRicezione(new Date());
richiestaDonNatOlo.setDn(fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
richiestaDonNatOlo.setDac(fenpIn.getDac());
richiestaDonNatOlo.setNominativoCliente(fenpIn.getNominativoCliente());
richiestaDonNatOlo.setCodiceSegreto(fenpIn.getCodiceSegreto());
richiestaDonNatOlo.setTelefonoReferenteRich(fenpIn.getTelReferenteRich());
richiestaDonNatOlo.setEmailReferenteRich(fenpIn.getEmailReferenteRich());
richiestaDonNatOlo.setDataInvioMessaggio(fenpIn.getDataInvioMessaggio());
richiestaDonNatOlo.setCodOpDonating(fenpIn.getCodOpDonating());
richiestaDonNatOlo.setCodOpDonor(fenpIn.getCodOpDonor());
richiestaDonNatOlo.setTipoLinea(fenpIn.getTipoLinea()); // 2018_C08 TipoLinea DONE NO-OP qui arrivano solo valori validi, letto tal quale, il mittente deve valorizzarlo bene
return richiestaDonNatOlo;
}
/**
* avanzaStatoInAttesaVerifica
*/
public static void avanzaStatoInAttesaVerifica(GnpRichiesteDonNatOlo richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ATTESAVERIFICA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ATTESAVERIFICA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ATTESAVERIFICA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInRifiutata
*/
public static void avanzaStatoInRifiutata(GnpRichiesteDonNatOlo richiesta, ProcessLogger log, String codMotivoRifiuto) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.RIFIUTATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.RIFIUTATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN RIFIUTATA");
OLOControllerFENP.getInstance().notificaEvento(richiesta, codMotivoRifiuto);
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
*/
public static void avanzaStatoInEspletata(GnpRichiesteDonNatOlo richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ESPLETATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ESPLETATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInAnnullata
*/
public static void avanzaStatoInAnnullata(GnpRichiesteDonNatOlo richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteDonNatOloDAO richDAO = new GnpRichiesteDonNatOloDAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ESPLETATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ANNULLATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ANNULLATA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,747 @@
package it.valueteam.gnp.manager;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.*;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerDonNatOlo;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import java.util.Date;
import java.util.List;
public class RequestManagerDonNatOlo103 {
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC="LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE="Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC="CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC="CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS="VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE="VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA="VERIFICA_CODICE_SEGRETO_NUMERAZIONE_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE="VERIFICA CODICE SEGRETO NUMERAZIONE NON GESTITA DBSS";
public RequestManagerDonNatOlo103() {
}
/**
* avanzaStatoInAcquisita
*/
public static void avanzaStatoInAcquisita(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
int statoPartenza = StateManagerDonNatOlo.RICHIESTA_NON_PRESENTE;
GnpRichiesteCsNpg103 richiestaDonNatOlo = creaRichiesta(richiestaFenp, ProcessMapper.proc_DON_NAT_OLO);
//DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
//DETERMINO IL CODICE SEGRETO DALLA ANAGRAFICA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaDonNatOlo.getCodiceSegreto());
// salvo la richiesta con stato acquisita sulla tabella GNP_RICHIESTE_DON_NAT_OLO
richDAO.save(richiestaDonNatOlo);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoDonNatOlo(statoPartenza, richiestaDonNatOlo);
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+" DN:"+richiestaDonNatOlo.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaDonNatOlo.getDn(),richiestaDonNatOlo.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW VECCHIO: "+richiestaDonNatOlo.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaDonNatOlo.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
// 152248 - 227248 nuovo set cow/codSegreto
richiestaDonNatOlo.setCow(anagCowTelecom.getCow());
richiestaDonNatOlo.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.merge(richiestaDonNatOlo);
}
log.write("9999", "RequestManagerDonNatOlo.avanzaStatoInAcquisita() creata la richiesta " + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaDonNatOlo.getCodiceSegreto());
if (anagCowTelecom == null) {
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaDonNatOlo, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
log.write("9999", "anagCowTelecom null avanza in Rifiutata" + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del DN : " + richiestaDonNatOlo.getDn());
//COW NON VALIDO: RIFIUTATA motivo rif.14
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// controllare GNP_VERIFICA_CS_WHITELIST
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteList(richiestaFenp.getDn(), richiestaFenp.getCodiceSegreto(),richiestaDonNatOlo.getCodiceSegreto()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ESPLETATA "+richiestaFenp.getDn());
//RE: URGENTE - Anomalia DBCFX_SM_501 - Richiesta riscontri.
/*
* Nel caso in cui la numerazione è presente nella whiteList, viene prima tentata l'invocazione del servizio
* CustomerLocation, in caso negativo utilizza la piattaformaCompetenza.
*/
boolean checkIsCessatoRiattivabile = RequestManagerCSNPg103.callCheckCessatoRiattivabile(richiestaDonNatOlo, richiestaFenp, log); //sostituire con la chiamata
if (checkIsCessatoRiattivabile) {
richiestaDonNatOlo.setPiattaformaCompetenza("D");
} else if (!callCheckRetailPlatformWhiteList(richiestaDonNatOlo,richiestaFenp,log)) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Recupero la piattaforma di competenza dall'Anagrafica : "+anagCowTelecom.getCrmCompetenza());
richiestaDonNatOlo.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
if (anagCowTelecom.getCrmCompetenza() != null && "R".equals(anagCowTelecom.getCrmCompetenza())){
richiestaDonNatOlo.setPiattaformaCompetenza("D");
}
}
if(richiestaDonNatOlo.getPiattaformaCompetenza()==null) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE].E DN non riconosciuto da CustomerLocation :"+richiestaFenp.getDn()
+ "Caso anomalo che non dovrebbe mai succeddere nell'eventualita' risetto il crm di competenza : "+anagCowTelecom.getCrmCompetenza());
richiestaDonNatOlo.setPiattaformaCompetenza(anagCowTelecom.getCrmCompetenza());
}
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaDonNatOlo, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
avanzaStatoInEspletata(richiestaDonNatOlo, log);
}
else if (verificaWhiteList != null && !verificaWhiteList) {
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaDonNatOlo, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
log.write("9999", "Risultato Verifica in WhiteList [FALSE]. Passaggio in RIFIUTATA"+richiestaFenp.getDn());
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
//verificaWhiteList == null
else {
log.write("9999", "Risultato Verifica in WhiteList [NULL]. Verifico con i sistemi Retail");
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
/* C06 RE: GATEWAY DBCFX :Studio per il tracciamento di eventi non correttamente gestiti dal sistema
* cambio implementazione del recupero della piattaforma di competenza, non si basa più sull'anagrafica (anagCowTelecom)
* ma tramite il localizzatore. Per maggiori dettagli vedi mail
*/
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
boolean utenzaDbss = false;
boolean checkIsCessatoRiattivabile = RequestManagerCSNPg103.callCheckCessatoRiattivabile(richiestaDonNatOlo, richiestaFenp, log); //sostituire con la chiamata
if (checkIsCessatoRiattivabile) {
richiestaDonNatOlo.setPiattaformaCompetenza("D");
utenzaDbss = true;
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaDonNatOlo, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
} else {
boolean callCheckRetailPlatform = callCheckRetailPlatform(richiestaDonNatOlo,richiestaFenp,log);
OLOControllerFENP.getInstance().inviaNotificaDbcfxGo(richiestaFenp, richiestaDonNatOlo, DbcfxgoMap.TIPO_NOTIFICA_DONATING);
if (!callCheckRetailPlatform) {
log.write("9999", "callCheckRetailPlatform : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+"CRM recuperato: "+richiestaDonNatOlo.getPiattaformaCompetenza());
return;
}
}
//salvo la richiesta in particolare mi serve per salvare il CRM di competenza ricavato dal servizio
richDAO.merge(richiestaDonNatOlo);
// 152248 - 227248
GnpNowDonorInDAO nowDonorInDAO = new GnpNowDonorInDAO();
log.write("9999","RequestManagerDonNatOlo103: cerca esito fase2 su DEL 274 con dn: " + richiestaDonNatOlo.getDn());
int KO_D274 = RequestManagerCSNPg103.verificaFase2Del274(richiestaDonNatOlo.getDn());
log.write("9999","RequestManagerDonNatOlo103: esito fase2 su DEL 274 con dn: " + richiestaDonNatOlo.getDn() + "; esito " + KO_D274);
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaDonNatOlo.getPiattaformaCompetenza())){
utenzaDbss=true;
log.write("9999", "isUtenzaDBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn());
if (KO_D274 != 0) {
richiestaDonNatOlo.setPiattaformaCompetenza("D");
// LANCIO TC5 per errore 10
if (KO_D274 == 10) {
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else {
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
} else if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaDonNatOlo,richiestaFenp,log);
}
}
// Se l'utenza non e' DBSS rimango sul vecchio processo
if (!utenzaDbss) {
// rimossa come da mail Buglioni del 30/01/2023
/*
log.write("9999", "Utenza non DBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn()+" Id-Richiesta: "+richiestaDonNatOlo.getIdRichiesta());
if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaDonNatOlo.getTipoLinea() != null && richiestaDonNatOlo.getTipoLinea().equals("1")) {
log.write("9999", "PIATTAFORMA_B e LINEA 1 direttamente in Espletato : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn()+" Id-Richiesta: "+richiestaDonNatOlo.getIdRichiesta());
avanzaStatoInEspletata(richiestaDonNatOlo, log);
} else { */
if (KO_D274 != 0) {
richiestaDonNatOlo.setPiattaformaCompetenza("B");
// LANCIO TC5 per errore 10
if (KO_D274 == 10) {
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else {
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
} else if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)) {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: " + richiestaDonNatOlo.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaDonNatOlo.getPiattaformaCompetenza());
crmController.notificaCRM(richiestaDonNatOlo, richiestaFenp, CRMMap.PRENOTIFICA);
} else {
// non è né CRMB né DBSS
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
}
richDAO.merge(richiestaDonNatOlo);
}
}
// 152248 - verifico se ci sono esiti fase2 del 274
private static boolean verificaEsitoFase2Del274(String dn) {
GnpRichiesteDonorDAO donorDAO = new GnpRichiesteDonorDAO();
List richiesteDonor = donorDAO.findByProperty("dn",dn);
if (!richiesteDonor.isEmpty()) {
for (Object o : richiesteDonor) {
GnpRichiesteDonor richDonor = (GnpRichiesteDonor) o;
if ((richDonor.getDataScadenza().after(new Date())) && richDonor.getStato() != 7
&& richDonor.getStato() != 8 && richDonor.getStato() != 9) {
return true;
}
}
}
return false;
}
/**
* avanzaStatoInAcquisita
*/
//C06 RE: GATEWAY DBCFX : metodo parallelo utilizzato solo ed esclusivamente dal tool della DE MARIA
public static void avanzaStatoInAcquisitaTool(GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws
Exception {
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
int statoPartenza = StateManagerDonNatOlo.RICHIESTA_NON_PRESENTE;
GnpRichiesteCsNpg103 richiestaDonNatOlo = creaRichiesta(richiestaFenp, ProcessMapper.proc_DON_NAT_OLO);
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO cowDao = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = cowDao.findById(richiestaDonNatOlo.getCodiceSegreto());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW: "+richiestaDonNatOlo.getCodiceSegreto()+" DN:"+richiestaDonNatOlo.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiestaDonNatOlo.getDn(),richiestaDonNatOlo.getCodiceSegreto());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiestaDonNatOlo.getIdRichiesta()+" COW VECCHIO: "+richiestaDonNatOlo.getCodiceSegreto()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiestaDonNatOlo.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiestaDonNatOlo.setCodiceSegreto(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
richDAO.save(richiestaDonNatOlo);
}
//C06 RE: GATEWAY DBCFX :utilizzo la piattaforma
log.write("9999", "Piattaforma notificata : "+richiestaFenp.getPiattaformaNotifica()+" DN:"+richiestaDonNatOlo.getDn());
richiestaDonNatOlo.setPiattaformaCompetenza(richiestaFenp.getPiattaformaNotifica());
// salvo la richiesta con stato acquisita sulla tabella GNP_RICHIESTE_DON_NAT_OLO
richDAO.save(richiestaDonNatOlo);
//setto id richiesta in gnp_fenp_richieste_in
richiestaFenp.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
GnpFenpRichiesteInDAO fenpRichiesteInDAO = new GnpFenpRichiesteInDAO();
fenpRichiesteInDAO.save(richiestaFenp);
insertStoricoDonNatOlo(statoPartenza, richiestaDonNatOlo);
log.write("9999", "RequestManagerDonNatOlo.avanzaStatoInAcquisita() creata la richiesta " + richiestaDonNatOlo.getIdRichiesta() + " - Effettuo la verifica del COW " + richiestaDonNatOlo.getCodiceSegreto());
if (anagCowTelecom == null) {
//COW NON VALIDO: RIFIUTATA motivo rif.14
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
return;
}
// 152248 - 227248
boolean esisteD274suDN = false;
GnpNowDonorInDAO nowDonorInDAO = new GnpNowDonorInDAO();
esisteD274suDN = verificaEsitoFase2Del274(richiestaDonNatOlo.getDn());
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if(isUtenzaDBSS(richiestaDonNatOlo.getPiattaformaCompetenza())){
log.write("9999", "isUtenzaDBSS : "+richiestaDonNatOlo.getPiattaformaCompetenza()+" DN:"+richiestaDonNatOlo.getDn());
if (esisteD274suDN) {
richiestaDonNatOlo.setPiattaformaCompetenza("D");
// LANCIO TC5 per errore 10
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(richiestaDonNatOlo,richiestaFenp,log);
}
}else {
// Se l'utenza non e' DBSS rimango sul vecchio processo
// rimossa come da mail Buglioni del 30/01/2023
/*if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)
&& richiestaDonNatOlo.getTipoLinea() != null && richiestaDonNatOlo.getTipoLinea().equals("1")) {
log.write("9999", "CASO PIATTAFORMA B AND TIPOLINEA = 1 Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
avanzaStatoInEspletata(richiestaDonNatOlo, log);
} else {*/
if (esisteD274suDN) {
richiestaDonNatOlo.setPiattaformaCompetenza("B");
// LANCIO TC5 per errore 10
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_10);
} else if (richiestaDonNatOlo.getPiattaformaCompetenza().equals(CRMMap.PIATTAFORMA_B)) {
log.write("9999", "Avanzamento in presa in carico per Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(richiestaDonNatOlo.getPiattaformaCompetenza());
crmController.notificaCRM(richiestaDonNatOlo, richiestaFenp, CRMMap.PRENOTIFICA);
} else {
// non è né CRMB né DBSS
avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_27);
}
// }
}
}
private static void callVerificaCSDBSS(GnpRichiesteCsNpg103 richiestaCs, GnpFenpRichiesteIn richiestaFenp, ProcessLogger log) throws Exception {
log.write("9999", "Chiamata VerificaCS delibera 103");
// nuova chiamata verifica CS
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(richiestaCs, richiestaFenp, DBSSMap.PRENOTIFICA);
//String esito = null;
/*if (dbssResponse != null) {
esito = esito = dbssResponse.getProcessData().getReturnCode();
log.write("9999", "Esito presa in carico Verifica CS con DBSS: ["+esito+"]");
}*/
log.write("9999", "END Richiesta Verifica CS con DBSS");
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
protected static boolean callCheckRetailPlatform(GnpRichiesteCsNpg103 richiestaDonNatOlo, GnpFenpRichiesteIn richiesteFenpIn, ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn());
String methSig = "[RequestManagerCSNPg103].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonNatOlo.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetail(methSig,resp,log,richiestaDonNatOlo,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatform : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteCsNpg103 richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +" non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig +" PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//MODIFICA INGLISA IN CASO DI UTENZA NON TROVATA NON PASSO IN RIFIUTATA MA CHIAMO B
//avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS "+
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE,PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//avanzaStatoInRifiutata(richiestaDonNatOlo, log, ApplicationCostants.PROCESSO_DONOR.FENP_OUT_COM5.COD_MOTIVO_COW_ERRATO);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDonNatOlo,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE+retCode,log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDonNatOlo,richiesteFenp,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE+retCode,log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDonNatOlo.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
protected static boolean callCheckRetailPlatformWhiteList(GnpRichiesteCsNpg103 richiestaDonNatOlo, GnpFenpRichiesteIn richiesteFenpIn, ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatformWhiteList : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn());
String methSig = "[RequestManagerCSNPg103].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonNatOlo.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetailWhiteList(methSig,resp,log,richiestaDonNatOlo,richiesteFenpIn);
log.write("9999", " END callCheckRetailPlatformWhiteList : " +richiestaDonNatOlo.getIdRichiesta() + "DN: "+ richiestaDonNatOlo.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetailWhiteList(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteCsNpg103 richiestaDonNatOlo,GnpFenpRichiesteIn richiesteFenp) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +"non avanza stato in rifiutato perche presente in whitelist : " + retCode);
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS");
log.write("9999", methSig +"non avanza stato in rifiutato perche presente in whitelist : " + retCode);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
log.write("9999", methSig +"non scrive sul evento anomalo perche presente in whitelist : " + retCode);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
log.write("9999", methSig +" non scrive sul evento anomalo perche presente in whitelist : " + retCode);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDonNatOlo.setPiattaformaCompetenza(crmComp);
}
return foundByWs;
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body,ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN ["+requestDn+"]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] codice ["+retCode+"]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "RequestManagerCSNPg103 RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] descrizione ["+descr+"]");
return retrieveByLineNumberResponseMessage;
}
private static void buildScartiVerificaCs(GnpRichiesteCsNpg103 richiestaDonNatOlo,GnpFenpRichiesteIn richiestaFenp,String tipoAnomalia,String descrizioneAnomalia,ProcessLogger log) {
log.write("9999","START buildScartiVerificaCs DN: " + richiestaDonNatOlo.getDn()+"Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao=new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs=new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
scartiVerificaCs.setDn(richiestaDonNatOlo.getDn());
scartiVerificaCs.setNomeFile(richiestaFenp.getNomeFile());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setTipoComunicazione(richiestaFenp.getTipoComunicazione());
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaDonNatOlo.getCodiceSegreto());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999","END buildScartiVerificaCs DN: " + richiestaDonNatOlo.getDn()+"Idrichiesta: "+richiestaDonNatOlo.getIdRichiesta());
}
public static void insertStoricoDonNatOlo(int stato_da, GnpRichiesteCsNpg103 richiestaDonNatOlo) throws Exception {
GnpStoricoCsNpg103DAO storicoDAO = new GnpStoricoCsNpg103DAO();
//creo lo storico
GnpStoricoCsNpg103 storico = new GnpStoricoCsNpg103();
storico.setIdRichiesta(richiestaDonNatOlo.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaDonNatOlo.getStato());
storicoDAO.save(storico);
}
private static GnpRichiesteCsNpg103 creaRichiesta(GnpFenpRichiesteIn fenpIn, String processo) throws Exception {
GnpRichiesteCsNpg103 richiestaDonNatOlo = new GnpRichiesteCsNpg103();
richiestaDonNatOlo.setStato((long) StatoRichiestaDonNatOlo.ACQUISITA);
richiestaDonNatOlo.setProcesso(processo);
richiestaDonNatOlo.setCodOpRecipient(fenpIn.getCodOpRecipient());
richiestaDonNatOlo.setCodiceOrdine(fenpIn.getCodiceOrdine());
richiestaDonNatOlo.setDataOrdine(fenpIn.getDataOrdine());
richiestaDonNatOlo.setDataRicezione(new Date());
richiestaDonNatOlo.setDn(fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP letto tal quale, il mittente deve valorizzarlo bene
richiestaDonNatOlo.setDac(fenpIn.getDac());
richiestaDonNatOlo.setNominativoCliente(fenpIn.getNominativoCliente());
richiestaDonNatOlo.setCodiceSegreto(fenpIn.getCodiceSegreto());
richiestaDonNatOlo.setTelReferenteRich(fenpIn.getTelReferenteRich());
richiestaDonNatOlo.setEmailReferenteRich(fenpIn.getEmailReferenteRich());
richiestaDonNatOlo.setDataInvioMessaggio(fenpIn.getDataInvioMessaggio());
richiestaDonNatOlo.setCodOpDonating(fenpIn.getCodOpDonating());
richiestaDonNatOlo.setCodOpDonor(fenpIn.getCodOpDonor());
richiestaDonNatOlo.setIdCorrelazione(fenpIn.getIdCorrelazione());
richiestaDonNatOlo.setNumTotRichieste(fenpIn.getNumTotRichieste());
richiestaDonNatOlo.setTipoLinea(fenpIn.getTipoLinea()); // 2018_C08 TipoLinea DONE NO-OP qui arrivano solo valori validi, letto tal quale, il mittente deve valorizzarlo bene
if ("1".equals(richiestaDonNatOlo.getTipoLinea())) {
richiestaDonNatOlo.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 5, 18, 15, 0));
} else {
richiestaDonNatOlo.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 1, 18,15, 0));
}
return richiestaDonNatOlo;
}
/**
* avanzaStatoInAttesaVerifica
*/
public static void avanzaStatoInAttesaVerifica(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ATTESAVERIFICA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ATTESAVERIFICA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ATTESAVERIFICA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInRifiutata
*/
public static void avanzaStatoInRifiutata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log, String codMotivoRifiuto) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
try {
if (statoPartenza != StatoRichiestaDonNatOlo.RIFIUTATA) {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.RIFIUTATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.RIFIUTATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN RIFIUTATA");
OLOControllerFENP.getInstance().notificaEvento(richiesta, codMotivoRifiuto);
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} else {
log.write("9999", "Esito ignorato perché richiesta " + richiesta.getIdRichiesta() + "gia in stato RIFIUTATA");
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInEspletata
*/
public static void avanzaStatoInEspletata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ESPLETATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ESPLETATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
/**
* avanzaStatoInAnnullata
*/
public static void avanzaStatoInAnnullata(GnpRichiesteCsNpg103 richiesta, ProcessLogger log) throws
Exception {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteCsNpg103DAO richDAO = new GnpRichiesteCsNpg103DAO();
try {
int status = StateManagerDonNatOlo.CheckTransition(richiesta.getIdRichiesta(), StatoRichiestaDonNatOlo.ESPLETATA, ProcessMapper.proc_DON_NAT_OLO);
if (status != StateManagerDonNatOlo.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato((long) StatoRichiestaDonNatOlo.ANNULLATA);
richDAO.merge(richiesta);
log.write("0008", richiesta.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaDonNatOlo.getStatoDescr(statoPartenza) + " IN ANNULLATA");
insertStoricoDonNatOlo(statoPartenza, richiesta);
}
} catch (Exception ex) {
log.write("9999", ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,734 @@
package it.valueteam.gnp.manager;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.BusinessInteractionRelationship_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicSpecificationRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.CustomerOrderItemRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductBundleRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductCharacteristicValueRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductOrderRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.ProductSpecCharacteristicRequest_LineNumber;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.Request_LineNumber;
import it.telecomitalia.soa.wirelinelinecodequery.x20150511.VerifySecretCodeResponse;
import it.valueteam.gnp.dao.db.UtilityDao;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.ApplicationCostants;
import it.valueteam.gnp.obj.StatoRichiestaDon;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.WirelineLineCodeQueryResponseUtils;
import it.valueteam.gnp.systemcontroller.formatcontroller.now.NowController;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerDonor;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerDonor;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import java.util.Date;
import java.util.List;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
public class RequestManagerDonor {
private static NowController instance;
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC="LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE="Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC="CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC="CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS="VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE="VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA="VERIFICA_CODICE_SEGRETO_NUMERAZIONE_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE="VERIFICA CODICE SEGRETO NUMERAZIONE NON GESTITA DBSS";
public static final String VERIFICA_CS_DBSS_ESITO_NON_GESTITO="VERIFICA_CODICE_SEGRETO_ESITO_NON_GESTITO";
public static final String VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE="VERIFICA CODICE SEGRETO ESITO NON GESTITO DBSS";
private RequestManagerDonor() {
}
/**
* Avanzamento stato in ACQUISITA
*
* @param oloRichiesteDonorIn
* @param log
* @return
* @throws Exception
*/
public static Long avanzaStatoInAcquisita(GnpOloRichiesteDonorIn oloRichiesteDonorIn, ProcessLogger log)
throws Exception {
GnpRichiesteDonor richiestaDonor = creaRichiestaMigrazione(oloRichiesteDonorIn);
GnpRichiesteDonorDAO richiesteDonorDAO = new GnpRichiesteDonorDAO();
richiesteDonorDAO.save(richiestaDonor);
logStoricoPassaggioStato(richiestaDonor.getIdRichiesta(), -1, StatoRichiestaDon.ACQUISITA, log);
return richiestaDonor.getIdRichiesta();
}
/**
* Inserisce nello storico della richiesta il passaggio di stato
* da -1 a 1
*
* @throws Exception
*/
public static void logStoricoPassaggioStato(Long idRichiesta, int statoDa, int statoA, ProcessLogger log) throws Exception {
GnpStoricoRichiesteDonor storicoRich = new GnpStoricoRichiesteDonor();
storicoRich.setIdRichiesta(idRichiesta);
storicoRich.setStatoDa((long) statoDa);
storicoRich.setStatoA((long) statoA);
GnpStoricoRichiesteDonorDAO storicoDonorDAO = new GnpStoricoRichiesteDonorDAO();
storicoDonorDAO.save(storicoRich);
log.write("9999", "ID RICHIESTA DONOR " + idRichiesta.toString()
+ " PASSA DALLO STATO " + (statoDa != -1 ? StatoRichiestaDon.getStatoDescr(statoDa) : "INIZIALE")
+ " ALLO STATO " + StatoRichiestaDon.getStatoDescr(statoA));
}
public static GnpRichiesteDonor creaRichiestaMigrazione(GnpOloRichiesteDonorIn oloRichiesteDonorIn) throws Exception {
GnpRichiesteDonor richiesteDonor = new GnpRichiesteDonor();
//Codice Olo Donating
richiesteDonor.setCowDonating(oloRichiesteDonorIn.getCodiceOperatoreDonating());
//Codice Olo Recipient
richiesteDonor.setCowRecipient(oloRichiesteDonorIn.getCodiceOperatoreRecipient());
//Directory Number ovvero il Cor ovvero il codice Risorsa
richiesteDonor.setDn(oloRichiesteDonorIn.getCor());
richiesteDonor.setCodiceOrdineRecipient(oloRichiesteDonorIn.getCodiceOrdineRecipient());
richiesteDonor.setStato((long) StatoRichiestaDon.ACQUISITA);
richiesteDonor.setDataRicezione(oloRichiesteDonorIn.getDataRicezione());
//Data Fine Wait - Calcolata con DataRicezione + 24H lavorative
richiesteDonor.setDfw(DateUtils.aggiungi24OreLavorative(oloRichiesteDonorIn.getDataRicezione()));
//Calcolata con DataRicezione + 17 giorni lavorativi
richiesteDonor.setDataScadenza(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra
(oloRichiesteDonorIn.getDataRicezione(),
ApplicationCostants.GIORNI_CALCOLO_DATA_SCADENZA,
ApplicationCostants.ORA_CALCOLO_DATA_SCADENZA,
ApplicationCostants.MINUTI_CALCOLO_DATA_SCADENZA,
ApplicationCostants.SECONDI_CALCOLO_DATA_SCADENZA)
);
//I campi codice Sessione, CRMCompetenza, KoNonInviato, PresaInCarico, CodValidazione
//vengono inseriti successivamente nel processo
return richiesteDonor;
}
/**
* Avanzamento stato in ACCETTATA
*
* @param richiesta
* @param log
* @throws Exception
*/
public static void avanzaStatoInAccettata(GnpRichiesteDonor richiesta, ProcessLogger log) throws Exception {
GnpRichiesteDonorDAO ricDonorDAO = new GnpRichiesteDonorDAO();
int statoDa = richiesta.getStato().intValue();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.ACCETTATA);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
// CALCOLA DATA SCADENZA ALLA MEZZANOTTE DEL 16� GIORNO
Date dataScadenza = DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 16, 0, 0, 0);
richiesta.setStato((long) StatoRichiestaDon.ACCETTATA);
richiesta.setDataScadenza(dataScadenza);
ricDonorDAO.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.ACCETTATA, log);
// Ricerca eventuali altre richieste stesso DN, stesso COW RECIPIENT
// DBCFX SM_525 Anomalia da pezzulla. Modifica da effettuare cambiare la SYSDATE della query in to_date(sysdate, 'DD-MON-YY'),
// formattandola quindi in giorno mese e anno e non considerando l'orario.
List altreRichieste = ricDonorDAO.getAltreRichiesteStessoCowDN(richiesta.getDn(), richiesta.getCowRecipient());
if (altreRichieste != null && altreRichieste.size() > 0) {
for (Object anAltreRichieste : altreRichieste) {
//ogni altra richiesta viene posta in scaduta
GnpRichiesteDonor altraR = (GnpRichiesteDonor) anAltreRichieste;
statoDa = altraR.getStato().intValue();
altraR.setStato((long) StatoRichiestaDon.SCADUTA);
altraR.setDataScadenza(dataScadenza);
ricDonorDAO.merge(altraR);
logStoricoPassaggioStato(altraR.getIdRichiesta(), statoDa, StatoRichiestaDon.SCADUTA, log);
}
}
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
public static void avanzaStatoInRifiutata(GnpRichiesteDonor richiesta, String descrizioneRifiuto, int codMotivoRifiuto, boolean cowNonTI, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO dao = new GnpRichiesteDonorDAO();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.RIFIUTATA);
int statoDa = richiesta.getStato().intValue();
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
if (cowNonTI || (statoDa == StatoRichiestaDon.ATTESA_VERIFICA && richiesta.getDfw().after(new Date()))) {
log.write("9999", "Passaggio di stato in RIFIUTATA ID RICHIESTA " + richiesta.getIdRichiesta());
richiesta.setStato((long) StatoRichiestaDon.RIFIUTATA);
richiesta.setCodValidazione((long) ApplicationCostants.COD_VALIDAZIONE_KO);
// Notifica a OLO
OLOControllerDonor.getInstance().accodaKORichiestaOloDonorOut(richiesta,
descrizioneRifiuto,
codMotivoRifiuto,
ApplicationCostants.PROCESSO_DONOR.OLO_OUT.CAUSALE_RIFIUTO_GESTIONALE,
ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_GESTIONALI);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.RIFIUTATA, log);
} else {
log.write("9999", "Passaggio di stato in RIFIUTATA non effettuato perche DFW scaduta: ID RICHIESTA " + richiesta.getIdRichiesta());
richiesta.setKoNonInviato(ApplicationCostants.PROCESSO_DONOR.KO_NON_INVIATO);
}
dao.merge(richiesta);
} else if (statoDa == StatoRichiestaDon.ACCETTATA) {
log.write("9999", "Passaggio di stato in RIFIUTATA non effettuato perche richiesta gia in ACCETTATA: ID RICHIESTA " + richiesta.getIdRichiesta());
richiesta.setKoNonInviato(ApplicationCostants.PROCESSO_DONOR.KO_NON_INVIATO);
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
/**
* Passaggio di stato in PRESAINCARICO.
* <p/>
* Ritorna false se il COW Donating non � mappato su uno di quelli Telecom
*
* @param richiesta
* @param log
* @return
* @throws Exception
*/
public static boolean avanzaStatoInPresaInCarico(GnpRichiesteDonor richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO dao = new GnpRichiesteDonorDAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
boolean ret = true;
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato((long) StatoRichiestaDon.PRESA_IN_CARICO);
richiesta.setDataPresaincarico(new java.util.Date());
log.write("9999", "PRESA IN CARICO del DN :"+richiesta.getDn()+" IdRichiesta: "+richiesta.getIdRichiesta()+richiesta.getDataPresaincarico());
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteListDonorDel274(richiesta.getDn(), richiesta.getCowDonating());
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ACCETTATA DN: "+richiesta.getDn());
avanzaStatoInAccettata(richiesta, log);
}
else if (verificaWhiteList != null && !verificaWhiteList) {
log.write("9999", "Verifica cs whitelist false"+" IDRichiesta: "+richiesta.getIdRichiesta());
avanzaStatoInRifiutata(richiesta, "Codice Segreto Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_11, false, log);
}
//verificaWhiteList == null
else {
log.write("9999", "Verifica cs whitelist null");
// Ricerco nell'anagrafica il cow Donating ricevuto
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO anagCowDAO = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = anagCowDAO.findById(richiesta.getCowDonating());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW: "+richiesta.getCowDonating()+" DN:"+richiesta.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiesta.getDn(),richiesta.getCowDonating());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW VECCHIO: "+richiesta.getCowDonating()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiesta.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiesta.setCowDonating(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
dao.save(richiesta);
}
// Se non trovo il cow nell'anagrafica:
// 1)Aggiorno la tabella GNP_RICHIESTE_DONOR con cod_validazione = 1
// 2)Inserisco un record nella tabella GNP_OLO_RICHIESTE_DONOR_OUT
if (anagCowTelecom == null) {
ret = false;
} else {
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
/* C06 RE: GATEWAY DBCFX :Studio per il tracciamento di eventi non correttamente gestiti dal sistema
* cambio implementazione del recupero della piattaforma di competenza, non si basa più sull'anagrafica (anagCowTelecom)
* ma tramite il localizzatore. Per maggiori dettagli vedi mail
*/
if (!callCheckRetailPlatform(richiesta,log)) {
log.write("9999", "callCheckRetailPlatform false : "+richiesta.getIdRichiesta()+" COW DONATING: "+richiesta.getCowDonating()+"CRM recuperato: "+richiesta.getCrmCompetenza());
/*Se il metodo callCheckRetailPlatform ritorna false non faccio nulla perchè nel caso in cui
* si è verificato un errore non previsto, non effettuo la verifica CS ma sarà cura del BO sistemare la situazione
* un altro caso è che ha comunicato il rifiuto all'OLO e quindi non facci più nulla, in entrambi i casi
* al chiamante restituisco true perchè non deve fare più nulla
*/
ret = true;
return ret;
}
//USO IL CRM DI COMPETENZA RECUPERATO DAL SERVIZIO CUSTOMER LOCATION QUERY
String crmCompetenza = richiesta.getCrmCompetenza();
boolean utenzaDbss = false;
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if (Resources.getDBSS_DONOR_ACTIVE()) {
if(isUtenzaDBSS(crmCompetenza)){
log.write("9999", "isUtenzaDBSS: "+crmCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
callVerificaCSDBSS(log,richiesta,dbssDonorOutRecDAO);
utenzaDbss=true;
}
}
UtilityDao utilityDao = new UtilityDao();
//PP X5.2010 - aggiunto controllo se multilinea
if (utilityDao.isDnMultilinea(richiesta.getDn()) && crmCompetenza.equalsIgnoreCase("B") && !utenzaDbss) {
log.write("9999", "DN BUSINESS MULTILINEA: DBCFX SIMULA LA NOTIFICA OK DA CRM");
//-- PASSAGGIO FORZATO IN PRESA IN CARICO -------------------
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ATTESA VERIFICA -------------------
RequestManagerDonor.avanzaStatoInAttesaVerifica(richiesta.getCodiceSessione(), log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ACCETTATA -------------------------
RequestManagerDonor.avanzaStatoInAccettata(richiesta, log);
//-----------------------------------------------------------
} else if (!utenzaDbss) {
log.write("9999", "DN NON MULTILINEA");
//-- PASSAGGIO IN PRESA IN CARICO e INVIO NOTIFICA A CRM ---
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(crmCompetenza);
crmController.notificaCRMDonor(richiesta.getIdRichiesta());
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
}
}
}
return ret;
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
protected static boolean callCheckRetailPlatform(GnpRichiesteDonor richiestaDonor,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " +richiestaDonor.getIdRichiesta() + "DN: "+ richiestaDonor.getDn());
String methSig = "[RequestManagerCSNPg35].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonor.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetail(methSig,resp,log,richiestaDonor);
log.write("9999", " END callCheckRetailPlatform : " +richiestaDonor.getIdRichiesta() + "DN: "+ richiestaDonor.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteDonor richiestaDon) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +" non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig +" PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
//MODIFICA INGLISA NEL CASO IN CUI NON TROVO IL CRM CONTATTO B
//RequestManagerDonor.avanzaStatoInRifiutata(richiestaDon, "COW COR Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_COW_COR_ERRATO,true, log);
crmComp = "B";
foundByWs = true;
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS"+
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE,PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//RequestManagerDonor.avanzaStatoInRifiutata(richiestaDon, "COW COR Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_COW_COR_ERRATO,true, log);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC scrivo solo nella SCARTI CS");
buildScartiVerificaCs(richiestaDon,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE+retCode,log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDon,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE+retCode,log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDon.setCrmCompetenza(crmComp);
}
return foundByWs;
}
private static void buildScartiVerificaCs(GnpRichiesteDonor richiestaDon,String tipoAnomalia,String descrizioneAnomalia,ProcessLogger log) {
log.write("9999","START buildScartiVerificaCs DN: " + richiestaDon.getDn()+"Idrichiesta: "+richiestaDon.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao=new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs=new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaDon.getIdRichiesta());
scartiVerificaCs.setDn(richiestaDon.getDn());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaDon.getCowDonating());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999","END buildScartiVerificaCs DN: " + richiestaDon.getDn()+"Idrichiesta: "+richiestaDon.getIdRichiesta());
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body,ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "NowController RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN ["+requestDn+"]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "NowController RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] codice ["+retCode+"]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "NowController RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] descrizione ["+descr+"]");
return retrieveByLineNumberResponseMessage;
}
/**
* Passaggio di stato in PRESAINCARICO.
* <p/>
* Ritorna false se il COW Donating non � mappato su uno di quelli Telecom
*
* @param richiesta
* @param log
* @return
* @throws Exception
*/
public static boolean avanzaStatoInPresaInCaricoTool(GnpRichiesteDonor richiesta,String piattaformaCompetenza, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO dao = new GnpRichiesteDonorDAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
boolean ret = true;
//richiesta.setStato(new Long(StatoRichiestaDon.ACQUISITA));
//int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO);
int check=1;
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato((long) StatoRichiestaDon.PRESA_IN_CARICO);
/*
*
* Penso che la presa in carico sia più corretta considerare la prima data e non questa
* quindi non sovrascrivere la precedente
*/
//richiesta.setDataPresaincarico(new java.util.Date());
log.write("9999", "Verifica cs whitelist null");
// Ricerco nell'anagrafica il cow Donating ricevuto
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO anagCowDAO = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = anagCowDAO.findById(richiesta.getCowDonating());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW: "+richiesta.getCowDonating()+" DN:"+richiesta.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiesta.getDn(),richiesta.getCowDonating());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW VECCHIO: "+richiesta.getCowDonating()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiesta.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiesta.setCowDonating(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
dao.save(richiesta);
}
// Se non trovo il cow nell'anagrafica:
// 1)Aggiorno la tabella GNP_RICHIESTE_DONOR con cod_validazione = 1
// 2)Inserisco un record nella tabella GNP_OLO_RICHIESTE_DONOR_OUT
if (anagCowTelecom == null) {
ret = false;
} else {
log.write("9999", "Piattaforma notificata da BO : "+piattaformaCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
//Setto la piattaforma di competenza con quello del campo settato dal BO
String crmCompetenza=piattaformaCompetenza;
richiesta.setCrmCompetenza(crmCompetenza);
boolean utenzaDbss = false;
if(isUtenzaDBSS(piattaformaCompetenza)){
log.write("9999", "isUtenzaDBSS: "+piattaformaCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaCSDBSS(log,richiesta,dbssDonorOutRecDAO);
utenzaDbss=true;
}
}
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
UtilityDao utilityDao = new UtilityDao();
//PP X5.2010 - aggiunto controllo se multilinea
if (utilityDao.isDnMultilinea(richiesta.getDn()) && crmCompetenza.equalsIgnoreCase("B") && !utenzaDbss) {
log.write("9999", "DN BUSINESS MULTILINEA: DBCFX SIMULA LA NOTIFICA OK DA CRM");
//-- PASSAGGIO FORZATO IN PRESA IN CARICO -------------------
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ATTESA VERIFICA -------------------
RequestManagerDonor.avanzaStatoInAttesaVerifica(richiesta.getCodiceSessione(), log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ACCETTATA -------------------------
RequestManagerDonor.avanzaStatoInAccettata(richiesta, log);
//-----------------------------------------------------------
} else if (!utenzaDbss) {
log.write("9999", "DN NON MULTILINEA");
//-- PASSAGGIO IN PRESA IN CARICO e INVIO NOTIFICA A CRM ---
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(crmCompetenza);
crmController.notificaCRMDonor(richiesta.getIdRichiesta());
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
}
}
return ret;
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
private static void callVerificaCSDBSS(ProcessLogger log,GnpRichiesteDonor richiesta,GnpDbssDonorOutDAO dbssDonorOutRecDAO) throws Exception {
log.write("9999", "START Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
// chiamata al WS WirelineLineCodeQuery
DBSSController dbssController = DBSSController.getInstance();
GnpDbssDonorOut dbssDonorOut = dbssController.creaRichiestaVerificaCS(richiesta);
VerifySecretCodeResponse dbssResponse = dbssController.callVerificaCS(dbssDonorOut);
String esito = null;
if (dbssResponse != null) {
WirelineLineCodeQueryResponseUtils util = new WirelineLineCodeQueryResponseUtils(dbssResponse);
esito = dbssResponse.getProcessData().getReturnDescription();
if (util.isCodiceSegretoCorretto()) {
log.write("9999", "CodiceSegreto Corretto: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
// ESITO OK
richiesta.setCrmCompetenza("D");
// Valorizzazione del CODICE_CLIENTE
dbssDonorOut.setRespCodiceCliente(util.getCodiceCliente());
RequestManagerDonor.avanzaStatoInAccettata(richiesta, log);
} else if (util.isCodiceSegretoErrato()) {
log.write("9999", "CodiceSegreto Errato: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
// ESITO KO, codice CIM codice segreto errato
richiesta.setCrmCompetenza("D");
RequestManagerDonor.avanzaStatoInRifiutata(richiesta, "Codice Segreto Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_11, true, log);
} else if (util.isNumerazioneNonGestita()) {
log.write("9999", "Numerazione non gestita: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
buildScartiVerificaCs(richiesta,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA,VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE,log);
}else {
log.write("9999", "Esito non gestito: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
buildScartiVerificaCs(richiesta,VERIFICA_CS_DBSS_ESITO_NON_GESTITO,VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE,log);
}
dbssDonorOut.setRespCodEsito(esito);
dbssDonorOut.setRespDataRicezione(new Date());
dbssDonorOutRecDAO.merge(dbssDonorOut);
}else {
log.write("9999", "Risposta vuota non gestita: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
buildScartiVerificaCs(richiesta,VERIFICA_CS_DBSS_ESITO_NON_GESTITO,VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE,log);
}
log.write("9999", "END Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
public static void avanzaStatoInPresaInCaricoKO(GnpRichiesteDonor richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO dao = new GnpRichiesteDonorDAO();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO_KO);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato(new Long(StatoRichiestaDon.PRESA_IN_CARICO_KO));
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO_KO, log);
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
public static void passaggioStatoScaduta(GnpRichiesteDonor richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO ricDonorDAO = new GnpRichiesteDonorDAO();
// IMPOSTA LO STATO IN SCADUTA
int statoDa = richiesta.getStato().intValue();
richiesta.setStato(new Long(StatoRichiestaDon.SCADUTA));
ricDonorDAO.merge(richiesta);
RequestManagerDonor.logStoricoPassaggioStato(richiesta.getIdRichiesta(),
statoDa,
StatoRichiestaDon.SCADUTA, log);
}
public static void avanzaStatoInAttesaVerifica(String codiceSessione, ProcessLogger log)
throws Exception {
GnpRichiesteDonorDAO dao = new GnpRichiesteDonorDAO();
GnpRichiesteDonor richiesta = dao.findByCodiceSessione(codiceSessione);
if (richiesta == null)
throw new Exception("Richiesta con codice sessione " + codiceSessione + " non trovata");
int statoDa = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.ATTESA_VERIFICA);
if (statoDa != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato(new Long(StatoRichiestaDon.ATTESA_VERIFICA));
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.ATTESA_VERIFICA, log);
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}

View File

@@ -0,0 +1,800 @@
package it.valueteam.gnp.manager;
import com.tibco.schemas.dbssgoacawirelineceasecheck82.shared.schemas.external.dbcfx.wirelineceasecheck82.WirelineCeaseCheck82ResponseType;
import dbcfx.soa.checkretailplatform.x20160704.CheckRetailPlatformRequest;
import it.telecomitalia.soa.customerlocationquery.x20150511.Parameter;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberRequestMessage;
import it.telecomitalia.soa.customerlocationquery.x20150511.RetrieveByLineNumberResponseMessage;
import it.telecomitalia.soa.customerlocationquerycustomtypes.x20150511.*;
import it.valueteam.gnp.dao.db.UtilityDao;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmNotifyDonorOut;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmNotifyDonorOutDAO;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.ApplicationCostants;
import it.valueteam.gnp.obj.ProcessMapper;
import it.valueteam.gnp.obj.StatoRichiestaDon;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.now.NowController;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerDonor;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Func;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.StateManagerDonor;
import it.valueteam.gnp.ws.dbss.client.CustomerLocationQueryClient;
import java.util.Date;
import java.util.List;
public class RequestManagerDonor82 {
private static NowController instance;
private final static String operationName = "OperationCode";
private final static String lineValue = "1";
private final static String serviceNumber = "ServiceNumber";
public static final int RET_CODE_OK_FROM_WS = 0;
public static final int RET_CODE_UTENZA_NON_PRESENTE_FROM_WS = 1;
public static final int RET_CODE_ERRORE_GENERICO_WS = 2;
public static final int RET_CODE_SERV_CRMB_NON_DISPONIBILE = 4;
public static final int RET_CODE_SERV_CRMR_NON_DISPONIBILE = 5;
//C06
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC="LINEA_NON_PRESENTE";
public static final String ANOMALIA_LINEA_NON_PRESENTE_CCC_DESCRIZIONE="Linea non presente sull'operation retrieveByLineNumber di customerLocationQuery";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC="CODICE_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore : ";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC="CODICE_NON_PREVISTO_ERRORE_SERVIZIO_CCC";
public static final String ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE="L'operation retrieveByLineNumber di customerLocationQuery ha restituito un errore non previsto : ";
public static final String VERIFICA_CS_ERRATA_DBSS="VERIFICA_CODICE_SEGRETO_ERRORE_DBSS";
public static final String VERIFICA_CS_ERRATA_DBSS_DESCRIZIONE="VERIFICA CODICE SEGRETO ERRORE INASPETTATO DBSS";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA="VERIFICA_CODICE_SEGRETO_NUMERAZIONE_NON_GESTITA";
public static final String VERIFICA_CS_DBSS_NUMERAZIONE_NON_GESTITA_DESCRIZIONE="VERIFICA CODICE SEGRETO NUMERAZIONE NON GESTITA DBSS";
public static final String VERIFICA_CS_DBSS_ESITO_NON_GESTITO="VERIFICA_CODICE_SEGRETO_ESITO_NON_GESTITO";
public static final String VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE="VERIFICA CODICE SEGRETO ESITO NON GESTITO DBSS";
private RequestManagerDonor82() {
}
/**
* Avanzamento stato in ACQUISITA
*
* @param oloRichiesteDonorIn
* @param log
* @return
* @throws Exception
*/
public static Long avanzaStatoInAcquisita(GnpOloRichiesteDonorIn oloRichiesteDonorIn, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82 richiestaDonor = creaRichiestaMigrazione(oloRichiesteDonorIn);
GnpRichiesteDonor82DAO richiesteDonorDAO = new GnpRichiesteDonor82DAO();
richiesteDonorDAO.save(richiestaDonor);
logStoricoPassaggioStato(richiestaDonor.getIdRichiesta(), -1, StatoRichiestaDon.ACQUISITA, log);
return richiestaDonor.getIdRichiesta();
}
/**
* Inserisce nello storico della richiesta il passaggio di stato
* da -1 a 1
*
* @throws Exception
*/
public static void logStoricoPassaggioStato(Long idRichiesta, int statoDa, int statoA, ProcessLogger log) throws Exception {
GnpStoricoRichiesteDonor storicoRich = new GnpStoricoRichiesteDonor();
storicoRich.setIdRichiesta(idRichiesta);
storicoRich.setStatoDa((long) statoDa);
storicoRich.setStatoA((long) statoA);
GnpStoricoRichiesteDonorDAO storicoDonorDAO = new GnpStoricoRichiesteDonorDAO();
storicoDonorDAO.save(storicoRich);
log.write("9999", "ID RICHIESTA DONOR " + idRichiesta.toString()
+ " PASSA DALLO STATO " + (statoDa != -1 ? StatoRichiestaDon.getStatoDescr(statoDa) : "INIZIALE")
+ " ALLO STATO " + StatoRichiestaDon.getStatoDescr(statoA));
}
public static GnpRichiesteDonor82 creaRichiestaMigrazione(GnpOloRichiesteDonorIn oloRichiesteDonorIn) throws Exception {
GnpRichiesteDonor82 richiesteDonor = new GnpRichiesteDonor82();
//Codice Olo Donating
richiesteDonor.setCowDonating(oloRichiesteDonorIn.getCodiceOperatoreDonating());
//Codice Olo Recipient
richiesteDonor.setCowRecipient(oloRichiesteDonorIn.getCodiceOperatoreRecipient());
//Directory Number ovvero il Cor ovvero il codice Risorsa
richiesteDonor.setDn(oloRichiesteDonorIn.getDn1());
richiesteDonor.setCognomeCliente(oloRichiesteDonorIn.getCognomeClienteRagioneSocial());
richiesteDonor.setCodiceOrdineRecipient(oloRichiesteDonorIn.getCodiceOrdineRecipient());
richiesteDonor.setStato((long) StatoRichiestaDon.ACQUISITA);
richiesteDonor.setDataRicezione(oloRichiesteDonorIn.getDataRicezione());
//Data Fine Wait - Calcolata con DataRicezione + 24H lavorative
richiesteDonor.setDfw(DateUtils.aggiungi24OreLavorative(oloRichiesteDonorIn.getDataRicezione()));
//Calcolata con DataRicezione + 17 giorni lavorativi
richiesteDonor.setDataScadenza(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra
(oloRichiesteDonorIn.getDataRicezione(),
ApplicationCostants.GIORNI_CALCOLO_DATA_SCADENZA,
ApplicationCostants.ORA_CALCOLO_DATA_SCADENZA,
ApplicationCostants.MINUTI_CALCOLO_DATA_SCADENZA,
ApplicationCostants.SECONDI_CALCOLO_DATA_SCADENZA)
);
richiesteDonor.setCor(oloRichiesteDonorIn.getCor());
richiesteDonor.setCos(oloRichiesteDonorIn.getCos());
richiesteDonor.setDn2(oloRichiesteDonorIn.getDn2());
richiesteDonor.setDn3(oloRichiesteDonorIn.getDn3());
richiesteDonor.setDn4(oloRichiesteDonorIn.getDn4());
richiesteDonor.setDn5(oloRichiesteDonorIn.getDn5());
richiesteDonor.setDn6(oloRichiesteDonorIn.getDn6());
richiesteDonor.setDn7(oloRichiesteDonorIn.getDn7());
richiesteDonor.setDn8(oloRichiesteDonorIn.getDn8());
richiesteDonor.setDn9(oloRichiesteDonorIn.getDn9());
richiesteDonor.setDn10(oloRichiesteDonorIn.getDn10());
//I campi codice Sessione, CRMCompetenza, KoNonInviato, PresaInCarico, CodValidazione
//vengono inseriti successivamente nel processo
return richiesteDonor;
}
/**
* Avanzamento stato in ACCETTATA
*
* @param richiesta
* @param log
* @throws Exception
*/
public static void avanzaStatoInAccettata(GnpRichiesteDonor82 richiesta, ProcessLogger log) throws Exception {
GnpRichiesteDonor82DAO ricDonorDAO = new GnpRichiesteDonor82DAO();
int statoDa = richiesta.getStato().intValue();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.ACCETTATA);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
// CALCOLA DATA SCADENZA ALLA MEZZANOTTE DEL 16� GIORNO
log.write("9999", "avanzaStatoInAccettata richiestaD82:" + richiesta.getIdRichiesta());
Date dataScadenza = DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), 16, 0, 0, 0);
richiesta.setStato((long) StatoRichiestaDon.ACCETTATA);
richiesta.setDataScadenza(dataScadenza);
ricDonorDAO.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.ACCETTATA, log);
// Ricerca eventuali altre richieste stesso DN, stesso COW RECIPIENT
// DBCFX SM_525 Anomalia da pezzulla. Modifica da effettuare cambiare la SYSDATE della query in to_date(sysdate, 'DD-MON-YY'),
// formattandola quindi in giorno mese e anno e non considerando l'orario.
List altreRichieste = ricDonorDAO.getAltreRichiesteStessoCowDN(richiesta.getDn(), richiesta.getCowRecipient());
if (altreRichieste != null && altreRichieste.size() > 0) {
for (Object anAltreRichieste : altreRichieste) {
//ogni altra richiesta viene posta in scaduta
GnpRichiesteDonor82 altraR = (GnpRichiesteDonor82) anAltreRichieste;
statoDa = altraR.getStato().intValue();
altraR.setStato((long) StatoRichiestaDon.SCADUTA);
altraR.setDataScadenza(dataScadenza);
ricDonorDAO.merge(altraR);
logStoricoPassaggioStato(altraR.getIdRichiesta(), statoDa, StatoRichiestaDon.SCADUTA, log);
}
}
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
public static void avanzaStatoInRifiutata(GnpRichiesteDonor82 richiesta, String descrizioneRifiuto, int codMotivoRifiuto, boolean cowNonTI, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.RIFIUTATA);
int statoDa = richiesta.getStato().intValue();
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
log.write("9999", "Passaggio di stato in RIFIUTATA ID RICHIESTA " + richiesta.getIdRichiesta());
richiesta.setStato((long) StatoRichiestaDon.RIFIUTATA);
richiesta.setCodValidazione((long) ApplicationCostants.COD_VALIDAZIONE_KO);
// Notifica a OLO
OLOControllerDonor.getInstance().accodaKORichiestaOloDonorOut(richiesta,
descrizioneRifiuto,
codMotivoRifiuto,
ApplicationCostants.PROCESSO_DONOR.OLO_OUT.CAUSALE_RIFIUTO_GESTIONALE,
ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_GESTIONALI);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.RIFIUTATA, log);
dao.merge(richiesta);
} else if (statoDa == StatoRichiestaDon.ACCETTATA) {
log.write("9999", "Passaggio di stato in RIFIUTATA non effettuato perche richiesta gia in ACCETTATA: ID RICHIESTA " + richiesta.getIdRichiesta());
richiesta.setKoNonInviato(ApplicationCostants.PROCESSO_DONOR.KO_NON_INVIATO);
} else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
public static String createSessionID82(String idProgressivo) throws Exception {
String sessionID;
StringBuffer bf = new StringBuffer();
Date dataCreazione = new Date();
bf.append(DateUtils.toStringFileName(dataCreazione));
bf.append(idProgressivo);
sessionID = bf.toString();
return sessionID;
}
public static String generaCodiceSessione82(GnpRichiesteDonor82 richiesta, ProcessLogger log) throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
GnpDbssDonorOutDAO dbssDonorOutRecDAO = new GnpDbssDonorOutDAO();
// Ricerco nell'anagrafica il cow Donating ricevuto
GnpAnagCowLineaTelecom anagCowLineaTelecom = null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO anagCowDAO = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = anagCowDAO.findById(richiesta.getCowDonating());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if (Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : " + richiesta.getIdRichiesta() + " COW: " + richiesta.getCowDonating() + " DN:" + richiesta.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiesta.getDn(), richiesta.getCowDonating());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if (anagCowLineaTelecom != null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : " + richiesta.getIdRichiesta() + " COW VECCHIO: " + richiesta.getCowDonating() +
" COW NUOVO:" + anagCowLineaTelecom.getCowNew() + " DN:" + richiesta.getDn());
anagCowTelecom = new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiesta.setCowDonating(anagCowLineaTelecom.getCowNew());
}
// Se non trovo il cow nell'anagrafica:
// 1)Aggiorno la tabella GNP_RICHIESTE_DONOR con cod_validazione = 1
// 2)Inserisco un record nella tabella GNP_OLO_RICHIESTE_DONOR_OUT
if (anagCowTelecom == null) {
richiesta.setCodValidazione(1L);
String sessionId = Func.findNextD82SessionId();
String dateSessionId = createSessionID82(sessionId);
return "X" + dateSessionId;
} else {
// DETERMINO LA PIATTAFORMA CRM DI COMPETENZA
/* C06 RE: GATEWAY DBCFX :Studio per il tracciamento di eventi non correttamente gestiti dal sistema
* cambio implementazione del recupero della piattaforma di competenza, non si basa più sull'anagrafica (anagCowTelecom)
* ma tramite il localizzatore. Per maggiori dettagli vedi mail
*/
if (!callCheckRetailPlatform(richiesta, log)) {
log.write("9999", "callCheckRetailPlatform false : " + richiesta.getIdRichiesta() + " COW DONATING: " + richiesta.getCowDonating() + "CRM recuperato: " + richiesta.getCrmCompetenza());
}
//USO IL CRM DI COMPETENZA RECUPERATO DAL SERVIZIO CUSTOMER LOCATION QUERY
String crmCompetenza = richiesta.getCrmCompetenza();
String sessionId = Func.findNextD82SessionId();
String dateSessionId = createSessionID82(sessionId);
if ("B".equalsIgnoreCase(crmCompetenza)) {
return crmCompetenza + dateSessionId;
} else if ("D".equalsIgnoreCase(crmCompetenza)) {
return "C" + dateSessionId;
} else {
return "X" + dateSessionId;
}
}
}
/**
* Passaggio di stato in PRESAINCARICO.
* <p/>
* Ritorna false se il COW Donating non � mappato su uno di quelli Telecom
*
* @param richiesta
* @param log
* @return
* @throws Exception
*/
public static boolean avanzaStatoInPresaInCarico(GnpRichiesteDonor82 richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
GnpRichiesteCsNpg103DAO npg103DAO = new GnpRichiesteCsNpg103DAO();
GnpCrmNotifyDonorOutDAO dbssDonorOutRecDAO = new GnpCrmNotifyDonorOutDAO();
boolean ret = true;
List<GnpRichiesteDonor82> richiesteDN = dao.getAltreRichiesteStessoCowDN(richiesta.getDn(), richiesta.getCowDonating());
GnpRichiesteCsNpg103 richiesteCsNpg103s = npg103DAO.findByDn(richiesta.getDn()); //check su 103 è fattibile? TODO query
List<GnpRichiesteDonor> richieste274 = dao.getAltreRichiesteStessoCowDN(richiesta.getDn(), richiesta.getCowDonating());
Boolean daRifiutare = false;
if (richieste274 != null && richieste274.size() > 0) {
for (GnpRichiesteDonor ric : richieste274) {
if (ric.getIdRichiesta() != richiesta.getIdRichiesta() && ric.getDataScadenza().after(richiesta.getDataRicezione())) {
daRifiutare = true;
}
}
if (daRifiutare) {
avanzaStatoInRifiutata(richiesta, "Altro ordine in corso per tale utenza", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.CAUSALE_RIFIUTO_GESTIONALE, false, log);
return true;
}
}
if (richiesteCsNpg103s != null && (richiesteCsNpg103s.getStato() == 1 ||
richiesteCsNpg103s.getStato() == 2 ||
(richiesteCsNpg103s.getStato() == 3 && richiesteCsNpg103s.getProcesso().equalsIgnoreCase(ProcessMapper.proc_CS_NPg103))
)) {
avanzaStatoInRifiutata(richiesta, "Altro ordine in corso per tale utenza", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.CAUSALE_RIFIUTO_GESTIONALE, false, log);
return true;
}
if (richiesteDN != null && richiesteDN.size() > 0) {
for (GnpRichiesteDonor82 ric : richiesteDN) {
if (ric.getIdRichiesta() != richiesta.getIdRichiesta() && ric.getDataScadenza().after(richiesta.getDataRicezione())) {
daRifiutare = true;
}
}
if (daRifiutare) {
avanzaStatoInRifiutata(richiesta, "Altro ordine in corso per tale utenza", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.CAUSALE_RIFIUTO_GESTIONALE, false, log);
return true;
}
}
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato((long) StatoRichiestaDon.PRESA_IN_CARICO);
richiesta.setDataPresaincarico(new Date());
log.write("9999", "PRESA IN CARICO del DN :"+richiesta.getDn()+" IdRichiesta: "+richiesta.getIdRichiesta()+richiesta.getDataPresaincarico());
Boolean verificaWhiteList = new WhiteListManager().verificaCsWhiteListDonorDel274(richiesta.getDn(), richiesta.getCowDonating());
if (verificaWhiteList != null && verificaWhiteList) {
log.write("9999", "Risultato Verifica in WhiteList [TRUE]. Passaggio in ACCETTATA DN: "+richiesta.getDn());
avanzaStatoInAccettata(richiesta, log);
}
else if (verificaWhiteList != null && !verificaWhiteList) {
log.write("9999", "Verifica cs whitelist false"+" IDRichiesta: "+richiesta.getIdRichiesta());
avanzaStatoInRifiutata(richiesta, "Codice Segreto Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_11, false, log);
}
//verificaWhiteList == null
else {
if (richiesta.getCodValidazione() == 1) {
ret = false;
} else {
String crmCompetenza = richiesta.getCrmCompetenza();
boolean utenzaDbss = false;
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
if (Resources.getDBSS_DONOR_ACTIVE()) {
if(isUtenzaDBSS(crmCompetenza)){
log.write("9999", "isUtenzaDBSS: "+crmCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
callVerificaFase2DBSS(log,richiesta,dbssDonorOutRecDAO);
utenzaDbss=true;
}
}
UtilityDao utilityDao = new UtilityDao();
//PP X5.2010 - aggiunto controllo se multilinea
if (utilityDao.isDnMultilinea(richiesta.getDn()) && crmCompetenza.equalsIgnoreCase("B") && !utenzaDbss) {
log.write("9999", "DN BUSINESS MULTILINEA: DBCFX SIMULA LA NOTIFICA OK DA CRM");
//-- PASSAGGIO FORZATO IN PRESA IN CARICO -------------------
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ATTESA VERIFICA -------------------
RequestManagerDonor82.avanzaStatoInAttesaVerifica(richiesta.getCodiceSessione(), log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ACCETTATA -------------------------
RequestManagerDonor82.avanzaStatoInAccettata(richiesta, log);
//-----------------------------------------------------------
} else if (!utenzaDbss) {
log.write("9999", "DN NON MULTILINEA");
//-- PASSAGGIO IN PRESA IN CARICO e INVIO NOTIFICA A CRM ---
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(crmCompetenza);
crmController.notificaCRMDonor(richiesta.getIdRichiesta());
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
}
}
}
return ret;
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
protected static boolean callCheckRetailPlatform(GnpRichiesteDonor82 richiestaDonor,ProcessLogger log) throws Exception {
log.write("9999", " START callCheckRetailPlatform : " +richiestaDonor.getIdRichiesta() + "DN: "+ richiestaDonor.getDn());
String methSig = "[RequestManagerDonor82].[callCheckRetailPlatform] ";
boolean res=false;
CheckRetailPlatformRequest body = new CheckRetailPlatformRequest();
body.setDN(richiestaDonor.getDn());
RetrieveByLineNumberResponseMessage resp = checkDN(body,log);
res=gestisciResponseCheckRetail(methSig,resp,log,richiestaDonor);
log.write("9999", " END callCheckRetailPlatform : " +richiestaDonor.getIdRichiesta() + "DN: "+ richiestaDonor.getDn()+ "con esito: "+res);
return res;
}
private static boolean gestisciResponseCheckRetail(String methSig,RetrieveByLineNumberResponseMessage resp,ProcessLogger log,GnpRichiesteDonor82 richiestaDon) throws Exception {
//return code puo' essere a una cifra o due (es. 01 o 1)
int retCode = new Integer(resp.getProcessData().getReturnCode());
log.write("9999", " return code ricevuto da ws: " + retCode);
boolean foundByWs = false;
String crmComp = "";
switch (retCode) {
//0
case (RET_CODE_OK_FROM_WS):
//itera sui (tre) parameter, se ne trova uno con valore == 'Y' ne restituisce il name, altrimentii restituisce codice di errore
Parameter[] params = resp.getProcessData().getParameters().getParameter();
for (Parameter p : params) {
if (!("Y").equalsIgnoreCase(p.getValue())) {
continue; //se diverso da Y passa al successivo
}
log.write("9999", methSig + " - trovato el. con val. = Y e name " + p.getName());
if (SystemControllerIF.SystemProvider_CRMB_DESC.equals(p.getName())) {
crmComp = "B";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_CRMR_DESC.equals(p.getName())) {
// DISMISSIONE CRMR: nel caso la richiesta risulti proveniente da CRMR viene settato a D invece di R
crmComp = "D";
foundByWs = true;
} else if (SystemControllerIF.SystemProvider_DBSS_DESC.equals(p.getName())) {
crmComp = "D";
foundByWs = true;
} else {
log.write("9999", methSig + " valore non previsto");
log.write("0002", methSig + " ws response return code: " + retCode);
log.write("9999", methSig +" non avanza stato in rifiutato : " + retCode);
log.write("9999", methSig +" PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
//MODIFICA INGLISA NEL CASO IN CUI NON TROVO IL CRM CONTATTO B
//RequestManagerDonor.avanzaStatoInRifiutata(richiestaDon, "COW COR Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_COW_COR_ERRATO,true, log);
crmComp = "B";
foundByWs = true;
}
}
break;
case (RET_CODE_UTENZA_NON_PRESENTE_FROM_WS):
log.write("9999", methSig + " ws response return code [" + retCode + "] corrispondente a LINEA NON PRESENTE SU WS"+
"ANCHE SE DBSS RESTITUISCE UTENZA NON PRESENTE,PER RICHIESTA DI INGLISA VIENE SETTATO IL CRM DI COMPETENZA A B");
crmComp = "B";
foundByWs = true;
//RequestManagerDonor.avanzaStatoInRifiutata(richiestaDon, "COW COR Errato", ApplicationCostants.PROCESSO_DONOR.OLO_OUT.COD_MOTIVO_COW_COR_ERRATO,true, log);
break;
case (RET_CODE_SERV_CRMB_NON_DISPONIBILE):
case (RET_CODE_SERV_CRMR_NON_DISPONIBILE):
case (RET_CODE_ERRORE_GENERICO_WS):
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC scrivo solo nella SCARTI CS");
buildScartiVerificaCs(richiestaDon,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_CCC_DESCRIZIONE+retCode,log);
break;
default:
log.write("9999", methSig + " ws response return code [" + retCode + "] non previsto da interfaccia");
log.write("0002", methSig + " ws response return code: " + retCode+ "corrispondente a un errore interno di CCC");
buildScartiVerificaCs(richiestaDon,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC,ANOMALIA_ERRORE_CODICE_SERVIZIO_NON_PREVISTO_CCC_DESCRIZIONE+retCode,log);
}
if (foundByWs) {
log.write("9999", methSig + " crm recuperato da DBSS e settato nella richiesta : " + crmComp);
richiestaDon.setCrmCompetenza(crmComp);
}
return foundByWs;
}
private static void buildScartiVerificaCs(GnpRichiesteDonor82 richiestaDon,String tipoAnomalia,String descrizioneAnomalia,ProcessLogger log) {
log.write("9999","START buildScartiVerificaCs DN: " + richiestaDon.getDn()+"Idrichiesta: "+richiestaDon.getIdRichiesta());
GnpScartiVerificaCsDAO scartiVerificaCsDao=new GnpScartiVerificaCsDAO();
GnpScartiVerificaCs scartiVerificaCs=new GnpScartiVerificaCs();
scartiVerificaCs.setIdRichiesta(richiestaDon.getIdRichiesta());
scartiVerificaCs.setDn(richiestaDon.getDn());
scartiVerificaCs.setTipoAnomalia(tipoAnomalia);
scartiVerificaCs.setDescrizioneAnomalia(descrizioneAnomalia);
scartiVerificaCs.setCodiceSegreto(richiestaDon.getCowDonating());
scartiVerificaCs.setDataInserimento(new Date());
scartiVerificaCsDao.merge(scartiVerificaCs);
log.write("9999","END buildScartiVerificaCs DN: " + richiestaDon.getDn()+"Idrichiesta: "+richiestaDon.getIdRichiesta());
}
/**
* @version 4.1 20180417 migliorati i log
*/
public static RetrieveByLineNumberResponseMessage checkDN(CheckRetailPlatformRequest body,ProcessLogger log) throws Exception {
String requestDn = body.getDN();
log.write("9999", "NowController RetrieveByLineNumberResponseMessage - Ricevuta richiesta DN ["+requestDn+"]");
CustomerLocationQueryClient client = new CustomerLocationQueryClient();
RetrieveByLineNumberRequestMessage requestMessage = new RetrieveByLineNumberRequestMessage();
Request_LineNumber request = new Request_LineNumber();
CharacteristicValueRequest_LineNumber characteristicValueRequest = new CharacteristicValueRequest_LineNumber();
characteristicValueRequest.setValue(lineValue);
CharacteristicSpecificationRequest_LineNumber characteristicSpecification = new CharacteristicSpecificationRequest_LineNumber();
characteristicSpecification.setName(operationName);
characteristicValueRequest.setCharacteristicSpecification(characteristicSpecification);
CharacteristicValueRequest_LineNumber[] characteristicValueArray = {characteristicValueRequest};
request.setCharacteristicValue(characteristicValueArray);
BusinessInteractionRelationship_LineNumber businessInteractionRelationship = new BusinessInteractionRelationship_LineNumber();
ProductOrderRequest_LineNumber productOrder = new ProductOrderRequest_LineNumber();
CustomerOrderItemRequest_LineNumber customerOrder = new CustomerOrderItemRequest_LineNumber();
ProductBundleRequest_LineNumber productBundle = new ProductBundleRequest_LineNumber();
ProductCharacteristicValueRequest_LineNumber productCharacteristic = new ProductCharacteristicValueRequest_LineNumber();
productCharacteristic.setValue(requestDn);
ProductSpecCharacteristicRequest_LineNumber productSpecCharachteristic = new ProductSpecCharacteristicRequest_LineNumber();
productSpecCharachteristic.setName(serviceNumber);
productCharacteristic.setProductSpecCharacteristic(productSpecCharachteristic);
ProductCharacteristicValueRequest_LineNumber[] productCharacteristicValue = {productCharacteristic};
productBundle.setProductCharacteristicValue(productCharacteristicValue);
customerOrder.setProductBundle(productBundle);
CustomerOrderItemRequest_LineNumber[] customerOrderItem = {customerOrder};
productOrder.setCustomerOrderItem(customerOrderItem);
businessInteractionRelationship.setProductOrder(productOrder);
request.setBusinessInteractionRelationship(businessInteractionRelationship);
requestMessage.setRequest(request);
RetrieveByLineNumberResponseMessage retrieveByLineNumberResponseMessage = client.retrieveByLineNumber(requestMessage);
String retCode = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnCode() : null;
log.write("9999", "NowController RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] codice ["+retCode+"]");
String descr = retrieveByLineNumberResponseMessage != null && retrieveByLineNumberResponseMessage.getProcessData() != null ?
retrieveByLineNumberResponseMessage.getProcessData().getReturnDescription() : null;
log.write("9999", "NowController RetrieveByLineNumberResponseMessage Ottenuta risposta DN ["+requestDn+"] descrizione ["+descr+"]");
return retrieveByLineNumberResponseMessage;
}
/**
* Passaggio di stato in PRESAINCARICO.
* <p/>
* Ritorna false se il COW Donating non � mappato su uno di quelli Telecom
*
* @param richiesta
* @param log
* @return
* @throws Exception
*/
public static boolean avanzaStatoInPresaInCaricoTool(GnpRichiesteDonor82 richiesta,String piattaformaCompetenza, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
GnpCrmNotifyDonorOutDAO dbssDonorOutRecDAO = new GnpCrmNotifyDonorOutDAO();
boolean ret = true;
//richiesta.setStato(new Long(StatoRichiestaDon.ACQUISITA));
//int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO);
int check=1;
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato((long) StatoRichiestaDon.PRESA_IN_CARICO);
/*
*
* Penso che la presa in carico sia più corretta considerare la prima data e non questa
* quindi non sovrascrivere la precedente
*/
//richiesta.setDataPresaincarico(new java.util.Date());
log.write("9999", "Verifica cs whitelist null");
// Ricerco nell'anagrafica il cow Donating ricevuto
GnpAnagCowLineaTelecom anagCowLineaTelecom=null;
GnpAnagCowLineaTelecomDAO cowLineaDao;
GnpAnagCowTelecomDAO anagCowDAO = new GnpAnagCowTelecomDAO();
GnpAnagCowTelecom anagCowTelecom = anagCowDAO.findById(richiesta.getCowDonating());
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS
if(Resources.getFLAG_CHECK_ANAG_COW_LINEA()) {
log.write("9999", "CONTROLLO SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW: "+richiesta.getCowDonating()+" DN:"+richiesta.getDn());
cowLineaDao = new GnpAnagCowLineaTelecomDAO();
anagCowLineaTelecom = cowLineaDao.findByDnAndCowOld(richiesta.getDn(),richiesta.getCowDonating());
}
//C09 2019 WA RICHIESTO ESCLUSIVAMENTE PER LA VERIFICA CS SE E' UGUALE A NULL IL PROCESSO RESTA INVARIATO
if(anagCowLineaTelecom!=null) {
log.write("9999", "TROVATA LINEA SU TABELLA GNP_ANAG_COW_LINEA_TELECOM(FLAG WA ABILITATO) : "+richiesta.getIdRichiesta()+" COW VECCHIO: "+richiesta.getCowDonating()+
" COW NUOVO:"+anagCowLineaTelecom.getCowNew()+" DN:"+richiesta.getDn());
anagCowTelecom=new GnpAnagCowTelecom();
anagCowTelecom.setCow(anagCowLineaTelecom.getCowNew());
richiesta.setCowDonating(anagCowLineaTelecom.getCowNew());
// salvo la richiesta con stato acquisita
dao.save(richiesta);
}
// Se non trovo il cow nell'anagrafica:
// 1)Aggiorno la tabella GNP_RICHIESTE_DONOR con cod_validazione = 1
// 2)Inserisco un record nella tabella GNP_OLO_RICHIESTE_DONOR_OUT
if (anagCowTelecom == null) {
ret = false;
} else {
log.write("9999", "Piattaforma notificata da BO : "+piattaformaCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
//Setto la piattaforma di competenza con quello del campo settato dal BO
String crmCompetenza=piattaformaCompetenza;
richiesta.setCrmCompetenza(crmCompetenza);
boolean utenzaDbss = false;
if(isUtenzaDBSS(piattaformaCompetenza)){
log.write("9999", "isUtenzaDBSS: "+piattaformaCompetenza+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
if (Resources.getDBSS_DONOR_ACTIVE()) {
callVerificaFase2DBSS(log,richiesta,dbssDonorOutRecDAO);
utenzaDbss=true;
}
}
// X06 2016 - Integrazione con DBSS (nuovo sistema Retail)
UtilityDao utilityDao = new UtilityDao();
//PP X5.2010 - aggiunto controllo se multilinea
if (utilityDao.isDnMultilinea(richiesta.getDn()) && crmCompetenza.equalsIgnoreCase("B") && !utenzaDbss) {
log.write("9999", "DN BUSINESS MULTILINEA: DBCFX SIMULA LA NOTIFICA OK DA CRM");
//-- PASSAGGIO FORZATO IN PRESA IN CARICO -------------------
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ATTESA VERIFICA -------------------
RequestManagerDonor82.avanzaStatoInAttesaVerifica(richiesta.getCodiceSessione(), log);
//-----------------------------------------------------------
//-- PASSAGGIO FORZATO IN ACCETTATA -------------------------
RequestManagerDonor82.avanzaStatoInAccettata(richiesta, log);
//-----------------------------------------------------------
} else if (!utenzaDbss) {
log.write("9999", "DN NON MULTILINEA");
//-- PASSAGGIO IN PRESA IN CARICO e INVIO NOTIFICA A CRM ---
SistemaCrmIF crmController = ControllerFactory.getSistemaCRMDonor(crmCompetenza);
crmController.notificaCRMDonor(richiesta.getIdRichiesta());
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO, log);
//-----------------------------------------------------------
}
}
return ret;
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
private static void callVerificaFase2DBSS(ProcessLogger log, GnpRichiesteDonor82 richiesta, GnpCrmNotifyDonorOutDAO dbssDonorOutRecDAO) throws Exception {
log.write("9999", "START Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
// chiamata al WS WirelineLineCodeQuery
DBSSController dbssController = DBSSController.getInstance();
GnpCrmNotifyDonorOut dbssDonorOut = dbssController.creaRichiestaVerificaFase2(richiesta);
WirelineCeaseCheck82ResponseType dbssResponse = dbssController.callNotificaDbssD82(dbssDonorOut);
String esito = null;
if (dbssResponse != null) {
esito = dbssResponse.getProcessData().getReturnDescription();
dbssDonorOutRecDAO.save(dbssDonorOut);
log.write("9999", "Esito sincrono chiamata: " + esito);
}else {
log.write("9999", "Risposta vuota non gestita: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
buildScartiVerificaCs(richiesta,VERIFICA_CS_DBSS_ESITO_NON_GESTITO,VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE,log);
}
log.write("9999", "END Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
}
public static void callNotificaFase3DBSS(ProcessLogger log, GnpRichiesteDonor82 richiesta, GnpCrmNotifyDonorOutDAO dbssDonorOutRecDAO, GnpNowD82RichiesteOut nowDonorOut) throws Exception {
log.write("9999", "START Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
// chiamata al WS WirelineLineCodeQuery
DBSSController dbssController = DBSSController.getInstance();
GnpCrmNotifyDonorOut dbssDonorOut = dbssController.creaNotificaEsitoN9(richiesta, nowDonorOut);
WirelineCeaseCheck82ResponseType dbssResponse = dbssController.callNotificaDbssD82(dbssDonorOut);
String esito = null;
if (dbssResponse != null) {
esito = dbssResponse.getProcessData().getReturnDescription();
dbssDonorOutRecDAO.save(dbssDonorOut);
log.write("9999", "Esito sincrono chiamata: " + esito);
}else {
log.write("9999", "Risposta vuota non gestita: "+richiesta.getCrmCompetenza()+" DN:"+richiesta.getDn()+" Id-Richiesta: "+richiesta.getIdRichiesta());
//buildScartiVerificaCs(richiesta,VERIFICA_CS_DBSS_ESITO_NON_GESTITO,VERIFICA_CS_DBSS_ESITO_NON_GESTITO_DESCRIZIONE,log);
}
log.write("9999", "END Chiamata al WS WirelineLineCodeQuery DBSS DN:["+richiesta.getDn()+"]");
}
private static boolean isUtenzaDBSS(String piattaforma) {
return "D".equalsIgnoreCase(piattaforma);
}
public static void avanzaStatoInPresaInCaricoKO(GnpRichiesteDonor82 richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
int check = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.PRESA_IN_CARICO_KO);
if (check != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
int statoDa = richiesta.getStato().intValue();
richiesta.setStato(new Long(StatoRichiestaDon.PRESA_IN_CARICO_KO));
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.PRESA_IN_CARICO_KO, log);
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
public static void passaggioStatoScaduta(GnpRichiesteDonor82 richiesta, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO ricDonorDAO = new GnpRichiesteDonor82DAO();
// IMPOSTA LO STATO IN SCADUTA
int statoDa = richiesta.getStato().intValue();
richiesta.setStato(new Long(StatoRichiestaDon.SCADUTA));
ricDonorDAO.merge(richiesta);
RequestManagerDonor82.logStoricoPassaggioStato(richiesta.getIdRichiesta(),
statoDa,
StatoRichiestaDon.SCADUTA, log);
}
public static void avanzaStatoInAttesaVerifica(String codiceSessione, ProcessLogger log)
throws Exception {
GnpRichiesteDonor82DAO dao = new GnpRichiesteDonor82DAO();
GnpRichiesteDonor82 richiesta = dao.findByCodiceSessione(codiceSessione);
if (richiesta == null)
throw new Exception("Richiesta con codice sessione " + codiceSessione + " non trovata");
int statoDa = StateManagerDonor.checkTransition(richiesta.getIdRichiesta(), StatoRichiestaDon.ATTESA_VERIFICA);
if (statoDa != StateManagerDonor.TRANSIZIONE_NON_POSSIBILE) {
richiesta.setStato(new Long(StatoRichiestaDon.ATTESA_VERIFICA));
dao.merge(richiesta);
logStoricoPassaggioStato(richiesta.getIdRichiesta(), statoDa, StatoRichiestaDon.ATTESA_VERIFICA, log);
} else
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}

View File

@@ -0,0 +1,98 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.GnpDbssInRec;
import it.valueteam.gnp.dao.db.hb.homezone.HzCrmrInRec;
import it.valueteam.gnp.dao.db.hb.homezone.HzRichiesteRec;
import it.valueteam.gnp.dao.db.hb.homezone.HzRichiesteRecDAO;
import it.valueteam.gnp.dao.db.hb.homezone.HzStoricoRichiesteRec;
import it.valueteam.gnp.dao.db.hb.homezone.HzStoricoRichiesteRecDAO;
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
import it.valueteam.gnp.obj.ApplicationCostants;
import it.valueteam.gnp.obj.DBCMap;
import it.valueteam.gnp.obj.StatoRichiesteHZRec;
import it.valueteam.gnp.systemcontroller.dbc.DBCController;
import it.valueteam.gnp.utility.HZStateManager;
import java.util.Date;
/**
* <p>Title: RequestManagerHZ</p>
*
* <p>Description: Manager per la gestione delle transizioni di stato nel
* processo di Home Zone Espletamento NIP
* </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
* @author Mario Giurlanda
* @version 1.0
*/
public class RequestManagerHZ {
private RequestManagerHZ() {}
public static Long avanzaStatoInAcquisita(HzCrmrInRec crmrInRec) throws Exception {
HzRichiesteRec richiestaRec = new HzRichiesteRec();
richiestaRec.setDet(crmrInRec.getDet());
richiestaRec.setIdSolution(crmrInRec.getIdSolution());
richiestaRec.setNumeroTelefono(crmrInRec.getNumeroTelefono());
richiestaRec.setDataRicezioneRichiesta(new Date());
richiestaRec.setStato(new Long(StatoRichiesteHZRec.ACQUISITA));
HzRichiesteRecDAO dao = new HzRichiesteRecDAO();
dao.save(richiestaRec);
storeStateTransition(StatoRichiesteHZRec.NO_STATE, ApplicationCostants.IO_INPUT, richiestaRec);
DBCController.getInstance().notificaVariazioneDiStato(richiestaRec, DBCMap.NOTIFICA_ESPLETAMENTO_HZ_NIP);
return richiestaRec.getIdRichiesta();
}
public static Long avanzaStatoInAcquisita(GnpDbssInRec dbssInRec) throws Exception {
HzRichiesteRec richiestaRec = new HzRichiesteRec();
richiestaRec.setDet(dbssInRec.getDet());
richiestaRec.setIdSolution(dbssInRec.getIdSolution());
richiestaRec.setNumeroTelefono(dbssInRec.getNumeroTelefono());
richiestaRec.setDataRicezioneRichiesta(new Date());
richiestaRec.setStato(new Long(StatoRichiesteHZRec.ACQUISITA));
HzRichiesteRecDAO dao = new HzRichiesteRecDAO();
dao.save(richiestaRec);
storeStateTransition(StatoRichiesteHZRec.NO_STATE, ApplicationCostants.IO_INPUT, richiestaRec);
DBCController.getInstance().notificaVariazioneDiStato(richiestaRec, DBCMap.NOTIFICA_ESPLETAMENTO_HZ_NIP);
return richiestaRec.getIdRichiesta();
}
public static void avanzaStatoInEspletata(Long idRichiesta) throws StateTransitionNotPossibleException, Exception {
HzRichiesteRecDAO dao = new HzRichiesteRecDAO();
HzRichiesteRec richiestaRec = dao.findById(idRichiesta);
int statoPartenza = richiestaRec.getStato().intValue();
if (HZStateManager.checkTransition(richiestaRec.getIdRichiesta(), StatoRichiesteHZRec.ESPLETATA)) {
//transizione possibile
richiestaRec.setStato(new Long(StatoRichiesteHZRec.ESPLETATA));
storeStateTransition(statoPartenza, ApplicationCostants.IO_OUTPUT, richiestaRec);
}
else {
throw new StateTransitionNotPossibleException("StateTransitionNotPossibleException");
}
}
/**
* Storicizza la transizione di stato
* @param stato_da
* @param nomeFile
* @param i_o
* @param richiestaRec
* @throws Exception
*/
private static void storeStateTransition(int stato_da, int i_o, HzRichiesteRec richiestaRec) throws Exception {
//creo lo storico
HzStoricoRichiesteRec storico = new HzStoricoRichiesteRec();
storico.setIdRichiesta(richiestaRec.getIdRichiesta());
storico.setStatoDa(new Long(stato_da));
storico.setStatoA(richiestaRec.getStato());
storico.setIO(new Long(i_o));
HzStoricoRichiesteRecDAO dao = new HzStoricoRichiesteRecDAO();
dao.save(storico);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,245 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.UserTransactionUtility;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import javax.transaction.UserTransaction;
import java.util.ArrayList;
import java.util.Date;
public class RequestManagerNngDon {
final static String PROCESSO_DONATING_NNG = "NNG_DON";
final static String PROCESSO_RESTITUZIONE_TIM = "RESTITUZIONE_TIM";
public static void avanzaStatoinAcquisita(GnpNngFenpRichIn fenpRichIn) throws Exception {
GnpNngFenpRichInDAO fenpRichInDAO = new GnpNngFenpRichInDAO();
GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO();
GnpRichiesteNngDon richiesta = new GnpRichiesteNngDon();
richiesta.setOpRecipient(fenpRichIn.getCodOpRecipient());
richiesta.setStato(Long.valueOf(1));
richiesta.setDaInviare(Long.valueOf(1));
if ("1".equals(fenpRichIn.getTipoComunicazione())){
richiesta.setProcesso(PROCESSO_DONATING_NNG);
} else {
richiesta.setProcesso(PROCESSO_RESTITUZIONE_TIM);
richiesta.setOpRecipient(fenpRichIn.getCodOpReturning());
}
richiesta.setTipoServizio(fenpRichIn.getTipoServizio());
richiesta.setDataOperazione(fenpRichIn.getDataOrdine());
richiesta.setCodiceFiscale(fenpRichIn.getCodFiscale());
richiesta.setPartitaIva(fenpRichIn.getPartitaIva());
richiesta.setCodiceOrdine(fenpRichIn.getCodiceOrdine());
richiesta.setCodiceProgetto(fenpRichIn.getCodiceProgetto());
richiesta.setCow(fenpRichIn.getCodOpDonating());
if ("9".equals(fenpRichIn.getTipoComunicazione())){
richiesta.setCow("TLC");
}
richiesta.setDac(fenpRichIn.getDac());
richiesta.setNng(fenpRichIn.getNng());
richiesta.setPartitaIva(fenpRichIn.getPartitaIva());
richDAO.save(richiesta);
fenpRichIn.setIdRichiesta(richiesta.getIdRichiesta());
fenpRichInDAO.merge(fenpRichIn);
DbcfxgoController.getInstance().inviaNotificaDbcfxGo(richiesta, fenpRichIn);
}
public static void createFenpRichiesteOut(GnpDbcfxgoInNng103 dbcfxgoInRec, GnpRichiesteNngDon richiestaDon) throws Exception {
UserTransaction uTX = null;
//uTX = UserTransactionUtility.beginUserTransaction();
try{
GnpNngFenpRichOut fenpRichiesteOut = new GnpNngFenpRichOut();
String tipoComunicazione = String.valueOf(dbcfxgoInRec.getTipoComunicazione());
fenpRichiesteOut.setDaProcessare(1L);
fenpRichiesteOut.setDataCreazione(new Date());
if ("2".equals(tipoComunicazione) || "4".equals(tipoComunicazione)){
fenpRichiesteOut.setCodOpRecipient(richiestaDon.getOpRecipient());
}
fenpRichiesteOut.setTipoComunicazione(tipoComunicazione);
fenpRichiesteOut.setDataOrdine(richiestaDon.getDataOperazione());
fenpRichiesteOut.setNng(richiestaDon.getNng());
// DAC nel donating arriva solo nel TC1 e TC3 (fenpIn)
// fenpRichiesteOut.setDac(dbcfxgoInRec.getDAC() != null ? DateUtils.toDate(dbcfxgoInRec.getDAC(), "yyyy-MM-dd") : null);
// fenpRichiesteOut.setCodiceProgetto(dbcfxgoInRec.getCODICE_PROGETTO() != null? dbcfxgoInRec.getCODICE_PROGETTO() : "");
if ("2".equals(tipoComunicazione) || ("10".equals(tipoComunicazione))) {
fenpRichiesteOut.setStatoOrdine(String.valueOf(dbcfxgoInRec.getStato()));
fenpRichiesteOut.setCodMotivoRifiuto(richiestaDon.getCodRifiuto());
fenpRichiesteOut.setDescMotivoRifiuto(richiestaDon.getDescRifiuto());
}
if ("4".equals(tipoComunicazione)) {
fenpRichiesteOut.setStatoOrdine("3");
fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow()); //TLC
fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore()); //telecom italia
fenpRichiesteOut.setDataEspletamento(richiestaDon.getDac()); //invio effettivo alle 16 di DAC
}
fenpRichiesteOut.setIdRichiesta(Long.valueOf(dbcfxgoInRec.getIdRichiesta()));
if (tipoComunicazione.equals("10") ) {
fenpRichiesteOut.setCodOpReturning(dbcfxgoInRec.getCor());
fenpRichiesteOut.setCodOpRecipient(dbcfxgoInRec.getCor());
fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow());
fenpRichiesteOut.setStatoOrdine("1");
}
if (tipoComunicazione.equals("11")) {
// questo dovrebbe essere al posto del recipient...
fenpRichiesteOut.setCodOpReturning(dbcfxgoInRec.getCor());
fenpRichiesteOut.setCodOpRecipient(dbcfxgoInRec.getCor());
fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow());
fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore());
fenpRichiesteOut.setStatoOrdine("3");
}
fenpRichiesteOut.setCodiceOrdine(dbcfxgoInRec.getCodiceOrdine());
fenpRichiesteOut.setTipoNotifica("NPNNG");
new GnpNngFenpRichOutDAO().save(fenpRichiesteOut); //SAVE
//UserTransactionUtility.endUserTransaction(uTX, true);
} catch (Exception ex) {
//rollback della tx corrente
ex.printStackTrace();
//0010 C - ERRORE DURANTE L''ELABORAZIONE:
System.out.println(" " + richiestaDon.getIdRichiesta() + " - " + ex.toString());
System.out.println("exception"+ ex.getMessage());
}
}
// avanzamento da DBCFXGO
public static void avanzamentoNngDon(GnpDbcfxgoInNng103 dbcfxgoInRec) throws Exception {
GnpDbcfxgoInNng103DAO nngInDao = new GnpDbcfxgoInNng103DAO();
GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO();
GnpRichiesteNngDon richiesta = new GnpRichiesteNngDon();
if (dbcfxgoInRec.getIdRichiesta() != null) {
richiesta = richDAO.findById(Long.valueOf(dbcfxgoInRec.getIdRichiesta()));
} else {
ArrayList<SimpleExpression> criterion = new ArrayList<SimpleExpression>();
criterion.add(Restrictions.eq(GnpRichiesteNngDonDAO.HIB_CODICE_ORDINE, dbcfxgoInRec.getCodiceOrdine()));
richiesta = (GnpRichiesteNngDon) richDAO.findByCriteria(criterion).get(0);
dbcfxgoInRec.setIdRichiesta(richiesta.getIdRichiesta());
}
if (dbcfxgoInRec.getTipoComunicazione() == 2 || dbcfxgoInRec.getTipoComunicazione() == 10) {
if (dbcfxgoInRec.getStato() == 1) { //rifiutato
richiesta.setStato(Long.valueOf(4));
richiesta.setCodRifiuto(String.valueOf(dbcfxgoInRec.getCodiceRifiutoFenp()));
richiesta.setDescRifiuto(dbcfxgoInRec.getCausaleRifiutoFenp());
} else {
richiesta.setStato(Long.valueOf(3));
}
}
richDAO.merge(richiesta);
dbcfxgoInRec.setDaScodare(0L);
nngInDao.merge(dbcfxgoInRec);
createFenpRichiesteOut(dbcfxgoInRec,richiesta);
}
// avanzamento da FENP
public static void avanzamentoNngDon(GnpRichiesteNngDon richiesta, GnpNngFenpRichIn fenpRichiestaIn) throws Exception {
GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO();
String tipoComunicazione = fenpRichiestaIn.getTipoComunicazione();
if (richiesta != null) {
if ("4".equals(tipoComunicazione)) {
richiesta.setDataEspletamento(fenpRichiestaIn.getDataEspletamento());
avanzaStatoinEspletata(richiesta);
}
if ("7".equals(tipoComunicazione)) {
if (fenpRichiestaIn.getRdac().before(fenpRichiestaIn.getDac())) {
return;
//ignora
} else if (fenpRichiestaIn.getDac().before(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))) {
// ignora
return;
} else if (fenpRichiestaIn.getDac().equals(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))
&& Long.valueOf(DateUtils.getHour(new Date())).intValue() >= 16 ) {
return;
// ignora
} else {
richiesta.setDac(fenpRichiestaIn.getRdac());
aggiornaTC4(fenpRichiestaIn);
}
}
if ("8".equals(tipoComunicazione)) {
if (richiesta.getDac().before(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))) {
// ignora
return;
} else if (richiesta.getDac().equals(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))
&& Long.valueOf(DateUtils.getHour(new Date())).intValue() >= 16 ) {
return;
// ignora
} else {
avanzaStatoinAnnullata(richiesta);
annullaTC4(fenpRichiestaIn);
}
}
richDAO.merge(richiesta);
DbcfxgoController.getInstance().inviaNotificaDbcfxGo(richiesta, fenpRichiestaIn);
}
}
private static void annullaTC4(GnpNngFenpRichIn fenpRichiestaIn) {
GnpNngFenpRichOutDAO fenpRichOutDAO = new GnpNngFenpRichOutDAO();
GnpNngFenpRichOut tc4 = fenpRichOutDAO.getTC4FromCodiceOrdine(fenpRichiestaIn.getCodiceOrdine());
if (tc4 != null && tc4.getDaProcessare() == 1) {
tc4.setDaProcessare(0L);
tc4.setDataEspletamento(null);
}
}
private static void aggiornaTC4(GnpNngFenpRichIn fenpRichiestaIn) {
GnpNngFenpRichOutDAO fenpRichOutDAO = new GnpNngFenpRichOutDAO();
GnpNngFenpRichOut tc4 = fenpRichOutDAO.getTC4FromCodiceOrdine(fenpRichiestaIn.getCodiceOrdine());
if (tc4 != null && tc4.getDaProcessare() == 1) {
tc4.setDataEspletamento(fenpRichiestaIn.getRdac());
}
}
public static void avanzaStatoInInviataGo(GnpRichiesteNngDon richiesta) {
richiesta.setStato(Long.valueOf(2));
new GnpRichiesteNngDonDAO().merge(richiesta);
}
private static void avanzaStatoinAnnullata(GnpRichiesteNngDon richiesta) {
richiesta.setStato((long) 7);
}
private static void avanzaStatoinEspletata(GnpRichiesteNngDon richiesta) {
richiesta.setStato((long) 6);
}
public static void avanzaStatoinInviataFenp(GnpRichiesteNngDon richiesta) {
richiesta.setStato((long) 5);
}
}

View File

@@ -0,0 +1,270 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.xml.dbcfxgo.dbcfxtodbcfxgo.NOT_NNG_TYPE;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.StateManager;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class RequestManagerNngRec {
final static String PROCESSO_RECIPIENT_NNG = "NNG_REC";
final static String PROCESSO_RESTITUZIONE_OLO = "RESTITUZIONE_OLO";
// quando è 1 è recipient
public static void createFenpRichiesteOut(GnpDbcfxgoInNng103 dbcfxgoInRec, GnpRichiesteNngRec richiesta) throws Exception {
GnpNngFenpRichOut fenpRichiesteOut = new GnpNngFenpRichOut();
GnpFenpRichiesteOutDAO fenpOutDAO = new GnpFenpRichiesteOutDAO();
GnpNngFenpRichOutDAO outRichDAO = new GnpNngFenpRichOutDAO();
fenpRichiesteOut.setDaProcessare(1L);
fenpRichiesteOut.setDataCreazione(new Date());
if (dbcfxgoInRec.getTipoComunicazione() == 3 || dbcfxgoInRec.getTipoComunicazione() == 5 ||
dbcfxgoInRec.getTipoComunicazione() == 12) {
fenpRichiesteOut.setTipoNotifica("NNGBROAD");
} else if (dbcfxgoInRec.getTipoComunicazione() == 7 || dbcfxgoInRec.getTipoComunicazione() == 8){
fenpRichiesteOut.setTipoNotifica("NNGDOUBLE");
} else {
fenpRichiesteOut.setTipoNotifica("NPNNG");
}
String tipoComunicazione = String.valueOf(dbcfxgoInRec.getTipoComunicazione());
fenpRichiesteOut.setCodOpRecipient(richiesta.getOpRecipient());
fenpRichiesteOut.setTipoComunicazione(tipoComunicazione);
fenpRichiesteOut.setDataOrdine(richiesta.getDataOperazione());
fenpRichiesteOut.setNng(richiesta.getNng());
fenpRichiesteOut.setDac(richiesta.getDac());
fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore());
fenpRichiesteOut.setCodOpDonating(richiesta.getCow());
fenpRichiesteOut.setCodiceProgetto(richiesta.getCodiceProgetto());
fenpRichiesteOut.setIdRichiesta(richiesta.getIdRichiesta());
if (tipoComunicazione.equals("4") || tipoComunicazione.equals("5")
|| tipoComunicazione.equals("6")) {
fenpRichiesteOut.setDataEspletamento(dbcfxgoInRec.getDataEspletamento());
}
if (tipoComunicazione.equals("5") || tipoComunicazione.equals("6")) {
fenpRichiesteOut.setStatoOrdine(String.valueOf(dbcfxgoInRec.getStato()));
}
if (tipoComunicazione.equals("1")){
fenpRichiesteOut.setTipoServizio(richiesta.getTipoServizio());
fenpRichiesteOut.setCodFiscale(richiesta.getCodiceFiscale());
fenpRichiesteOut.setPartitaIva(richiesta.getPartitaIva());
fenpRichiesteOut.setCodOpRecipient("TLC"); //schiantato TLC per recipient
}
if (tipoComunicazione.equals("7")) {
fenpRichiesteOut.setDac(richiesta.getDac());
fenpRichiesteOut.setRdac(dbcfxgoInRec.getRdac());
}
if (tipoComunicazione.equals("9") || tipoComunicazione.equals("12") ) {
fenpRichiesteOut.setCodOpReturning(richiesta.getOpRecipient());
}
if (tipoComunicazione.equals("12") ) {
fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore());
fenpRichiesteOut.setStatoOrdine("3");
}
if (tipoComunicazione.equals("1") || tipoComunicazione.equals("9")) {
fenpRichiesteOut.setCodiceOrdine(fenpOutDAO.getNewCodiceOrdine());
} else if (tipoComunicazione.equals("7") || tipoComunicazione.equals("8")) {
List<Criterion> criterion = new ArrayList<Criterion>();
criterion.add(Restrictions.eq(GnpNngFenpRichOutDAO.HB_TIPO_COMUNICAZIONE, "1"));
criterion.add(Restrictions.eq(GnpNngFenpRichOutDAO.HB_ID_RICHIESTA, richiesta.getIdRichiesta()));
if (outRichDAO.findByCriteria(criterion) != null && outRichDAO.findByCriteria(criterion).size() > 0) {
GnpNngFenpRichOut tc1 = (GnpNngFenpRichOut) outRichDAO.findByCriteria(criterion).get(0);
fenpRichiesteOut.setCodOpDonating(tc1.getCodOpDonating());
fenpRichiesteOut.setCodiceProgetto(tc1.getCodiceProgetto());
fenpRichiesteOut.setCodiceOrdine(tc1.getCodiceOrdine());
}
} else {
fenpRichiesteOut.setCodiceOrdine(dbcfxgoInRec.getCodiceOrdine());
}
if (fenpRichiesteOut.getTipoNotifica().equals("NNGDOUBLE")){
// SALVA 2 COPIE PER DOPPIO INVIO
GnpNngFenpRichOut copiaRichiesta = new GnpNngFenpRichOut();
copiaRichiesta.setIdRichiesta(richiesta.getIdRichiesta());
copiaRichiesta.setDataOrdine(fenpRichiesteOut.getDataOrdine());
copiaRichiesta.setCodiceOrdine(fenpRichiesteOut.getCodiceOrdine());
copiaRichiesta.setCodiceProgetto(fenpRichiesteOut.getCodiceProgetto());
copiaRichiesta.setCodOpDonating(fenpRichiesteOut.getCodOpDonating());
copiaRichiesta.setCodOp(fenpRichiesteOut.getCodOp());
copiaRichiesta.setTipoComunicazione(fenpRichiesteOut.getTipoComunicazione());
copiaRichiesta.setDataCreazione(fenpRichiesteOut.getDataCreazione());
copiaRichiesta.setDaProcessare(1L);
copiaRichiesta.setNng(fenpRichiesteOut.getNng());
copiaRichiesta.setCodOpRecipient(fenpRichiesteOut.getCodOpRecipient());
copiaRichiesta.setDac(richiesta.getDac());
copiaRichiesta.setRdac(dbcfxgoInRec.getRdac());
fenpRichiesteOut.setTipoNotifica("NPNNG");
outRichDAO.save(fenpRichiesteOut);
copiaRichiesta.setTipoNotifica("NNGBROAD");
outRichDAO.save(copiaRichiesta);
} else {
outRichDAO.save(fenpRichiesteOut); //SAVE
}
}
// avanzamento da DBCFXGOController
public static void avanzamentoNngRec(GnpDbcfxgoInNng103 dbcfxgoInRec, String mail) throws Exception {
GnpRichiesteNngRecDAO nngRecDAO = new GnpRichiesteNngRecDAO();
GnpDbcfxgoInNng103DAO nngDao = new GnpDbcfxgoInNng103DAO();
if (dbcfxgoInRec.getTipoComunicazione() == 1){
//creo nuova NNG REC
GnpRichiesteNngRec nuovaRec = avanzaStatoInInserita(dbcfxgoInRec, PROCESSO_RECIPIENT_NNG);
nuovaRec.setEmail(mail);
nngRecDAO.save(nuovaRec);
dbcfxgoInRec.setIdRichiesta(nuovaRec.getIdRichiesta());
createFenpRichiesteOut(dbcfxgoInRec, nuovaRec);
} else if (dbcfxgoInRec.getTipoComunicazione() == 9) {
GnpRichiesteNngRec nuovaRestituzione = avanzaStatoInInserita(dbcfxgoInRec, PROCESSO_RESTITUZIONE_OLO);
nuovaRestituzione.setEmail(mail);
nngRecDAO.save(nuovaRestituzione);
dbcfxgoInRec.setIdRichiesta(nuovaRestituzione.getIdRichiesta());
createFenpRichiesteOut(dbcfxgoInRec, nuovaRestituzione);
} else {
ArrayList<SimpleExpression> criterion = new ArrayList<SimpleExpression>();
criterion.add(Restrictions.eq(GnpRichiesteNngRecDAO.HIB_ID_ESIGENZA, dbcfxgoInRec.getIdEsigenza()));
GnpRichiesteNngRec richiesta = (GnpRichiesteNngRec) nngRecDAO.findByCriteria(criterion).get(0);
if (richiesta != null) {
dbcfxgoInRec.setIdRichiesta(richiesta.getIdRichiesta());
if ((5 == dbcfxgoInRec.getTipoComunicazione()) || (6 == dbcfxgoInRec.getTipoComunicazione())) {
dbcfxgoInRec.setDataEspletamento(dbcfxgoInRec.getDataEspletamento());
}
if (6 == dbcfxgoInRec.getTipoComunicazione()) {
avanzaStatoInEspletata(richiesta);
}
if (dbcfxgoInRec.getTipoComunicazione()==8) {
avanzaStatoInAnnullata(richiesta);
}
if (dbcfxgoInRec.getTipoComunicazione()==7) {
if (dbcfxgoInRec.getRdac().before(richiesta.getDac()) ||
dbcfxgoInRec.getRdac().equals(richiesta.getDac())) {
//ignorata
} else {
createFenpRichiesteOut(dbcfxgoInRec, richiesta);
richiesta.setDac(dbcfxgoInRec.getRdac());
}
} else {
createFenpRichiesteOut(dbcfxgoInRec, richiesta);
}
nngRecDAO.merge(richiesta);
} else {
// se per sbaglio è entrata una Donating, andiamo a cercarla là
RequestManagerNngDon.avanzamentoNngDon(dbcfxgoInRec);
}
}
dbcfxgoInRec.setDaScodare(0L); // aggiorna la scodata
nngDao.merge(dbcfxgoInRec);
}
public static GnpRichiesteNngRec avanzaStatoInInserita(GnpDbcfxgoInNng103 dbcfxgoInRec, String processo) throws Exception{
GnpRichiesteNngRec richiesta = new GnpRichiesteNngRec();
int statoPartenza = StateManager.RICHIESTA_NON_PRESENTE;
richiesta.setProcesso(processo);
richiesta.setIdEsigenza(dbcfxgoInRec.getIdEsigenza());
richiesta.setStato(Long.valueOf(1));
richiesta.setDaInviare(Long.valueOf(1));
richiesta.setNng(dbcfxgoInRec.getNng());
richiesta.setDataOperazione(dbcfxgoInRec.getDataOrdine());
richiesta.setCodiceProgetto(dbcfxgoInRec.getCodiceProgetto());
if (dbcfxgoInRec.getTipoServizio() != null) {
richiesta.setTipoServizio(String.valueOf(dbcfxgoInRec.getTipoServizio()));
}
if (processo.equals(PROCESSO_RECIPIENT_NNG)) {
richiesta.setOpRecipient(dbcfxgoInRec.getCor());
richiesta.setPartitaIva(dbcfxgoInRec.getPartitaIva());
richiesta.setCodiceFiscale(dbcfxgoInRec.getCodFiscale());
richiesta.setCow(dbcfxgoInRec.getCow());
richiesta.setDac(dbcfxgoInRec.getDac());
} else {
richiesta.setOpRecipient(dbcfxgoInRec.getCor());
richiesta.setCow(dbcfxgoInRec.getCow());
}
return richiesta;
}
public static void avanzamentoNngRec(GnpRichiesteNngRec richiesta, GnpNngFenpRichIn fenpRichIn) throws Exception {
GnpRichiesteNngRecDAO richDAO = new GnpRichiesteNngRecDAO();
String tipoComunicazione = fenpRichIn.getTipoComunicazione();
if (richiesta != null) {
if ("2".equals(tipoComunicazione)) {
if ("1".equals(fenpRichIn.getStatoOrdine())){
richiesta.setCodRifiuto(fenpRichIn.getCodMotivoRifiuto());
richiesta.setDescRifiuto(fenpRichIn.getDescMotivoRifiuto());
avanzaStatoInRifiutata(richiesta);
} else {
avanzaStatoInAccettata(richiesta);
}
} else if ("10".equals(tipoComunicazione)) {
richiesta.setCodRifiuto(fenpRichIn.getCodMotivoRifiuto());
richiesta.setDescRifiuto(fenpRichIn.getDescMotivoRifiuto());
avanzaStatoInRifiutata(richiesta);
} else if ("11".equals(tipoComunicazione)) {
richiesta.setCow(fenpRichIn.getCodOpDonating());
avanzaStatoInAccettata(richiesta);
}
richDAO.merge(richiesta);
// invio GO
DbcfxgoController.getInstance().inviaNotificaDbcfxGo(richiesta, fenpRichIn);
}
}
//triggerato da OLO CONTROLLER
public static void avanzaStatoInInviataFenp(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(2));
}
public static void avanzaStatoInAccettata(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(3));
}
public static void avanzaStatoInRifiutata(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(4));
}
private static void avanzaStatoInAnnullata(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(7));
}
//triggerato da DbcfxGoController
public static void avanzaStatoInInviataGo(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(5));
new GnpRichiesteNngRecDAO().merge(richiesta);
}
public static void avanzaStatoInEspletata(GnpRichiesteNngRec richiesta) {
richiesta.setStato(Long.valueOf(6));
}
}

View File

@@ -0,0 +1,785 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.db.hb.crm.AbstractGnpCrmInRec;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmrInRec;
import it.valueteam.gnp.helper.MultiLineaHelper;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.obj.ApplicationCostants.PROCESSO_FENP;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.monitoraggio.E2EFormatController;
import it.valueteam.gnp.systemcontroller.monitoraggio.E2EContoller;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DacUtils;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.StateManager;
import it.valueteam.gnp.utility.StateManagerNPg35;
import java.util.Date;
import java.util.List;
/**
* @author NTT DATA
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @version 3.1 2018_C04 Del.103 Mancanza Tipo KO su aggiuntivo (+ anomalia Paola Scipioni)
* agganciato a R1C-17-1441 Cessazione con Rientro NCD
* - F00 Scipioni la motivazione sta solo sul principale ma deve stare su tutti
* - F01 Eliminare blocco invio a ToolKO delle notifiche KO su aggiuntivi
* - F02 Eliminare invio a FENP degli annullamenti su aggiuntivi per KO sul principale
*
*/
public class RequestManagerOlo103MN {
private static final String prefixCorrelazione = "XY";
public RequestManagerOlo103MN() {
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInAcquisita(AbstractGnpCrmInRec crmInRec, String processo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() begin");
GnpRichiesteOlo103mn richiestaOlo103Mn = null;
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
MultiLineaHelper helper = null;
int statoPartenza = StateManager.RICHIESTA_NON_PRESENTE;
richiestaOlo103Mn = creaRichiestaRientroCrmRec(crmInRec, processo);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() after creaRichiestaRientroCrmRec");
//cristiano aggiunta X6 calcolo data prima esigenza
if (richiestaOlo103Mn.getIdPadre() != null && !"".equals(richiestaOlo103Mn.getIdPadre())) {
// eseguiree la ricerca
List<GnpRichiesteOlo103mn> lista = olo103MnDAO.findByProperty(olo103MnDAO.HIB_PROP_IDESIGENZA, richiestaOlo103Mn.getIdPadre());
if (lista != null && lista.size() > 0) {
richiestaOlo103Mn.setDataPrimaEsigenza(lista.get(0).getDataPrimaEsigenza());
} else {
log.write("9999", "RICHIESTA_OLO103Mn PADRE CON ID_ESIGENZA [" + richiestaOlo103Mn.getIdPadre() + "] NON TROVATA. IMPOSTO DATA_PRIMA_ESIGENZA A SYSDATE");
richiestaOlo103Mn.setDataPrimaEsigenza(new Date());
}
} else {
richiestaOlo103Mn.setDataPrimaEsigenza(new Date());
}
log.write("9999", "Creata richiesta richiestaOlo103Mn con valorizzazione "+ richiestaOlo103Mn.toString());
olo103MnDAO.save(richiestaOlo103Mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() saved");
//faccio l'insert dell'id_richiesta nella tabella crm_in
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103Mn.getPiattaformaProvenienza());
crmController.notificaIdRichiestaToCrm(richiestaOlo103Mn.getIdRichiesta(), crmInRec.getUniqueId());
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo103Mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo103Mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo103Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): cambiata la generazione dell'ID_CORRELAZIONE
richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo103MnDAO.merge(richiestaOlo103Mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() updated");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103Mn, E2EFormatController.EVENTO_RIENTRO, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103Mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103Mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() creata la richiesta " + richiestaOlo103Mn.getIdRichiesta());
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInAcquisita(GnpDbssInRec dbssInRec, String processo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() begin");
GnpRichiesteOlo103mn richiestaOlo103Mn = null;
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
int statoPartenza = StateManager.RICHIESTA_NON_PRESENTE;
richiestaOlo103Mn = creaRichiestaRientroDbssRec(dbssInRec, processo);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() after creaRichiestaRientroDbssInRec");
richiestaOlo103Mn.setDataPrimaEsigenza(new Date());
olo103MnDAO.save(richiestaOlo103Mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() saved");
DBSSController dbssController = DBSSController.getInstance();
dbssController.updateIdRichiesta(richiestaOlo103Mn.getIdRichiesta(), dbssInRec.getUniqueId());
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo103Mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo103Mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// @TODO DBCFX_RU_262 verificare CHI e' il codice OLO qui
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo103Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): cambiata la generazione dell'ID_CORRELAZIONE
richiestaOlo103Mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo103MnDAO.merge(richiestaOlo103Mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAcquisita() updated");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103Mn, E2EFormatController.EVENTO_RIENTRO, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103Mn);
}
private static GnpRichiesteOlo103mn creaRichiestaRientroCrmRec(AbstractGnpCrmInRec crmInRec, String processo) throws Exception {
GnpRichiesteOlo103mn richiestaOlo103Mn = new GnpRichiesteOlo103mn();
richiestaOlo103Mn.setIdRichiesta(crmInRec.getIdRichiesta());
richiestaOlo103Mn.setIdEsigenza(crmInRec.getIdEsigenza());
richiestaOlo103Mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo103Mn.setUniqueIdCrmIn(crmInRec.getUniqueId());
richiestaOlo103Mn.setProcesso(processo);
richiestaOlo103Mn.setPiattaformaProvenienza(crmInRec.getPiattaformaProvenienza());
richiestaOlo103Mn.setDaInviare((long) 1);
richiestaOlo103Mn.setIdSolution(crmInRec.getIdSolution());
richiestaOlo103Mn.setCanaleProvenienza(crmInRec.getCanaleProvenienza());
richiestaOlo103Mn.setNumeroTelefono(crmInRec.getNumeroTelefono());
richiestaOlo103Mn.setCow(crmInRec.getCow());
richiestaOlo103Mn.setNominativoCliente(crmInRec.getNominativoCliente());
richiestaOlo103Mn.setCodiceFiscalePartitaIva(crmInRec.getCodiceFiscalePartivaIva());
richiestaOlo103Mn.setRecapitoAlternativo(crmInRec.getRecapitoAlternativo());
richiestaOlo103Mn.setSla(crmInRec.getSla());
richiestaOlo103Mn.setDac(crmInRec.getDac());
richiestaOlo103Mn.setDet(crmInRec.getDet());
richiestaOlo103Mn.setDataOperazione(crmInRec.getDataOperazione());
richiestaOlo103Mn.setDataRicezione(new Date());
richiestaOlo103Mn.setCos(crmInRec.getCos());
richiestaOlo103Mn.setCos2(crmInRec.getCos2());
richiestaOlo103Mn.setCor(crmInRec.getCor());
richiestaOlo103Mn.setCor2(crmInRec.getCor2());
richiestaOlo103Mn.setDn(crmInRec.getNumeroTelefono());
richiestaOlo103Mn.setCausaleRifiuto(crmInRec.getCausaleRifiuto());
richiestaOlo103Mn.setNumTotRichieste(countNumTotaleRichieste(crmInRec));
richiestaOlo103Mn.setMarcaggio(crmInRec.getMarcaggio());
richiestaOlo103Mn.setCanaleVendita(crmInRec.getCanaleVendita());
richiestaOlo103Mn.setFlagDichiarazione(crmInRec.getFlagDichiarazione());
richiestaOlo103Mn.setIdOl(crmInRec.getIdOl());
richiestaOlo103Mn.setCodiceOl(crmInRec.getCodiceOl());
richiestaOlo103Mn.setCow2(crmInRec.getCow2());
richiestaOlo103Mn.setDn1(crmInRec.getNumeroTelefono());
if (crmInRec.getDn2() != null) richiestaOlo103Mn.setDn2(crmInRec.getDn2());
if (crmInRec.getDn3() != null) richiestaOlo103Mn.setDn3(crmInRec.getDn3());
if (crmInRec.getDn4() != null) richiestaOlo103Mn.setDn4(crmInRec.getDn4());
if (crmInRec.getDn5() != null) richiestaOlo103Mn.setDn5(crmInRec.getDn5());
if (crmInRec.getDn6() != null) richiestaOlo103Mn.setDn6(crmInRec.getDn6());
if (crmInRec.getDn7() != null) richiestaOlo103Mn.setDn7(crmInRec.getDn7());
if (crmInRec.getDn8() != null) richiestaOlo103Mn.setDn8(crmInRec.getDn8());
if (crmInRec.getDn9() != null) richiestaOlo103Mn.setDn9(crmInRec.getDn9());
if (crmInRec.getDn10() != null) richiestaOlo103Mn.setDn10(crmInRec.getDn10());
if (crmInRec.getStatoDN2() != null) richiestaOlo103Mn.setStatoDn2(crmInRec.getStatoDN2());
if (crmInRec.getStatoDN3() != null) richiestaOlo103Mn.setStatoDn3(crmInRec.getStatoDN3());
if (crmInRec.getStatoDN4() != null) richiestaOlo103Mn.setStatoDn4(crmInRec.getStatoDN4());
if (crmInRec.getStatoDN5() != null) richiestaOlo103Mn.setStatoDn5(crmInRec.getStatoDN5());
if (crmInRec.getStatoDN6() != null) richiestaOlo103Mn.setStatoDn6(crmInRec.getStatoDN6());
if (crmInRec.getStatoDN7() != null) richiestaOlo103Mn.setStatoDn7(crmInRec.getStatoDN7());
if (crmInRec.getStatoDN8() != null) richiestaOlo103Mn.setStatoDn8(crmInRec.getStatoDN8());
if (crmInRec.getStatoDN9() != null) richiestaOlo103Mn.setStatoDn9(crmInRec.getStatoDN9());
if (crmInRec.getStatoDN10() != null) richiestaOlo103Mn.setStatoDn10(crmInRec.getStatoDN10());
if (crmInRec.getModuloCC() != null) richiestaOlo103Mn.setModuloCc(crmInRec.getModuloCC());
if (crmInRec.getModuloPartner() != null) richiestaOlo103Mn.setModuloPartner(crmInRec.getModuloPartner());
if (crmInRec.getProtocolloDMS() != null) richiestaOlo103Mn.setProtocolloDms(crmInRec.getProtocolloDMS());
if (crmInRec.getDataCreazioneSR() != null) richiestaOlo103Mn.setDataCreazioneSr(crmInRec.getDataCreazioneSR());
if (crmInRec.getIdPadre() != null) richiestaOlo103Mn.setIdPadre(crmInRec.getIdPadre());
if (crmInRec.getCausaleKO() != null) richiestaOlo103Mn.setCausaleKo(crmInRec.getCausaleKO());
if (crmInRec.getDataChiusuraCRM() != null) richiestaOlo103Mn.setDataChiusuraCrm(crmInRec.getDataChiusuraCRM());
// DBCFX_RU_190
if (crmInRec.getCodiceProgetto() != null) richiestaOlo103Mn.setCodiceProgetto(crmInRec.getCodiceProgetto());
// X02 2015
if (crmInRec instanceof GnpCrmrInRec) {
richiestaOlo103Mn.setFlagSky(((GnpCrmrInRec) crmInRec).getFlagSky());
}
richiestaOlo103Mn.setFlagVerticalizzato(crmInRec.getFlagVerticalizzato());
richiestaOlo103Mn.setRoutingNumber(crmInRec.getRoutingNumber());
return richiestaOlo103Mn;
}
private static GnpRichiesteOlo103mn creaRichiestaRientroDbssRec(GnpDbssInRec dbssInRec, String processo) {
GnpRichiesteOlo103mn richiestaOlo103Mn = new GnpRichiesteOlo103mn();
richiestaOlo103Mn.setOrderItemId(dbssInRec.getOrderItemId());
richiestaOlo103Mn.setIdRichiesta(dbssInRec.getIdRichiesta());
richiestaOlo103Mn.setIdEsigenza(dbssInRec.getIdEsigenza());
richiestaOlo103Mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo103Mn.setUniqueIdCrmIn(dbssInRec.getUniqueId());
richiestaOlo103Mn.setProcesso(processo);
richiestaOlo103Mn.setPiattaformaProvenienza(dbssInRec.getPiattaformaProvenienza());
richiestaOlo103Mn.setDaInviare((long) 1);
richiestaOlo103Mn.setIdSolution(dbssInRec.getIdSolution());
richiestaOlo103Mn.setCanaleProvenienza(dbssInRec.getCanaleProvenienza());
richiestaOlo103Mn.setNumeroTelefono(dbssInRec.getNumeroTelefono());
richiestaOlo103Mn.setCow(dbssInRec.getCow());
richiestaOlo103Mn.setNominativoCliente(dbssInRec.getNominativoCliente());
richiestaOlo103Mn.setCodiceFiscalePartitaIva(dbssInRec.getCodiceFiscalePartivaIva());
richiestaOlo103Mn.setRecapitoAlternativo(dbssInRec.getRecapitoAlternativo());
richiestaOlo103Mn.setSla(dbssInRec.getSla());
richiestaOlo103Mn.setDac(dbssInRec.getDac());
richiestaOlo103Mn.setDet(dbssInRec.getDet());
richiestaOlo103Mn.setDataOperazione(dbssInRec.getDataOperazione());
richiestaOlo103Mn.setDataRicezione(new Date());
richiestaOlo103Mn.setCos(dbssInRec.getCos());
richiestaOlo103Mn.setCos2(dbssInRec.getCos2());
richiestaOlo103Mn.setCor(dbssInRec.getCor());
richiestaOlo103Mn.setCor2(dbssInRec.getCor2());
richiestaOlo103Mn.setDn(dbssInRec.getNumeroTelefono());
richiestaOlo103Mn.setCausaleRifiuto(dbssInRec.getCausaleRifiuto());
richiestaOlo103Mn.setNumTotRichieste(countNumTotaleRichieste(dbssInRec));
richiestaOlo103Mn.setMarcaggio(dbssInRec.getCodMarcaggioCliente());
richiestaOlo103Mn.setCanaleVendita(dbssInRec.getCodCanaleVendita());
richiestaOlo103Mn.setFlagDichiarazione(dbssInRec.getFlagDichiarazione());
richiestaOlo103Mn.setIdOl(dbssInRec.getIdOl());
richiestaOlo103Mn.setCodiceOl(dbssInRec.getCodiceOl());
richiestaOlo103Mn.setCow2(dbssInRec.getCow2());
richiestaOlo103Mn.setDn1(dbssInRec.getNumeroTelefono());
if (dbssInRec.getDn2() != null) richiestaOlo103Mn.setDn2(dbssInRec.getDn2());
if (dbssInRec.getDn3() != null) richiestaOlo103Mn.setDn3(dbssInRec.getDn3());
if (dbssInRec.getDn4() != null) richiestaOlo103Mn.setDn4(dbssInRec.getDn4());
if (dbssInRec.getDn5() != null) richiestaOlo103Mn.setDn5(dbssInRec.getDn5());
if (dbssInRec.getDn6() != null) richiestaOlo103Mn.setDn6(dbssInRec.getDn6());
if (dbssInRec.getDn7() != null) richiestaOlo103Mn.setDn7(dbssInRec.getDn7());
if (dbssInRec.getDn8() != null) richiestaOlo103Mn.setDn8(dbssInRec.getDn8());
if (dbssInRec.getDn9() != null) richiestaOlo103Mn.setDn9(dbssInRec.getDn9());
if (dbssInRec.getDn10() != null) richiestaOlo103Mn.setDn10(dbssInRec.getDn10());
if (dbssInRec.getStatoDn2() != null) richiestaOlo103Mn.setStatoDn2(dbssInRec.getStatoDn2());
if (dbssInRec.getStatoDn3() != null) richiestaOlo103Mn.setStatoDn3(dbssInRec.getStatoDn3());
if (dbssInRec.getStatoDn4() != null) richiestaOlo103Mn.setStatoDn4(dbssInRec.getStatoDn4());
if (dbssInRec.getStatoDn5() != null) richiestaOlo103Mn.setStatoDn5(dbssInRec.getStatoDn5());
if (dbssInRec.getStatoDn6() != null) richiestaOlo103Mn.setStatoDn6(dbssInRec.getStatoDn6());
if (dbssInRec.getStatoDn7() != null) richiestaOlo103Mn.setStatoDn7(dbssInRec.getStatoDn7());
if (dbssInRec.getStatoDn8() != null) richiestaOlo103Mn.setStatoDn8(dbssInRec.getStatoDn8());
if (dbssInRec.getStatoDn9() != null) richiestaOlo103Mn.setStatoDn9(dbssInRec.getStatoDn9());
if (dbssInRec.getStatoDn10() != null) richiestaOlo103Mn.setStatoDn10(dbssInRec.getStatoDn10());
if (dbssInRec.getCodiceProgetto() != null) richiestaOlo103Mn.setCodiceProgetto(dbssInRec.getCodiceProgetto());
if (dbssInRec.getFlagSky() != null) richiestaOlo103Mn.setFlagSky(dbssInRec.getFlagSky());
richiestaOlo103Mn.setFlagVerticalizzato(dbssInRec.getFlagVerticalizzato());
richiestaOlo103Mn.setRoutingNumber(dbssInRec.getRoutingNumber());
return richiestaOlo103Mn;
}
public static void insertStoricoOlo103Mn(int stato_da, GnpRichiesteOlo103mn richiestaOlo103Mn) throws Exception {
GnpStoricoOlo103mnDAO storicoDAO = new GnpStoricoOlo103mnDAO();
//creo lo storico
GnpStoricoOlo103mn storico = new GnpStoricoOlo103mn();
storico.setIdRichiesta(richiestaOlo103Mn.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaOlo103Mn.getStato());
storicoDAO.save(storico);
}
private static Long countNumTotaleRichieste(AbstractGnpCrmInRec crmInRec) {
Long ris = (long) 1;
if (crmInRec.getDn2() != null && crmInRec.getStatoDN2() != null) ris++;
else return ris;
if (crmInRec.getDn3() != null && crmInRec.getStatoDN3() != null) ris++;
else return ris;
if (crmInRec.getDn4() != null && crmInRec.getStatoDN4() != null) ris++;
else return ris;
if (crmInRec.getDn5() != null && crmInRec.getStatoDN5() != null) ris++;
else return ris;
if (crmInRec.getDn6() != null && crmInRec.getStatoDN6() != null) ris++;
else return ris;
if (crmInRec.getDn7() != null && crmInRec.getStatoDN7() != null) ris++;
else return ris;
if (crmInRec.getDn8() != null && crmInRec.getStatoDN8() != null) ris++;
else return ris;
if (crmInRec.getDn9() != null && crmInRec.getStatoDN9() != null) ris++;
else return ris;
if (crmInRec.getDn10() != null && crmInRec.getStatoDN10() != null) ris++;
else return ris;
return ris;
}
private static Long countNumTotaleRichieste(GnpDbssInRec dbssInRec) {
Long ris = (long) 1;
if (dbssInRec.getDn2() != null && dbssInRec.getStatoDn2() != null) ris++;
else return ris;
if (dbssInRec.getDn3() != null && dbssInRec.getStatoDn3() != null) ris++;
else return ris;
if (dbssInRec.getDn4() != null && dbssInRec.getStatoDn4() != null) ris++;
else return ris;
if (dbssInRec.getDn5() != null && dbssInRec.getStatoDn5() != null) ris++;
else return ris;
if (dbssInRec.getDn6() != null && dbssInRec.getStatoDn6() != null) ris++;
else return ris;
if (dbssInRec.getDn7() != null && dbssInRec.getStatoDn7() != null) ris++;
else return ris;
if (dbssInRec.getDn8() != null && dbssInRec.getStatoDn8() != null) ris++;
else return ris;
if (dbssInRec.getDn9() != null && dbssInRec.getStatoDn9() != null) ris++;
else return ris;
if (dbssInRec.getDn10() != null && dbssInRec.getStatoDn10() != null) ris++;
else return ris;
return ris;
}
// Sostituito con il metodo successivo per DBCFX_RU_189 (31/07/2014)
/* public static String generateIDCorrelazione(String prefix, Long idRichiesta, int padLenght){
String val =String.valueOf(idRichiesta);
for(;val.length()<padLenght;) val = "0"+val;
return prefix + val;
}*/
public static String generateIDCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedIdCorrelazioneOLO35MN();
for (; val.length() < 8; ) val = "0" + val;
return prefixCorrelazione + val;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
*/
public static String generateIDCorrelazioneNcd(String codOlo, ProcessLogger log) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
log.write("9999", "RequestManagerOlo103MN.generateIDCorrelazioneNcd("+codOlo+") returning ["+idCorr+"]");
return idCorr;
}
public static void avanzaStatoInInviataFenp(GnpRichiesteOlo103mn richiestaOlo103mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataFenp() begin");
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
try {
//if (status != StateManagerOlo35MN.TRANSIZIONE_NON_POSSIBILE) {
if (statoPartenza == StatoRichiestaOlo35MN.ACQUISITA) {
GnpFenpRichiesteOut richBon = dao.getMultinumeroBonificato(richiestaOlo103mn.getDn());
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataFenp() transaction possible");
richiestaOlo103mn.setStato((long) StatoRichiestaNPg35.INVIATA_FENP);
richiestaOlo103mn.setDaInviare((long) 0);
if (richBon.getBonificato().compareTo((long) 0) == 0) {
String donor = richiestaOlo103mn.getCow2();
richiestaOlo103mn.setDac(RequestManagerOlo103MN.calcolaDac(new Date(),donor,log));
}
olo103MnDAO.merge(richiestaOlo103mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataFenp() saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataFenp() end");
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataFenp() Exception :" + ex.getMessage());
throw ex;
}
}
public static Date calcolaDac(Date dataric, String donor, ProcessLogger log) throws Exception {
log.write("9999", "START calcolaDac dataric= "+dataric + " olo="+donor);
Date ret;
ret = DacUtils.setDac103(dataric, donor, log, DacUtils.dacDayforDel103Std); //riduzione tempi 227248
log.write("9999", "Dac Calcolata = "+ret);
return ret;
}
// public static Date calcolaDac(Date dataric) throws Exception {
// Date ret;
// ret = DateUtils.aggiungiGiorniLavorativiTodate(dataric, 8);
// if (DateUtils.isFestivity(ret))
// return DateUtils.aggiungiGiorniLavorativiTodate(ret, 1);
// else
// return ret;
// }
public static boolean salvaEsito(GnpRichiesteOlo103mn richiestaOlo103mn, String DN, Long esito, ProcessLogger log) throws Exception {
log.write("9999", "salvaEsito, DN=" + DN);
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
olo103MnDAO.getSession().refresh(richiestaOlo103mn);
if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn()))
richiestaOlo103mn.setEsitoPri(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn2()))
richiestaOlo103mn.setEsitoDn2(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn3()))
richiestaOlo103mn.setEsitoDn3(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn4()))
richiestaOlo103mn.setEsitoDn4(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn5()))
richiestaOlo103mn.setEsitoDn5(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn6()))
richiestaOlo103mn.setEsitoDn6(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn7()))
richiestaOlo103mn.setEsitoDn7(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn8()))
richiestaOlo103mn.setEsitoDn8(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn9()))
richiestaOlo103mn.setEsitoDn9(esito);
else if (DN.equalsIgnoreCase(richiestaOlo103mn.getDn10()))
richiestaOlo103mn.setEsitoDn10(esito);
else
throw new Exception("ESITO DN NON CORRISPONDE A NESSUN DN DELLA RICHIESTA " + richiestaOlo103mn.getIdRichiesta());
olo103MnDAO.merge(richiestaOlo103mn);
return isLastEsito(richiestaOlo103mn);
}
private static boolean isLastEsito(GnpRichiesteOlo103mn richiestaOlo103mn) {
if ((richiestaOlo103mn.getEsitoPri() == null) ||
((richiestaOlo103mn.getEsitoDn2() == null) && (richiestaOlo103mn.getDn2() != null)) ||
((richiestaOlo103mn.getEsitoDn3() == null) && (richiestaOlo103mn.getDn3() != null)) ||
((richiestaOlo103mn.getEsitoDn4() == null) && (richiestaOlo103mn.getDn4() != null)) ||
((richiestaOlo103mn.getEsitoDn5() == null) && (richiestaOlo103mn.getDn5() != null)) ||
((richiestaOlo103mn.getEsitoDn6() == null) && (richiestaOlo103mn.getDn6() != null)) ||
((richiestaOlo103mn.getEsitoDn7() == null) && (richiestaOlo103mn.getDn7() != null)) ||
((richiestaOlo103mn.getEsitoDn8() == null) && (richiestaOlo103mn.getDn8() != null)) ||
((richiestaOlo103mn.getEsitoDn9() == null) && (richiestaOlo103mn.getDn9() != null)) ||
((richiestaOlo103mn.getEsitoDn10() == null) && (richiestaOlo103mn.getDn10() != null))
) return false;
else return true;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInVerificata_fenp(GnpRichiesteOlo103mn richiestaOlo103mn, GnpFenpRichiesteIn fenpIn, ProcessLogger log) throws Exception {
final String DAC_FORMAT = "yyyy-MM-dd";
final int GIORNI_DA_AGGIUNGERE = 2;
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() begin");
try {
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
if (statoPartenza != StatoRichiestaOlo35MN.INVIATA_FENP && statoPartenza != StatoRichiestaOlo35MN.VERIFICATA_FENP) {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo103mn.getIdRichiesta()) + " con stato iniziale " + statoPartenza + " incongruente");
}
if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP && fenpIn.getEsito().intValue() > 0 && fenpIn.getCodiceMotivoRifiuto().intValue() == 20) {
richiestaOlo103mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo103mn.setDaInviare((long) 1);
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo103mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo103mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo103mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo103mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo103Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): Rigenero l'ID_CORRELAZIONE a fronte di un KO=20
richiestaOlo103mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo103MnDAO.merge(richiestaOlo103mn);
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, E2EFormatController.EVENTO_SUPERATA_SOGLIA, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
} else if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP && fenpIn.getEsito().intValue() == 0) {
// calcolo del silenzio assenso
GnpFenpRichiesteOutStoricoDAO fenpRichiesteOutStoricoDAO = new GnpFenpRichiesteOutStoricoDAO();
GnpFenpRichiesteOutStorico story = fenpRichiesteOutStoricoDAO.findByIdRichiesta(richiestaOlo103mn.getIdRichiesta());
Date now = new Date();
if (story != null && story.getDataInvio() != null) {
now = story.getDataInvio();
}
Date silenzioAssenso = DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(now, GIORNI_DA_AGGIUNGERE, 18, 15, 0);
richiestaOlo103mn.setDataSilenzioAssenso(silenzioAssenso);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() set data silenzio/assenso" + silenzioAssenso.toString());
richiestaOlo103mn.setStato((long) StatoRichiestaOlo35MN.VERIFICATA_FENP);
olo103MnDAO.merge(richiestaOlo103mn);
// Il passaggio di stato e le notifiche vengono effettuate solamente se il DN e' il primario
if (fenpIn.getDn().equalsIgnoreCase(richiestaOlo103mn.getDn())) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp(). DN Primario.");
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo103mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(new Date(),richiestaOlo103mn, DBSSMap.NOTIFICA_VALIDATAFENP, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() notificata a DBSS");
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo103mn, CRMMap.NOTIFICA_VALIDATAFENP, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() notificata a CRM");
}
// X01 2014
if (CRMMap.PIATTAFORMA_B.equals(richiestaOlo103mn.getPiattaformaProvenienza())) {
GnpFenpRichiesteInDAO fenpInDao = new GnpFenpRichiesteInDAO();
List resultRichieste = fenpInDao.findRifiutiFENPEsito20(richiestaOlo103mn.getIdRichiesta());
if (resultRichieste != null && resultRichieste.size() == 0) {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo103mn, CRMMap.NOTIFICA_TIPOCOMM1, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() notificata a CRMB, TIPOCOMM1");
} else {
// esiste almeno un riciclo per la richiesta con codiceRifiuto = 20 (sup. capacita' evasione)
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo103mn, CRMMap.NOTIFICA_TIPOCOMM2, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() notificata a CRMB, TIPOCOMM2");
}
}
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, new Date());
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
}
}
salvaEsito(richiestaOlo103mn, fenpIn.getDn(), (long) 0, log); // 2018_C08 DirectoryNumber DONE NO-OP va fatto su tutti i numeri
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() Exception :" + ex.getMessage());
throw ex;
}
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInVerificata_fenp() end");
}
/**
* @version 3.1 2018_C04 Del.103 Mancanza Tipo KO su aggiuntivo (+ anomalia Paola Scipioni)
* agganciato a R1C-17-1441 Cessazione con Rientro NCD
* - F00 Scipioni la motivazione sta solo sul principale ma deve stare su tutti
* - F01 Eliminare blocco invio a ToolKO delle notifiche KO su aggiuntivi
* - F02 Eliminare invio a FENP degli annullamenti su aggiuntivi per KO sul principale
*/
public static void avanzaStatoInRifiutata_fenp(Date dateRichiesta,GnpRichiesteOlo103mn richiestaOlo103mn, String DN, Long motivoRifiuto, ProcessLogger log) throws Exception {
String methSig = "[RequestManagerOlo103MN].[avanzaStatoInRifiutata_fenp] DN ["+DN+"], motivoRifiuto ["+motivoRifiuto+"] ";
log.write("9999", methSig + "begin");
try {
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"] check");
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP || statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP) {
richiestaOlo103mn.setStato((long) StatoRichiestaOlo35MN.RIFIUTATA_FENP);
richiestaOlo103mn.setCodiceMotivoRifiutoFenp(motivoRifiuto);
StringBuffer sb = new StringBuffer(0);
if( DN.equals(richiestaOlo103mn.getDn1()) ||
DN.equals(richiestaOlo103mn.getDn2()) ||
DN.equals(richiestaOlo103mn.getDn3()) ||
DN.equals(richiestaOlo103mn.getDn4()) ||
DN.equals(richiestaOlo103mn.getDn5()) ||
DN.equals(richiestaOlo103mn.getDn6()) ||
DN.equals(richiestaOlo103mn.getDn7()) ||
DN.equals(richiestaOlo103mn.getDn8()) ||
DN.equals(richiestaOlo103mn.getDn9()) ||
DN.equals(richiestaOlo103mn.getDn10())
) {
if(null != richiestaOlo103mn.getDn1()) { richiestaOlo103mn.setEsitoPri(motivoRifiuto); sb.append("[1]"); }
if(null != richiestaOlo103mn.getDn2()) { richiestaOlo103mn.setEsitoDn2(motivoRifiuto); sb.append("[2]"); }
if(null != richiestaOlo103mn.getDn3()) { richiestaOlo103mn.setEsitoDn3(motivoRifiuto); sb.append("[3]"); }
if(null != richiestaOlo103mn.getDn4()) { richiestaOlo103mn.setEsitoDn4(motivoRifiuto); sb.append("[4]"); }
if(null != richiestaOlo103mn.getDn5()) { richiestaOlo103mn.setEsitoDn5(motivoRifiuto); sb.append("[5]"); }
if(null != richiestaOlo103mn.getDn6()) { richiestaOlo103mn.setEsitoDn6(motivoRifiuto); sb.append("[6]"); }
if(null != richiestaOlo103mn.getDn7()) { richiestaOlo103mn.setEsitoDn7(motivoRifiuto); sb.append("[7]"); }
if(null != richiestaOlo103mn.getDn8()) { richiestaOlo103mn.setEsitoDn8(motivoRifiuto); sb.append("[8]"); }
if(null != richiestaOlo103mn.getDn9()) { richiestaOlo103mn.setEsitoDn9(motivoRifiuto); sb.append("[9]"); }
if(null != richiestaOlo103mn.getDn10()){ richiestaOlo103mn.setEsitoDn10(motivoRifiuto); sb.append("[10]"); }
}
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"], set motivoRifiuto on aggiuntivi: ["+sb.toString()+"]");
// 2018_C04 Del.103 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) END
olo103MnDAO.merge(richiestaOlo103mn);
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"], saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo103mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(dateRichiesta,richiestaOlo103mn, DBSSMap.NOTIFICA_ACCETTAZIONE_KO, richiestaOlo103mn.getNumeroTelefono());
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"] notificata [ACCETTAZIONE_KO] a DBSS");
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo103mn, CRMMap.NOTIFICA_RIFIUTATAPITAGORA, richiestaOlo103mn.getNumeroTelefono());
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"] notificata [RIFIUTATAPITAGORA] a CRM");
}
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"] end");
} else {
log.write("9999", methSig + "Rich. ID ["+richiestaOlo103mn.getIdRichiesta()+"], NumTel ["+richiestaOlo103mn.getNumeroTelefono()+"] KO - scartata per stato incompatibile ["+statoPartenza+"]");
}
} catch (Exception ex) {
log.write("9999", methSig + "FAIL - ["+ex.getClass().getName()+"] " + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInAccettata(GnpRichiesteOlo103mn richiestaOlo103mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAccettata() begin");
try {
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP) {
richiestaOlo103mn.setStato((long) StatoRichiestaOlo35MN.ACETTATA);
olo103MnDAO.merge(richiestaOlo103mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAccettata() saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
} else {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo103mn.getIdRichiesta())
+ " con stato iniziale " + statoPartenza + " incongruente");
}
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo103mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(new Date(),richiestaOlo103mn, DBSSMap.NOTIFICA_ACCETTAZIONE_OLO, richiestaOlo103mn.getNumeroTelefono());
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo103mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo103mn, CRMMap.NOTIFICA_ACCETTAZIONE_OLO, richiestaOlo103mn.getNumeroTelefono());
}
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAccettata() notificata a CRM");
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAccettata() Exception :" + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInEspletata(GnpRichiesteOlo103mn richiestaOlo103mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInEspletata() begin");
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
try {
int status = StateManagerNPg35.CheckTransition(richiestaOlo103mn.getIdRichiesta(), StatoRichiestaOlo35MN.ESPLETATA, richiestaOlo103mn.getProcesso());
if (status != StateManagerNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiestaOlo103mn.setStato((long) StatoRichiestaNPg35.ESPLETATA);
olo103MnDAO.merge(richiestaOlo103mn);
log.write("0008", richiestaOlo103mn.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaOlo35MN.getStatoDescr(statoPartenza) + " IN ESPLETATA");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
} else {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo103mn.getIdRichiesta())
+ " con stato iniziale " + statoPartenza + " incongruente");
}
} catch (Exception ex) {
throw ex;
}
}
private static void inviaNotificaAnnullamentoFENP(GnpRichiesteOlo103mn richiestaOlo103mn, String DN, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.inviaNoticaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
if (!DN.equals(richiestaOlo103mn.getDn1()))
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn1());
if (!DN.equals(richiestaOlo103mn.getDn2()) && richiestaOlo103mn.getStatoDn2() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn2());
if (!DN.equals(richiestaOlo103mn.getDn3()) && richiestaOlo103mn.getStatoDn3() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn3());
if (!DN.equals(richiestaOlo103mn.getDn4()) && richiestaOlo103mn.getStatoDn4() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn4());
if (!DN.equals(richiestaOlo103mn.getDn5()) && richiestaOlo103mn.getStatoDn5() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn5());
if (!DN.equals(richiestaOlo103mn.getDn6()) && richiestaOlo103mn.getStatoDn6() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn6());
if (!DN.equals(richiestaOlo103mn.getDn7()) && richiestaOlo103mn.getStatoDn7() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn7());
if (!DN.equals(richiestaOlo103mn.getDn8()) && richiestaOlo103mn.getStatoDn8() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn8());
if (!DN.equals(richiestaOlo103mn.getDn9()) && richiestaOlo103mn.getStatoDn9() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn9());
if (!DN.equals(richiestaOlo103mn.getDn10()) && richiestaOlo103mn.getStatoDn10() != null)
oloControllerFenp.notificaEvento(richiestaOlo103mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo103mn.getDn10());
log.write("9999", "RequestManagerOlo103MN.inviaNoticaAnnullamentoFENP() end");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
}
public static void avanzaStatoInInviataCRM(GnpRichiesteOlo103mn richiestaOlo103mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInEspletata() begin");
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
try {
int status = StateManagerNPg35.CheckTransition(richiestaOlo103mn.getIdRichiesta(), StatoRichiestaOlo35MN.INVIATA_CRM, richiestaOlo103mn.getProcesso());
if (status != StateManagerNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiestaOlo103mn.setStato((long) StatoRichiestaNPg35.INVIATA_CRM);
olo103MnDAO.merge(richiestaOlo103mn);
log.write("0008", richiestaOlo103mn.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaOlo35MN.getStatoDescr(statoPartenza) + " IN INVIATA_CRM");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo103mn, null, null);
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInInviataCRM() Exception :" + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInAnnullata(GnpRichiesteOlo103mn richiestaOlo103mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAnnullata() begin");
try {
int statoPartenza = richiestaOlo103mn.getStato().intValue();
GnpRichiesteOlo103mnDAO olo103MnDAO = new GnpRichiesteOlo103mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP || statoPartenza == StatoRichiestaOlo35MN.ACETTATA ||
statoPartenza == StatoRichiestaOlo35MN.INVIATA_CRM ) {
richiestaOlo103mn.setStato((long) StatoRichiestaOlo35MN.ANNULLATA);
olo103MnDAO.merge(richiestaOlo103mn);
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAnnullata() richiestaOlo103mn saved");
insertStoricoOlo103Mn(statoPartenza, richiestaOlo103mn);
if (richiestaOlo103mn.getDn1() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn1(), log);
if (richiestaOlo103mn.getDn2() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn2(), log);
if (richiestaOlo103mn.getDn3() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn3(), log);
if (richiestaOlo103mn.getDn4() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn4(), log);
if (richiestaOlo103mn.getDn5() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn5(), log);
if (richiestaOlo103mn.getDn6() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn6(), log);
if (richiestaOlo103mn.getDn7() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn7(), log);
if (richiestaOlo103mn.getDn8() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn8(), log);
if (richiestaOlo103mn.getDn9() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn9(), log);
if (richiestaOlo103mn.getDn10() != null) inviaNotificaAnnullamentoFENP(richiestaOlo103mn, richiestaOlo103mn.getDn10(), log);
DbcfxgoController.getInstance().notificaVariazioneStatoOlo103Mn(richiestaOlo103mn);
} else {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInAnnullata() - ANNULLAMENTO scartato - la richiesta si trovava nello stato: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo103MN.avanzaStatoInRifiutata_fenp() Exception :" + ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,834 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.db.hb.crm.AbstractGnpCrmInRec;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmrInRec;
import it.valueteam.gnp.helper.MultiLineaHelper;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.ApplicationCostants.PROCESSO_FENP;
import it.valueteam.gnp.obj.ApplicationCostants;
import it.valueteam.gnp.obj.CRMMap;
import it.valueteam.gnp.obj.DBSSMap;
import it.valueteam.gnp.obj.StatoRichiestaNPg35;
import it.valueteam.gnp.obj.StatoRichiestaOlo35MN;
import it.valueteam.gnp.systemcontroller.ControllerFactory;
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.systemcontroller.formatcontroller.dbss.DBSSController;
import it.valueteam.gnp.systemcontroller.formatcontroller.monitoraggio.E2EFormatController;
import it.valueteam.gnp.systemcontroller.monitoraggio.E2EContoller;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DacUtils;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.StateManager;
import it.valueteam.gnp.utility.StateManagerNPg35;
import java.util.Date;
import java.util.List;
/**
* @author NTT DATA
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @version 3.1 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (+ anomalia Paola Scipioni)
* agganciato a R1C-17-1441 Cessazione con Rientro NCD
* - F00 Scipioni la motivazione sta solo sul principale ma deve stare su tutti
* - F01 Eliminare blocco invio a ToolKO delle notifiche KO su aggiuntivi
* - F02 Eliminare invio a FENP degli annullamenti su aggiuntivi per KO sul principale
*
*/
public class RequestManagerOlo35MN {
private static final String prefixCorrelazione = "XY";
public RequestManagerOlo35MN() {
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInAcquisita(AbstractGnpCrmInRec crmInRec, String processo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() begin");
GnpRichiesteOlo35mn richiestaOlo35Mn = null;
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
MultiLineaHelper helper = null;
int statoPartenza = StateManager.RICHIESTA_NON_PRESENTE;
richiestaOlo35Mn = creaRichiestaRientroCrmRec(crmInRec, processo);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() after creaRichiestaRientroCrmRec");
//cristiano aggiunta X6 calcolo data prima esigenza
if (richiestaOlo35Mn.getIdPadre() != null && !"".equals(richiestaOlo35Mn.getIdPadre())) {
// eseguiree la ricerca
List<GnpRichiesteOlo35mn> lista = olo35MnDAO.findByProperty(olo35MnDAO.HIB_PROP_IDESIGENZA, richiestaOlo35Mn.getIdPadre());
if (lista != null && lista.size() > 0) {
richiestaOlo35Mn.setDataPrimaEsigenza(lista.get(0).getDataPrimaEsigenza());
} else {
log.write("9999", "RICHIESTA_OLO35Mn PADRE CON ID_ESIGENZA [" + richiestaOlo35Mn.getIdPadre() + "] NON TROVATA. IMPOSTO DATA_PRIMA_ESIGENZA A SYSDATE");
richiestaOlo35Mn.setDataPrimaEsigenza(new Date());
}
} else {
richiestaOlo35Mn.setDataPrimaEsigenza(new Date());
}
log.write("9999", "Creata richiesta richiestaOlo35Mn con valorizzazione "+ richiestaOlo35Mn.toString());
olo35MnDAO.save(richiestaOlo35Mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() saved");
//faccio l'insert dell'id_richiesta nella tabella crm_in
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35Mn.getPiattaformaProvenienza());
crmController.notificaIdRichiestaToCrm(richiestaOlo35Mn.getIdRichiesta(), crmInRec.getUniqueId());
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo35Mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo35Mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// @TODO DBCFX_RU_262 verificare CHI e' il codice OLO qui
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo35Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): cambiata la generazione dell'ID_CORRELAZIONE
richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo35MnDAO.merge(richiestaOlo35Mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() updated");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35Mn, E2EFormatController.EVENTO_RIENTRO, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35Mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35Mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() creata la richiesta " + richiestaOlo35Mn.getIdRichiesta());
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInAcquisita(GnpDbssInRec dbssInRec, String processo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() begin");
GnpRichiesteOlo35mn richiestaOlo35Mn = null;
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
int statoPartenza = StateManager.RICHIESTA_NON_PRESENTE;
richiestaOlo35Mn = creaRichiestaRientroDbssRec(dbssInRec, processo);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() after creaRichiestaRientroDbssInRec");
richiestaOlo35Mn.setDataPrimaEsigenza(new Date());
olo35MnDAO.save(richiestaOlo35Mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() saved");
DBSSController dbssController = DBSSController.getInstance();
dbssController.updateIdRichiesta(richiestaOlo35Mn.getIdRichiesta(), dbssInRec.getUniqueId());
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo35Mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo35Mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// @TODO DBCFX_RU_262 verificare CHI e' il codice OLO qui
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo35Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): cambiata la generazione dell'ID_CORRELAZIONE
richiestaOlo35Mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo35MnDAO.merge(richiestaOlo35Mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAcquisita() updated");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35Mn, E2EFormatController.EVENTO_RIENTRO, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35Mn);
}
private static GnpRichiesteOlo35mn creaRichiestaRientroCrmRec(AbstractGnpCrmInRec crmInRec, String processo) throws Exception {
GnpRichiesteOlo35mn richiestaOlo35Mn = new GnpRichiesteOlo35mn();
richiestaOlo35Mn.setIdRichiesta(crmInRec.getIdRichiesta());
richiestaOlo35Mn.setIdEsigenza(crmInRec.getIdEsigenza());
richiestaOlo35Mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo35Mn.setUniqueIdCrmIn(crmInRec.getUniqueId());
richiestaOlo35Mn.setProcesso(processo);
richiestaOlo35Mn.setPiattaformaProvenienza(crmInRec.getPiattaformaProvenienza());
richiestaOlo35Mn.setDaInviare((long) 1);
richiestaOlo35Mn.setIdSolution(crmInRec.getIdSolution());
richiestaOlo35Mn.setCanaleProvenienza(crmInRec.getCanaleProvenienza());
richiestaOlo35Mn.setNumeroTelefono(crmInRec.getNumeroTelefono());
richiestaOlo35Mn.setCow(crmInRec.getCow());
richiestaOlo35Mn.setNominativoCliente(crmInRec.getNominativoCliente());
richiestaOlo35Mn.setCodiceFiscalePartitaIva(crmInRec.getCodiceFiscalePartivaIva());
richiestaOlo35Mn.setRecapitoAlternativo(crmInRec.getRecapitoAlternativo());
richiestaOlo35Mn.setSla(crmInRec.getSla());
richiestaOlo35Mn.setDac(crmInRec.getDac());
richiestaOlo35Mn.setDet(crmInRec.getDet());
richiestaOlo35Mn.setDataOperazione(crmInRec.getDataOperazione());
richiestaOlo35Mn.setDataRicezione(new Date());
richiestaOlo35Mn.setCos(crmInRec.getCos());
richiestaOlo35Mn.setCos2(crmInRec.getCos2());
richiestaOlo35Mn.setCor(crmInRec.getCor());
richiestaOlo35Mn.setCor2(crmInRec.getCor2());
richiestaOlo35Mn.setDn(crmInRec.getNumeroTelefono());
richiestaOlo35Mn.setCausaleRifiuto(crmInRec.getCausaleRifiuto());
richiestaOlo35Mn.setNumTotRichieste(countNumTotaleRichieste(crmInRec));
richiestaOlo35Mn.setMarcaggio(crmInRec.getMarcaggio());
richiestaOlo35Mn.setCanaleVendita(crmInRec.getCanaleVendita());
richiestaOlo35Mn.setFlagDichiarazione(crmInRec.getFlagDichiarazione());
richiestaOlo35Mn.setIdOl(crmInRec.getIdOl());
richiestaOlo35Mn.setCodiceOl(crmInRec.getCodiceOl());
richiestaOlo35Mn.setCow2(crmInRec.getCow2());
richiestaOlo35Mn.setDn1(crmInRec.getNumeroTelefono());
if (crmInRec.getDn2() != null) richiestaOlo35Mn.setDn2(crmInRec.getDn2());
if (crmInRec.getDn3() != null) richiestaOlo35Mn.setDn3(crmInRec.getDn3());
if (crmInRec.getDn4() != null) richiestaOlo35Mn.setDn4(crmInRec.getDn4());
if (crmInRec.getDn5() != null) richiestaOlo35Mn.setDn5(crmInRec.getDn5());
if (crmInRec.getDn6() != null) richiestaOlo35Mn.setDn6(crmInRec.getDn6());
if (crmInRec.getDn7() != null) richiestaOlo35Mn.setDn7(crmInRec.getDn7());
if (crmInRec.getDn8() != null) richiestaOlo35Mn.setDn8(crmInRec.getDn8());
if (crmInRec.getDn9() != null) richiestaOlo35Mn.setDn9(crmInRec.getDn9());
if (crmInRec.getDn10() != null) richiestaOlo35Mn.setDn10(crmInRec.getDn10());
if (crmInRec.getStatoDN2() != null) richiestaOlo35Mn.setStatoDn2(crmInRec.getStatoDN2());
if (crmInRec.getStatoDN3() != null) richiestaOlo35Mn.setStatoDn3(crmInRec.getStatoDN3());
if (crmInRec.getStatoDN4() != null) richiestaOlo35Mn.setStatoDn4(crmInRec.getStatoDN4());
if (crmInRec.getStatoDN5() != null) richiestaOlo35Mn.setStatoDn5(crmInRec.getStatoDN5());
if (crmInRec.getStatoDN6() != null) richiestaOlo35Mn.setStatoDn6(crmInRec.getStatoDN6());
if (crmInRec.getStatoDN7() != null) richiestaOlo35Mn.setStatoDn7(crmInRec.getStatoDN7());
if (crmInRec.getStatoDN8() != null) richiestaOlo35Mn.setStatoDn8(crmInRec.getStatoDN8());
if (crmInRec.getStatoDN9() != null) richiestaOlo35Mn.setStatoDn9(crmInRec.getStatoDN9());
if (crmInRec.getStatoDN10() != null) richiestaOlo35Mn.setStatoDn10(crmInRec.getStatoDN10());
if (crmInRec.getModuloCC() != null) richiestaOlo35Mn.setModuloCc(crmInRec.getModuloCC());
if (crmInRec.getModuloPartner() != null) richiestaOlo35Mn.setModuloPartner(crmInRec.getModuloPartner());
if (crmInRec.getProtocolloDMS() != null) richiestaOlo35Mn.setProtocolloDms(crmInRec.getProtocolloDMS());
if (crmInRec.getDataCreazioneSR() != null) richiestaOlo35Mn.setDataCreazioneSr(crmInRec.getDataCreazioneSR());
if (crmInRec.getIdPadre() != null) richiestaOlo35Mn.setIdPadre(crmInRec.getIdPadre());
if (crmInRec.getCausaleKO() != null) richiestaOlo35Mn.setCausaleKo(crmInRec.getCausaleKO());
if (crmInRec.getDataChiusuraCRM() != null) richiestaOlo35Mn.setDataChiusuraCrm(crmInRec.getDataChiusuraCRM());
// DBCFX_RU_190
if (crmInRec.getCodiceProgetto() != null) richiestaOlo35Mn.setCodiceProgetto(crmInRec.getCodiceProgetto());
// X02 2015
if (crmInRec instanceof GnpCrmrInRec) {
richiestaOlo35Mn.setFlagSky(((GnpCrmrInRec) crmInRec).getFlagSky());
}
richiestaOlo35Mn.setFlagVerticalizzato(crmInRec.getFlagVerticalizzato());
richiestaOlo35Mn.setRoutingNumber(crmInRec.getRoutingNumber());
return richiestaOlo35Mn;
}
private static GnpRichiesteOlo35mn creaRichiestaRientroDbssRec(GnpDbssInRec dbssInRec, String processo) {
GnpRichiesteOlo35mn richiestaOlo35Mn = new GnpRichiesteOlo35mn();
richiestaOlo35Mn.setOrderItemId(dbssInRec.getOrderItemId());
richiestaOlo35Mn.setIdRichiesta(dbssInRec.getIdRichiesta());
richiestaOlo35Mn.setIdEsigenza(dbssInRec.getIdEsigenza());
richiestaOlo35Mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo35Mn.setUniqueIdCrmIn(dbssInRec.getUniqueId());
richiestaOlo35Mn.setProcesso(processo);
richiestaOlo35Mn.setPiattaformaProvenienza(dbssInRec.getPiattaformaProvenienza());
richiestaOlo35Mn.setDaInviare((long) 1);
richiestaOlo35Mn.setIdSolution(dbssInRec.getIdSolution());
richiestaOlo35Mn.setCanaleProvenienza(dbssInRec.getCanaleProvenienza());
richiestaOlo35Mn.setNumeroTelefono(dbssInRec.getNumeroTelefono());
richiestaOlo35Mn.setCow(dbssInRec.getCow());
richiestaOlo35Mn.setNominativoCliente(dbssInRec.getNominativoCliente());
richiestaOlo35Mn.setCodiceFiscalePartitaIva(dbssInRec.getCodiceFiscalePartivaIva());
richiestaOlo35Mn.setRecapitoAlternativo(dbssInRec.getRecapitoAlternativo());
richiestaOlo35Mn.setSla(dbssInRec.getSla());
richiestaOlo35Mn.setDac(dbssInRec.getDac());
richiestaOlo35Mn.setDet(dbssInRec.getDet());
richiestaOlo35Mn.setDataOperazione(dbssInRec.getDataOperazione());
richiestaOlo35Mn.setDataRicezione(new Date());
richiestaOlo35Mn.setCos(dbssInRec.getCos());
richiestaOlo35Mn.setCos2(dbssInRec.getCos2());
richiestaOlo35Mn.setCor(dbssInRec.getCor());
richiestaOlo35Mn.setCor2(dbssInRec.getCor2());
richiestaOlo35Mn.setDn(dbssInRec.getNumeroTelefono());
richiestaOlo35Mn.setCausaleRifiuto(dbssInRec.getCausaleRifiuto());
richiestaOlo35Mn.setNumTotRichieste(countNumTotaleRichieste(dbssInRec));
richiestaOlo35Mn.setMarcaggio(dbssInRec.getCodMarcaggioCliente());
richiestaOlo35Mn.setCanaleVendita(dbssInRec.getCodCanaleVendita());
richiestaOlo35Mn.setFlagDichiarazione(dbssInRec.getFlagDichiarazione());
richiestaOlo35Mn.setIdOl(dbssInRec.getIdOl());
richiestaOlo35Mn.setCodiceOl(dbssInRec.getCodiceOl());
richiestaOlo35Mn.setCow2(dbssInRec.getCow2());
richiestaOlo35Mn.setDn1(dbssInRec.getNumeroTelefono());
if (dbssInRec.getDn2() != null) richiestaOlo35Mn.setDn2(dbssInRec.getDn2());
if (dbssInRec.getDn3() != null) richiestaOlo35Mn.setDn3(dbssInRec.getDn3());
if (dbssInRec.getDn4() != null) richiestaOlo35Mn.setDn4(dbssInRec.getDn4());
if (dbssInRec.getDn5() != null) richiestaOlo35Mn.setDn5(dbssInRec.getDn5());
if (dbssInRec.getDn6() != null) richiestaOlo35Mn.setDn6(dbssInRec.getDn6());
if (dbssInRec.getDn7() != null) richiestaOlo35Mn.setDn7(dbssInRec.getDn7());
if (dbssInRec.getDn8() != null) richiestaOlo35Mn.setDn8(dbssInRec.getDn8());
if (dbssInRec.getDn9() != null) richiestaOlo35Mn.setDn9(dbssInRec.getDn9());
if (dbssInRec.getDn10() != null) richiestaOlo35Mn.setDn10(dbssInRec.getDn10());
if (dbssInRec.getStatoDn2() != null) richiestaOlo35Mn.setStatoDn2(dbssInRec.getStatoDn2());
if (dbssInRec.getStatoDn3() != null) richiestaOlo35Mn.setStatoDn3(dbssInRec.getStatoDn3());
if (dbssInRec.getStatoDn4() != null) richiestaOlo35Mn.setStatoDn4(dbssInRec.getStatoDn4());
if (dbssInRec.getStatoDn5() != null) richiestaOlo35Mn.setStatoDn5(dbssInRec.getStatoDn5());
if (dbssInRec.getStatoDn6() != null) richiestaOlo35Mn.setStatoDn6(dbssInRec.getStatoDn6());
if (dbssInRec.getStatoDn7() != null) richiestaOlo35Mn.setStatoDn7(dbssInRec.getStatoDn7());
if (dbssInRec.getStatoDn8() != null) richiestaOlo35Mn.setStatoDn8(dbssInRec.getStatoDn8());
if (dbssInRec.getStatoDn9() != null) richiestaOlo35Mn.setStatoDn9(dbssInRec.getStatoDn9());
if (dbssInRec.getStatoDn10() != null) richiestaOlo35Mn.setStatoDn10(dbssInRec.getStatoDn10());
if (dbssInRec.getCodiceProgetto() != null) richiestaOlo35Mn.setCodiceProgetto(dbssInRec.getCodiceProgetto());
if (dbssInRec.getFlagSky() != null) richiestaOlo35Mn.setFlagSky(dbssInRec.getFlagSky());
richiestaOlo35Mn.setFlagVerticalizzato(dbssInRec.getFlagVerticalizzato());
richiestaOlo35Mn.setRoutingNumber(dbssInRec.getRoutingNumber());
return richiestaOlo35Mn;
}
public static void insertStoricoOlo35Mn(int stato_da, GnpRichiesteOlo35mn richiestaOlo35Mn) throws Exception {
GnpStoricoOlo35mnDAO storicoDAO = new GnpStoricoOlo35mnDAO();
//creo lo storico
GnpStoricoOlo35mn storico = new GnpStoricoOlo35mn();
storico.setIdRichiesta(richiestaOlo35Mn.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaOlo35Mn.getStato());
storicoDAO.save(storico);
}
private static Long countNumTotaleRichieste(AbstractGnpCrmInRec crmInRec) {
Long ris = (long) 1;
if (crmInRec.getDn2() != null && crmInRec.getStatoDN2() != null) ris++;
else return ris;
if (crmInRec.getDn3() != null && crmInRec.getStatoDN3() != null) ris++;
else return ris;
if (crmInRec.getDn4() != null && crmInRec.getStatoDN4() != null) ris++;
else return ris;
if (crmInRec.getDn5() != null && crmInRec.getStatoDN5() != null) ris++;
else return ris;
if (crmInRec.getDn6() != null && crmInRec.getStatoDN6() != null) ris++;
else return ris;
if (crmInRec.getDn7() != null && crmInRec.getStatoDN7() != null) ris++;
else return ris;
if (crmInRec.getDn8() != null && crmInRec.getStatoDN8() != null) ris++;
else return ris;
if (crmInRec.getDn9() != null && crmInRec.getStatoDN9() != null) ris++;
else return ris;
if (crmInRec.getDn10() != null && crmInRec.getStatoDN10() != null) ris++;
else return ris;
return ris;
}
private static Long countNumTotaleRichieste(GnpDbssInRec dbssInRec) {
Long ris = (long) 1;
if (dbssInRec.getDn2() != null && dbssInRec.getStatoDn2() != null) ris++;
else return ris;
if (dbssInRec.getDn3() != null && dbssInRec.getStatoDn3() != null) ris++;
else return ris;
if (dbssInRec.getDn4() != null && dbssInRec.getStatoDn4() != null) ris++;
else return ris;
if (dbssInRec.getDn5() != null && dbssInRec.getStatoDn5() != null) ris++;
else return ris;
if (dbssInRec.getDn6() != null && dbssInRec.getStatoDn6() != null) ris++;
else return ris;
if (dbssInRec.getDn7() != null && dbssInRec.getStatoDn7() != null) ris++;
else return ris;
if (dbssInRec.getDn8() != null && dbssInRec.getStatoDn8() != null) ris++;
else return ris;
if (dbssInRec.getDn9() != null && dbssInRec.getStatoDn9() != null) ris++;
else return ris;
if (dbssInRec.getDn10() != null && dbssInRec.getStatoDn10() != null) ris++;
else return ris;
return ris;
}
// Sostituito con il metodo successivo per DBCFX_RU_189 (31/07/2014)
/* public static String generateIDCorrelazione(String prefix, Long idRichiesta, int padLenght){
String val =String.valueOf(idRichiesta);
for(;val.length()<padLenght;) val = "0"+val;
return prefix + val;
}*/
public static String generateIDCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedIdCorrelazioneOLO35MN();
for (; val.length() < 8; ) val = "0" + val;
return prefixCorrelazione + val;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
* @TODO management of null ret value
*/
public static String generateIDCorrelazioneNcd(String codOlo, ProcessLogger log) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
// @TODO DBCFX_RU_262 comment out this log line at the end of testing stage
log.write("9999", "RequestManagerOlo35MN.generateIDCorrelazioneNcd("+codOlo+") returning ["+idCorr+"]");
return idCorr;
}
public static void avanzaStatoInInviataFenp(GnpRichiesteOlo35mn richiestaOlo35mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataFenp() begin");
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
try {
//int status = StateManagerOlo35MN.CheckTransition(richiestaOlo35mn.getIdRichiesta(), StatoRichiestaNPg35.INVIATA_FENP,ProcessMapper.proc_RIENTRO_NPg35);
//if (status != StateManagerOlo35MN.TRANSIZIONE_NON_POSSIBILE) {
if (statoPartenza == StatoRichiestaOlo35MN.ACQUISITA) {
GnpFenpRichiesteOut richBon = dao.getMultinumeroBonificato(richiestaOlo35mn.getDn());
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataFenp() transaction possible");
richiestaOlo35mn.setStato((long) StatoRichiestaNPg35.INVIATA_FENP);
richiestaOlo35mn.setDaInviare((long) 0);
if (richBon.getBonificato().compareTo((long) 0) == 0) {
String donor = richiestaOlo35mn.getCow2();
richiestaOlo35mn.setDac(RequestManagerOlo35MN.calcolaDac(new Date(),donor,log));
}
olo35MnDAO.merge(richiestaOlo35mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataFenp() saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataFenp() end");
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataFenp() Exception :" + ex.getMessage());
throw ex;
}
}
public static Date calcolaDac(Date dataric, String donor, ProcessLogger log) throws Exception {
log.write("9999", "START calcolaDac dataric= "+dataric + " olo="+donor);
Date ret;
ret = DacUtils.setDac(dataric, donor, log, DacUtils.dacDayforDel35Std);
log.write("9999", "Dac Calcolata = "+ret);
return ret;
}
// public static Date calcolaDac(Date dataric) throws Exception {
// Date ret;
// ret = DateUtils.aggiungiGiorniLavorativiTodate(dataric, 8);
// if (DateUtils.isFestivity(ret))
// return DateUtils.aggiungiGiorniLavorativiTodate(ret, 1);
// else
// return ret;
// }
public static boolean salvaEsito(GnpRichiesteOlo35mn richiestaOlo35mn, String DN, Long esito, ProcessLogger log) throws Exception {
log.write("9999", "salvaEsito, DN=" + DN);
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
olo35MnDAO.getSession().refresh(richiestaOlo35mn);
if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn()))
richiestaOlo35mn.setEsitoPri(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn2()))
richiestaOlo35mn.setEsitoDn2(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn3()))
richiestaOlo35mn.setEsitoDn3(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn4()))
richiestaOlo35mn.setEsitoDn4(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn5()))
richiestaOlo35mn.setEsitoDn5(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn6()))
richiestaOlo35mn.setEsitoDn6(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn7()))
richiestaOlo35mn.setEsitoDn7(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn8()))
richiestaOlo35mn.setEsitoDn8(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn9()))
richiestaOlo35mn.setEsitoDn9(esito);
else if (DN.equalsIgnoreCase(richiestaOlo35mn.getDn10()))
richiestaOlo35mn.setEsitoDn10(esito);
else
throw new Exception("ESITO DN NON CORRISPONDE A NESSUN DN DELLA RICHIESTA " + richiestaOlo35mn.getIdRichiesta());
olo35MnDAO.merge(richiestaOlo35mn);
return isLastEsito(richiestaOlo35mn);
}
private static boolean isLastEsito(GnpRichiesteOlo35mn richiestaOlo35mn) {
if ((richiestaOlo35mn.getEsitoPri() == null) ||
((richiestaOlo35mn.getEsitoDn2() == null) && (richiestaOlo35mn.getDn2() != null)) ||
((richiestaOlo35mn.getEsitoDn3() == null) && (richiestaOlo35mn.getDn3() != null)) ||
((richiestaOlo35mn.getEsitoDn4() == null) && (richiestaOlo35mn.getDn4() != null)) ||
((richiestaOlo35mn.getEsitoDn5() == null) && (richiestaOlo35mn.getDn5() != null)) ||
((richiestaOlo35mn.getEsitoDn6() == null) && (richiestaOlo35mn.getDn6() != null)) ||
((richiestaOlo35mn.getEsitoDn7() == null) && (richiestaOlo35mn.getDn7() != null)) ||
((richiestaOlo35mn.getEsitoDn8() == null) && (richiestaOlo35mn.getDn8() != null)) ||
((richiestaOlo35mn.getEsitoDn9() == null) && (richiestaOlo35mn.getDn9() != null)) ||
((richiestaOlo35mn.getEsitoDn10() == null) && (richiestaOlo35mn.getDn10() != null))
) return false;
else return true;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
public static void avanzaStatoInVerificata_fenp(GnpRichiesteOlo35mn richiestaOlo35mn, GnpFenpRichiesteIn fenpIn, ProcessLogger log) throws Exception {
final String DAC_FORMAT = "yyyy-MM-dd";
final int GIORNI_DA_AGGIUNGERE = 4;
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() begin");
try {
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
if (statoPartenza != StatoRichiestaOlo35MN.INVIATA_FENP && statoPartenza != StatoRichiestaOlo35MN.VERIFICATA_FENP) {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo35mn.getIdRichiesta()) + " con stato iniziale " + statoPartenza + " incongruente");
}
if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP && fenpIn.getEsito().intValue() > 0 && fenpIn.getCodiceMotivoRifiuto().intValue() == 20) {
richiestaOlo35mn.setStato((long) StatoRichiestaOlo35MN.ACQUISITA);
richiestaOlo35mn.setDaInviare((long) 1);
// DBCFX_RU_262 BEGIN
if(null != richiestaOlo35mn.getFlagVerticalizzato() && "Y".equals(richiestaOlo35mn.getFlagVerticalizzato())) {
// formato <OLO><YY><nnnnn> in NCD
// @TODO DBCFX_RU_262 verificare CHI e' il codice OLO qui
// Inglisa/Regano: utilizzare lacronimo TIM / codice che DBCFX invia nel campo “COD_OP_RECIPIENT” del TR1
richiestaOlo35mn.setIdCorrelazione(generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM, log));
//richiestaOlo35mn.setIdCorrelazione(generateIDCorrelazioneNcd(richiestaOlo35Mn.getCodiceOl(), log));
} else {
// Gestione invariata in VCD
// DBCFX_RU_189 (31.07.2014): Rigenero l'ID_CORRELAZIONE a fronte di un KO=20
richiestaOlo35mn.setIdCorrelazione(generateIDCorrelazione());
}
// DBCFX_RU_262 END
olo35MnDAO.merge(richiestaOlo35mn);
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, E2EFormatController.EVENTO_SUPERATA_SOGLIA, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
} else if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP && fenpIn.getEsito().intValue() == 0) {
// calcolo del silenzio assenso
Date silenzioAssenso = DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(new Date(), GIORNI_DA_AGGIUNGERE, 19, 30, 0);
richiestaOlo35mn.setDataSilenzioAssenso(silenzioAssenso);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() set data silenzio/assenso" + silenzioAssenso.toString());
richiestaOlo35mn.setStato((long) StatoRichiestaOlo35MN.VERIFICATA_FENP);
olo35MnDAO.merge(richiestaOlo35mn);
// Il passaggio di stato e le notifiche vengono effettuate solamente se il DN e' il primario
if (fenpIn.getDn().equalsIgnoreCase(richiestaOlo35mn.getDn())) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp(). DN Primario.");
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo35mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(new Date(),richiestaOlo35mn, DBSSMap.NOTIFICA_VALIDATAFENP, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() notificata a DBSS");
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo35mn, CRMMap.NOTIFICA_VALIDATAFENP, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() notificata a CRM");
}
// X01 2014
if (CRMMap.PIATTAFORMA_B.equals(richiestaOlo35mn.getPiattaformaProvenienza())) {
GnpFenpRichiesteInDAO fenpInDao = new GnpFenpRichiesteInDAO();
List resultRichieste = fenpInDao.findRifiutiFENPEsito20(richiestaOlo35mn.getIdRichiesta());
if (resultRichieste != null && resultRichieste.size() == 0) {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo35mn, CRMMap.NOTIFICA_TIPOCOMM1, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() notificata a CRMB, TIPOCOMM1");
} else {
// esiste almeno un riciclo per la richiesta con codiceRifiuto = 20 (sup. capacita' evasione)
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo35mn, CRMMap.NOTIFICA_TIPOCOMM2, fenpIn.getDn()); // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() notificata a CRMB, TIPOCOMM2");
}
}
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, new Date());
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
}
}
//if (salvaEsito(richiestaOlo35mn, DN,new Long(0),log))
// avanzaStatoInAccettata(richiestaOlo35mn, log);
salvaEsito(richiestaOlo35mn, fenpIn.getDn(), (long) 0, log); // 2018_C08 DirectoryNumber DONE NO-OP va fatto su tutti i numeri
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() Exception :" + ex.getMessage());
throw ex;
}
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInVerificata_fenp() end");
}
/**
* @version 3.1 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (+ anomalia Paola Scipioni)
* agganciato a R1C-17-1441 Cessazione con Rientro NCD
* - F00 Scipioni la motivazione sta solo sul principale ma deve stare su tutti
* - F01 Eliminare blocco invio a ToolKO delle notifiche KO su aggiuntivi
* - F02 Eliminare invio a FENP degli annullamenti su aggiuntivi per KO sul principale
*/
public static void avanzaStatoInRifiutata_fenp(Date dateRichiesta,GnpRichiesteOlo35mn richiestaOlo35mn, String DN, Long motivoRifiuto, ProcessLogger log) throws Exception {
String methSig = "[RequestManagerOlo35MN].[avanzaStatoInRifiutata_fenp] DN ["+DN+"], motivoRifiuto ["+motivoRifiuto+"] ";
log.write("9999", methSig + "begin");
try {
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"] check");
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.INVIATA_FENP || statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP) {
richiestaOlo35mn.setStato((long) StatoRichiestaOlo35MN.RIFIUTATA_FENP);
richiestaOlo35mn.setCodiceMotivoRifiutoFenp(motivoRifiuto);
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) BEGIN
// - F00 Scipioni la motivazione sta solo sul principale ma deve stare su tutti gli aggiuntivi
// la if-else a catena scrive solo su uno ma deve scrivere su ogni singolo valorizzato
/*
if (richiestaOlo35mn.getDn1().equals(DN)) {
richiestaOlo35mn.setEsitoPri(motivoRifiuto);
} else if (richiestaOlo35mn.getDn2().equals(DN)) {
richiestaOlo35mn.setEsitoDn2(motivoRifiuto);
} else if (richiestaOlo35mn.getDn3().equals(DN)) {
richiestaOlo35mn.setEsitoDn3(motivoRifiuto);
} else if (richiestaOlo35mn.getDn4().equals(DN)) {
richiestaOlo35mn.setEsitoDn4(motivoRifiuto);
} else if (richiestaOlo35mn.getDn5().equals(DN)) {
richiestaOlo35mn.setEsitoDn5(motivoRifiuto);
} else if (richiestaOlo35mn.getDn6().equals(DN)) {
richiestaOlo35mn.setEsitoDn6(motivoRifiuto);
} else if(richiestaOlo35mn.getDn7().equals(DN)) {
richiestaOlo35mn.setEsitoDn7(motivoRifiuto);
} else if (richiestaOlo35mn.getDn8().equals(DN)) {
richiestaOlo35mn.setEsitoDn8(motivoRifiuto);
} else if (richiestaOlo35mn.getDn9().equals(DN)) {
richiestaOlo35mn.setEsitoDn9(motivoRifiuto);
} else if (richiestaOlo35mn.getDn10().equals(DN)) {
richiestaOlo35mn.setEsitoDn10(motivoRifiuto);
}
*/
StringBuffer sb = new StringBuffer(0);
if( DN.equals(richiestaOlo35mn.getDn1()) ||
DN.equals(richiestaOlo35mn.getDn2()) ||
DN.equals(richiestaOlo35mn.getDn3()) ||
DN.equals(richiestaOlo35mn.getDn4()) ||
DN.equals(richiestaOlo35mn.getDn5()) ||
DN.equals(richiestaOlo35mn.getDn6()) ||
DN.equals(richiestaOlo35mn.getDn7()) ||
DN.equals(richiestaOlo35mn.getDn8()) ||
DN.equals(richiestaOlo35mn.getDn9()) ||
DN.equals(richiestaOlo35mn.getDn10())
) {
if(null != richiestaOlo35mn.getDn1()) { richiestaOlo35mn.setEsitoPri(motivoRifiuto); sb.append("[1]"); }
if(null != richiestaOlo35mn.getDn2()) { richiestaOlo35mn.setEsitoDn2(motivoRifiuto); sb.append("[2]"); }
if(null != richiestaOlo35mn.getDn3()) { richiestaOlo35mn.setEsitoDn3(motivoRifiuto); sb.append("[3]"); }
if(null != richiestaOlo35mn.getDn4()) { richiestaOlo35mn.setEsitoDn4(motivoRifiuto); sb.append("[4]"); }
if(null != richiestaOlo35mn.getDn5()) { richiestaOlo35mn.setEsitoDn5(motivoRifiuto); sb.append("[5]"); }
if(null != richiestaOlo35mn.getDn6()) { richiestaOlo35mn.setEsitoDn6(motivoRifiuto); sb.append("[6]"); }
if(null != richiestaOlo35mn.getDn7()) { richiestaOlo35mn.setEsitoDn7(motivoRifiuto); sb.append("[7]"); }
if(null != richiestaOlo35mn.getDn8()) { richiestaOlo35mn.setEsitoDn8(motivoRifiuto); sb.append("[8]"); }
if(null != richiestaOlo35mn.getDn9()) { richiestaOlo35mn.setEsitoDn9(motivoRifiuto); sb.append("[9]"); }
if(null != richiestaOlo35mn.getDn10()){ richiestaOlo35mn.setEsitoDn10(motivoRifiuto); sb.append("[10]"); }
}
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"], set motivoRifiuto on aggiuntivi: ["+sb.toString()+"]");
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) END
olo35MnDAO.merge(richiestaOlo35mn);
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"], saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo35mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(dateRichiesta,richiestaOlo35mn, DBSSMap.NOTIFICA_ACCETTAZIONE_KO, richiestaOlo35mn.getNumeroTelefono());
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"] notificata [ACCETTAZIONE_KO] a DBSS");
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo35mn, CRMMap.NOTIFICA_RIFIUTATAPITAGORA, richiestaOlo35mn.getNumeroTelefono());
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"] notificata [RIFIUTATAPITAGORA] a CRM");
}
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) BEGIN
// - F02 Eliminare invio a FENP degli annullamenti su aggiuntivi per KO sul principale
// commentare questa chiamata, non va fatta MAI
// perche' il metodo notifica i soli aggiuntivi (dnx != DN)
//inviaNotificaAnnullamentoFENP(richiestaOlo35mn, DN, log);
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) END
// 2018_C04 Del.35 questo era gia' commentato e resta tale
//insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) BEGIN
// - F01 Eliminare blocco invio a ToolKO delle notifiche KO su aggiuntivi
// togliere la if intorno, questa chiamata va fatta SEMPRE
// SOPRASSIEDE LA PRECEDENTE MOTIVAZIONE QUI RIPORTATA:
// ---> Notifica DBCFXGO solo se e' il numero principale (altrimenti se
// ---> arrivano piu' rifiuti inviamo troppe notifiche al Tool KO)
//if (richiestaOlo35mn.getNumeroTelefono().equals(DN)) {
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
//}
// 2018_C04 Del.35 Mancanza Tipo KO su aggiuntivo (Paola Scipioni) END
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"] end");
} else {
log.write("9999", methSig + "Rich. ID ["+richiestaOlo35mn.getIdRichiesta()+"], NumTel ["+richiestaOlo35mn.getNumeroTelefono()+"] KO - scartata per stato incompatibile ["+statoPartenza+"]");
}
} catch (Exception ex) {
log.write("9999", methSig + "FAIL - ["+ex.getClass().getName()+"] " + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInAccettata(GnpRichiesteOlo35mn richiestaOlo35mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAccettata() begin");
try {
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP) {
richiestaOlo35mn.setStato((long) StatoRichiestaOlo35MN.ACETTATA);
olo35MnDAO.merge(richiestaOlo35mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAccettata() saved");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
} else {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo35mn.getIdRichiesta())
+ " con stato iniziale " + statoPartenza + " incongruente");
}
if (DBSSMap.PIATTAFORMA_DBSS.equals(richiestaOlo35mn.getPiattaformaProvenienza())) {
DBSSController dbssController = DBSSController.getInstance();
dbssController.notificaDbss(new Date(),richiestaOlo35mn, DBSSMap.NOTIFICA_ACCETTAZIONE_OLO, richiestaOlo35mn.getNumeroTelefono());
} else {
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaOlo35mn.getPiattaformaProvenienza());
crmController.notificaCRM(richiestaOlo35mn, CRMMap.NOTIFICA_ACCETTAZIONE_OLO, richiestaOlo35mn.getNumeroTelefono());
}
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAccettata() notificata a CRM");
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAccettata() Exception :" + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInEspletata(GnpRichiesteOlo35mn richiestaOlo35mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInEspletata() begin");
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
try {
int status = StateManagerNPg35.CheckTransition(richiestaOlo35mn.getIdRichiesta(), StatoRichiestaOlo35MN.ESPLETATA, richiestaOlo35mn.getProcesso());
if (status != StateManagerNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiestaOlo35mn.setStato((long) StatoRichiestaNPg35.ESPLETATA);
olo35MnDAO.merge(richiestaOlo35mn);
log.write("0008", richiestaOlo35mn.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaOlo35MN.getStatoDescr(statoPartenza) + " IN ESPLETATA");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
} else {
throw new Exception("Richiesta " + String.valueOf(richiestaOlo35mn.getIdRichiesta())
+ " con stato iniziale " + statoPartenza + " incongruente");
}
} catch (Exception ex) {
throw ex;
}
}
private static void inviaNotificaAnnullamentoFENP(GnpRichiesteOlo35mn richiestaOlo35mn, String DN, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.inviaNoticaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
if (!DN.equals(richiestaOlo35mn.getDn1()))
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn1());
if (!DN.equals(richiestaOlo35mn.getDn2()) && richiestaOlo35mn.getStatoDn2() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn2());
if (!DN.equals(richiestaOlo35mn.getDn3()) && richiestaOlo35mn.getStatoDn3() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn3());
if (!DN.equals(richiestaOlo35mn.getDn4()) && richiestaOlo35mn.getStatoDn4() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn4());
if (!DN.equals(richiestaOlo35mn.getDn5()) && richiestaOlo35mn.getStatoDn5() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn5());
if (!DN.equals(richiestaOlo35mn.getDn6()) && richiestaOlo35mn.getStatoDn6() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn6());
if (!DN.equals(richiestaOlo35mn.getDn7()) && richiestaOlo35mn.getStatoDn7() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn7());
if (!DN.equals(richiestaOlo35mn.getDn8()) && richiestaOlo35mn.getStatoDn8() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn8());
if (!DN.equals(richiestaOlo35mn.getDn9()) && richiestaOlo35mn.getStatoDn9() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn9());
if (!DN.equals(richiestaOlo35mn.getDn10()) && richiestaOlo35mn.getStatoDn10() != null)
oloControllerFenp.notificaEvento(richiestaOlo35mn, PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiestaOlo35mn.getDn10());
log.write("9999", "RequestManagerOlo35MN.inviaNoticaAnnullamentoFENP() end");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
}
public static void avanzaStatoInInviataCRM(GnpRichiesteOlo35mn richiestaOlo35mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInEspletata() begin");
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
try {
int status = StateManagerNPg35.CheckTransition(richiestaOlo35mn.getIdRichiesta(), StatoRichiestaOlo35MN.INVIATA_CRM, richiestaOlo35mn.getProcesso());
if (status != StateManagerNPg35.TRANSIZIONE_NON_POSSIBILE) {
richiestaOlo35mn.setStato((long) StatoRichiestaNPg35.INVIATA_CRM);
olo35MnDAO.merge(richiestaOlo35mn);
log.write("0008", richiestaOlo35mn.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaOlo35MN.getStatoDescr(statoPartenza) + " IN INVIATA_CRM");
E2EContoller.getInstance().notificaVariazioneStato(richiestaOlo35mn, null, null);
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
// Notifica DBCFXGO
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInInviataCRM() Exception :" + ex.getMessage());
throw ex;
}
}
public static void avanzaStatoInAnnullata(GnpRichiesteOlo35mn richiestaOlo35mn, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAnnullata() begin");
try {
int statoPartenza = richiestaOlo35mn.getStato().intValue();
GnpRichiesteOlo35mnDAO olo35MnDAO = new GnpRichiesteOlo35mnDAO();
if (statoPartenza == StatoRichiestaOlo35MN.VERIFICATA_FENP || statoPartenza == StatoRichiestaOlo35MN.ACETTATA ||
statoPartenza == StatoRichiestaOlo35MN.INVIATA_CRM ) {
richiestaOlo35mn.setStato((long) StatoRichiestaOlo35MN.ANNULLATA);
olo35MnDAO.merge(richiestaOlo35mn);
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAnnullata() richiestaOlo35mn saved");
insertStoricoOlo35Mn(statoPartenza, richiestaOlo35mn);
if (richiestaOlo35mn.getDn1() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn1(), log);
if (richiestaOlo35mn.getDn2() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn2(), log);
if (richiestaOlo35mn.getDn3() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn3(), log);
if (richiestaOlo35mn.getDn4() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn4(), log);
if (richiestaOlo35mn.getDn5() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn5(), log);
if (richiestaOlo35mn.getDn6() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn6(), log);
if (richiestaOlo35mn.getDn7() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn7(), log);
if (richiestaOlo35mn.getDn8() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn8(), log);
if (richiestaOlo35mn.getDn9() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn9(), log);
if (richiestaOlo35mn.getDn10() != null) inviaNotificaAnnullamentoFENP(richiestaOlo35mn, richiestaOlo35mn.getDn10(), log);
DbcfxgoController.getInstance().notificaVariazioneStatoOlo35Mn(richiestaOlo35mn);
} else {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInAnnullata() - ANNULLAMENTO scartato - la richiesta si trovava nello stato: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerOlo35MN.avanzaStatoInRifiutata_fenp() Exception :" + ex.getMessage());
throw ex;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,701 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.UtilityDao;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmbVoip103InRec;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmbVoip103InRecListadn;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.crm.CRMBVOIP103Controller;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.systemcontroller.formatcontroller.monitoraggio.E2EFormatController;
import it.valueteam.gnp.systemcontroller.monitoraggio.E2EContoller;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.Func;
import it.valueteam.gnp.utility.StateManagerVOIP35;
import it.valueteam.gnp.utility.UserTransactionUtility;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import javax.transaction.UserTransaction;
import java.util.*;
/**
* @version 2.0 C10_2017 R2F-17-0644 Adeguamento I/F tra CRMB/INFOBUS/DBCFX per gestire i rientri in Del.35 VOIP
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
*/
public class RequestManagerVOIP103 {
public static final String TYPE_SINGOLO_FONIA = "XA";
public static final String TYPE_PRIMARIO_BMU = "XB";
public static final String TYPE_GNR_EX_TI = "XC";
public static final String TYPE_NATIVO_OLO = "XD";
public static final String TYPE_GNR_NATIVO_OLO = "XE";
public static final String TYPE_AGGIUNTIVO_BMU = "XF";
public RequestManagerVOIP103() {
}
public static boolean isNativoOlo(GnpRichiesteVoip103Listadn rich) {
return (rich.getClassificazione().equalsIgnoreCase(TYPE_NATIVO_OLO) || rich.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO));
}
public static boolean isNativoTlc(GnpRichiesteVoip103Listadn rich) {
return !isNativoOlo(rich);
}
public static boolean isAllDonorKO(GnpRichiesteVoip103 rich) {
boolean isAllKo = true;
HashMap<String, Boolean> donorsKO = new HashMap<String, Boolean>();
for (GnpRichiesteVoip103Listadn dn : rich.getGnpRichiesteVoip103Listadns()) {
if (dn.getCodiceMotivoRifiutoFenp() != null) {
donorsKO.put(dn.getDonor(), true);
} else {
// controllo se esiste la chiave, altrimenti la inizializzo a FALSE
if (donorsKO.get(dn.getDonor()) == null) {
donorsKO.put(dn.getDonor(), false);
}
}
}
// Ciclo la mappa, se trovo un false esco dal ciclo e quindi dal metodo con false
for (Map.Entry<String, Boolean> entry : donorsKO.entrySet()) {
if (!entry.getValue()) {
isAllKo = false;
break;
}
}
return isAllKo;
}
public static boolean isMultiDonor(GnpRichiesteVoip103 rich) {
boolean isMultiDonor = false;
HashSet donors = new HashSet();
for (GnpRichiesteVoip103Listadn richiesteVoip103Listadn : rich.getGnpRichiesteVoip103Listadns()) {
donors.add(richiesteVoip103Listadn.getDonor());
if (donors.size() >= 2) {
isMultiDonor = true;
break;
}
}
return isMultiDonor;
}
/**
* avanzaStatoInAcquisita
*
* @param crmInRec GnpCrmInRec
* @param processo
* @param log ProcessLogger
*/
public static void avanzaStatoInAcquisita(GnpCrmbVoip103InRec crmInRec, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAcquisita() begin - id richiesta: " + crmInRec.getIdRichiesta());
GnpRichiesteVoip103 richiestaVoip103 = null;
GnpRichiesteVoip103Listadn voip103Listadn = null;
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
// Creao la richiesta VOIP103 partendo da quella pervenuta da CRMB
richiestaVoip103 = creaRichiestaVoip103(crmInRec, log);
voip103DAO.save(richiestaVoip103);
// Dalla LISTA_DN, estrarre informazioni NUM_TOT_RICHIESTE
richiestaVoip103.setNumTotRichieste( (long)richiestaVoip103.getGnpRichiesteVoip103Listadns().size() );
voip103DAO.save(richiestaVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip103, E2EFormatController.EVENTO_RIENTRO, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiestaVoip103);
insertStoricoVOIP103(StateManagerVOIP35.RICHIESTA_NON_PRESENTE, richiestaVoip103);
// Inserisce l'ID_RICHIESTA nella GNP_CRMB_VOIP103_IN_REC
impostaIdRichiestaCrmbIn(crmInRec, richiestaVoip103.getIdRichiesta());
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAcquisita() creata la richiesta " + richiestaVoip103.getIdRichiesta());
}
private static void insertStoricoVOIP103(int stato_da, GnpRichiesteVoip103 richiestaVoip103) {
GnpStoricoVoip103DAO storicoDAO = new GnpStoricoVoip103DAO();
//creo lo storico
GnpStoricoVoip103 storico = new GnpStoricoVoip103();
storico.setIdRichiesta(richiestaVoip103.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaVoip103.getStato());
storicoDAO.save(storico);
}
private static void impostaIdRichiestaCrmbIn(GnpCrmbVoip103InRec crmInRec, Long idRichiesta) {
System.out.println("RequestManagerVOIP103.impostaIdRichiestaCrmbIn - idrichiesta: " + idRichiesta);
crmInRec.setIdRichiesta(idRichiesta);
Set<GnpCrmbVoip103InRecListadn> lista = null;
if (crmInRec != null) lista = crmInRec.getGnpCrmbVoip103InRecListadns();
if (lista != null) {
Iterator<GnpCrmbVoip103InRecListadn> it = lista.iterator();
while (it.hasNext()) {
GnpCrmbVoip103InRecListadn k = it.next();
String classificazione = k.getClassificazione();
String numTel = k.getNumTel();
String donor = k.getDonor();
String primario = k.getPrimario();
String radicale = k.getRadicale();
Long idR = k.getIdRichiesta();
System.out.println("id richiesta passato: " + idRichiesta + " - idRichiesta da lista: " + idR + " - classificazione: " + classificazione
+ " - donor: " + donor + " - numTel: " + numTel + " - primario: " + primario + " - radicale " + radicale);
}
}
for (GnpCrmbVoip103InRecListadn gnpCrmbVoip103InRecListadn : crmInRec.getGnpCrmbVoip103InRecListadns()) {
gnpCrmbVoip103InRecListadn.setIdRichiesta(idRichiesta);
}
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
private static GnpRichiesteVoip103 creaRichiestaVoip103(GnpCrmbVoip103InRec crmInRec, ProcessLogger log) throws Exception {
GnpRichiesteVoip103 richiestaVoip103 = new GnpRichiesteVoip103();
richiestaVoip103.setIdRichiesta(crmInRec.getIdRichiesta());
richiestaVoip103.setDaInviare((long) 1);
richiestaVoip103.setIdEsigenza(crmInRec.getIdEsigenza());
richiestaVoip103.setDataRicezione(new Date());
richiestaVoip103.setPiattaformaProvenienza(crmInRec.getPiattaformaProvenienza());
richiestaVoip103.setCow(crmInRec.getCow());
richiestaVoip103.setNominativoCliente(crmInRec.getNominativoCliente());
richiestaVoip103.setCodiceFiscalePartitaIva(crmInRec.getCodiceFiscalePartivaIva());
richiestaVoip103.setRecapitoAlternativo(crmInRec.getRecapitoAlternativo());
richiestaVoip103.setDac(crmInRec.getDac());
richiestaVoip103.setRnb(crmInRec.getRnb());
richiestaVoip103.setDataOperazione(crmInRec.getDataOperazione());
richiestaVoip103.setCodMarcaggioCliente(crmInRec.getCodMarcaggioCliente());
richiestaVoip103.setCodCanaleVendita(crmInRec.getCodCanaleVendita());
richiestaVoip103.setIdOlFittizio(crmInRec.getIdOlFittizio());
richiestaVoip103.setFlagConsip(crmInRec.getFlagConsip());
richiestaVoip103.setCodiceProgetto(crmInRec.getCodiceProgetto());
richiestaVoip103.setModuloCc(crmInRec.getModuloCc());
richiestaVoip103.setModuloPartner(crmInRec.getModuloPartner());
richiestaVoip103.setProtocolloDms(crmInRec.getProtocolloDms());
richiestaVoip103.setDataCreazioneSr(crmInRec.getDataCreazioneSr());
richiestaVoip103.setIdPadre(crmInRec.getIdPadre());
richiestaVoip103.setCausaleKoPdc(crmInRec.getCausaleKoPdc());
richiestaVoip103.setDataChiusuraSr(crmInRec.getDataChiusuraSr());
richiestaVoip103.setStato((long) StatoRichiestaVOIP35.ACQUISITA);
richiestaVoip103.setFlagGnr("N"); // DEFAULT VALUE
//richiestaVoip103.setFlagVerticalizzato("N");
/*
C10_2017 R2F-17-0644 Adeguamento I/F tra CRMB/INFOBUS/DBCFX per gestire i rientri in Del.103 VOIP
*/
if (Func.isNull(crmInRec.getFlagVerticalizzato())) {
richiestaVoip103.setFlagVerticalizzato("N");
} else {
richiestaVoip103.setFlagVerticalizzato(crmInRec.getFlagVerticalizzato());
}
richiestaVoip103.setRoutingNumber(crmInRec.getRoutingNumber());
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() getting lista DN");
Set<GnpCrmbVoip103InRecListadn> listaDn = crmInRec.getGnpCrmbVoip103InRecListadns();
boolean existGNR = false;
HashMap<String, CodCorrelazione> codCorrs = new HashMap<String, CodCorrelazione>();
HashMap<String, SubCorrelazione> subCorrs = new HashMap<String, SubCorrelazione>();
for (GnpCrmbVoip103InRecListadn dnIn : listaDn) {
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() id richiesta: " + dnIn.getIdRichiesta());
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() classificazione: " + dnIn.getClassificazione());
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() num tel: " + dnIn.getNumTel());
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() primario: " + dnIn.getPrimario());
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() radicale: " + dnIn.getRadicale());
GnpRichiesteVoip103Listadn richiesteVoip103Listadn = new GnpRichiesteVoip103Listadn();
richiesteVoip103Listadn.setGnpRichiesteVoip103(richiestaVoip103);
richiesteVoip103Listadn.setNumTel(dnIn.getNumTel());
richiesteVoip103Listadn.setClassificazione(dnIn.getClassificazione());
richiesteVoip103Listadn.setDonor(dnIn.getDonor());
richiesteVoip103Listadn.setPrimario(dnIn.getPrimario());
richiesteVoip103Listadn.setRadicale(dnIn.getRadicale());
richiesteVoip103Listadn.setDaInviare((long)1);
richiesteVoip103Listadn.setNumInviiFenp((long)0);
// Preimposto i valori a zero
richiesteVoip103Listadn.setNumTotRichieste( (long)0);
richiesteVoip103Listadn.setNumSubRichieste( (long)0);
// Generazione codCorrelazione in base al donor
CodCorrelazione codCorr = codCorrs.get(dnIn.getDonor());
if (codCorr == null) {
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() codCorr nullo, instantiating");
codCorr = new CodCorrelazione();
// Modifica id correlazione cod correlazione per sbavaglia cesare
// DBCFX_RU_262 BEGIN
if((null != richiestaVoip103.getFlagVerticalizzato() && "Y".equals(richiestaVoip103.getFlagVerticalizzato()))
|| (RequestManagerVOIP103.isNativoTlc(richiesteVoip103Listadn))) {
/* Inserito l'or (RequestManagerVOIP103.isNativoTlc(richiesteVoip103Listadn)), questo perchè adesso le richieste
Native telecom vanno inviate tutte in NCD dunque il cod correlazione dovrà essere quello della NCD
DBCFX_SM_534
*/
// formato <OLO><YY><nnnnn> in NCD
// Inglisa/Regano: utilizzare l'acronimo TIM / codice che DBCFX invia nel campo COD_OP_RECIPIENT del TR1
String corrNCD = generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM);
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - RU_262 - id correlazione ncd: " + corrNCD);
codCorr.setCodCorrelazione(corrNCD);
//codCorr.setCodCorrelazione(generateIDCorrelazioneNcd(dnIn.getDonor()));
} else {
// Gestione invariata in VCD
String corrVCD = generateCodCorrelazione();
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - id correlazione vcd: " + corrVCD);
codCorr.setCodCorrelazione(corrVCD);
}
// DBCFX_RU_262 END
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() putting " + dnIn.getDonor() + " - " + codCorr.getCodCorrelazione());
codCorr.setNumRichieste(1);
codCorrs.put(dnIn.getDonor(), codCorr);
} else {
codCorr.setNumRichieste( codCorr.getNumRichieste()+1 );
log.write("9999", " RequestManagerVOIP103.creaRichiestaVoip103() putting " + codCorr.getNumRichieste()+1);
}
// DBCFX_RU_262 BEGIN
// Non inviare SubCorrelazione in NCD
// Gestione invariata in VCD
// Generazione subCorrelazione in base ai primari (XB) (il numero e' in numTel)
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() classificazione " + dnIn.getClassificazione() + " - FLAG VERT " + richiestaVoip103.getFlagVerticalizzato());
if (TYPE_PRIMARIO_BMU.equalsIgnoreCase(dnIn.getClassificazione()) && !"Y".equals(richiestaVoip103.getFlagVerticalizzato())
&& RequestManagerVOIP103.isNativoOlo(richiesteVoip103Listadn)) {
/* Inserito l'AND && RequestManagerVOIP103.isNativoOlo(richiesteVoip103Listadn), questo perchè adesso le richieste
Native telecom vanno inviate tutte in NCD dunque la SUB correlazione non dovrà essere inviata
DBCFX_SM_534
*/
//if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_PRIMARIO_BMU)) {
// DBCFX_RU_262 END
SubCorrelazione sub = subCorrs.get( dnIn.getNumTel() );
if (sub != null) {
// aggiorno il numero richieste
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - sub dn primario: " + sub.getDnPrimario()
+ " - sub subcorrelazione: " + sub.getSubCorrelazione() + " - sub num richieste: " + sub.getNumRichieste());
sub.setNumRichieste( sub.getNumRichieste()+1 );
} else {
log.write("9999", " RequestManagerVOIP103.creaRichiestaVoip103() !XB OR FLAG VER == Y");
String dnPrimario = dnIn.getNumTel();
String subCorrelazione = generateSubCorrelazione();
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - RU_262 - sub dn primario: " + dnPrimario
+ " - sub subcorrelazione: " + subCorrelazione);
sub = new SubCorrelazione();
sub.setDnPrimario( dnPrimario );
sub.setSubCorrelazione(subCorrelazione);
sub.setNumRichieste(1);
subCorrs.put( dnIn.getNumTel(), sub);
}
}
// DBCFX_RU_262 BEGIN
// Non inviare SubCorrelazione in NCD
// Gestione invariata in VCD
// Generazione subCorrelazione in base ai secondari (XF) (il numero e' nel primario)
if (TYPE_AGGIUNTIVO_BMU.equalsIgnoreCase(dnIn.getClassificazione()) && !"Y".equals(richiestaVoip103.getFlagVerticalizzato())
&& RequestManagerVOIP103.isNativoOlo(richiesteVoip103Listadn)) {
//if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_AGGIUNTIVO_BMU)) {
// DBCFX_RU_262 END
SubCorrelazione sub = subCorrs.get( dnIn.getPrimario() );
if (sub != null) {
// aggiorno il numero richieste
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - aggiorno num richieste");
sub.setNumRichieste( sub.getNumRichieste()+1 );
} else {
sub = new SubCorrelazione();
sub.setDnPrimario( dnIn.getPrimario() );
String subCorr = generateSubCorrelazione();
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - sub corr: " + subCorr);
sub.setSubCorrelazione(subCorr);
sub.setNumRichieste(1);
subCorrs.put( dnIn.getPrimario(), sub);
}
}
if (!existGNR) {
if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
dnIn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO)) {
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() setto flag gnr = Y");
richiestaVoip103.setFlagGnr("Y");
existGNR = true;
}
}
richiestaVoip103.getGnpRichiesteVoip103Listadns().add(richiesteVoip103Listadn);
}
// Riciclo i dn per aggionare le correlazioni
log.write("9999", "RequestManagerVOIP103.creaRichiestaVoip103() - aggiorno correlazioni");
for (GnpRichiesteVoip103Listadn voip103Listadn : richiestaVoip103.getGnpRichiesteVoip103Listadns()) {
CodCorrelazione cod = codCorrs.get(voip103Listadn.getDonor());
voip103Listadn.setIdCorrelazione( cod.getCodCorrelazione() );
voip103Listadn.setNumTotRichieste( cod.getNumRichieste() );
// Anomalia su DBCFX_RU_262 BEGIN
// Questo da' errore in NCD perche' non vengono generate le mappe
// Quindi lasciamo questa gestione invariata solo in VCD
log.write("9999", " RequestManagerVOIP103.creaRichiestaVoip103() class " + voip103Listadn.getClassificazione() + " - FLAG VERT " + richiestaVoip103.getFlagVerticalizzato());
if (voip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_PRIMARIO_BMU) && !"Y".equals(richiestaVoip103.getFlagVerticalizzato())
&& RequestManagerVOIP103.isNativoOlo(voip103Listadn)) {
SubCorrelazione sub = subCorrs.get(voip103Listadn.getNumTel());
voip103Listadn.setSubCorrelazione( sub.getSubCorrelazione() );
voip103Listadn.setNumSubRichieste( sub.getNumRichieste() );
}
// Anomalia su DBCFX_RU_262 BEGIN
// Questo da' errore in NCD perche' non vengono generate le mappe
// Quindi lasciamo questa gestione invariata solo in VCD
if (voip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_AGGIUNTIVO_BMU) && !"Y".equals(richiestaVoip103.getFlagVerticalizzato())
&& RequestManagerVOIP103.isNativoOlo(voip103Listadn)) {
SubCorrelazione sub = subCorrs.get(voip103Listadn.getPrimario());
voip103Listadn.setSubCorrelazione( sub.getSubCorrelazione() );
voip103Listadn.setNumSubRichieste( sub.getNumRichieste() );
}
// Anomalia su DBCFX_RU_262 END
}
return richiestaVoip103;
}
/**
* Richiamato da OLOControllerFENP_VOIP103 --> VOIP103Out
**/
public static void avanzaStatoInInviataFenp(GnpRichiesteVoip103 richiestaVoip103, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInInviataFenp() - id richiesta" + richiestaVoip103.getIdRichiesta());
int statoPartenza = richiestaVoip103.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip103.getIdRichiesta(), StatoRichiestaVOIP35.INVIATA_FENP, ProcessMapper.proc_RIENTRO_VOIP103);
// Se posso eseguire la transizione di stato e sono in ACQUISITA
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE && statoPartenza == StatoRichiestaVOIP35.ACQUISITA) {
richiestaVoip103.setStato((long) StatoRichiestaVOIP35.INVIATA_FENP);
richiestaVoip103.setDaInviare((long) 0);
voip103DAO.merge(richiestaVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip103, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiestaVoip103);
log.write("0008", richiestaVoip103.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza) + " IN INVIATA_FENP");
insertStoricoVOIP103(statoPartenza, richiestaVoip103);
}
} catch (Exception ex) {
throw ex;
}
}
public static void avanzaStatoInEspletata(GnpRichiesteVoip103 richiestaVoip103, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInEspletata() - id richiesta" + richiestaVoip103.getIdRichiesta());
int statoPartenza = richiestaVoip103.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip103.getIdRichiesta(), StatoRichiestaVOIP35.ESPLETATA, ProcessMapper.proc_RIENTRO_VOIP103);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richiestaVoip103.setStato((long) StatoRichiestaNPg35.ESPLETATA);
voip103DAO.merge(richiestaVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip103, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiestaVoip103);
log.write("0008", richiestaVoip103.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoVOIP103(statoPartenza, richiestaVoip103);
}
} catch (Exception ex) {
throw ex;
}
}
public static void avanzaStatoInAccettata(GnpRichiesteVoip103 richVoip103, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAccettata() - id richiesta" + richVoip103.getIdRichiesta());
int statoPartenza = richVoip103.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richVoip103.getIdRichiesta(), StatoRichiestaVOIP35.ACCETTATA, ProcessMapper.proc_RIENTRO_VOIP103);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richVoip103.setStato((long) StatoRichiestaVOIP35.ACCETTATA);
voip103DAO.merge(richVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richVoip103, null, null);
insertStoricoVOIP103(statoPartenza, richVoip103);
CRMBVOIP103Controller crmController = CRMBVOIP103Controller.getInstance();
crmController.notificaCRM(richVoip103, CRMMap.NOTIFICA_ACCETTAZIONE_OLO);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richVoip103);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richVoip103.getIdRichiesta()
+ " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO ACCETTATA");
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009", richVoip103.getIdRichiesta() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza)
+ " IN STATO ACCETTATA : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInVerificata_fenp(GnpRichiesteVoip103 richVoip103, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInVerificata_fenp() - id richiesta" + richVoip103.getIdRichiesta());
int statoPartenza = richVoip103.getStato().intValue();
GnpRichiesteVoip103DAO recGnpVoip103DAO = new GnpRichiesteVoip103DAO();
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP || statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP) {
//nuova logica DFSA per D103
GnpFenpRichiesteOutStoricoDAO fenpRichiesteOutStoricoDAO = new GnpFenpRichiesteOutStoricoDAO();
GnpFenpRichiesteOutStorico story = fenpRichiesteOutStoricoDAO.findByIdRichiesta(richVoip103.getIdRichiesta());
Date now = new Date();
if (story != null && story.getDataInvio() != null) {
now = story.getDataInvio();
}
if (richVoip103.getFlagGnr().equals("Y")) {
richVoip103.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(now, 6, 18, 15, 0));
} else {
richVoip103.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(now, 2, 18, 15, 0));
}
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP) {
richVoip103.setStato(new Long(StatoRichiestaNPg35.VERIFICATA_FENP));
insertStoricoVOIP103(statoPartenza, richVoip103);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richVoip103);
}
recGnpVoip103DAO.merge(richVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richVoip103, null, null);
CRMBVOIP103Controller crmController = CRMBVOIP103Controller.getInstance();
crmController.notificaCRM(richVoip103, CRMMap.NOTIFICA_TIPOCOMM1);
log.write("9999", "RequestManagerVoip103 notificato a CRMB evento TIPOCOMM1 per ID_RICHIESTA ["+richVoip103.getIdRichiesta()+"]");
} else { // TIPO COMUNICAZIONE 2 AMMESSO SOLO IN STATI INVIATA_FENP E VERIFICATA_FENP
//E2EContoller.getInstance().notificaVariazioneStato(richVoip103, E2EFormatController.EVENTO_SUPERATA_SOGLIA, null);
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richVoip103.getIdRichiesta() + " DA STATO : " +
StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO VERIFICATA_FENP");
}
}
public static void avanzaStatoInRifiutata_fenp(GnpRichiesteVoip103 richiestaVoip103, ProcessLogger log, GnpFenpRichiesteIn fenpIn) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInRifiutata_fenp() - id richiesta" + richiestaVoip103.getIdRichiesta());
int statoPartenza = richiestaVoip103.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP || statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP) {
// Esito e codice rifiuto vengono impostati nel singolo DN
//richiestaVoip103.setEsitoFenp(fenpIn.getEsito());
//richiestaNpg103.setCodiceMotivoRifiutoFenp(fenpIn.getCodiceMotivoRifiuto());
richiestaVoip103.setStato((long) StatoRichiestaVOIP35.RIFIUTATA_FENP);
voip103DAO.merge(richiestaVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip103, null, null);
insertStoricoVOIP103(statoPartenza, richiestaVoip103);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiestaVoip103);
CRMBVOIP103Controller crmController = CRMBVOIP103Controller.getInstance();
crmController.notificaCRM(richiestaVoip103, CRMMap.NOTIFICA_ACCETTAZIONE_KO);
} else { // TIPO COMUNICAZIONE 6 AMMESSO SOLO IN STATI INVIATA_FENP E VERIFICATA_FENP
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - "
+ richiestaVoip103.getIdRichiesta() + " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO RIFIUTATA_FENP");
}
}
public static void avanzaStatoInInviataCrm(GnpRichiesteVoip103 richiestaVoip103, ProcessLogger log, Date dataInvioCrm) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInInviataCrm() - id richiesta" + richiestaVoip103.getIdRichiesta());
int statoPartenza = richiestaVoip103.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
UtilityDao utlDao = new UtilityDao();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip103.getIdRichiesta(), StatoRichiestaVOIP35.INVIATA_CRM, ProcessMapper.proc_RIENTRO_VOIP103);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richiestaVoip103.setStato((long) StatoRichiestaVOIP35.INVIATA_CRM);
utlDao.updVoip103ListaDn(dataInvioCrm, richiestaVoip103.getIdRichiesta());
voip103DAO.merge(richiestaVoip103);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip103, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiestaVoip103);
log.write("0008", richiestaVoip103.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN INVIATA_CRM");
insertStoricoVOIP103(statoPartenza, richiestaVoip103);
}
} catch (Exception ex) {
throw ex;
}
}
/**
*
* @param richiestaVoip103
* @param gnpFenpInKo
* @return
*/
public static void updateRichiestaVoip103_KO(GnpRichiesteVoip103 richiestaVoip103, GnpFenpRichiesteIn gnpFenpInKo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVoip103.updateRichiestaVoip103_KO. Ricevuto KO=["+gnpFenpInKo.getCodiceMotivoRifiuto()+"] su DN ["+gnpFenpInKo.getDn()+"]. ");
boolean isKoNativoTlc = false;
GnpRichiesteVoip103ListadnDAO dao = new GnpRichiesteVoip103ListadnDAO();
for (GnpRichiesteVoip103Listadn richiesteVoip103Listadn : richiestaVoip103.getGnpRichiesteVoip103Listadns()) {
// Se GNR, FENP risponde con il radicale
boolean isGNR = richiesteVoip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
richiesteVoip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO);
if (richiesteVoip103Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) || (isGNR && richiesteVoip103Listadn.getRadicale().equalsIgnoreCase(gnpFenpInKo.getDn())) ) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
// Ho trovato la richiesta, aggiorno l'esito da FENP (utile per la comunicazione verso CRMB)
log.write("9999", "RequestManagerVoip103.updateRichiestaVoip103_KO. Trovato dn da aggiornare");
if (gnpFenpInKo.getTipoComunicazione() == 2) {
richiesteVoip103Listadn.setEsitoFenp("VALIDAZIONE_OLO");
} else if (gnpFenpInKo.getTipoComunicazione() == 6) {
richiesteVoip103Listadn.setEsitoFenp("ACCETTAZIONE_OLO");
} else {
richiesteVoip103Listadn.setEsitoFenp(null);
}
richiesteVoip103Listadn.setCodiceMotivoRifiutoFenp( gnpFenpInKo.getCodiceMotivoRifiuto() );
dao.merge(richiesteVoip103Listadn);
isKoNativoTlc = isNativoTlc(richiesteVoip103Listadn);
}
}
// Se e' un KO=20 allora invio gli anullamenti a tutti (indipendentemente se sia nativoTLC o nativoOLO)
if (gnpFenpInKo.getCodiceMotivoRifiuto().intValue() == 20) {
// Invio annullamenti a tutti
log.write("9999", "RequestManagerVOIP103. Ricevuto KO=20. inviaNotificaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
for (GnpRichiesteVoip103Listadn richiesteVoip103Listadn : richiestaVoip103.getGnpRichiesteVoip103Listadns()) {
if (!richiesteVoip103Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) &&
richiesteVoip103Listadn.getCodiceMotivoRifiutoFenp() == null) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
richiesteVoip103Listadn.setCodiceMotivoRifiutoFenp( (long)20 );
dao.merge(richiesteVoip103Listadn);
oloControllerFenp.notificaEvento(richiestaVoip103, ""+ ApplicationCostants.PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiesteVoip103Listadn.getNumTel());
}
}
} else if (isKoNativoTlc) {
// Invio annullamenti a tutti i Nativi TLC
log.write("9999", "RequestManagerVoip103 inviaNotificaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
for (GnpRichiesteVoip103Listadn richiesteVoip103Listadn : richiestaVoip103.getGnpRichiesteVoip103Listadns()) {
if (!richiesteVoip103Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) &&
richiesteVoip103Listadn.getCodiceMotivoRifiutoFenp() == null &&
isNativoTlc(richiesteVoip103Listadn) ) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
// Prima di inviare l'annullamento verifico se nel frattempo non ho ricevuto un esito KO
GnpFenpRichiesteInDAO fenpInDAO = new GnpFenpRichiesteInDAO();
boolean esisteKO;
// Se GNR, FENP risponde con il radicale
boolean isGNR = richiesteVoip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
richiesteVoip103Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO); //2018_C08 TipoLinea DONE NO-OP logica gia' implementata
if (isGNR) {
esisteKO = (fenpInDAO.findTipoCommKO(richiestaVoip103.getIdRichiesta(), richiesteVoip103Listadn.getRadicale()) != null);
} else {
esisteKO = (fenpInDAO.findTipoCommKO(richiestaVoip103.getIdRichiesta(), richiesteVoip103Listadn.getNumTel()) != null);
}
// Invio l'annullamento solamente se non esiste gia' un KO
if (!esisteKO) {
richiesteVoip103Listadn.setCodiceMotivoRifiutoFenp((long) 99);
dao.merge(richiesteVoip103Listadn);
oloControllerFenp.notificaEvento(richiestaVoip103, "" + ApplicationCostants.PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiesteVoip103Listadn.getNumTel());
}
}
}
}
}
public static String generateCodCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedIdCorrelazione();
for (; val.length() < 8; ) val = "0" + val;
return "103VOIP" + val;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
*/
public static String generateIDCorrelazioneNcd(String codOlo, ProcessLogger log) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
log.write("9999", "RequestManagerVOIP103.generateIDCorrelazioneNcd("+codOlo+") returning ["+idCorr+"]");
return idCorr;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
*/
public static String generateIDCorrelazioneNcd(String codOlo) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
return idCorr;
}
public static String generateSubCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedSubCorrelazione();
for (; val.length() < 12; ) val = "0" + val;
return "XY_" + val;
}
public static void creaRichiestaRdacCrmRec(GnpRichiesteVoip103 richiesta, ProcessLogger log) throws Exception {
OLOControllerFENP.getInstance().notificaEventoVoip103(richiesta,"16");
/*
UserTransaction uTX = null;
try {
uTX = UserTransactionUtility.beginUserTransaction();
OLOControllerFENP.getInstance().notificaEventoVoip103(richiesta,"16");
UserTransactionUtility.endUserTransaction(uTX, true);
} catch (Exception e) {
e.printStackTrace();
UserTransactionUtility.endUserTransaction(uTX, false);
//0010 C - ERRORE DURANTE L''ELABORAZIONE:
log.write("0010", " " + richiesta.getIdRichiesta() + " - " + e.toString());
}
*/
}
public static void avanzaStatoInAnnullata(GnpRichiesteVoip103 richiesta, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAnnullata() begin");
try {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteVoip103DAO voip103DAO = new GnpRichiesteVoip103DAO();
if (statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP || statoPartenza == StatoRichiestaVOIP35.ACCETTATA ||
statoPartenza == StatoRichiestaVOIP35.INVIATA_CRM ) {
richiesta.setStato((long) StatoRichiestaVOIP35.ANNULLATA);
voip103DAO.merge(richiesta);
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAnnullata() GnpRichiesteVoip103 saved");
insertStoricoVOIP103(statoPartenza, richiesta);
OLOControllerFENP.getInstance().notificaEvento(richiesta, "" + ApplicationCostants.OLO_TIPO_COMUNICAZIONE_ANNULLAMENTO);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip103Dbcfxgo(richiesta);
} else {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAnnullata() - ANNULLAMENTO scartato - la richiesta si trovava in uno stato non congruente: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerVOIP103.avanzaStatoInAnnullata() Exception :" + ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,674 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.UtilityDao;
import it.valueteam.gnp.dao.db.hb.*;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmbVoip35InRec;
import it.valueteam.gnp.dao.db.hb.crm.GnpCrmbVoip35InRecListadn;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.*;
import it.valueteam.gnp.systemcontroller.crm.CRMBVOIP35Controller;
import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController;
import it.valueteam.gnp.systemcontroller.formatcontroller.monitoraggio.E2EFormatController;
import it.valueteam.gnp.systemcontroller.monitoraggio.E2EContoller;
import it.valueteam.gnp.systemcontroller.olo.OLOControllerFENP;
import it.valueteam.gnp.utility.DateUtils;
import it.valueteam.gnp.utility.StateManagerVOIP35;
import it.valueteam.gnp.utility.Func;
import java.util.*;
/**
* @version 2.0 C10_2017 R2F-17-0644 Adeguamento I/F tra CRMB/INFOBUS/DBCFX per gestire i rientri in Del.35 VOIP
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
*/
public class RequestManagerVOIP35 {
public static final String TYPE_SINGOLO_FONIA = "XA";
public static final String TYPE_PRIMARIO_BMU = "XB";
public static final String TYPE_GNR_EX_TI = "XC";
public static final String TYPE_NATIVO_OLO = "XD";
public static final String TYPE_GNR_NATIVO_OLO = "XE";
public static final String TYPE_AGGIUNTIVO_BMU = "XF";
public RequestManagerVOIP35() {
}
public static boolean isNativoOlo(GnpRichiesteVoip35Listadn rich) {
return (rich.getClassificazione().equalsIgnoreCase(TYPE_NATIVO_OLO) || rich.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO));
}
public static boolean isNativoTlc(GnpRichiesteVoip35Listadn rich) {
return !isNativoOlo(rich);
}
public static boolean isAllDonorKO(GnpRichiesteVoip35 rich) {
boolean isAllKo = true;
HashMap<String, Boolean> donorsKO = new HashMap<String, Boolean>();
for (GnpRichiesteVoip35Listadn dn : rich.getGnpRichiesteVoip35Listadns()) {
if (dn.getCodiceMotivoRifiutoFenp() != null) {
donorsKO.put(dn.getDonor(), true);
} else {
// controllo se esiste la chiave, altrimenti la inizializzo a FALSE
if (donorsKO.get(dn.getDonor()) == null) {
donorsKO.put(dn.getDonor(), false);
}
}
}
// Ciclo la mappa, se trovo un false esco dal ciclo e quindi dal metodo con false
for (Map.Entry<String, Boolean> entry : donorsKO.entrySet()) {
if (!entry.getValue()) {
isAllKo = false;
break;
}
}
return isAllKo;
}
public static boolean isMultiDonor(GnpRichiesteVoip35 rich) {
boolean isMultiDonor = false;
HashSet donors = new HashSet();
for (GnpRichiesteVoip35Listadn richiesteVoip35Listadn : rich.getGnpRichiesteVoip35Listadns()) {
donors.add(richiesteVoip35Listadn.getDonor());
if (donors.size() >= 2) {
isMultiDonor = true;
break;
}
}
return isMultiDonor;
}
/**
* avanzaStatoInAcquisita
*
* @param crmInRec GnpCrmInRec
* @param processo
* @param log ProcessLogger
*/
public static void avanzaStatoInAcquisita(GnpCrmbVoip35InRec crmInRec, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAcquisita() begin - id richiesta: " + crmInRec.getIdRichiesta());
GnpRichiesteVoip35 richiestaVoip35 = null;
GnpRichiesteVoip35Listadn voip35Listadn = null;
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
// Creao la richiesta VOIP35 partendo da quella pervenuta da CRMB
richiestaVoip35 = creaRichiestaVoip35(crmInRec, log);
voip35DAO.save(richiestaVoip35);
// Dalla LISTA_DN, estrarre informazioni NUM_TOT_RICHIESTE
richiestaVoip35.setNumTotRichieste( (long)richiestaVoip35.getGnpRichiesteVoip35Listadns().size() );
voip35DAO.save(richiestaVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip35, E2EFormatController.EVENTO_RIENTRO, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiestaVoip35);
insertStoricoVOIP35(StateManagerVOIP35.RICHIESTA_NON_PRESENTE, richiestaVoip35);
// Inserisce l'ID_RICHIESTA nella GNP_CRMB_VOIP35_IN_REC
impostaIdRichiestaCrmbIn(crmInRec, richiestaVoip35.getIdRichiesta());
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAcquisita() creata la richiesta " + richiestaVoip35.getIdRichiesta());
}
private static void impostaIdRichiestaCrmbIn(GnpCrmbVoip35InRec crmInRec, Long idRichiesta) {
System.out.println("RequestManagerVOIP35.impostaIdRichiestaCrmbIn - idrichiesta: " + idRichiesta);
crmInRec.setIdRichiesta(idRichiesta);
Set<GnpCrmbVoip35InRecListadn> lista = null;
if (crmInRec != null) lista = crmInRec.getGnpCrmbVoip35InRecListadns();
if (lista != null) {
Iterator<GnpCrmbVoip35InRecListadn> it = lista.iterator();
while (it.hasNext()) {
GnpCrmbVoip35InRecListadn k = it.next();
String classificazione = k.getClassificazione();
String numTel = k.getNumTel();
String donor = k.getDonor();
String primario = k.getPrimario();
String radicale = k.getRadicale();
Long idR = k.getIdRichiesta();
System.out.println("id richiesta passato: " + idRichiesta + " - idRichiesta da lista: " + idR + " - classificazione: " + classificazione
+ " - donor: " + donor + " - numTel: " + numTel + " - primario: " + primario + " - radicale " + radicale);
}
}
for (GnpCrmbVoip35InRecListadn gnpCrmbVoip35InRecListadn : crmInRec.getGnpCrmbVoip35InRecListadns()) {
gnpCrmbVoip35InRecListadn.setIdRichiesta(idRichiesta);
}
}
public static void insertStoricoVOIP35(int stato_da, GnpRichiesteVoip35 richiestaVoip35) throws Exception {
GnpStoricoVoip35DAO storicoDAO = new GnpStoricoVoip35DAO();
//creo lo storico
GnpStoricoVoip35 storico = new GnpStoricoVoip35();
storico.setIdRichiesta(richiestaVoip35.getIdRichiesta());
storico.setStatoDa((long) stato_da);
storico.setStatoA(richiestaVoip35.getStato());
storicoDAO.save(storico);
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Non inviare SubCorrelazione in NCD
* Gestione invariata in VCD
*/
private static GnpRichiesteVoip35 creaRichiestaVoip35(GnpCrmbVoip35InRec crmInRec, ProcessLogger log) throws Exception {
GnpRichiesteVoip35 richiestaVoip35 = new GnpRichiesteVoip35();
richiestaVoip35.setIdRichiesta(crmInRec.getIdRichiesta());
richiestaVoip35.setDaInviare((long) 1);
richiestaVoip35.setIdEsigenza(crmInRec.getIdEsigenza());
richiestaVoip35.setDataRicezione(new Date());
richiestaVoip35.setPiattaformaProvenienza(crmInRec.getPiattaformaProvenienza());
richiestaVoip35.setCow(crmInRec.getCow());
richiestaVoip35.setNominativoCliente(crmInRec.getNominativoCliente());
richiestaVoip35.setCodiceFiscalePartitaIva(crmInRec.getCodiceFiscalePartivaIva());
richiestaVoip35.setRecapitoAlternativo(crmInRec.getRecapitoAlternativo());
richiestaVoip35.setDac(crmInRec.getDac());
richiestaVoip35.setRnb(crmInRec.getRnb());
richiestaVoip35.setDataOperazione(crmInRec.getDataOperazione());
richiestaVoip35.setCodMarcaggioCliente(crmInRec.getCodMarcaggioCliente());
richiestaVoip35.setCodCanaleVendita(crmInRec.getCodCanaleVendita());
richiestaVoip35.setIdOlFittizio(crmInRec.getIdOlFittizio());
richiestaVoip35.setFlagConsip(crmInRec.getFlagConsip());
richiestaVoip35.setCodiceProgetto(crmInRec.getCodiceProgetto());
richiestaVoip35.setModuloCc(crmInRec.getModuloCc());
richiestaVoip35.setModuloPartner(crmInRec.getModuloPartner());
richiestaVoip35.setProtocolloDms(crmInRec.getProtocolloDms());
richiestaVoip35.setDataCreazioneSr(crmInRec.getDataCreazioneSr());
richiestaVoip35.setIdPadre(crmInRec.getIdPadre());
richiestaVoip35.setCausaleKoPdc(crmInRec.getCausaleKoPdc());
richiestaVoip35.setDataChiusuraSr(crmInRec.getDataChiusuraSr());
richiestaVoip35.setStato((long) StatoRichiestaVOIP35.ACQUISITA);
richiestaVoip35.setFlagGnr("N"); // DEFAULT VALUE
//richiestaVoip35.setFlagVerticalizzato("N");
/*
C10_2017 R2F-17-0644 Adeguamento I/F tra CRMB/INFOBUS/DBCFX per gestire i rientri in Del.35 VOIP
*/
if (Func.isNull(crmInRec.getFlagVerticalizzato())) {
richiestaVoip35.setFlagVerticalizzato("N");
} else {
richiestaVoip35.setFlagVerticalizzato(crmInRec.getFlagVerticalizzato());
}
richiestaVoip35.setRoutingNumber(crmInRec.getRoutingNumber());
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() getting lista DN");
Set<GnpCrmbVoip35InRecListadn> listaDn = crmInRec.getGnpCrmbVoip35InRecListadns();
boolean existGNR = false;
HashMap<String, CodCorrelazione> codCorrs = new HashMap<String, CodCorrelazione>();
HashMap<String, SubCorrelazione> subCorrs = new HashMap<String, SubCorrelazione>();
for (GnpCrmbVoip35InRecListadn dnIn : listaDn) {
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() id richiesta: " + dnIn.getIdRichiesta());
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() classificazione: " + dnIn.getClassificazione());
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() num tel: " + dnIn.getNumTel());
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() primario: " + dnIn.getPrimario());
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() radicale: " + dnIn.getRadicale());
GnpRichiesteVoip35Listadn richiesteVoip35Listadn = new GnpRichiesteVoip35Listadn();
richiesteVoip35Listadn.setGnpRichiesteVoip35(richiestaVoip35);
richiesteVoip35Listadn.setNumTel(dnIn.getNumTel());
richiesteVoip35Listadn.setClassificazione(dnIn.getClassificazione());
richiesteVoip35Listadn.setDonor(dnIn.getDonor());
richiesteVoip35Listadn.setPrimario(dnIn.getPrimario());
richiesteVoip35Listadn.setRadicale(dnIn.getRadicale());
richiesteVoip35Listadn.setDaInviare((long)1);
richiesteVoip35Listadn.setNumInviiFenp((long)0);
// Preimposto i valori a zero
richiesteVoip35Listadn.setNumTotRichieste( (long)0);
richiesteVoip35Listadn.setNumSubRichieste( (long)0);
// Generazione codCorrelazione in base al donor
CodCorrelazione codCorr = codCorrs.get(dnIn.getDonor());
if (codCorr == null) {
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() codCorr nullo, instantiating");
codCorr = new CodCorrelazione();
// Modifica id correlazione cod correlazione per sbavaglia cesare
// DBCFX_RU_262 BEGIN
if((null != richiestaVoip35.getFlagVerticalizzato() && "Y".equals(richiestaVoip35.getFlagVerticalizzato()))
|| (RequestManagerVOIP35.isNativoTlc(richiesteVoip35Listadn))) {
/* Inserito l'or (RequestManagerVOIP35.isNativoTlc(richiesteVoip35Listadn)), questo perchè adesso le richieste
Native telecom vanno inviate tutte in NCD dunque il cod correlazione dovrà essere quello della NCD
DBCFX_SM_534
*/
// formato <OLO><YY><nnnnn> in NCD
// @TODO DBCFX_RU_262 verificare CHI e' il codice OLO qui
// Inglisa/Regano: utilizzare l'acronimo TIM / codice che DBCFX invia nel campo COD_OP_RECIPIENT del TR1
String corrNCD = generateIDCorrelazioneNcd(ApplicationCostants.COD_OLO_TELECOM);
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - RU_262 - id correlazione ncd: " + corrNCD);
codCorr.setCodCorrelazione(corrNCD);
//codCorr.setCodCorrelazione(generateIDCorrelazioneNcd(dnIn.getDonor()));
} else {
// Gestione invariata in VCD
String corrVCD = generateCodCorrelazione();
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - id correlazione vcd: " + corrVCD);
codCorr.setCodCorrelazione(corrVCD);
}
// DBCFX_RU_262 END
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() putting " + dnIn.getDonor() + " - " + codCorr.getCodCorrelazione());
codCorr.setNumRichieste(1);
codCorrs.put(dnIn.getDonor(), codCorr);
} else {
codCorr.setNumRichieste( codCorr.getNumRichieste()+1 );
log.write("9999", " RequestManagerVOIP35.creaRichiestaVoip35() putting " + codCorr.getNumRichieste()+1);
}
// DBCFX_RU_262 BEGIN
// Non inviare SubCorrelazione in NCD
// Gestione invariata in VCD
// Generazione subCorrelazione in base ai primari (XB) (il numero e' in numTel)
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() classificazione " + dnIn.getClassificazione() + " - FLAG VERT " + richiestaVoip35.getFlagVerticalizzato());
if (TYPE_PRIMARIO_BMU.equalsIgnoreCase(dnIn.getClassificazione()) && !"Y".equals(richiestaVoip35.getFlagVerticalizzato())
&& RequestManagerVOIP35.isNativoOlo(richiesteVoip35Listadn)) {
/* Inserito l'AND && RequestManagerVOIP35.isNativoOlo(richiesteVoip35Listadn), questo perchè adesso le richieste
Native telecom vanno inviate tutte in NCD dunque la SUB correlazione non dovrà essere inviata
DBCFX_SM_534
*/
//if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_PRIMARIO_BMU)) {
// DBCFX_RU_262 END
SubCorrelazione sub = subCorrs.get( dnIn.getNumTel() );
if (sub != null) {
// aggiorno il numero richieste
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - sub dn primario: " + sub.getDnPrimario()
+ " - sub subcorrelazione: " + sub.getSubCorrelazione() + " - sub num richieste: " + sub.getNumRichieste());
sub.setNumRichieste( sub.getNumRichieste()+1 );
} else {
log.write("9999", " RequestManagerVOIP35.creaRichiestaVoip35() !XB OR FLAG VER == Y");
String dnPrimario = dnIn.getNumTel();
String subCorrelazione = generateSubCorrelazione();
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - RU_262 - sub dn primario: " + dnPrimario
+ " - sub subcorrelazione: " + subCorrelazione);
sub = new SubCorrelazione();
sub.setDnPrimario( dnPrimario );
sub.setSubCorrelazione(subCorrelazione);
sub.setNumRichieste(1);
subCorrs.put( dnIn.getNumTel(), sub);
}
}
// DBCFX_RU_262 BEGIN
// Non inviare SubCorrelazione in NCD
// Gestione invariata in VCD
// Generazione subCorrelazione in base ai secondari (XF) (il numero e' nel primario)
if (TYPE_AGGIUNTIVO_BMU.equalsIgnoreCase(dnIn.getClassificazione()) && !"Y".equals(richiestaVoip35.getFlagVerticalizzato())
&& RequestManagerVOIP35.isNativoOlo(richiesteVoip35Listadn)) {
//if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_AGGIUNTIVO_BMU)) {
// DBCFX_RU_262 END
SubCorrelazione sub = subCorrs.get( dnIn.getPrimario() );
if (sub != null) {
// aggiorno il numero richieste
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - aggiorno num richieste");
sub.setNumRichieste( sub.getNumRichieste()+1 );
} else {
sub = new SubCorrelazione();
sub.setDnPrimario( dnIn.getPrimario() );
String subCorr = generateSubCorrelazione();
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - sub corr: " + subCorr);
sub.setSubCorrelazione(subCorr);
sub.setNumRichieste(1);
subCorrs.put( dnIn.getPrimario(), sub);
}
}
if (!existGNR) {
if (dnIn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
dnIn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO)) {
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() setto flag gnr = Y");
richiestaVoip35.setFlagGnr("Y");
existGNR = true;
}
}
richiestaVoip35.getGnpRichiesteVoip35Listadns().add(richiesteVoip35Listadn);
}
// Riciclo i dn per aggionare le correlazioni
log.write("9999", "RequestManagerVOIP35.creaRichiestaVoip35() - aggiorno correlazioni");
for (GnpRichiesteVoip35Listadn voip35Listadn : richiestaVoip35.getGnpRichiesteVoip35Listadns()) {
CodCorrelazione cod = codCorrs.get(voip35Listadn.getDonor());
voip35Listadn.setIdCorrelazione( cod.getCodCorrelazione() );
voip35Listadn.setNumTotRichieste( cod.getNumRichieste() );
// Anomalia su DBCFX_RU_262 BEGIN
// Questo da' errore in NCD perche' non vengono generate le mappe
// Quindi lasciamo questa gestione invariata solo in VCD
log.write("9999", " RequestManagerVOIP35.creaRichiestaVoip35() class " + voip35Listadn.getClassificazione() + " - FLAG VERT " + richiestaVoip35.getFlagVerticalizzato());
if (voip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_PRIMARIO_BMU) && !"Y".equals(richiestaVoip35.getFlagVerticalizzato())
&& RequestManagerVOIP35.isNativoOlo(voip35Listadn)) {
SubCorrelazione sub = subCorrs.get(voip35Listadn.getNumTel());
voip35Listadn.setSubCorrelazione( sub.getSubCorrelazione() );
voip35Listadn.setNumSubRichieste( sub.getNumRichieste() );
}
// Anomalia su DBCFX_RU_262 BEGIN
// Questo da' errore in NCD perche' non vengono generate le mappe
// Quindi lasciamo questa gestione invariata solo in VCD
if (voip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_AGGIUNTIVO_BMU) && !"Y".equals(richiestaVoip35.getFlagVerticalizzato())
&& RequestManagerVOIP35.isNativoOlo(voip35Listadn)) {
SubCorrelazione sub = subCorrs.get(voip35Listadn.getPrimario());
voip35Listadn.setSubCorrelazione( sub.getSubCorrelazione() );
voip35Listadn.setNumSubRichieste( sub.getNumRichieste() );
}
// Anomalia su DBCFX_RU_262 END
}
return richiestaVoip35;
}
/**
* Richiamato da OLOControllerFENP_VOIP35 --> VOIP35Out
**/
public static void avanzaStatoInInviataFenp(GnpRichiesteVoip35 richiestaVoip35, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInInviataFenp() - id richiesta" + richiestaVoip35.getIdRichiesta());
int statoPartenza = richiestaVoip35.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip35.getIdRichiesta(), StatoRichiestaVOIP35.INVIATA_FENP, ProcessMapper.proc_RIENTRO_VOIP35);
// Se posso eseguire la transizione di stato e sono in ACQUISITA
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE && statoPartenza == StatoRichiestaVOIP35.ACQUISITA) {
richiestaVoip35.setStato((long) StatoRichiestaVOIP35.INVIATA_FENP);
richiestaVoip35.setDaInviare((long) 0);
voip35DAO.merge(richiestaVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip35, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiestaVoip35);
log.write("0008", richiestaVoip35.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza) + " IN INVIATA_FENP");
insertStoricoVOIP35(statoPartenza, richiestaVoip35);
}
} catch (Exception ex) {
throw ex;
}
}
public static void avanzaStatoInEspletata(GnpRichiesteVoip35 richiestaVoip35, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInEspletata() - id richiesta" + richiestaVoip35.getIdRichiesta());
int statoPartenza = richiestaVoip35.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip35.getIdRichiesta(), StatoRichiestaVOIP35.ESPLETATA, ProcessMapper.proc_RIENTRO_VOIP35);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richiestaVoip35.setStato((long) StatoRichiestaNPg35.ESPLETATA);
voip35DAO.merge(richiestaVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip35, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiestaVoip35);
log.write("0008", richiestaVoip35.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza) + " IN ESPLETATA");
insertStoricoVOIP35(statoPartenza, richiestaVoip35);
}
} catch (Exception ex) {
throw ex;
}
}
public static void avanzaStatoInAccettata(GnpRichiesteVoip35 richVoip35, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAccettata() - id richiesta" + richVoip35.getIdRichiesta());
int statoPartenza = richVoip35.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
try {
int status = StateManagerVOIP35.CheckTransition(richVoip35.getIdRichiesta(), StatoRichiestaVOIP35.ACCETTATA, ProcessMapper.proc_RIENTRO_VOIP35);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richVoip35.setStato((long) StatoRichiestaVOIP35.ACCETTATA);
voip35DAO.merge(richVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richVoip35, null, null);
insertStoricoVOIP35(statoPartenza, richVoip35);
CRMBVOIP35Controller crmController = CRMBVOIP35Controller.getInstance();
crmController.notificaCRM(richVoip35, CRMMap.NOTIFICA_ACCETTAZIONE_OLO);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richVoip35);
} else {
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richVoip35.getIdRichiesta()
+ " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO ACCETTATA");
}
} catch (Exception ex) {
// 0009 W - NON ESEGUITA TRANSIZIONE DI STATO ID_RICHIESTA
log.write("0009", richVoip35.getIdRichiesta() + " DA STATO : " + StatoRichiestaNPg35.getStatoDescr(statoPartenza)
+ " IN STATO ACCETTATA : " + ex.toString());
throw ex;
}
}
public static void avanzaStatoInVerificata_fenp(GnpRichiesteVoip35 richVoip35, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInVerificata_fenp() - id richiesta" + richVoip35.getIdRichiesta());
int statoPartenza = richVoip35.getStato().intValue();
GnpRichiesteVoip35DAO recGnpVoip35DAO = new GnpRichiesteVoip35DAO();
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP || statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP) {
Date now = new Date();
if (richVoip35.getFlagGnr().equals("Y")) {
richVoip35.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(now, 8, 19, 30, 0));
} else {
richVoip35.setDataSilenzioAssenso(DateUtils.aggiungiGiorniLavorativiTodateImpostaOra(now, 4, 19, 30, 0));
}
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP) {
richVoip35.setStato(new Long(StatoRichiestaNPg35.VERIFICATA_FENP));
insertStoricoVOIP35(statoPartenza, richVoip35);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richVoip35);
}
recGnpVoip35DAO.merge(richVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richVoip35, null, null);
CRMBVOIP35Controller crmController = CRMBVOIP35Controller.getInstance();
crmController.notificaCRM(richVoip35, CRMMap.NOTIFICA_TIPOCOMM1);
log.write("9999", "RequestManagerVoip35 notificato a CRMB evento TIPOCOMM1 per ID_RICHIESTA ["+richVoip35.getIdRichiesta()+"]");
} else { // TIPO COMUNICAZIONE 2 AMMESSO SOLO IN STATI INVIATA_FENP E VERIFICATA_FENP
//E2EContoller.getInstance().notificaVariazioneStato(richVoip35, E2EFormatController.EVENTO_SUPERATA_SOGLIA, null);
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - " + richVoip35.getIdRichiesta() + " DA STATO : " +
StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO VERIFICATA_FENP");
}
}
public static void avanzaStatoInRifiutata_fenp(GnpRichiesteVoip35 richiestaVoip35, ProcessLogger log, GnpFenpRichiesteIn fenpIn) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInRifiutata_fenp() - id richiesta" + richiestaVoip35.getIdRichiesta());
int statoPartenza = richiestaVoip35.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
if (statoPartenza == StatoRichiestaVOIP35.INVIATA_FENP || statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP) {
// Esito e codice rifiuto vengono impostati nel singolo DN
//richiestaVoip35.setEsitoFenp(fenpIn.getEsito());
//richiestaNpg35.setCodiceMotivoRifiutoFenp(fenpIn.getCodiceMotivoRifiuto());
richiestaVoip35.setStato((long) StatoRichiestaVOIP35.RIFIUTATA_FENP);
voip35DAO.merge(richiestaVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip35, null, null);
insertStoricoVOIP35(statoPartenza, richiestaVoip35);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiestaVoip35);
CRMBVOIP35Controller crmController = CRMBVOIP35Controller.getInstance();
crmController.notificaCRM(richiestaVoip35, CRMMap.NOTIFICA_ACCETTAZIONE_KO);
} else { // TIPO COMUNICAZIONE 6 AMMESSO SOLO IN STATI INVIATA_FENP E VERIFICATA_FENP
log.write("9999", "TRANSIZIONE DI STATO NON POSSIBILE PER LA RICHIESTA - ID_RICHIESTA - "
+ richiestaVoip35.getIdRichiesta() + " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN STATO RIFIUTATA_FENP");
}
}
public static void avanzaStatoInInviataCrm(GnpRichiesteVoip35 richiestaVoip35, ProcessLogger log, Date dataInvioCrm) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInInviataCrm() - id richiesta" + richiestaVoip35.getIdRichiesta());
int statoPartenza = richiestaVoip35.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
UtilityDao utlDao = new UtilityDao();
try {
int status = StateManagerVOIP35.CheckTransition(richiestaVoip35.getIdRichiesta(), StatoRichiestaVOIP35.INVIATA_CRM, ProcessMapper.proc_RIENTRO_VOIP35);
if (status != StateManagerVOIP35.TRANSIZIONE_NON_POSSIBILE) {
richiestaVoip35.setStato((long) StatoRichiestaVOIP35.INVIATA_CRM);
utlDao.updVoip35ListaDn(dataInvioCrm, richiestaVoip35.getIdRichiesta());
voip35DAO.merge(richiestaVoip35);
E2EContoller.getInstance().notificaVariazioneStato(richiestaVoip35, null, null);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiestaVoip35);
log.write("0008", richiestaVoip35.getIdRichiesta().toString() + " DA STATO : " + StatoRichiestaVOIP35.getStatoDescr(statoPartenza) + " IN INVIATA_CRM");
insertStoricoVOIP35(statoPartenza, richiestaVoip35);
}
} catch (Exception ex) {
throw ex;
}
}
/**
*
* @param richiestaVoip35
* @param gnpFenpInKo
* @return
*/
public static void updateRichiestaVoip35_KO(GnpRichiesteVoip35 richiestaVoip35, GnpFenpRichiesteIn gnpFenpInKo, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVoip35.updateRichiestaVoip35_KO. Ricevuto KO=["+gnpFenpInKo.getCodiceMotivoRifiuto()+"] su DN ["+gnpFenpInKo.getDn()+"]. ");
boolean isKoNativoTlc = false;
GnpRichiesteVoip35ListadnDAO dao = new GnpRichiesteVoip35ListadnDAO();
for (GnpRichiesteVoip35Listadn richiesteVoip35Listadn : richiestaVoip35.getGnpRichiesteVoip35Listadns()) {
// Se GNR, FENP risponde con il radicale
boolean isGNR = richiesteVoip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
richiesteVoip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO);
if (richiesteVoip35Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) || (isGNR && richiesteVoip35Listadn.getRadicale().equalsIgnoreCase(gnpFenpInKo.getDn())) ) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
// Ho trovato la richiesta, aggiorno l'esito da FENP (utile per la comunicazione verso CRMB)
log.write("9999", "RequestManagerVoip35.updateRichiestaVoip35_KO. Trovato dn da aggiornare");
if (gnpFenpInKo.getTipoComunicazione() == 2) {
richiesteVoip35Listadn.setEsitoFenp("VALIDAZIONE_OLO");
} else if (gnpFenpInKo.getTipoComunicazione() == 6) {
richiesteVoip35Listadn.setEsitoFenp("ACCETTAZIONE_OLO");
} else {
richiesteVoip35Listadn.setEsitoFenp(null);
}
richiesteVoip35Listadn.setCodiceMotivoRifiutoFenp( gnpFenpInKo.getCodiceMotivoRifiuto() );
dao.merge(richiesteVoip35Listadn);
isKoNativoTlc = isNativoTlc(richiesteVoip35Listadn);
}
}
// Se e' un KO=20 allora invio gli anullamenti a tutti (indipendentemente se sia nativoTLC o nativoOLO)
if (gnpFenpInKo.getCodiceMotivoRifiuto().intValue() == 20) {
// Invio annullamenti a tutti
log.write("9999", "RequestManagerVoip35. Ricevuto KO=20. inviaNotificaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
for (GnpRichiesteVoip35Listadn richiesteVoip35Listadn : richiestaVoip35.getGnpRichiesteVoip35Listadns()) {
if (!richiesteVoip35Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) &&
richiesteVoip35Listadn.getCodiceMotivoRifiutoFenp() == null) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
richiesteVoip35Listadn.setCodiceMotivoRifiutoFenp( (long)20 );
dao.merge(richiesteVoip35Listadn);
oloControllerFenp.notificaEvento(richiestaVoip35, ""+ ApplicationCostants.PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiesteVoip35Listadn.getNumTel());
}
}
} else if (isKoNativoTlc) {
// Invio annullamenti a tutti i Nativi TLC
log.write("9999", "RequestManagerVoip35 inviaNotificaAnnullamentoFENP() begin");
OLOControllerFENP oloControllerFenp = OLOControllerFENP.getInstance();
for (GnpRichiesteVoip35Listadn richiesteVoip35Listadn : richiestaVoip35.getGnpRichiesteVoip35Listadns()) {
if (!richiesteVoip35Listadn.getNumTel().equalsIgnoreCase(gnpFenpInKo.getDn()) &&
richiesteVoip35Listadn.getCodiceMotivoRifiutoFenp() == null &&
isNativoTlc(richiesteVoip35Listadn) ) { // 2018_C08 DirectoryNumber DONE NO-OP logica gia' implementata
// Prima di inviare l'annullamento verifico se nel frattempo non ho ricevuto un esito KO
GnpFenpRichiesteInDAO fenpInDAO = new GnpFenpRichiesteInDAO();
boolean esisteKO;
// Se GNR, FENP risponde con il radicale
boolean isGNR = richiesteVoip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_EX_TI) ||
richiesteVoip35Listadn.getClassificazione().equalsIgnoreCase(TYPE_GNR_NATIVO_OLO); //2018_C08 TipoLinea DONE NO-OP logica gia' implementata
if (isGNR) {
esisteKO = (fenpInDAO.findTipoCommKO(richiestaVoip35.getIdRichiesta(), richiesteVoip35Listadn.getRadicale()) != null);
} else {
esisteKO = (fenpInDAO.findTipoCommKO(richiestaVoip35.getIdRichiesta(), richiesteVoip35Listadn.getNumTel()) != null);
}
// Invio l'annullamento solamente se non esiste gia' un KO
if (!esisteKO) {
richiesteVoip35Listadn.setCodiceMotivoRifiutoFenp((long) 99);
dao.merge(richiesteVoip35Listadn);
oloControllerFenp.notificaEvento(richiestaVoip35, "" + ApplicationCostants.PROCESSO_FENP.NOTIFICA_ANNULLAMENTO, richiesteVoip35Listadn.getNumTel());
}
}
}
}
}
public static String generateCodCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedIdCorrelazione();
for (; val.length() < 8; ) val = "0" + val;
return "VOIP35_" + val;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
* @TODO management of null ret value
*/
public static String generateIDCorrelazioneNcd(String codOlo, ProcessLogger log) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
// @TODO DBCFX_RU_262 comment out this log line at the end of testing stage
log.write("9999", "RequestManagerVOIP35.generateIDCorrelazioneNcd("+codOlo+") returning ["+idCorr+"]");
return idCorr;
}
/**
* @version 3.0 DBCFX_RU_262 C03 2018
* generazione ID_CORRELAZIONE per FENP in NCD
* nel formato <OLO><YY><nnnnn>
* Gestione invariata in VCD
* Usa la Inline Function FUN_FIND_NEXT_IDCORR_BY_OLO(cod_olo)
* @return full ID_CORRELAZIONE in formato <OLO><YY><nnnnn>
* @TODO management of null ret value
*/
public static String generateIDCorrelazioneNcd(String codOlo) {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String idCorr = dao.getNextIdCorrelazioneNcd(codOlo);
return idCorr;
}
public static String generateSubCorrelazione() {
GnpFenpRichiesteOutDAO dao = new GnpFenpRichiesteOutDAO();
String val = dao.getNextSeedSubCorrelazione();
for (; val.length() < 12; ) val = "0" + val;
return "XY_" + val;
}
public static void avanzaStatoInAnnullata(GnpRichiesteVoip35 richiesta, ProcessLogger log) throws Exception {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAnnullata() begin");
try {
int statoPartenza = richiesta.getStato().intValue();
GnpRichiesteVoip35DAO voip35DAO = new GnpRichiesteVoip35DAO();
if (statoPartenza == StatoRichiestaVOIP35.VERIFICATA_FENP || statoPartenza == StatoRichiestaVOIP35.ACCETTATA ||
statoPartenza == StatoRichiestaVOIP35.INVIATA_CRM ) {
richiesta.setStato((long) StatoRichiestaVOIP35.ANNULLATA);
voip35DAO.merge(richiesta);
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAnnullata() GnpRichiesteVoip35 saved");
insertStoricoVOIP35(statoPartenza, richiesta);
OLOControllerFENP.getInstance().notificaEvento(richiesta, "" + ApplicationCostants.OLO_TIPO_COMUNICAZIONE_ANNULLAMENTO);
DbcfxgoController.getInstance().notificaVariazioneStatoVoip35Dbcfxgo(richiesta);
} else {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAnnullata() - ANNULLAMENTO scartato - la richiesta si trovava in uno stato non congruente: " + statoPartenza);
}
} catch (Exception ex) {
log.write("9999", "RequestManagerVOIP35.avanzaStatoInAnnullata() Exception :" + ex.getMessage());
throw ex;
}
}
}

View File

@@ -0,0 +1,129 @@
package it.valueteam.gnp.manager;
import it.valueteam.gnp.dao.db.hb.GnpVerificaCsWhitelist;
import it.valueteam.gnp.dao.db.hb.GnpVerificaCsWhitelistDAO;
import it.valueteam.gnp.log.Loggable;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.LogInfo;
import it.valueteam.gnp.obj.LogProcess;
import it.valueteam.gnp.utility.Resources;
import java.util.List;
/**
* @version 2.0 DBCFX_RU_253 e SM associata
* verificaCsWhiteList modificato per accettare in input un CS=null
* e dare errore poi SSE richiesto confronto con CS in tabella WL
*/
public class WhiteListManager implements Loggable {
private static final String codiceProcesso = "WL";
protected ProcessLogger log;
public WhiteListManager() throws Exception {
LogProcess logProcess = new LogProcess();
logProcess.setCodice(codiceProcesso);
logProcess.setProcess(this);
log = new ProcessLogger(logProcess);
}
/**
* Verifica l'esistenza di un record nella tabella GNP_CS_VERIFICA_WHITELIST
* Se il record esiste controlla il valore del flag Verifica cs
*
* @param dn il numero di telefono su cui effettuare la query
*
*
* @version 2.0 DBCFX_RU_253 e SM associata
* verificaCsWhiteList modificato per accettare in input un CS=null
* e dare errore poi SSE richiesto confronto con CS in tabella WL
* @retun Boolean: se il record non esiste in tabella WL restituisce null;
* se il record esiste in tabella WL e il flag vale N restituisce true;
* se il record esiste in tabella WL e il flag vale Y due casi:
* 1. se CS in input e' null restituisce null;
* 2. altrimenti restituisce esito del confronto fra CS input e CS tabella
*/
public Boolean verificaCsWhiteListDonorDel274(String dn, String codiceSegr) {
log.write("9999", "WhiteListManager verificaCsWhiteListDonorDel274 - dn: " + dn + " - codiceSegr: " + codiceSegr);
// DBCFX_RU_253 BEGIN
//if (codiceSegr == null) return null;
// DBCFX_RU_253 END
GnpVerificaCsWhitelistDAO dao = new GnpVerificaCsWhitelistDAO();
List<GnpVerificaCsWhitelist> recList = dao.findByProperty("numeroTelefono", dn);
if (recList == null || recList.isEmpty()) return null;
GnpVerificaCsWhitelist rec = recList.get(0);
if (recList.size() > 1) log.write("9999", "WhiteListManager verificaCsWhiteListDonorDel274 trovati " + recList.size() + " record - selezionato il primo");
if (rec.getFlagVerificaCs().equalsIgnoreCase("N")) return true;
// DBCFX_RU_253 BEGIN
if (rec.getFlagVerificaCs().equalsIgnoreCase("Y")) {
if (null == codiceSegr) {
return null;
}
else {
return Boolean.valueOf(rec.getCodiceSegreto().equalsIgnoreCase(codiceSegr));
}
}
// DBCFX_RU_253 END
return Boolean.FALSE; //non raggiungibile
}
/**
* Verifica l'esistenza di un record nella tabella GNP_CS_VERIFICA_WHITELIST
* Se il record esiste controlla il valore del flag Verifica cs
*
* @param dn il numero di telefono su cui effettuare la query
*
*
* @version 2.0 DBCFX_RU_253 e SM associata
* verificaCsWhiteList modificato per accettare in input un CS=null
* e dare errore poi SSE richiesto confronto con CS in tabella WL
* @retun Boolean: se il record non esiste in tabella WL restituisce null;
* se il record esiste in tabella WL e il flag vale N restituisce true;
* se il record esiste in tabella WL e il flag vale Y due casi:
* 1. se CS in input e' null restituisce null;
* 2. altrimenti restituisce esito del confronto fra CS input e CS tabella
*/
public Boolean verificaCsWhiteList(String dn, String codiceSegrOld,String codiceSegretoNew) {
log.write("9999", "WhiteListManager verificaCsWhiteList - dn: " + dn + " - codiceSegretoOld: " + codiceSegrOld+" codiceSegretoNew: "+codiceSegretoNew);
// DBCFX_RU_253 BEGIN
//if (codiceSegr == null) return null;
// DBCFX_RU_253 END
GnpVerificaCsWhitelistDAO dao = new GnpVerificaCsWhitelistDAO();
List<GnpVerificaCsWhitelist> recList = dao.findByProperty("numeroTelefono", dn);
if (recList == null || recList.isEmpty()) return null;
GnpVerificaCsWhitelist rec = recList.get(0);
if (recList.size() > 1) log.write("9999", "WhiteListManager verificaCsWhiteList trovati " + recList.size() + " record - selezionato il primo");
if (rec.getFlagVerificaCs().equalsIgnoreCase("N")) return true;
// DBCFX_RU_253 BEGIN
if (rec.getFlagVerificaCs().equalsIgnoreCase("Y")) {
if (null == codiceSegrOld) {
return null;
}
else {
log.write("9999", "WhiteListManager Numerazione presente in whiteList DN"+dn+" CON CODICE SEGRETO :"+rec.getCodiceSegreto());
boolean res= Boolean.valueOf(rec.getCodiceSegreto().equalsIgnoreCase(codiceSegrOld));
//C09 aggiunta ulteriore controllo con l'introduzione della trascodifica dei cow sulla nuova TABELLA
if(res) {
log.write("9999", "WhiteListManager Numerazione presente in whiteList DN"+dn+" CON CODICE SEGRETO OLD :"+rec);
}else {
res= Boolean.valueOf(rec.getCodiceSegreto().equalsIgnoreCase(codiceSegretoNew));
log.write("9999", "WhiteListManager Numerazione presente in whiteList DN"+dn+" CON CODICE SEGRETO NEW :"+res);
}
return res;
}
}
// DBCFX_RU_253 END
return Boolean.FALSE; //non raggiungibile
}
public LogInfo getLogInfo() throws Exception {
LogInfo logInfo = new LogInfo();
logInfo.setProcess(getClass().getName());
logInfo.setLogPath(Resources.getLogPath());
logInfo.setTypeInfo(Resources.getTypeInfo());
logInfo.setTypeDebug(Resources.getTypeDebug());
logInfo.setTypeError(Resources.getTypeError());
return logInfo;
}
}

View File

@@ -0,0 +1,460 @@
package it.valueteam.gnp.manager.ftp;
import it.valueteam.gnp.dao.db.hb.GnpWholesaleIn;
import it.valueteam.gnp.dao.db.hb.GnpWholesaleInDAO;
import it.valueteam.gnp.jms.MessageHandler;
import it.valueteam.gnp.log.Loggable;
import it.valueteam.gnp.log.ProcessLogger;
import it.valueteam.gnp.obj.LogInfo;
import it.valueteam.gnp.obj.LogProcess;
import it.valueteam.gnp.obj.ftp.FTPPatternMapping;
import it.valueteam.gnp.obj.ftp.InfoSistemiFile;
import it.valueteam.gnp.obj.jms.FTPNotificationMessage;
import it.valueteam.gnp.systemcontroller.formatcontroller.ftp.FtpFileController;
import it.valueteam.gnp.utility.Resources;
import it.valueteam.gnp.utility.UserTransactionUtility;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.transaction.UserTransaction;
/**
* @version 2.0 DBCFX_RU_253 riduzione verbosita' log (refactor).
*/
public class FtpFileManager implements Loggable {
private static final String codiceLog = "FM";
//private static final String versione = "1.0.0";
private final String classSig = "[FtpFileManager] ";
private ProcessLogger log;
public FtpFileManager() throws Exception {
try{
LogProcess logProcess = new LogProcess();
logProcess.setCodice(codiceLog);
logProcess.setProcess(this);
log = new ProcessLogger(logProcess);
}
catch (Exception ex) {
System.out.println(classSig + "Errore nella creazione del ProcessLogger ["+ex.getClass().getName()+"] - " + ex.getMessage());
throw ex;
}
}
public void checkFileIN(String[] aNomiFile) throws Exception{
Vector v = null;
InfoSistemiFile sistemi = null;
UserTransaction utx = null;
String sSuffixFileOK = Resources.getSUFFIX_FTP_FILE_OK();
FtpFileController ftpController = null;
try {
log.write("9999","Inizio trattamento files");
ftpController = new FtpFileController(log);
v = new Vector();
for (int i = 0; i < aNomiFile.length; i++) {
sistemi = ftpController.checkFileIn(aNomiFile[i]);
//inserisco nel vettore i file definiti buoni
// e che devono essere spediti tramite coda
if(sistemi != null){
//se il file e' gestito tramite le code
if(sistemi.getGestione() == FTPPatternMapping.GESTIONE_CODE) {
//Se non e' richiesto il file di sincronizzazione
if ( (sistemi.getSyncFile() == null) ||
(sistemi.getSyncFile().equals(""))) {
v.addElement(sistemi);
}
else {//caso .CTR richiesto
// se non sto prendendo in consideraizone il file di sincronizzazione
if (!sistemi.getNome_file().endsWith(sistemi.getSyncFile())) {
//vedo se e' presente
String sNomeSyncFile = checkExistSyncFile(aNomiFile[i],
aNomiFile,
sistemi.getSyncFile());
//se ho trovato il file di sincronizzazione lo setto
if ( (sNomeSyncFile != null) && (!sNomeSyncFile.equals(""))) {
sistemi.setNome_file_sync(sNomeSyncFile);
// [S4.NOW] Verificare nella tabella GNP_WHOLESALE_IN se il file e' stato gia' lavorato
// a. GnpWholesaleInDAO.findByProperty(fileName)
// b. Se trovo il file non lo lavoro
// c. Cancello il file dalla dirIn
boolean fileLavorato = new GnpWholesaleInDAO().esisteFileLavorato(aNomiFile[i]);
if (fileLavorato) {
log.write("9999", "File gia' lavorato precedentemente ["+aNomiFile[i]+"]. Procedo con la cancellazione ...");
deleteFileIn(aNomiFile[i]);
log.write("9999", "File cancellato ["+aNomiFile[i]+"].");
} else {
v.addElement(sistemi);
}
}
}
}
}
}//se torno un null il file e' formalmente errato
else{
scartaFileIn(aNomiFile[i]);
try{
//utx = trans.beginUserTransaction();
log.write("9999", "Formato nome file non corretto : "+ aNomiFile[i]);
//UserTransactionUtility.endUserTransaction(utx, true); //COMMIT DELLA TRANSAZIONE
}
catch (Exception e){
// DBCFX_RU_253 BEGIN
System.out.println(classSig + "checkFileIN FAIL: ["+e.getClass().getName()+"] - " + e.getMessage());
//e.printStackTrace();
// DBCFX_RU_253 END
if(utx!=null)
UserTransactionUtility.endUserTransaction(utx, false); //ROLLBACK DELLA TRANSAZIONE
}
}
}
//effettuo il ciclo sui file buoni
for (int j = 0; j < v.size(); j++) {
String sNomeFile = ((InfoSistemiFile)v.elementAt(j)).getNome_file();
String sNomeFileSync = ((InfoSistemiFile)v.elementAt(j)).getNome_file_sync();
int id_sistema = ((InfoSistemiFile)v.elementAt(j)).getId_sistema();
int notification_type = ((InfoSistemiFile)v.elementAt(j)).getNotification_type();
String sNomeFileOld = sNomeFile;
sNomeFile = sNomeFileOld + sSuffixFileOK;
//Provo a rinominare i file buoni in _ver
if(rinominaFile(sNomeFileOld,sNomeFile)){
log.write("9999","File rinominato in ["+sNomeFile+"]");
try {
//se sono riuscita a rinominare il file inizio la transazione
utx = UserTransactionUtility.beginUserTransaction();
//inserisco il messaggio in coda
inserisciCodaIn(sNomeFileOld,id_sistema, notification_type);
// [S4.NOW] Aggiungo il file nella directory GNP_WHOLESALE_IN
GnpWholesaleIn fileIn = new GnpWholesaleIn();
fileIn.setFlagLavorato("Y");
fileIn.setNomeFile(sNomeFileOld);
fileIn.setIdSistema((long)id_sistema);
new GnpWholesaleInDAO().save(fileIn);
//chiudo la transazione
UserTransactionUtility.endUserTransaction(utx, true); //COMMIT DELLA TRANSAZIONE
//Effettuo il backup del file di sincronizzazione (se esite)
//solo dopo aver correttamente chiuso la transazione
if( (sNomeFileSync!= null) && (!sNomeFileSync.equals("") )){
if(backUpSyncFile(sNomeFileSync)){
log.write("9999","Eseguito backup del file di sincronizzazione : "+sNomeFileSync);
}
}
}
catch (Exception ex) {
// DBCFX_RU_253 BEGIN
//ex.printStackTrace();
System.out.println(classSig + "checkFileIN rolling back versione on: ["+ex.getClass().getName()+"] - " + ex.getMessage());
// DBCFX_RU_253 END
//in caso di errore faccio un rollback a mano
//e rinomino il file togliendo il suffisso '_ver'
//per farlo riprocessare dal poller.
log.write("9999","Effettuo il rollback della transazione");
//0010 C - ERRORE DURANTE L''ELABORAZIONE:
log.write("0010", " FILENAME " + sNomeFileOld);
if(utx!=null)
UserTransactionUtility.endUserTransaction(utx, false); //ROLLBACK DELLA TRANSAZIONE
//elimino l'_ver dal file
if(sNomeFile.endsWith(sSuffixFileOK)){
rinominaFile(sNomeFile,sNomeFileOld);
log.write("9999","File rinominato : "+sNomeFileOld);
}
//if ("0040".equals(ex.getMessage()))
// log.write("0040",sNomeFile,2,sNomeFile);
}
}
else{
log.write("9999","Errore nella rinominazione del file : "+sNomeFileOld);
}
} // chiude for
v.removeAllElements();
log.write("9999","Fine trattamento file");
}
catch (Exception ex) {
// DBCFX_RU_253 BEGIN
System.out.println(classSig + "checkFileIN FAIL: ["+ex.getClass().getName()+"] - " + ex.getMessage());
//System.out.println(ex.toString());
// DBCFX_RU_253 END
log.write("9999", "Fine trattamento file terminato con errori : " + ex.toString());
throw ex;
}
}
/**
* Metodo che effettua il backup dei file di
* sincronizzazione
* @param sFileSyncToBackUp
*/
public boolean backUpSyncFile(String sFileSyncToBackUp) {
String sDir = Resources.getPATH_FILE_IN();
String sDirBackUp = Resources.getBCK_PATH_FILE_SYNC_IN();
boolean bRit = false;
FileInputStream fis = null;
FileOutputStream fos = null;
try {
File bcK = new File(sDirBackUp);
if(!bcK.exists())bcK.mkdir();//creo la cartella se non esiste
File in = new File(sDir + sFileSyncToBackUp);
File out = new File(sDirBackUp + sFileSyncToBackUp);
fis = new FileInputStream(in);
fos = new FileOutputStream(out);
byte[] buf = new byte[1024];
int i = 0;
while((i=fis.read(buf))!=-1) {
fos.write(buf, 0, i);
}
fis.close();
fos.close();
in.delete();
bRit = true;
}
catch (IOException ex) {
log.write("9999", "Errore nel backup del file di sincronizzazione [" + sFileSyncToBackUp + "] per ["+ex.getClass().getName()+"] - " + ex.getMessage());
bRit = false;
} finally {
// C09_2017 RU_517 BEGIN
// Closing when previously closed will have no effect;
if(null != fis) {
try {
fis.close();
} catch (Exception e) {
System.out.println(classSig + "FAIL release stream: ["+e.getClass().getName()+"] - " + e.getMessage());
}
fis = null;
}
if(null != fos) {
try {
fos.close();
} catch (Exception e) {
System.out.println(classSig + "FAIL release stream: ["+e.getClass().getName()+"] - " + e.getMessage());
}
fos = null;
}
// C09_2017 RU_517 END
}
return bRit;
}
/**
* Rinomina i file
*
* @param sNomeFile --> file originario
* @param sRinominaIn --> nuovo nome file
* @return true se OK
* false se KO
*/
private boolean rinominaFile(String sNomeFile, String sRinominaIn){
File f = null;
File newF = null;
File fCtr = null;
String sDir = Resources.getPATH_FILE_IN();
boolean bRit = false;
try{
f = new File(sDir + sNomeFile);
newF = new File(sDir + sRinominaIn);
bRit = f.renameTo(newF);
//bRit = true;
}
catch(Exception e){
log.write("9999","Errore nella rinominazione del file ["+sNomeFile+ "] per ["+e.getClass().getName()+"] - " + e.getMessage());
bRit = false;
}
return bRit;
}
/**
* scarta i file scorretti
*
* @param sNomeFile --> file originario
* @param sRinominaIn --> nuovo nome file
* @return true se OK
* false se KO
*/
private void scartaFileIn(String sNomeFile){
String DirIn = Resources.getPATH_FILE_IN();
String Dirout = Resources.getPATH_SCARTI_FILE_IN();
FileInputStream fis = null;
FileOutputStream fos = null;
try{
File in = new File(DirIn + sNomeFile);
File out = new File(Dirout + sNomeFile);
fis = new FileInputStream(in);
fos = new FileOutputStream(out);
byte[] buf = new byte[1024];
int y = 0;
while ( (y = fis.read(buf)) != -1) {
fos.write(buf, 0, y);
}
//chiudo i canali
fis.close();
fos.close();
//cancello i file
in.delete();
}
catch (IOException ex) {
// DBCFX_RU_253 BEGIN
log.write("9999","Impossibile scartare il file ["+sNomeFile+"] per ["+ex.getClass().getName()+"] - " + ex.getMessage());
//ex.printStackTrace();
// DBCFX_RU_253 END
} finally {
// C09_2017 RU_517 BEGIN
// Closing when previously closed will have no effect;
if(null != fis) {
try {
fis.close();
} catch (Exception e) {
System.out.println(classSig + "FAIL release stream: ["+e.getClass().getName()+"] - " + e.getMessage());
}
fis = null;
}
if(null != fos) {
try {
fos.close();
} catch (Exception e) {
System.out.println(classSig + "FAIL release stream: ["+e.getClass().getName()+"] - " + e.getMessage());
}
fos = null;
}
// C09_2017 RU_517 END
}
}
/**
* Inserisce in coda
*
* @param sNomeFile
* @param idSistema
* @return
* @throws Exception
*/
public String inserisciCodaIn(String sNomeFile,int idSistema, int notification_type)
throws Exception
{
FTPNotificationMessage messaggio = null;
String sRet = "";
try
{
MessageHandler messageH = MessageHandler.getInstance();
messaggio = new FTPNotificationMessage();
messaggio.setNotificationType(notification_type);
messaggio.setSystemProvider(idSistema);
messaggio.setNomeFile(sNomeFile);
messageH.insertQueue(messaggio);
log.write("9999", "Inserimento messagio nella coda : " + sNomeFile + " - idSistema: " + idSistema + " - notification_type: " + notification_type);
}
catch (Exception e)
{
// DBCFX_RU_253 BEGIN
//e.printStackTrace();
log.write("9999", "Impossibile inserire in coda il file ["+sNomeFile+ "] per ["+e.getClass().getName()+"] - " + e.getMessage());
// DBCFX_RU_253 END
throw e;
//throw new Exception("0040");
}
return sRet;
}
/**
* Controlla l'esistenza del file di sincronizzazione
*/
private String checkExistSyncFile(String sNomiFile, String[] aListaNomiFile,
String sSyncFile) {
StringTokenizer st;
StringTokenizer stSincro;
String appo;
String appoSincro;
String sNomeFileSync = "";
//attenzione l'estensione del file di controllo inserita in tabella e' case sensitive
for (int j = 0; j < aListaNomiFile.length; j++) {
if (aListaNomiFile[j].endsWith(sSyncFile)) {
st = new StringTokenizer(sNomiFile, ".");
stSincro = new StringTokenizer(aListaNomiFile[j], ".");
appo = st.nextToken();
appoSincro = stSincro.nextToken();
if (appo.equals(appoSincro)) {
sNomeFileSync = aListaNomiFile[j];
}
}
}
return sNomeFileSync;
}
/**
* Imposta le modalita' di logging
* @return
* @throws Exception
*/
public LogInfo getLogInfo() throws Exception {
LogInfo logInfo = new LogInfo();
logInfo.setProcess(getClass().getName());
logInfo.setLogPath(Resources.getLogPath());
logInfo.setTypeInfo(Resources.getTypeInfo());
logInfo.setTypeDebug(Resources.getTypeDebug());
logInfo.setTypeError(Resources.getTypeError());
return logInfo;
}
/**
* Cancella i file dalla directory IN
*
* @param sNomeFile --> nome file da cancellare
*/
private void deleteFileIn(String sNomeFile){
String DirIn = Resources.getPATH_FILE_IN();
try{
File in = new File(DirIn + sNomeFile);
if (in.exists()) {
in.delete();
} else {
log.write("9999", "Impossibile cancellare il file [" + (DirIn + sNomeFile) + "]. File inesistente");
}
}
catch (Exception ex) {
// DBCFX_RU_253 BEGIN
log.write("9999","Impossibile cancellare il file ["+sNomeFile+ "] per ["+ex.getClass().getName()+"] - " + ex.getMessage());
//ex.printStackTrace();
// DBCFX_RU_253 END
}
}
}