werp-services/src/main/java/com/qsoft/wmp/services/rest/FarmaenlaceResource.java

191 lines
7.1 KiB
Java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.qsoft.wmp.services.rest;
import com.qsoft.dao.exception.DaoException;
import com.qsoft.erp.constantes.DominioConstantes;
import com.qsoft.erp.constantes.EntidadEnum;
import com.qsoft.erp.dominio.AccionGenerica;
import com.qsoft.erp.dominio.ConsultaGenerica;
import com.qsoft.erp.dominio.exception.DominioExcepcion;
import com.qsoft.erp.dto.PersonaPolizaDTO;
import com.qsoft.util.constantes.CodigoRespuesta;
import com.qsoft.util.constantes.ErrorTipo;
import com.qsoft.util.ms.pojo.HeaderMS;
import com.qsoft.wmp.services.util.ServiceUtil;
import com.qsoft.wmp.services.xsd.EntradaAccion;
import com.qsoft.wmp.services.xsd.EntradaConsulta;
import com.qsoft.wmp.services.xsd.EntradaRecetas;
import com.qsoft.wmp.services.xsd.SalidaAccion;
import com.qsoft.wmp.services.xsd.SalidaAccionFarmaEnlace;
import com.qsoft.wmp.services.xsd.SalidaConsulta;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* REST Web Service
*
* @author james
*/
@Path("ServicioConvenioExterno")
public class FarmaenlaceResource {
@Inject
private ConsultaGenerica consulta;
@Inject
private AccionGenerica accion;
@PostConstruct
public void postConstructor() {
System.out.println("======> POST CONTRUCTOR " + consulta);
}
/**
*
* @return an instance of java.lang.String
*/
@GET
@Path("/cedula={cedula}&diagnostico={diagnostico}")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> getJson(@PathParam("cedula") String cedula,
@PathParam("diagnostico") String diagnostico) {
Map<String, Object> mapFarmaenlace = new HashMap<String, Object>();
SalidaConsulta salida = null;
List resultado = null;
String message = "Mensaje OK";
Boolean status = true;
byte[] bytes = { 'c', 'd' };
String autorizacion = UUID.nameUUIDFromBytes(bytes).toString().replace("-", "");
Integer receta = 0;
if (cedula == null || cedula.trim().equals("")) {
salida = ServiceUtil.crearSalidaConsultaError(ErrorTipo.WARNING, CodigoRespuesta.CODIGO_IN_NULO, "La entrada no puede ser nula");
}else{
try {
resultado = this.consulta.consultaGet(cedula, diagnostico);
} catch (DominioExcepcion ex) {
Logger.getLogger(FarmaenlaceResource.class.getName()).log(Level.SEVERE, null, ex);
} catch (DaoException ex) {
Logger.getLogger(FarmaenlaceResource.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(resultado.size()<=0){
message = "No se encontraron resultados correspondientes a la cedula ".concat(cedula);
status = false;
}
mapFarmaenlace.put("rec_titular", resultado);
Map<String, Object> mapResult = new HashMap<String, Object>();
mapResult.put("status", status);
mapResult.put("mensaje", message);
mapResult.put("autorizacion", autorizacion);
mapResult.put("receta", 0);
mapFarmaenlace.put("result", mapResult);
mapFarmaenlace.put("tipo_facturacion", "TOTAL");
return mapFarmaenlace;
/** SalidaConsulta salida = ServiceUtil.crearSalidaConsultaError(CodigoRespuesta.CODIGO_ERROR_GENERICO,
"Acción no soportada por favor ejecute la consulta via POST");*/
}
/**
* PUT method for updating or creating an instance of ConsultaResource
*
* @param entrada
* @return
*/
@POST
@Path("/Confirmacion_Datos")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> postJson(EntradaRecetas entrada) {
Map<String, Object> salida = null;
if (entrada == null) {
//salida = ServiceUtil.crearSalidaAccionError(ErrorTipo.WARNING, CodigoRespuesta.CODIGO_IN_NULO, "La entrada no puede ser nula");
} else {
//EntidadEnum entidad = Enum.valueOf(EntidadEnum.class, entrada.getBodyIn().getEntidad());
try {
salida = ejecutarAccionFarmaenlace(entrada);
} catch (DominioExcepcion ex) {
//salida = ServiceUtil.crearSalidaAccionError(ex.getTipo(), ex.getCodigo(), ex.getMensaje());
} catch (Exception ex) {
System.out.println("============ ERROR NO CONTROLADO ==============");
ex.printStackTrace(System.err);
String msg = getCauses(ex, new StringBuilder());
if (msg.contains("Duplicate entry")) {
//salida = ServiceUtil.crearSalidaAccionError(ErrorTipo.ERROR, CodigoRespuesta.CODIGO_ERROR_GUARDA_BDD, "Error el registro " + entrada.getBodyIn().getEntidad() + " ya existe en la Base de datos");
} else {
//salida = ServiceUtil.crearSalidaAccionError(ErrorTipo.ERROR, CodigoRespuesta.CODIGO_ERROR_GENERICO, "ERROR NO CONTROLADO: " + msg);
}
}
}
return salida;
}
/**
* @param e
* @param build
* @return
*/
private String getCauses(Throwable e, StringBuilder build) {
build.append("\n").append(e.toString());
for (Throwable t : e.getSuppressed()) {
System.out.println("SUPRESS =====> " + t);
build.append("\n").append(t.toString());
getCauses(t, build);
}
System.out.println("CAUSE =====> " + e);
if (e.getCause() != null) {
getCauses(e.getCause(), build);
}
return build.toString();
}
/**
* Ejecuta la accion
*
* @param entrada
* @param entidad
* @return
* @throws DominioExcepcion
*/
public Map<String, Object> ejecutarAccionFarmaenlace(EntradaRecetas entrada) throws DominioExcepcion {
//SalidaAccionFarmaEnlace salida = new SalidaAccionFarmaEnlace();
Map<String, Object> salida = new HashMap<String, Object>();
try {
Map<String, Object> resultado = accion.accionFarmaenlace(entrada.getReceta(), entrada.getRec_items(), entrada.getRec_facturacion(), entrada.getRec_credito(), entrada.getTipo_facturacion());
salida = ServiceUtil.crearSalidaAccionOkFarmaenlace(resultado);
} catch (Exception e) {
}
//String msg = "A continuacion se muestra el resultado de la accion.";
//HeaderMS header = entrada.getHeaderIn();
//header.setFechaHora(DominioConstantes.getDateTime());
return salida;
}
}