com.gisnet.cancelacion.webservices.RegistraActualizaYConsultaCaso.java Source code

Java tutorial

Introduction

Here is the source code for com.gisnet.cancelacion.webservices.RegistraActualizaYConsultaCaso.java

Source

/*
 * Copyright (C) 2015 GISNET
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.gisnet.cancelacion.webservices;

import com.gisnet.cancelacion.core.services.CasoService;
import com.gisnet.cancelacion.core.services.CartaCancelacionService;
import com.gisnet.cancelacion.core.services.NotarioService;
import com.gisnet.cancelacion.core.services.StatusCasoService;
import com.gisnet.cancelacion.events.FindByRequest;
import com.gisnet.cancelacion.events.FindResponse;
import com.gisnet.cancelacion.events.MultipleParams;
import com.gisnet.cancelacion.events.SaveRequest;
import com.gisnet.cancelacion.events.SaveResponse;
import com.gisnet.cancelacion.events.UpdateRequest;
import com.gisnet.cancelacion.events.info.CasoInfo;
import com.gisnet.cancelacion.events.info.CartaCancelacionInfo;
import com.gisnet.cancelacion.events.info.NotarioInfo;
import com.gisnet.cancelacion.events.info.StatusCasoInfo;
import com.gisnet.cancelacion.webservices.dto.InfoDeActualizacion;
import com.gisnet.cancelacion.webservices.dto.InfoDeConsulta;
import com.gisnet.cancelacion.webservices.dto.StatusCarta;
import com.gisnet.cancelacion.webservices.dto.StatusCaso;
import com.gisnet.cancelacion.webservices.dto.StatusOperacion;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

/**
 *
 * @author leonel
 */
public class RegistraActualizaYConsultaCaso extends SpringBeanAutowiringSupport {
    @Autowired
    private CasoService service;

    @Autowired
    private StatusCasoService statusService;

    @Autowired
    private CartaCancelacionService ccService;

    @Autowired
    private NotarioService notarioService;

    public StatusOperacion registraCaso(String numeroDeCredito, String numeroDeCaso, String nombreAcreditado,
            String entidad, String procedeCredito, String descripcionCredito, Double saldoCredito,
            String fechaLiquidacionCredito, Double saldoCreditoVSM) {

        StatusOperacion so = new StatusOperacion();

        //Busca nmero de caso si existe o no   
        FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
        FindResponse<CasoInfo> casoresponse = service.find(fbr);

        //System.out.println("CASO ID:      "+ casoresponse.getInfo().getId());

        // si no existe el caso lo crea
        if (casoresponse.getInfo() == null) {

            Date fechaDeCreacion = new Date();

            CasoInfo caso = new CasoInfo();

            try {
                caso.setNombreAcreditado(nombreAcreditado);
                caso.setNumeroCaso(numeroDeCaso);
                caso.setNumeroCredito(numeroDeCredito);
                caso.setFechaCreacion(fechaDeCreacion);
                caso.setFechaActualizacion(fechaDeCreacion);
                caso.setEntidad(entidad);

                //Informacin del crdito
                caso.setProcedeCredito(procedeCredito);
                caso.setDescripcionCredito(descripcionCredito);
                caso.setSaldoCredito(saldoCredito);
                caso.setFechaLiquidacionCredito(fechaLiquidacionCredito);
                caso.setSaldoCreditoVSM(saldoCreditoVSM);

                int s = 1;

                FindByRequest clave = new FindByRequest("clave", s);

                if (clave != null) {

                    FindResponse<StatusCasoInfo> scresponse = statusService.find(clave);
                    caso.setStatusCaso(scresponse.getInfo());

                }

                SaveRequest<CasoInfo> saveRequest = new SaveRequest<>();
                saveRequest.setInfo(caso);
                SaveResponse<CasoInfo> save = service.save(saveRequest);

                so.setCodigo(0);
                so.setDescripcion("Caso registrado con xito");

            } catch (Exception e) {

                //System.out.println("ERRORRRRRRRRRRR    "+e.getMessage());

                if (e.getMessage() != null) {
                    if (e.getMessage().equals(
                            "Could not open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection")) {
                        so.setCodigo(2);
                        so.setDescripcion("No hay conexin con la base de datos.");
                    } else {
                        so.setCodigo(1);
                        so.setDescripcion("No se hizo registro del caso");
                    }
                } else {
                    so.setCodigo(2);
                    so.setDescripcion("No hay conexin con la base de datos.");
                }
            }

        } else {
            so.setCodigo(3);
            so.setDescripcion("Ya existe el nmero de caso " + numeroDeCaso);
        }

        return so;

    }

