141 lines
6.7 KiB
Java
141 lines
6.7 KiB
Java
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;
|
||
}
|
||
}
|
||
|
||
}
|