0021537: FlexBus - ADM e Tela de Configuração

bug#21537
dev:
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@105693 d1611594-4594-4d17-8e1d-87c2c4800839
master
valdir 2021-03-08 18:27:14 +00:00
parent 7575462344
commit 19c02ec58b
14 changed files with 589 additions and 2 deletions

View File

@ -30,5 +30,6 @@ public class ConstantesFuncionSistema {
public static final String CLAVE_ESTOQUE_W2I = "COM.RJCONSULTORES.ADMINISTRACION.GUI.ESQUEMAOPERACIONAL.ESTOQUEW2I"; public static final String CLAVE_ESTOQUE_W2I = "COM.RJCONSULTORES.ADMINISTRACION.GUI.ESQUEMAOPERACIONAL.ESTOQUEW2I";
public static final String CLAVE_UPLOAD_ARQUIVO_CONFIGURACAO = "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.CUSTOMSISTEMA.UPLOADARQUIVOCONFIGURACAO"; public static final String CLAVE_UPLOAD_ARQUIVO_CONFIGURACAO = "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.CUSTOMSISTEMA.UPLOADARQUIVOCONFIGURACAO";
public static final String CLAVE_OPERADORES_DISPOSITIVO_VENDA_EMBARCADA = "COM.RJCONSULTORES.ADMINISTRACION.GUI.ESQUEMAOPERACIONAL.MENU.CONFVENDAEMBARCADA.OPERADORESDISP"; public static final String CLAVE_OPERADORES_DISPOSITIVO_VENDA_EMBARCADA = "COM.RJCONSULTORES.ADMINISTRACION.GUI.ESQUEMAOPERACIONAL.MENU.CONFVENDAEMBARCADA.OPERADORESDISP";
public static final String CLAVE_MANUTENCAO_FLEXBUS = "COM.RJCONSULTORES.ADMINISTRACION.GUI.ESQUEMAOPERACIONAL.MENU.FLEXBUS";
} }

View File

@ -104,4 +104,6 @@ public interface CorridaDAO extends GenericDAO<Corrida, Corrida.Id> {
public List<CorridaVO> buscarListaPorIds(List<Id> corridaIds); public List<CorridaVO> buscarListaPorIds(List<Id> corridaIds);
public CorridaVO buscarVOPorId(Id corridaId); public CorridaVO buscarVOPorId(Id corridaId);
public Integer buscarOcupacaoCorrida(Corrida corrida);
} }

View File

@ -0,0 +1,14 @@
package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaEmailFlexBus;
public interface EmpresaEmailFlexBusDAO extends GenericDAO<EmpresaEmailFlexBus, Integer> {
public List<EmpresaEmailFlexBus> obtenerTodos();
public EmpresaEmailFlexBus buscarPorEmpresa(Empresa empresa);
}

View File

@ -1066,5 +1066,35 @@ public class CorridaHibernateDAO extends GenericHibernateDAO<Corrida, Corrida.Id
controle.add(key); controle.add(key);
} }
} }
public Integer buscarOcupacaoCorrida(Corrida corrida) {
try {
if(corrida == null) {
return 0;
}
//TODO: VERIFICAR ERRO NA PESQUISA
StringBuilder sb = new StringBuilder();
sb.append(" SELECT");
sb.append(" COUNT(BOLETO_ID) ");
sb.append(" FROM ");
sb.append(" BOLETO ");
sb.append(" WHERE ");
sb.append(" ACTIVO = 1 AND motivocancelacion_id IS NULL AND ");
sb.append(" CORRIDA_ID = :corridaId AND FECCORRIDA = :feccorrida ");
Query query = getSession().createSQLQuery(sb.toString());
query.setParameter("corridaId", corrida.getId().getCorridaId());
query.setParameter("feccorrida", corrida.getId().getFeccorrida());
BigDecimal resultado = (BigDecimal) query.uniqueResult();
return resultado.intValue();
} catch (Exception e) {
log.error("Erro ao buscar ocupacao da corrida: " + corrida.getId().getCorridaId() + " - " + corrida.getId().getFeccorrida(), e);
}
return 0;
}
} }