    public InfoDeActualizacion actualizaCaso(String numeroDeCredito, String numeroDeCaso, Date fecha, int status,
            byte[] cartaDeCancelacionPdf, Date fechaEmisionCarta, String numeroDeFolio, String md5,
            String identificadorUnicoNotario) {

        InfoDeActualizacion ida = new InfoDeActualizacion();

        /**com.gisnet.cancelacion.wsclient.pms.Pms_Service pmsService = new com.gisnet.cancelacion.wsclient.pms.Pms_Service();
        com.gisnet.cancelacion.wsclient.pms.Pms pmsPort = pmsService.getPmsPort();
        com.gisnet.cancelacion.wsclient.pms.InfoStatusCaso isc = new com.gisnet.cancelacion.wsclient.pms.InfoStatusCaso(); 
        return port.suma(sumador1, sumador2);
         * **/

        com.gisnet.cancelacion.wsclient.microflujo.SICANCELACIONOUService microService = new com.gisnet.cancelacion.wsclient.microflujo.SICANCELACIONOUService();
        com.gisnet.cancelacion.wsclient.microflujo.DTCANCELACIONREQ entradas = new com.gisnet.cancelacion.wsclient.microflujo.DTCANCELACIONREQ();
        com.gisnet.cancelacion.wsclient.microflujo.DTCANCELACIONRESP salidas = new com.gisnet.cancelacion.wsclient.microflujo.DTCANCELACIONRESP();

        try {
            //Busca nmero de caso a actualizar   
            FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
            FindResponse<CasoInfo> casoresponse = service.find(fbr);

            //System.out.println("CASO ID:      "+ casoresponse.getInfo().getId());

            // si existe el caso
            if (casoresponse.getInfo() != null) {

                // busca la clave del status de caso a actualizar
                FindByRequest clave = new FindByRequest("clave", status);
                FindResponse<StatusCasoInfo> sciResponse = statusService.find(clave);

                //System.out.println("CLAVE 1:    "+ sciResponse.getInfo().getId());

                if (sciResponse.getInfo() != null) {
                    //System.out.println("sci Response"+sciResponse.getInfo());
                    casoresponse.getInfo().setStatusCaso(sciResponse.getInfo());

                }

                casoresponse.getInfo().setFechaActualizacion(fecha);

                //Agregar nuevos campos
                //AQU?

                long idCarta = casoresponse.getInfo().getCartaCancelacionId();

                //System.out.println("CARTA ID:      "+idCarta);

                if (idCarta != 0) {

                    FindByRequest fbr2 = new FindByRequest(idCarta);
                    FindResponse<CartaCancelacionInfo> response2 = ccService.find(fbr2);

                    response2.getInfo().setCodigoCarta(numeroDeFolio);
                    response2.getInfo().setPdf(cartaDeCancelacionPdf);
                    response2.getInfo().setFechaEmisionCarta(fechaEmisionCarta);

                    UpdateRequest<CartaCancelacionInfo> updateCarta = new UpdateRequest();
                    updateCarta.setInfo(response2.getInfo());
                    ccService.update(updateCarta);
                    //System.out.println("Carta de cancelacin actualizada");
                } else {

                    CartaCancelacionInfo cci = new CartaCancelacionInfo();
                    SaveRequest<CartaCancelacionInfo> saveRequest = new SaveRequest<>();
                    cci.setCodigoCarta(numeroDeFolio);
                    cci.setPdf(cartaDeCancelacionPdf);
                    cci.setFechaEmisionCarta(fechaEmisionCarta);
                    saveRequest.setInfo(cci);
                    SaveResponse<CartaCancelacionInfo> save = ccService.save(saveRequest);

                    casoresponse.getInfo().setCartaCancelacionId(save.getInfo().getId());

                    //System.out.println("Carta de cancelacin creada y asociada.");

                    /**ida.setCodigo(4);
                    ida.setDescripcion("No se actualiz la informacin del caso");
                    ida.setNumeroDeCaso(numeroDeCaso);
                    ida.setNumeroDeCredito(numeroDeCredito);**/
                }

                //String id = "YOLIZETH,303,EM";

                String[] datos;
                datos = identificadorUnicoNotario.split(",");

                /**for(int i=0;i<5;i++){
                   System.out.println("dato " +i+ " " + datos[i]);
                }**/

                System.out.println("notariaNumero :" + datos[0]);
                System.out.println("nombreNotario :" + datos[1]);
                System.out.println("entidad :" + datos[2]);

                MultipleParams params = new MultipleParams();
                params.add("nombreNotario", datos[1]);
                params.add("notariaNumero", datos[0]);
                params.add("entidadClave", datos[2]);
                //params.add("entidadId", new Long(datos[2]));

                FindResponse<NotarioInfo> notarioResponse = notarioService
                        .find(new FindByRequest("nombreNotarioYentidadIdYnumeroNotariaTxt", params));

                //FindByRequest notario = new FindByRequest(identificadorUnicoNotario);
                //FindResponse<NotarioInfo> notarioResponse = notarioService.find(notario);

                if (notarioResponse.getInfo() != null) {
                    //Actualiza el caso              
                    casoresponse.getInfo().setNotarioId(notarioResponse.getInfo().getId());
                } else {
                    //manda error
                    System.out.println(
                            new Date() + ":No encontr notario al momento de actualizar el caso con el notario");
                }

                UpdateRequest<CasoInfo> update = new UpdateRequest();
                update.setInfo(casoresponse.getInfo());
                service.update(update);

                ida.setCodigo(0);
                ida.setDescripcion("Se actualiz correctamente el caso.");
                ida.setNumeroDeCaso(numeroDeCaso);
                ida.setNumeroDeCredito(numeroDeCredito);

                //System.out.println("IDA CODIGO:   "+ ida.getCodigo());

                if (ida.getCodigo() == 0) {

                    try {

                        //System.out.println("CLAVE 2:    "+ sciResponse.getInfo().getId());

                        if (sciResponse.getInfo().getId() != 0) {

                            entradas.setEstatus(BigInteger.valueOf(sciResponse.getInfo().getClave()));
                            entradas.setDescripcion(sciResponse.getInfo().getDescripcion());
                        }

                        entradas.setNumeroCredito(numeroDeCredito);
                        entradas.setNumeroCaso(numeroDeCaso);
                        entradas.setTipoOperacion(BigInteger.valueOf(4));

                        entradas.setCarta(null);
                        entradas.setFechaEmision(null);
                        entradas.setNombreAcreditado("");
                        entradas.setEntidad(null);

                        salidas = microService.getHTTPPort().siCANCELACIONOU(entradas);
                        //isc = pmsPort.statusCaso(numeroDeCredito, numeroDeCaso, null, status, null, null, null, null, 4);

                        System.out.println(
                                "Respuesta de WS PI -> Estatus : " + salidas.getDatosCredito().getEstatus());
                        System.out.println("Respuesta de WS PI -> Descripcin : "
                                + salidas.getDatosCredito().getDescripcion());
                    }

                    catch (Exception e) {

                        ida.setCodigo(2);
                        ida.setDescripcion("Error conexin con web service actualizar status del caso.");
                        ida.setNumeroDeCaso(numeroDeCaso);
                        ida.setNumeroDeCredito(numeroDeCredito);

                    }
                }

            } else {
                ida.setCodigo(3);
                ida.setDescripcion("No existe el caso");
                ida.setNumeroDeCaso(numeroDeCaso);
                ida.setNumeroDeCredito(numeroDeCredito);
            }

        } catch (Exception e) {

            //System.out.println("ACTUALIZA ERROR:               "+e.getMessage());

            if (e.getMessage().equals(
                    "Could not open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection")) {
                ida.setCodigo(2);
                ida.setDescripcion("No hay conexin con la base de datos.");
                ida.setNumeroDeCaso(numeroDeCaso);
                ida.setNumeroDeCredito(numeroDeCredito);
                //System.out.println(e.toString());
            } else {

                ida.setCodigo(4);
                ida.setDescripcion("No se actualiz la informacin del caso");
                ida.setNumeroDeCaso(numeroDeCaso);
                ida.setNumeroDeCredito(numeroDeCredito);
                //System.out.println(e);
            }

        }

        return ida;
    }

