515 lines
22 KiB
Java
515 lines
22 KiB
Java
package it.valueteam.gnp.controller;
|
|
|
|
import it.valueteam.gnp.dao.db.hb.GnpDoppioDonatingOloBridge;
|
|
import it.valueteam.gnp.dao.db.hb.GnpDoppioDonatingOloBridgeDAO;
|
|
import it.valueteam.gnp.dao.db.hb.GnpOloRichiesteIn;
|
|
import it.valueteam.gnp.dao.db.hb.GnpPitagoraA375In;
|
|
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRec;
|
|
import it.valueteam.gnp.dao.db.hb.GnpRichiesteRecDAO;
|
|
import it.valueteam.gnp.dao.db.hb.crm.AbstractGnpCrmInRec;
|
|
import it.valueteam.gnp.exception.StateTransitionNotPossibleException;
|
|
import it.valueteam.gnp.jms.MessageHandler;
|
|
import it.valueteam.gnp.log.Loggable;
|
|
import it.valueteam.gnp.log.ProcessLogger;
|
|
import it.valueteam.gnp.manager.RequestDoppioDonatingManager;
|
|
import it.valueteam.gnp.manager.RequestManagerRec;
|
|
import it.valueteam.gnp.obj.ApplicationCostants;
|
|
import it.valueteam.gnp.obj.CRMMap;
|
|
import it.valueteam.gnp.obj.LogInfo;
|
|
import it.valueteam.gnp.obj.LogProcess;
|
|
import it.valueteam.gnp.obj.StatoRichiestaDoppioDonating;
|
|
import it.valueteam.gnp.obj.StatoRichiestaRec;
|
|
import it.valueteam.gnp.obj.jms.NotificationMessage;
|
|
import it.valueteam.gnp.obj.jms.NotificationMessageIF;
|
|
import it.valueteam.gnp.obj.jms.UniqueIdNotificationMessage;
|
|
import it.valueteam.gnp.systemcontroller.ControllerFactory;
|
|
import it.valueteam.gnp.systemcontroller.SystemController;
|
|
import it.valueteam.gnp.systemcontroller.SystemControllerIF;
|
|
import it.valueteam.gnp.systemcontroller.crm.SistemaCrmIF;
|
|
import it.valueteam.gnp.systemcontroller.formatcontroller.doppiodonating.DoppioDonatingFormatController;
|
|
import it.valueteam.gnp.systemcontroller.formatcontroller.pitagora.WSPitagoraFormatController;
|
|
import it.valueteam.gnp.systemcontroller.pitagora.WSPitagoraController;
|
|
import it.valueteam.gnp.utility.Func;
|
|
import it.valueteam.gnp.utility.Resources;
|
|
/**
|
|
* <p>
|
|
* Title: DoppioDonatingController
|
|
* Description: kit X5 2009: gestisce le richieste di tipo doppio donating
|
|
* Copyright: Copyright (c) 2009
|
|
* Company: Value team
|
|
* </p>
|
|
*
|
|
* @author Danilo Del Fio
|
|
* @version 1.0
|
|
* @version 2.0 20180717 corretta gestione richiesta duale null
|
|
*/
|
|
public class DoppioDonatingController extends SystemController implements Loggable {
|
|
|
|
protected ProcessLogger log;
|
|
protected String codiceProcesso = "YB";
|
|
protected final static String versione = "1.0.0";
|
|
private GnpDoppioDonatingOloBridgeDAO richiesteDDDAO;
|
|
private static DoppioDonatingController onlyInstance;
|
|
|
|
private final static String TIPO_SERVIZIO_FONIA = "F";
|
|
|
|
|
|
protected DoppioDonatingController() throws Exception {
|
|
try {
|
|
LogProcess logProcess = new LogProcess();
|
|
logProcess.setCodice(codiceProcesso);
|
|
logProcess.setProcess(this);
|
|
log = new ProcessLogger(logProcess);
|
|
richiesteDDDAO= new GnpDoppioDonatingOloBridgeDAO();
|
|
} catch (Exception ex) {
|
|
System.out.println("Errore nella creazione del ProcessLogger");
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Utilizzato per ottenere l'istanza del controller
|
|
* @throws Exception
|
|
* @return DoppioDonatingController
|
|
*/
|
|
public static DoppioDonatingController getInstance() throws Exception {
|
|
if (onlyInstance == null) {
|
|
synchronized (DoppioDonatingController.class) {
|
|
if (onlyInstance == null)
|
|
onlyInstance = new DoppioDonatingController();
|
|
}
|
|
}
|
|
return onlyInstance;
|
|
}
|
|
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
public void handleMessage(NotificationMessage messaggio) throws Exception {
|
|
|
|
int notificationtype = messaggio.getNotificationType();
|
|
|
|
// 0004 N - INIZIO TRATTAMENTO MESSAGGIO
|
|
log.write("0004", this.getVersione() + "TIPO_NOTIFICA = ["+ messaggio.getNotificationType() + "]");
|
|
|
|
try
|
|
{
|
|
switch (notificationtype) {
|
|
case NotificationMessageIF.NotificationType_DOPPIO_DONATING_OUT:
|
|
handleOutgoingMessages(messaggio);
|
|
break;
|
|
default:
|
|
log.write("9999", "NOTIFICATION TYPE SCONOSCIUTO" + Func.getFieldDescription(messaggio));
|
|
break;
|
|
}
|
|
|
|
// Log 0006 (N) = 'FINE TRATTAMENTO MESSAGGIO'
|
|
log.write("0006", "TIPO_NOTIFICA = [" + messaggio.getNotificationType() + "]");
|
|
} catch (Exception ex) {
|
|
log.write("0007", "TIPO_NOTIFICA = [" + messaggio.getNotificationType() + "] -" +ex.toString()+" - tracciato:"+Func.getFieldDescription(messaggio));
|
|
ex.printStackTrace();
|
|
throw ex;
|
|
} catch (Throwable th) {
|
|
th.printStackTrace();
|
|
|
|
// *******************************************************************************************
|
|
|
|
log.write("0007", "TIPO_NOTIFICA = [" + messaggio.getNotificationType() + "] -" +th.toString()+" - tracciato:"+Func.getFieldDescription(messaggio));
|
|
throw new Exception(th.toString()); // in ogni caso faccio
|
|
// tornare il msg in coda
|
|
// ********************************************************************************************
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Il metodo inserisce in coda un messaggio di notifica doppio donating
|
|
* @param gestioneRec GnpRichiesteRec
|
|
*/
|
|
public void notificaRichiestaDoppioDonating(GnpRichiesteRec richiestaRec) throws Exception {
|
|
NotificationMessage messaggioOut = null;
|
|
messaggioOut= creaNotificationMessageDoppioDonatingOut(richiestaRec.getIdRichiesta(),richiestaRec.getProcesso());
|
|
if(messaggioOut!=null) {
|
|
inserisciMessaggioInCoda(messaggioOut);
|
|
}
|
|
}
|
|
|
|
public void elaboraRispostaOLO(GnpDoppioDonatingOloBridge richiestaDoppioDonating, GnpOloRichiesteIn oloRichiestaIn) throws Exception {
|
|
try
|
|
{
|
|
boolean changedState = false; // Flag che indica che la richiesta ha cambiato stato
|
|
|
|
|
|
if (oloRichiestaIn.getTipoComunicazione().intValue() == ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_FORMALI) {
|
|
if (oloRichiestaIn.getStatoRichiesta().intValue() == ApplicationCostants.OLO_STATO_RICHIESTA_KO) {
|
|
int codiceCausale = Integer.parseInt((oloRichiestaIn.getCodiceMotivoRifiuto()));
|
|
gestisciKoOLO(oloRichiestaIn.getTipoComunicazione().intValue(),codiceCausale, richiestaDoppioDonating);
|
|
} else {
|
|
RequestDoppioDonatingManager.avanzaStatoInAccettata(richiestaDoppioDonating,oloRichiestaIn.getCodiceSessione(), log);
|
|
}
|
|
|
|
changedState = true;
|
|
}
|
|
else if (oloRichiestaIn.getTipoComunicazione().intValue() == ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_GESTIONALI) {
|
|
if (oloRichiestaIn.getStatoRichiesta().intValue() == ApplicationCostants.OLO_STATO_RICHIESTA_KO) {
|
|
int codiceCausale = Integer.parseInt((oloRichiestaIn.getCodiceMotivoRifiuto()));
|
|
gestisciKoOLO(oloRichiestaIn.getTipoComunicazione().intValue(), codiceCausale,richiestaDoppioDonating);
|
|
} else {
|
|
RequestDoppioDonatingManager.avanzaStatoInValidata(richiestaDoppioDonating, log);
|
|
}
|
|
|
|
changedState = true;
|
|
} else if (oloRichiestaIn.getTipoComunicazione().intValue() == ApplicationCostants.OLO_TIPO_COMUNICAZIONE_MUTATA_VOLONTA) {
|
|
// aggiorno la richiesta e la salvo
|
|
updateMutataVolonta(richiestaDoppioDonating);
|
|
|
|
log.write("9999", "ACQUISITA TIPO COMUNICAZIONE MUTATA VOLONTA' PER ID_RICHIESTA : " + richiestaDoppioDonating.getUniqueId());
|
|
} else {
|
|
log.write("9999", "TIPO COMUNICAZIONE:" + oloRichiestaIn.getTipoComunicazione().intValue()
|
|
+ " NON SUPPORTATO PER LA RICHIESTA CON ID_ESIGENZA: " + oloRichiestaIn.getCodiceOrdineRecipient());
|
|
}
|
|
|
|
if(changedState)
|
|
modificaRichiestaBusinessPerOLOIn(richiestaDoppioDonating, oloRichiestaIn);
|
|
}
|
|
catch (StateTransitionNotPossibleException e) {
|
|
log.write("9999", "RICHIESTA DI TRANSIZIONE DI STATO INCONSISTENTE SU ID_RICHIESTA=" + richiestaDoppioDonating.getUniqueId());
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
private void updateMutataVolonta(GnpDoppioDonatingOloBridge richiestaDoppioDonating) {
|
|
GnpRichiesteRecDAO daoBusiness = new GnpRichiesteRecDAO();
|
|
GnpRichiesteRec richiestaRec = daoBusiness.findById(richiestaDoppioDonating.getIdRichiesta());
|
|
|
|
richiestaRec.setMutataVolonta(new Long(1));
|
|
daoBusiness.merge(richiestaRec);
|
|
|
|
}
|
|
|
|
public void verificaA375(GnpRichiesteRec richiestaRec,GnpPitagoraA375In pitagoraA375In, boolean isSpeciale, boolean isInbound,boolean isFlagDichiarazioneChecked) throws Exception{
|
|
// verifico la tipologia del processo che stiamo gestendo
|
|
if (pitagoraA375In.getTipoProcesso().equals(WSPitagoraFormatController.TIPO_PROCESSO_RIENTRO)) {
|
|
// FONIA
|
|
if(pitagoraA375In.getStato().equals(WSPitagoraController.ESITO_OK)) { // ESITO = OK
|
|
// FONIA OK !!!
|
|
WSPitagoraController.getInstance().gestisciRichiestaDaInviareAlWS(richiestaRec);
|
|
} else {// ESITO = KO
|
|
if (pitagoraA375In.getCodiceKo().equals(WSPitagoraController.ESITO_KO_A375)) { // esito KO = A1
|
|
if (isSpeciale || (isInbound && isFlagDichiarazioneChecked)) {
|
|
GnpRichiesteRecDAO richRecDAO = new GnpRichiesteRecDAO();
|
|
richiestaRec.setVerificataA375(WSPitagoraFormatController.VERIFICATA_A375);
|
|
richRecDAO.merge(richiestaRec);
|
|
// inserisco nella richiesta i valori che identificano una richiesta dati
|
|
// verificare il tipo_processo e tipo_atterraggio
|
|
WSPitagoraController.getInstance().gestisciRichiestaDaInviareAlWS(richiestaRec);
|
|
} else {
|
|
RequestManagerRec.avanzaStatoInVerificataKO(richiestaRec, WSPitagoraController.ESITO_KO_A375, log);
|
|
}
|
|
} else { // esito KO <> A1
|
|
RequestManagerRec.avanzaStatoInRifiutataPitagora(richiestaRec, pitagoraA375In.getCodiceKo(), pitagoraA375In.getDescrizioneKo(), true, CRMMap.NOTIFICA_RIFIUTATAPITAGORA_A375, log);
|
|
}
|
|
}
|
|
} else {
|
|
// DATI
|
|
if(pitagoraA375In.getStato().equals(WSPitagoraController.ESITO_OK)) { // ESITO = OK
|
|
// DATI OK !!!
|
|
if(richiestaRec.getVerificataA375().equals(WSPitagoraFormatController.VERIFICATA_A375)) {
|
|
// INVIO NOTIFICA A CRM CON TIPO_EVENTO=VALIDAZIONE_ANTITRUST ED ESITO=OK
|
|
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
|
|
crmController.notificaCRM(richiestaRec.getIdRichiesta(), CRMMap.NOTIFICA_VALIDATAPITAGORA_A375);
|
|
}
|
|
RequestManagerRec.avanzaStatoInVerificataOK(richiestaRec, WSPitagoraController.ESITO_OK,true, log);
|
|
} else {// ESITO = KO
|
|
if (pitagoraA375In.getCodiceKo().equals(WSPitagoraController.ESITO_KO_A375)) { // esito KO = A1
|
|
if (isSpeciale || (isInbound && isFlagDichiarazioneChecked)) {
|
|
GnpRichiesteRecDAO richRecDAO = new GnpRichiesteRecDAO();
|
|
richiestaRec.setVerificataA375(WSPitagoraFormatController.VERIFICATA_A375);
|
|
richRecDAO.merge(richiestaRec);
|
|
// INVIO NOTIFICA A CRM CON TIPO_EVENTO=VALIDAZIONE_ANTITRUST ED ESITO=OK
|
|
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
|
|
crmController.notificaCRM(richiestaRec.getIdRichiesta(), CRMMap.NOTIFICA_VALIDATAPITAGORA_A375);
|
|
} else {
|
|
RequestManagerRec.avanzaStatoInVerificataKO(richiestaRec, WSPitagoraController.ESITO_KO_A375, log);
|
|
// INVIO NOTIFICA A CRM CON TIPO_EVENTO=VALIDAZIONE_ANTITRUST, ESITO=KO e CAUSALE=A1
|
|
SistemaCrmIF crmController = ControllerFactory.getSistemaCrmFromPiattaformaProvenienza(richiestaRec.getPiattaformaProvenienza());
|
|
crmController.notificaCRM(richiestaRec.getIdRichiesta(), CRMMap.NOTIFICA_RIFIUTATAPITAGORA_A375);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void gestisciKoOLO(int tipoCom, int codiceCausale,GnpDoppioDonatingOloBridge richiestaDoppioDonating) throws Exception{
|
|
switch(tipoCom){
|
|
case ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_FORMALI:
|
|
if(codiceCausale==ApplicationCostants.KO_SUPERMENTO_SOGLIA_VER_FORMALI){
|
|
RequestDoppioDonatingManager.avanzaStatoInDaReinviare(richiestaDoppioDonating,codiceCausale, log);
|
|
}else{
|
|
RequestDoppioDonatingManager.avanzaStatoInAccettataKO(richiestaDoppioDonating, codiceCausale,log);
|
|
}
|
|
break;
|
|
//ST 2018-BU-71554 Ottimizzazione gestione KO Fase 2
|
|
/*
|
|
* Cambiare eventualmente gestione risottomissione nel caso di richiesta
|
|
* appartenente al CRMB. In questo caso avanzare la richiesta direttamente in rifiutataOLO
|
|
*/
|
|
case ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_GESTIONALI:
|
|
if(codiceCausale==ApplicationCostants.KO_TRASLOCO_VER_GESTIONALI){
|
|
int numKoTrasloco = richiestaDoppioDonating.getNumKoTraslocoOlo() == null ? 0 : richiestaDoppioDonating.getNumKoTraslocoOlo().intValue()+1;
|
|
if(numKoTrasloco<ApplicationCostants.MAX_KO_TRASLOCO_OLO){
|
|
RequestDoppioDonatingManager.avanzaStatoInDaReinviare(richiestaDoppioDonating,codiceCausale, log);
|
|
}else{
|
|
log.write("9999", "RAGGIUNTO NUMERO MASSIMO DI KO PER RICHIESTA DOPPIO DONATING CON CODICE :"+ApplicationCostants.KO_TRASLOCO_VER_GESTIONALI+", ID_RICHIESTA : "+richiestaDoppioDonating.getUniqueId());
|
|
RequestDoppioDonatingManager.avanzaStatoInRifiutata(richiestaDoppioDonating, codiceCausale,log);
|
|
}
|
|
}else{
|
|
RequestDoppioDonatingManager.avanzaStatoInRifiutata(richiestaDoppioDonating, codiceCausale, log);
|
|
}
|
|
break;
|
|
default:
|
|
throw new Exception("Tipo Comunicazione sconosciuto durante la gestione del KO da OLO PER RICHIESTA DOPPIO DONATING");
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Determina e applica le modifiche alla richiesta di business all'arrivo della notifica da OLO
|
|
*
|
|
* @param richiestaDD
|
|
* @param richiestaIn
|
|
* @version 2.0 20180717 corretta gestione richiesta duale null
|
|
*/
|
|
private void modificaRichiestaBusinessPerOLOIn(GnpDoppioDonatingOloBridge richiestaDD, GnpOloRichiesteIn richiestaIn)
|
|
throws Exception
|
|
{
|
|
GnpDoppioDonatingOloBridgeDAO dao = new GnpDoppioDonatingOloBridgeDAO();
|
|
GnpDoppioDonatingOloBridge richDuale = dao.findRichiestaDuale(richiestaDD);
|
|
GnpRichiesteRecDAO daoBusiness = new GnpRichiesteRecDAO();
|
|
GnpRichiesteRec richBusiness = daoBusiness.findById(richiestaDD.getIdRichiesta());
|
|
|
|
boolean richOlo1 = richiestaDD.getTipoServizio().equals(TIPO_SERVIZIO_FONIA);
|
|
|
|
// version 2.0 20180717 BEGIN
|
|
Long stato_OLO1 = richOlo1 ? richiestaDD.getStato() : ( null == richDuale ? null : richDuale.getStato() );
|
|
//Long stato_OLO1 = richOlo1 ? richiestaDD.getStato() : richDuale.getStato();
|
|
|
|
Long stato_OLO2 = richOlo1 ? ( null == richDuale ? null : richDuale.getStato() ) : richiestaDD.getStato() ;
|
|
//Long stato_OLO2 = !richOlo1 ? richiestaDD.getStato() : (richDuale != null ? richDuale.getStato() : null);
|
|
// version 2.0 20180717 END
|
|
|
|
int codiceCausaleKoOLO = 0;
|
|
|
|
Long statoRichBusiness = StatoRichiestaDoppioDonating.checkTransizioneRichiestaBase(stato_OLO1, stato_OLO2, richBusiness.getStato(), richOlo1);
|
|
|
|
if(statoRichBusiness != null)
|
|
{
|
|
switch(statoRichBusiness.intValue())
|
|
{
|
|
case StatoRichiestaRec.ACCETTATA:
|
|
// Avverti che non deve notificare a OLO!
|
|
RequestManagerRec.avanzaStatoInAccettata(richBusiness, richiestaIn.getCodiceSessione(), !richOlo1, false, log);
|
|
break;
|
|
|
|
case StatoRichiestaRec.INVIOOLO:
|
|
RequestManagerRec.avanzaStatoInInvioOlo(richBusiness, log);
|
|
break;
|
|
|
|
case StatoRichiestaRec.ACCETTATAKO:
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
// Avverti che non deve notificare a OLO!
|
|
RequestManagerRec.avanzaStatoInAccettataKO(richBusiness, codiceCausaleKoOLO, false, log);
|
|
break;
|
|
|
|
case StatoRichiestaRec.RIFIUTATA_OLO:
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
// Avverti che non deve notificare a OLO!
|
|
RequestManagerRec.avanzaStatoInRifiutataOlo(richBusiness, codiceCausaleKoOLO, false, log);
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch(richiestaDD.getStato().intValue())
|
|
{
|
|
case StatoRichiestaDoppioDonating.ACCETTATA:
|
|
// Imposta codice sessione
|
|
if(richOlo1) {
|
|
richBusiness.setCodiceSessioneOlo(richiestaIn.getCodiceSessione());
|
|
} else {
|
|
richBusiness.setCodiceSessioneOlo2(richiestaIn.getCodiceSessione());
|
|
}
|
|
break;
|
|
|
|
case StatoRichiestaDoppioDonating.DA_REINVIARE:
|
|
// Se si tratta di un KO per trasloco...
|
|
if(richiestaIn.getTipoComunicazione().intValue() == ApplicationCostants.OLO_TIPO_COMUNICAZIONE_VER_GESTIONALI)
|
|
{
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
if(richOlo1) {
|
|
richBusiness.setCodiceRifiutoOloValidazione(new Long(codiceCausaleKoOLO));
|
|
} else {
|
|
richBusiness.setCodiceRifiutoOlo2Validaz(new Long(codiceCausaleKoOLO));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// altrimenti solo il codice rifiuto OLO
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
if(richOlo1) {
|
|
richBusiness.setCodiceRifiutoOloAccett(new Long(codiceCausaleKoOLO));
|
|
} else {
|
|
richBusiness.setCodiceRifiutoOlo2Accett(new Long(codiceCausaleKoOLO));
|
|
}
|
|
}
|
|
break;
|
|
|
|
case StatoRichiestaDoppioDonating.ACCETTATAKO:
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
if(richOlo1) {
|
|
richBusiness.setCodiceRifiutoOloAccett(new Long(codiceCausaleKoOLO));
|
|
} else {
|
|
richBusiness.setCodiceRifiutoOlo2Accett(new Long(codiceCausaleKoOLO));
|
|
}
|
|
break;
|
|
|
|
case StatoRichiestaDoppioDonating.RIFIUTATA:
|
|
codiceCausaleKoOLO = Integer.parseInt((richiestaIn.getCodiceMotivoRifiuto()));
|
|
if(richOlo1) {
|
|
richBusiness.setCodiceRifiutoOloValidazione(new Long(codiceCausaleKoOLO));
|
|
} else {
|
|
richBusiness.setCodiceRifiutoOlo2Validaz(new Long(codiceCausaleKoOLO));
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void handleOutgoingMessages(NotificationMessage msg) throws Exception {
|
|
//recupero la richiesta di doppio donating dalla tabella di business
|
|
UniqueIdNotificationMessage messaggio = (UniqueIdNotificationMessage)msg;
|
|
GnpRichiesteRecDAO richiesteDao= new GnpRichiesteRecDAO();
|
|
GnpRichiesteRec richiestaRec= richiesteDao.findById(messaggio.getUnique_id());
|
|
DoppioDonatingFormatController formatController = new DoppioDonatingFormatController();
|
|
|
|
// salvo sicuramente la prima richiesta indirizzata all'olo 1
|
|
GnpDoppioDonatingOloBridge richDD= formatController.createDoubleDonatingRequest(richiestaRec, true);
|
|
richiesteDDDAO.save(richDD);
|
|
// verifico che i due COW siano diversi
|
|
if(!richiestaRec.getCow().equals(richiestaRec.getCow2())) {
|
|
//il flag per la creazione della richiesta da salvare, serve per definire se si tratta
|
|
//della richiesta da inviare ad OLO1 (true) o OLO2 (false)
|
|
richDD= formatController.createDoubleDonatingRequest(richiestaRec, false);
|
|
richiesteDDDAO.save(richDD);
|
|
}
|
|
|
|
RequestManagerRec.avanzaStatoInInvioOlo(richiestaRec, log);
|
|
}
|
|
|
|
protected String getVersione() {
|
|
return versione;
|
|
}
|
|
|
|
@Override
|
|
protected int getSystemControllerProvider() {
|
|
return SystemControllerIF.SystemProvider_DOPPIO_DONATING;
|
|
}
|
|
|
|
/**
|
|
* Metodo che inserisce in coda un messagio deve essere sempre chiamato in
|
|
* ****TRANSAZIONE*****
|
|
*
|
|
* @throws Exception
|
|
*/
|
|
protected void inserisciMessaggioInCoda(NotificationMessage messaggio) throws Exception {
|
|
MessageHandler messageH = null;
|
|
messageH = MessageHandler.getInstance();
|
|
messageH.insertQueue(messaggio);
|
|
}
|
|
|
|
/**
|
|
* Crea il NotificationMessage da inserire nella coda di uscita
|
|
*
|
|
* @param uniqueId String
|
|
* @return NotificationMessage
|
|
*/
|
|
protected NotificationMessage creaNotificationMessageDoppioDonatingIn(Long uniqueId, String tipoServizio) {
|
|
UniqueIdNotificationMessage messaggio = new UniqueIdNotificationMessage();
|
|
messaggio.setUnique_id(uniqueId);
|
|
messaggio.setNotificationType(NotificationMessageIF.NotificationType_DOPPIO_DONATING_IN);
|
|
// to do verificare il tipo processo se da inserire
|
|
//DA VERIFICARE ANCHE SE TIPO SERVIZIO NEL NOSTRO CASO COINCIDE COL TIPO PROCESSO
|
|
messaggio.setProcessType(tipoServizio);
|
|
messaggio.setSystemProvider(NotificationMessageIF.SystemProvider_DOPPIO_DONATING);
|
|
return messaggio;
|
|
}
|
|
|
|
/**
|
|
* Crea il NotificationMessage da inserire nella coda di uscita
|
|
*
|
|
* @param uniqueId String
|
|
* @return NotificationMessage
|
|
*/
|
|
protected NotificationMessage creaNotificationMessageDoppioDonatingOut(Long uniqueId, String tipoServizio) {
|
|
UniqueIdNotificationMessage messaggio = new UniqueIdNotificationMessage();
|
|
messaggio.setUnique_id(uniqueId);
|
|
messaggio.setNotificationType(NotificationMessageIF.NotificationType_DOPPIO_DONATING_OUT);
|
|
// to do verificare il tipo processo se da inserire
|
|
//DA VERIFICARE ANCHE SE TIPO SERVIZIO NEL NOSTRO CASO COINCIDE COL TIPO PROCESSO
|
|
messaggio.setProcessType(tipoServizio);
|
|
messaggio.setSystemProvider(NotificationMessageIF.SystemProvider_DOPPIO_DONATING);
|
|
return messaggio;
|
|
}
|
|
|
|
public void gestisciDisdetta(GnpRichiesteRec richiestaRec, String tipoDisdetta, String tipoEvento) throws Exception {
|
|
// Se la disdetta e' di FONIA va fatto l'avanzamento di stato della richiesta di business e delle singole richieste
|
|
if ("F".equals(tipoDisdetta)) {
|
|
GnpDoppioDonatingOloBridge ddFonia = richiesteDDDAO.findRichiestaFonia(richiestaRec.getIdRichiesta());
|
|
if (ddFonia != null) {
|
|
RequestDoppioDonatingManager.avanzaStatoInDisdetta(ddFonia, log);
|
|
}
|
|
GnpDoppioDonatingOloBridge ddDati = richiesteDDDAO.findRichiestaDuale(ddFonia);
|
|
if (ddDati != null) {
|
|
RequestDoppioDonatingManager.avanzaStatoInDisdetta(ddDati, log);
|
|
}
|
|
RequestManagerRec.avanzaStatoInDisdetta(richiestaRec, tipoEvento);
|
|
} else {
|
|
// Se la disdetta e' di DATI la richiesta di business non subisce avanzamenti di stato, ma solamente
|
|
// quella duale
|
|
GnpDoppioDonatingOloBridge richiestaDD = richiesteDDDAO.findRichiestaDati(richiestaRec.getIdRichiesta());
|
|
if (richiestaDD != null) {
|
|
RequestDoppioDonatingManager.avanzaStatoInDisdetta(richiestaDD, log);
|
|
// In questo caso il codice sessione 2 va azzerato per non inviarlo a Pitagora
|
|
richiestaRec.setCodiceSessioneOlo2("");
|
|
}
|
|
}
|
|
}
|
|
|
|
public void gestisciEmissione(GnpRichiesteRec richiestaRec)
|
|
throws Exception
|
|
{
|
|
// Se l'emissione arriva prima della Fase III deve essere inviata disdetta a OLO2
|
|
switch(richiestaRec.getStato().intValue())
|
|
{
|
|
case StatoRichiestaRec.INVIOOLO:
|
|
case StatoRichiestaRec.ACCETTATA:
|
|
case StatoRichiestaRec.VALIDATING:
|
|
GnpDoppioDonatingOloBridge ddDati = richiesteDDDAO.findRichiestaDati(richiestaRec.getIdRichiesta());
|
|
if(ddDati != null)
|
|
RequestDoppioDonatingManager.avanzaStatoInDisdetta(ddDati, log);
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|