View File

@ -0,0 +1,42 @@
package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.EmpresaEmailFlexBusDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaEmailFlexBus;
@Repository("empresaEmailFlexBusDAO")
public class EmpresaEmailFlexBusHibernateDAO extends GenericHibernateDAO<EmpresaEmailFlexBus, Integer>
implements EmpresaEmailFlexBusDAO {
@Autowired
public EmpresaEmailFlexBusHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@SuppressWarnings("unchecked")
@Override
public List<EmpresaEmailFlexBus> obtenerTodos() {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
@Override
public EmpresaEmailFlexBus buscarPorEmpresa(Empresa empresa) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("empresa", empresa));
return (EmpresaEmailFlexBus) c.uniqueResult();
}
}

View File

@ -216,6 +216,24 @@ public class Corrida implements Serializable {
@Column(name = "INFOCORRIDA") @Column(name = "INFOCORRIDA")
private String infoCorrida; private String infoCorrida;
@Column(name = "ISFLEXBUS")
private Boolean isFlexBus;
@Column(name = "STATUSFLEXBUS")
private Integer statusFlexBus;
@Column(name = "OCUPACAO_MINIMA")
private Integer ocupacaoMinima;
@Column(name = "HORAS_CONFIRMACAO")
private Integer horasParaConfirmacao;
@Column(name = "MINUTOS_CONFIRMACAO")
private Integer minutosParaConfirmacao;
@Column(name = "USUARIOFLEXBUS_ID")
private Integer usuarioFlexBusId;
public String getIndTipoVenta() { public String getIndTipoVenta() {
return indTipoVenta; return indTipoVenta;
@ -540,4 +558,52 @@ public class Corrida implements Serializable {
public String toString() { public String toString() {
return id.toString(); return id.toString();
} }
public Boolean getIsFlexBus() {
return isFlexBus == null ? false : isFlexBus;
}
public void setIsFlexBus(Boolean isFlexBus) {
this.isFlexBus = isFlexBus;
}
public Integer getHorasParaConfirmacao() {
return horasParaConfirmacao == null ? 0 : horasParaConfirmacao;
}
public void setHorasParaConfirmacao(Integer horasParaConfirmacao) {
this.horasParaConfirmacao = horasParaConfirmacao;
}
public Integer getMinutosParaConfirmacao() {
return minutosParaConfirmacao == null ? 0 : minutosParaConfirmacao;
}
public void setMinutosParaConfirmacao(Integer minutosParaConfirmacao) {
this.minutosParaConfirmacao = minutosParaConfirmacao;
}
public Integer getOcupacaoMinima() {
return ocupacaoMinima == null ? 0 : ocupacaoMinima;
}
public void setOcupacaoMinima(Integer ocupacaoMinima) {
this.ocupacaoMinima = ocupacaoMinima;
}
public Integer getStatusFlexBus() {
return statusFlexBus;
}
public void setStatusFlexBus(Integer statusFlexBus) {
this.statusFlexBus = statusFlexBus;
}
public Integer getUsuarioFlexBusId() {
return usuarioFlexBusId;
}
public void setUsuarioFlexBusId(Integer usuarioFlexBusId) {
this.usuarioFlexBusId = usuarioFlexBusId;
}
} }

View File

@ -0,0 +1,221 @@
package com.rjconsultores.ventaboletos.entidad;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.apache.commons.lang.BooleanUtils;
@Entity
@SequenceGenerator(name = "EMP_EMAIL_FLEXBUS_SEQ", sequenceName = "EMP_EMAIL_FLEXBUS_SEQ", allocationSize = 1)
@Table(name = "EMPRESA_EMAIL_FLEXBUS")
public class EmpresaEmailFlexBus implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "EMP_EMAIL_FLEXBUS_SEQ")
@Column(name = "EMPRESAEMAILFLEXBUS_ID")
private Integer empresaEmailFlexBusId;
@Column(name = "SMTP")
private String smtp;
@Column(name = "SENHA")
private String senha;
@Column(name = "SMTPPORTA")
private String smtpPorta;
@Column(name = "SMTPEMAIL")
private String smtpEmail;
@OneToOne
@JoinColumn(name = "EMPRESA_ID")
private Empresa empresa;
@Column(name = "ACTIVO")
private Boolean activo;
@Column(name = "FECMODIF")
@Temporal(TemporalType.TIMESTAMP)
private Date fecmodif;
@Column(name = "USUARIO_ID")
private Integer usuarioId;
@Column(name = "INDAUTENTICACAO")
private Boolean indAutenticacao;
@Column(name = "TEXTOEMAIL")
private String textoEmail;
@Column(name = "ASSUNTO")
private String assunto;
@Column(name = "EMAILDE")
private String emailDe;
@Column(name = "EMAILCOPIAOCULTA")
private String emailCopiaOculta;
public EmpresaEmailFlexBus() {
}
public Integer getEmpresaEmailFlexBusId() {
return empresaEmailFlexBusId;
}
public void setEmpresaEmailFlexBusId(Integer empresaEmailFlexBusId) {
this.empresaEmailFlexBusId = empresaEmailFlexBusId;
}
public String getSmtp() {
return smtp;
}
public void setSmtp(String smtp) {
this.smtp = smtp;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getSmtpPorta() {
return smtpPorta;
}
public void setSmtpPorta(String smtpPorta) {
this.smtpPorta = smtpPorta;
}
public String getSmtpEmail() {
return smtpEmail;
}
public void setSmtpEmail(String smtpEmail) {
this.smtpEmail = smtpEmail;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public Boolean getActivo() {
return activo;
}
public void setActivo(Boolean activo) {
this.activo = activo;
}
public Date getFecmodif() {
return fecmodif;
}
public void setFecmodif(Date fecmodif) {
this.fecmodif = fecmodif;
}
public Integer getUsuarioId() {
return usuarioId;
}
public void setUsuarioId(Integer usuarioId) {
this.usuarioId = usuarioId;
}
public Boolean getIndAutenticacao() {
return BooleanUtils.toBooleanDefaultIfNull(indAutenticacao, true) ;
}
public void setIndAutenticacao(Boolean indAutenticacao) {
this.indAutenticacao = indAutenticacao;
}
public String getTextoEmail() {
return textoEmail;
}
public void setTextoEmail(String textoEmail) {
this.textoEmail = textoEmail;
}
public String getAssunto() {
return assunto;
}
public void setAssunto(String assunto) {
this.assunto = assunto;
}
public String getEmailDe() {
return emailDe;
}
public void setEmailDe(String emailDe) {
this.emailDe = emailDe;
}
public String getEmailCopiaOculta() {
return emailCopiaOculta;
}
public void setEmailCopiaOculta(String emailCopiaOculta) {
this.emailCopiaOculta = emailCopiaOculta;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((empresaEmailFlexBusId == null) ? 0 : empresaEmailFlexBusId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
EmpresaEmailFlexBus other = (EmpresaEmailFlexBus) obj;
if (empresaEmailFlexBusId == null) {
if (other.empresaEmailFlexBusId != null)
return false;
} else if (!empresaEmailFlexBusId.equals(other.empresaEmailFlexBusId))
return false;
return true;
}
@Override
public String toString() {
return String.valueOf(this.getEmpresaEmailFlexBusId());
}
}

View File

@ -191,6 +191,18 @@ public class EsquemaCorrida implements Serializable, Auditavel<EsquemaCorrida> {
@NaoAuditar @NaoAuditar
private EsquemaCorrida esquemaCorridaClone; private EsquemaCorrida esquemaCorridaClone;
@Column(name = "ISFLEXBUS")
private Boolean isFlexBus;
@Column(name = "OCUPACAO_MINIMA")
private Integer ocupacaoMinima;
@Column(name = "HORAS_CONFIRMACAO")
private Integer horasParaConfirmacao;
@Column(name = "MINUTOS_CONFIRMACAO")
private Integer minutosParaConfirmacao;
public enum GerarFeriado { public enum GerarFeriado {
// Declaração dos enum // Declaração dos enum
GERARSEMPRE("GERAR SEMPRE", "S"), GERARSEMPRE("GERAR SEMPRE", "S"),
@ -769,4 +781,38 @@ public class EsquemaCorrida implements Serializable, Auditavel<EsquemaCorrida> {
public void setNumCorridaPisoExtra2(Integer numCorridaPisoExtra2) { public void setNumCorridaPisoExtra2(Integer numCorridaPisoExtra2) {
this.numCorridaPisoExtra2 = numCorridaPisoExtra2; this.numCorridaPisoExtra2 = numCorridaPisoExtra2;
} }
public Boolean getIsFlexBus() {
return isFlexBus == null ? false : isFlexBus;
}
public void setIsFlexBus(Boolean isFlexBus) {
this.isFlexBus = isFlexBus;
}
public Integer getHorasParaConfirmacao() {
return horasParaConfirmacao == null ? 0 : horasParaConfirmacao;
}
public void setHorasParaConfirmacao(Integer horasParaConfirmacao) {
this.horasParaConfirmacao = horasParaConfirmacao;
}
public Integer getMinutosParaConfirmacao() {
return minutosParaConfirmacao == null ? 0 : minutosParaConfirmacao;
}
public void setMinutosParaConfirmacao(Integer minutosParaConfirmacao) {
this.minutosParaConfirmacao = minutosParaConfirmacao;
}
public Integer getOcupacaoMinima() {
return ocupacaoMinima == null ? 0 : ocupacaoMinima;
}
public void setOcupacaoMinima(Integer ocupacaoMinima) {
this.ocupacaoMinima = ocupacaoMinima;
}
} }

View File

@ -258,6 +258,9 @@ public class PuntoVenta implements Serializable {
@Column(name = "INDBLOQDEVOLVEREATIVAOUTROPTO") @Column(name = "INDBLOQDEVOLVEREATIVAOUTROPTO")
private Boolean indBloqDevolveReativaOutroPto; private Boolean indBloqDevolveReativaOutroPto;
@Column(name = "INDRESERVAFLEXBUS")
private Boolean indReservaFlexBus;
public List<CobrancaAdcPuntoVenta> getCobrancaAdicionalList() { public List<CobrancaAdcPuntoVenta> getCobrancaAdicionalList() {
return cobrancaAdicionalList; return cobrancaAdicionalList;
} }
@ -1161,5 +1164,13 @@ public class PuntoVenta implements Serializable {
public void setIndBloqDevolveReativaOutroPto(Boolean indBloqDevolveReativaOutroPto) { public void setIndBloqDevolveReativaOutroPto(Boolean indBloqDevolveReativaOutroPto) {
this.indBloqDevolveReativaOutroPto = indBloqDevolveReativaOutroPto; this.indBloqDevolveReativaOutroPto = indBloqDevolveReativaOutroPto;
} }
public Boolean getIndReservaFlexBus() {
return indReservaFlexBus == null ? false : indReservaFlexBus;
}
public void setIndReservaFlexBus(Boolean indReservaFlexBus) {
this.indReservaFlexBus = indReservaFlexBus;
}
} }

View File

@ -0,0 +1,62 @@
package com.rjconsultores.ventaboletos.enums;
/**
* @author Valdir Cordeiro
*
*/
public enum StatusFlexBus {
EM_RESERVA(0, "EM RESERVA"),
CONFIRMADO_AUTOMATICAMENTE(1, "CONFIRMADO AUTOMATICAMENTE"),
CONFIRMADO_MANUALMENTE(2, "CONFIRMADO MANUALMENTE"),
CANCELADO_AUTOMATICAMENTE( 3, "CANCELADO AUTOMATICAMENTE"),
CANCELADO_MANUALMENTE(4, "CANCELADO MANUALMENTE");
private Integer status;
private String descricao;
private StatusFlexBus(Integer status, String descricao) {
this.descricao = descricao;
this.status = status;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public static String buscarStatus(Integer id) {
for (StatusFlexBus status : StatusFlexBus.values()) {
if (status.getStatus() == id) {
return status.getDescricao();
}
}
return null;
}
public static StatusFlexBus buscarPorStatus(Integer id) {
for (StatusFlexBus status : StatusFlexBus.values()) {
if (status.getStatus() == id) {
return status;
}
}
return null;
}
@Override
public String toString() {
return descricao;
}
}

View File

@ -79,4 +79,5 @@ public interface CorridaService extends GenericService<Corrida, Corrida.Id> {
public Boolean existeCorrida(Long id); public Boolean existeCorrida(Long id);
public Integer buscarOcupacaoCorrida(Corrida corrida);
} }

View File

@ -0,0 +1,10 @@
package com.rjconsultores.ventaboletos.service;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaEmailFlexBus;
public interface EmpresaEmailFlexBusService extends GenericService<EmpresaEmailFlexBus, Integer> {
public EmpresaEmailFlexBus buscarPorEmpresa(Empresa empresa);
}

View File

@ -50,6 +50,7 @@ import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.TramoTiempo; import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
import com.rjconsultores.ventaboletos.enums.StatusFlexBus;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.AsientoExclusivoService; import com.rjconsultores.ventaboletos.service.AsientoExclusivoService;
import com.rjconsultores.ventaboletos.service.ConstanteService; import com.rjconsultores.ventaboletos.service.ConstanteService;
@ -586,6 +587,15 @@ public class CorridaServiceImpl implements CorridaService {
return null; return null;
} }
corrida.setDestino(destino); corrida.setDestino(destino);
if(esquemaCorrida.getIsFlexBus()) {
corrida.setOcupacaoMinima(esquemaCorrida.getOcupacaoMinima());
corrida.setHorasParaConfirmacao(esquemaCorrida.getHorasParaConfirmacao());
corrida.setMinutosParaConfirmacao(esquemaCorrida.getMinutosParaConfirmacao());
corrida.setIsFlexBus(Boolean.TRUE);
corrida.setStatusFlexBus(StatusFlexBus.EM_RESERVA.getStatus());
}
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) { for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
@ -1370,4 +1380,7 @@ public class CorridaServiceImpl implements CorridaService {
return true; return true;
} }
public Integer buscarOcupacaoCorrida(Corrida corrida) {
return corridaDAO.buscarOcupacaoCorrida(corrida);
}
} }

View File

@ -0,0 +1,68 @@
package com.rjconsultores.ventaboletos.service.impl;
import java.util.Calendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.EmpresaEmailFlexBusDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaEmailFlexBus;
import com.rjconsultores.ventaboletos.service.EmpresaEmailFlexBusService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@Service("empresaEmailFlexBUsService")
public class EmpresaEmailFlexBusServiceImpl implements EmpresaEmailFlexBusService {
@Autowired
private EmpresaEmailFlexBusDAO empresaEmailDAO;
@Override
public List<EmpresaEmailFlexBus> obtenerTodos() {
return empresaEmailDAO.obtenerTodos();
}
@Override
public EmpresaEmailFlexBus obtenerID(Integer id) {
return empresaEmailDAO.obtenerID(id);
}
@Override
@Transactional
public EmpresaEmailFlexBus suscribir(EmpresaEmailFlexBus entidad) {
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
return empresaEmailDAO.suscribir(entidad);
}
@Override
@Transactional
public EmpresaEmailFlexBus actualizacion(EmpresaEmailFlexBus entidad) {
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
return empresaEmailDAO.actualizacion(entidad);
}
@Override
@Transactional
public void borrar(EmpresaEmailFlexBus entidad) {
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.FALSE);
empresaEmailDAO.actualizacion(entidad);
}
@Override
public EmpresaEmailFlexBus buscarPorEmpresa(Empresa empresa) {
return empresaEmailDAO.buscarPorEmpresa(empresa);
}
}