    public InfoDeConsulta consultaCaso(String numeroDeCaso) {
        InfoDeConsulta idc = new InfoDeConsulta();

        try {

            FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
            FindResponse<CasoInfo> casoresponse = service.find(fbr);

            if (casoresponse.getInfo() != null) {

                long idCarta = casoresponse.getInfo().getCartaCancelacionId();

                if (idCarta != 0) {

                    FindByRequest fbr2 = new FindByRequest(idCarta);
                    FindResponse<CartaCancelacionInfo> responseCarta = ccService.find(fbr2);

                    idc.setNumeroDeFolio(responseCarta.getInfo().getCodigoCarta());
                    idc.setFechaDeEmisionDeCarta(responseCarta.getInfo().getFechaEmisionCarta());
                    idc.setCartaDeCancelacion(responseCarta.getInfo().getPdf());

                }

                idc.setFecha(casoresponse.getInfo().getFechaCreacion());
                idc.setNombreAcreditado(casoresponse.getInfo().getNombreAcreditado());
                idc.setEntidad(casoresponse.getInfo().getEntidad());
                idc.setNumeroDeCaso(casoresponse.getInfo().getNumeroCaso());

                //Informacin del crdito asociado al caso
                idc.setNumeroDeCredito(casoresponse.getInfo().getNumeroCredito());
                idc.setProcedeCredito(casoresponse.getInfo().getProcedeCredito());
                idc.setDescripcionCredito(casoresponse.getInfo().getDescripcionCredito());
                idc.setSaldoCredito(casoresponse.getInfo().getSaldoCredito());
                idc.setFechaLiquidacionCredito(casoresponse.getInfo().getFechaLiquidacionCredito());

                if (casoresponse.getInfo().getStatusCaso().getId() != 0) {
                    idc.setStatus(casoresponse.getInfo().getStatusCaso().getClave());
                    idc.setDescripcionConsulta(casoresponse.getInfo().getStatusCaso().getDescripcion());
                }
                idc.setInfoConsulta(0);
                idc.setDescripcionConsulta("Caso consultado satisfactoriamente.");

            } else {
                idc.setInfoConsulta(6);
                idc.setDescripcionConsulta("No existe el caso " + numeroDeCaso);
            }

        } catch (Exception e) {

            if (e.getMessage() != null) {
                if (e.getMessage().equals(
                        "Could not open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection")) {

                    idc.setInfoConsulta(2);
                    idc.setDescripcionConsulta("No hay conexin con la base de datos.");

                } else {

                    idc.setInfoConsulta(5);
                    idc.setDescripcionConsulta("Caso no consultado.");

                }
            } else {
                idc.setInfoConsulta(6);
                idc.setDescripcionConsulta("No existe el caso " + numeroDeCaso);
            }
        }
        return idc;
    }

