Files
gateway-dbc-fx/gnpdev/dbcfx/src/it/valueteam/gnp/manager/RequestManagerNngRec.java
2024-05-09 17:40:24 +02:00

271 lines
12 KiB
Java

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));
}
}