AdmMono/src/java/com/rjconsultores/ventaboletos/rest/SincronizarDispositivo.java

141 lines
6.7 KiB
Java
Raw Blame History

package com.rjconsultores.ventaboletos.rest;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.dao.ConstanteDAO;
import com.rjconsultores.ventaboletos.dao.DispositivoEmbarcadaDAO;
import com.rjconsultores.ventaboletos.dao.EmpresaDAO;
import com.rjconsultores.ventaboletos.dao.PuntoVentaDAO;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.CtrlSerieEmbarcada;
import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaImposto;
import com.rjconsultores.ventaboletos.entidad.Estado;
import com.rjconsultores.ventaboletos.entidad.InscricaoEstadual;
import com.rjconsultores.ventaboletos.entidad.PtovtaEmpresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.vo.embarcada.DispositivoEmbarcadaVO;
import com.rjconsultores.ventaboletos.vo.embarcada.EmpresaVO;
import com.rjconsultores.ventaboletos.vo.embarcada.EstadoDispositivoEmbarcadaVO;
import com.rjconsultores.ventaboletos.vo.embarcada.InscricaoEstadualVO;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
@Path("/sincronizarDispositivo")
public class SincronizarDispositivo {
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@RolesAllowed("EMBARCADA")
@Produces({ MediaType.APPLICATION_JSON })
public Response buscarDispositivo(ParamsSincronizarDispositivo params) throws Exception {
DispositivoEmbarcadaDAO dispositivoEmbarcadaDAO = (DispositivoEmbarcadaDAO)AppContext.getApplicationContext().getBean("dispositivoEmbarcadaDAO");
EmpresaDAO empresaDAO = (EmpresaDAO)AppContext.getApplicationContext().getBean("empresaDAO");
PuntoVentaDAO puntoVentaDAO = (PuntoVentaDAO)AppContext.getApplicationContext().getBean("puntoVentaDAO");
DispositivoEmbarcada dispositivo = dispositivoEmbarcadaDAO.buscarImei(params.imei);
ConstanteDAO constanteDAO = (ConstanteDAO)AppContext.getApplicationContext().getBean("constanteDAO");
if (dispositivo == null){
DispositivoEmbarcadaVO dispositivoVo = new DispositivoEmbarcadaVO();
dispositivoVo.setMsg("Dispositivo n<>o encontrado");
return Response.ok(dispositivoVo, MediaType.APPLICATION_JSON).build();
}
PuntoVenta puntoVenta = puntoVentaDAO.obtenerID(dispositivo.getPuntoVenta().getPuntoventaId().intValue());
Empresa empresa = empresaDAO.obtenerID(dispositivo.getEmpresa().getEmpresaId().intValue());
DispositivoEmbarcadaVO vo = new DispositivoEmbarcadaVO();
vo.setDispositivoId(dispositivo.getDispositivoEmbarcadaId());
vo.setBaixado(dispositivo.getIndDispBaixado() ? 1 : 0);
vo.setBloqueado(dispositivo.getIndDispBloqueado() ? 1 : 0);
vo.setDescAgencia(puntoVenta.getNombpuntoventa());
vo.setNumagencia(puntoVenta.getNumPuntoVenta());
vo.setDescEmpresa(empresa.getNombempresa());
vo.setDescEquipamento(dispositivo.getDescricao());
vo.setIdAgencia(dispositivo.getPuntoVenta().getPuntoventaId().longValue());
vo.setIdempresa(dispositivo.getEmpresa().getEmpresaId().longValue());
vo.setManutencao(dispositivo.getIndDispManutencao() ? 1 : 0);
vo.setCnpjAgencia(puntoVenta.getNumDoCPuntoVenta());
vo.setEnderecoAgencia(puntoVenta.getDireccioncalle()+", n<>: "+puntoVenta.getDireccionnumero()+". Cidade: "+puntoVenta.getCidade());
vo.setCnpjEmpresa(empresa.getCnpj());
Map<Estado, EmpresaImposto> impostos = getImpostos(empresa);
for (PtovtaEmpresa e : puntoVenta.getLsPtovtaEmpresa()){
EmpresaVO emp = new EmpresaVO();
emp.setEmpresaId(e.getEmpresa().getEmpresaId().longValue());
emp.setNombempresa(e.getEmpresa().getNombempresa());
emp.setCnpj(e.getEmpresa().getCnpj());
emp.setIndImprimeRelFechamentoViagemDetalhadoEmarcada(e.getEmpresa().getIndImprimeRelFechamentoViagemDetalhadoEmarcada() != null ? e.getEmpresa().getIndImprimeRelFechamentoViagemDetalhadoEmarcada() : Boolean.FALSE);
emp.setIndImprimeLogoBilheteVendaEmbarcada(e.getEmpresa().getIndImprimeLogoBilheteVendaEmbarcada() != null ? e.getEmpresa().getIndImprimeLogoBilheteVendaEmbarcada() : Boolean.FALSE);
vo.getEmpresasVenda().add(emp);
for (InscricaoEstadual insc : e.getEmpresa().getInscricoesEstaduais()){
EmpresaImposto imposto = impostos.get(insc.getEstado());
InscricaoEstadualVO ie;
if (insc.getActivo()){
ie = new InscricaoEstadualVO(insc);
if (imposto != null) {
ie.setPorctributo(imposto.getPorctributo());
ie.setTributacaoImportacao(imposto.getTributacaoImportacao());
ie.setTributacaoImportacaoIM(imposto.getTributacaoImportacaoIM());
}
emp.getInscricoesEstaduais().add(ie);
}
}
}
vo.setEnderecoEmpresa(empresa.getLogradouro()+", n<>: "+empresa.getNumero()+". Cidade: "+empresa.getBairro());
Constante estacionEmbarcadaConst = constanteDAO.buscarPorNomeConstante(Constantes.ESTACAO_EMBARCADA);
if (estacionEmbarcadaConst == null || (estacionEmbarcadaConst != null && estacionEmbarcadaConst.getValorconstante() == null) ||
(estacionEmbarcadaConst != null && estacionEmbarcadaConst.getValorconstante().isEmpty())){
return Response.status(Response.Status.NOT_FOUND).entity("Error: Constante ESTACAO_EMBARCADA n<>o cadastrada!").build();
}
String estacionIdEmbarcada = estacionEmbarcadaConst.getValorconstante();
vo.setEstacionId(estacionIdEmbarcada != null && !estacionIdEmbarcada.isEmpty() ? Integer.parseInt(estacionIdEmbarcada) : null);
for (CtrlSerieEmbarcada serie : dispositivo.getSeries()){
EstadoDispositivoEmbarcadaVO estado = new EstadoDispositivoEmbarcadaVO();
estado.setDescUf(serie.getEstado().getCveestado());
estado.setIdUf(serie.getEstado().getEstadoId().longValue());
estado.setNumBpe(serie.getNumeroCorrente());
estado.setSerie(serie.getSerie());
vo.add(estado);
}
return Response.ok(vo, MediaType.APPLICATION_JSON).build();
}
private Map<Estado, EmpresaImposto> getImpostos(Empresa e){
Map<Estado, EmpresaImposto> result = new HashMap<Estado, EmpresaImposto>();
for (EmpresaImposto ei : e.getEmpresaImpostoList()) {
if (ei.getActivo()) {
result.put(ei.getEstado(), ei);
}
}
return result;
}
@JsonIgnoreProperties(ignoreUnknown = true)
static class ParamsSincronizarDispositivo {
String imei;
public String getImei() {
return imei;
}
public void setImei(String imei) {
this.imei = imei;
}
}
}