    public StatusCaso estadoDelCaso(int numeroDeCaso) {
        StatusCaso sc = new StatusCaso();
        StatusCasoInfo sci = null;
        try {

            FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
            FindResponse<CasoInfo> response = service.find(fbr);

            if (response.getInfo() != null) {

                if (response.getInfo().getStatusCaso() != null) {
                    sci = response.getInfo().getStatusCaso();
                    sc.setClave(sci.getClave());
                    sc.setNombre(sci.getNombre());
                    sc.setDescripcion(sci.getDescripcion());
                    sc.setFechaActualizacion(response.getInfo().getFechaActualizacion());
                }
            } else {
                sc.setClave(6);
                sc.setNombre("Error en la consulta del status del caso.");
                sc.setDescripcion("El nmero de caso no existe en el sistema.");
                sc.setFechaActualizacion(new Date());
            }

        } catch (Exception e) {

            if (e.getMessage().equals(
                    "Could not open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection")) {

                sc.setClave(2);
                sc.setNombre("No hay conexin con la base de datos.");
                sc.setDescripcion(
                        "El tiempo de conexin se ha agotado, verifique la conexin de la base de datos o que el servicio se encuentre iniciado.");
                sc.setFechaActualizacion(new Date());
            } else {
                sc.setClave(5);
                sc.setNombre("Caso no consultado.");
                sc.setDescripcion("El nmero de caso no se logr consultar en la base de datos.");
                sc.setFechaActualizacion(new Date());
            }

        }
        return sc;
    }

    public StatusCarta registrarCarta(int numeroDeCaso, String codigoCarta, byte[] base64, String md5, String folio,
            String entidad, Date fechaEmision, String nombreAcreditado, String nombreNotario, String notaria,
            String direccion, String folioEscritura, String fojaEscritura, String libroEscritura) {

        StatusCarta sc = new StatusCarta();

        String mimd5 = "AAA";

        //if(mimd5.equals(md5)){
        if (base64 != null) {
            //if(numeroDeCaso == (int)numeroDeCaso){      

            try {

                CartaCancelacionInfo cc = new CartaCancelacionInfo();

                cc.setCodigoCarta(codigoCarta);
                cc.setPdf(base64);
                cc.setFolioEscritura(folio);
                cc.setEntidad(entidad);
                cc.setFechaEmisionCarta(fechaEmision);
                cc.setNombreAcreditado(nombreAcreditado);
                cc.setNombreNotario(nombreNotario);
                cc.setNotaria(notaria);
                cc.setDireccion(direccion);
                cc.setFolioEscritura(folioEscritura);
                cc.setFojaEscritura(fojaEscritura);
                cc.setLibroEscritura(libroEscritura);

                SaveRequest<CartaCancelacionInfo> saveRequest = new SaveRequest<>();
                saveRequest.setInfo(cc);
                SaveResponse<CartaCancelacionInfo> ccSave = ccService.save(saveRequest);

                FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
                FindResponse<CasoInfo> casoresponse = service.find(fbr);

                casoresponse.getInfo().setCartaCancelacionId(ccSave.getInfo().getId());

                sc.setClave(0);
                sc.setNombre("Carta de cancelacion registrada con xito en caso");
                sc.setDescripcion("La carta de cancelacin se ha guardado exitosamente en el caso");

            } catch (Exception e) {

                sc.setClave(4);
                sc.setNombre("No se registr la carta de cancelacin.");
                sc.setDescripcion("La carta de cancelacin no se ha guardado exitosamente en el caso");
                //System.out.println(e);
            }
            //}
            /**else{
            sc.setClave(3);
            sc.setNombre("No hay nmero de caso");
            sc.setDescripcion("No se envi el nmero de caso asociado a la carta");
            }**/
        } else {
            sc.setClave(2);
            sc.setNombre("No se recibi carta");
            sc.setDescripcion("La carta de cancelacin no se envi");
        }
        /**}else{
           sc.setClave(1);
           sc.setNombre("Corrupcin de carta");
           sc.setDescripcion("La carta de cancelacin no se envi correctamente debido a que sufri una corrupcin de datos");
        }**/

        return sc;
    }

    public StatusCarta actualizarCarta(int numeroDeCaso, String codigoCarta, byte[] base64, String md5,
            String folio, String entidad, Date fechaEmision, String nombreAcreditado, String nombreNotario,
            String notaria, String direccion, String folioEscritura, String fojaEscritura, String libroEscritura) {

        StatusCarta sc = new StatusCarta();

        try {

            FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
            FindResponse<CasoInfo> casoresponse = service.find(fbr);

            long idCarta = casoresponse.getInfo().getCartaCancelacionId();

            //System.out.println(".-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.. " + idCarta);

            if (idCarta != 0) {

                FindByRequest carta = new FindByRequest(idCarta);
                FindResponse<CartaCancelacionInfo> cartaresponse = ccService.find(carta);

                cartaresponse.getInfo().setCodigoCarta(codigoCarta);
                cartaresponse.getInfo().setPdf(base64);
                cartaresponse.getInfo().setFolio(folio);
                cartaresponse.getInfo().setEntidad(entidad);
                cartaresponse.getInfo().setFechaEmisionCarta(fechaEmision);
                cartaresponse.getInfo().setNombreAcreditado(nombreAcreditado);
                cartaresponse.getInfo().setNombreNotario(nombreNotario);
                cartaresponse.getInfo().setNotaria(notaria);
                cartaresponse.getInfo().setDireccion(direccion);
                cartaresponse.getInfo().setFolioEscritura(folioEscritura);
                cartaresponse.getInfo().setFojaEscritura(fojaEscritura);
                cartaresponse.getInfo().setLibroEscritura(libroEscritura);

                UpdateRequest<CartaCancelacionInfo> updateCarta = new UpdateRequest();
                updateCarta.setInfo(cartaresponse.getInfo());
                ccService.update(updateCarta);

                sc.setClave(5);
                sc.setNombre("Se actualiz carta");
                sc.setDescripcion("La carta de cancelacin se actualiz correctamente.");
            } else {

                sc.setClave(6);
                sc.setNombre("No se actualiz carta");
                sc.setDescripcion("La carta de cancelacin no se actualiz correctamente.");

            }

        } catch (Exception e) {

            sc.setClave(6);
            sc.setNombre("No se actualiz carta");
            sc.setDescripcion("La carta de cancelacin no se actualiz correctamente.");
            System.out.println(e);

        }

        return sc;
    }

    public CartaCancelacionInfo consultaCartaCancelacion(int numeroDeCaso) {

        FindByRequest fbr = new FindByRequest("numeroCaso", numeroDeCaso);
        FindResponse<CasoInfo> casoresponse = service.find(fbr);

        long idCarta = casoresponse.getInfo().getCartaCancelacionId();

        System.out.println(".-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.. " + idCarta);

        FindResponse<CartaCancelacionInfo> cartaresponse = null;

        if (idCarta != 0) {

            FindByRequest carta = new FindByRequest(idCarta);
            cartaresponse = ccService.find(carta);

        }
        return cartaresponse.getInfo();
    }

}