diff --git a/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java b/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java new file mode 100644 index 000000000..2cf7fb21c --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java @@ -0,0 +1,13 @@ +package com.rjconsultores.ventaboletos.dao; + +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.service.TarifaOficialService; + + +public interface TarifaOficialDAO { + /** + * See {@link TarifaOficialService#gerarTarifaANTT(Ruta)} + * @param ruta + */ + public void gerarTarifaANTT(Ruta ruta); +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java index 8992e01be..d1ce4ee35 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java @@ -146,8 +146,7 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio, - VigenciaTarifa vigenciaTarifa, Moneda moneda) { + public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("marca", marca)); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java new file mode 100644 index 000000000..fa10358f0 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java @@ -0,0 +1,81 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.TarifaOficialDAO; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.entidad.TarifaOficial; + +@Repository("tarifaOficialDAO") +public class TarifaOficialHibernateDAO extends GenericHibernateDAO implements TarifaOficialDAO { + + @Autowired + public TarifaOficialHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @Override + public void gerarTarifaANTT(Ruta ruta) { + StringBuilder sb = new StringBuilder(""); + sb.append("INSERT INTO TarifaOficial ( "); + sb.append(" tarifaOficialId, "); + sb.append(" precio, "); + sb.append(" precioredabierto, "); + sb.append(" tramoId, "); + sb.append(" marcaId, "); + sb.append(" claseservicio_id, "); + sb.append(" PRECIOORIGINAL, "); + sb.append(" MONEDA_ID, "); + sb.append(" VIGENCIATARIFA_ID, "); + sb.append(" STATUSTARIFA, "); + sb.append(" IMPORTETAXAEMBARQUE, "); + sb.append(" IMPORTEPEDAGIO, "); + sb.append(" IMPORTEOUTROS, "); + sb.append(" IMPORTESEGURO, "); + sb.append(" ORGAOCONCEDENTE_ID, "); + sb.append(" RUTA_ID, "); + sb.append(" ACTIVO, "); + sb.append(" FECMODIF, "); + sb.append(" USUARIO_ID, "); + sb.append(" ORIGEN_ID, "); + sb.append(" DESTINO_ID "); + sb.append(" ) "); + /* + * select + * + * TARIFA_OFICIAL_SEQ.NEXTVAL, ROUND( coalesce(ct1.coeficiente,0) * + * coalesce(tc.kmcoeficiente1,0) + coalesce(ct2.coeficiente,0) * + * coalesce(tc.kmcoeficiente2,0) + coalesce(ct3.coeficiente,0) * + * coalesce(tc.kmcoeficiente3,0),2), null, t.tramo_id, mc.marca_id, + * r.CLASESERVICIO_ID, null, m.moneda_id, null, 'A', null, null, null, + * null, oc.orgaoconcedente_id, r.ruta_id, 1, sysdate, 999, + * po.parada_id, pd.parada_id + * + * from ruta_combinacion rc inner join ruta r on r.ruta_id = rc.ruta_id + * inner join orgao_tramo tc on tc.tramo_id = rc.tramo_id inner join + * orgao_concedente oc on oc.orgaoconcedente_id = tc.orgaoconcedente_id + * and oc.orgaoconcedente_id =r.orgaoconcedente_id inner join + * coeficiente_tarifa ct1 on ct1.coeficientetarifa_id = + * tc.coeficientetarifa1_id left join coeficiente_tarifa ct2 on + * ct2.coeficientetarifa_id = tc.coeficientetarifa2_id left join + * coeficiente_tarifa ct3 on ct3.coeficientetarifa_id = + * tc.coeficientetarifa3_id inner join tramo t on t.tramo_id = + * rc.tramo_id inner join parada po on po.parada_id = t.origen_id inner + * join parada pd on pd.parada_id = t.destino_id inner join + * MARCA_CLASESERVICIO mc on mc.CLASESERVICIO_ID = r.CLASESERVICIO_ID, + * moneda m + * + * where rc.activo = 1 and r.activo = 1 and m.moneda_id = 1 and + * oc.orgaoconcedente_id = 3 and (t.tramo_id, mc.marca_id, + * r.CLASESERVICIO_ID, m.moneda_id, oc.orgaoconcedente_id, r.ruta_id) + * not in (select + * tao.tramo_id,tao.marca_id,tao.CLASESERVICIO_ID,tao.moneda_id + * ,tao.orgaoconcedente_id, tao.ruta_id from tarifa_oficial tao where + * tao.activo = 1) + */ + } + +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java b/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java index 2c1f85a89..4c68bbafe 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java @@ -75,10 +75,37 @@ public class Tarifa implements Serializable { @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "TARIFA_ID", referencedColumnName = "TARIFA_ID") private List lsTarifaCategoria; + @OneToOne + @JoinColumn(name = "ORIGEN_ID") + private Parada origen; + @OneToOne + @JoinColumn(name = "DESTINO_ID") + private Parada destino; + @OneToOne + @JoinColumn(name = "RUTA_ID") + private Ruta ruta; + @OneToOne + @JoinColumn(name = "ORGAOCONCEDENTE_ID") + private OrgaoConcedente orgaoConcedente; - public Tarifa() { + public Tarifa() { } + + public OrgaoConcedente getOrgaoConcedente() { + return orgaoConcedente; + } + public void setOrgaoConcedente(OrgaoConcedente orgaoConcedente) { + this.orgaoConcedente = orgaoConcedente; + } + + public Ruta getRuta() { + return ruta; + } + + public void setRuta(Ruta ruta) { + this.ruta = ruta; + } public Tarifa(Integer tarifaId) { this.tarifaId = tarifaId; } @@ -224,8 +251,25 @@ public class Tarifa implements Serializable { public void setLsTarifaTipoptovta(List lsTarifaTipoptovta) { this.lsTarifaTipoptovta = lsTarifaTipoptovta; } + - @Override + public Parada getOrigen() { + return origen; + } + + public void setOrigen(Parada origen) { + this.origen = origen; + } + + public Parada getDestino() { + return destino; + } + + public void setDestino(Parada destino) { + this.destino = destino; + } + + @Override public int hashCode() { int hash = 0; hash += (tarifaId != null ? tarifaId.hashCode() : 0); diff --git a/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java b/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java new file mode 100644 index 000000000..1263da7e2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java @@ -0,0 +1,293 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.persistence.Basic; +import javax.persistence.CascadeType; +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.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@SequenceGenerator(name = "TARIFA_OFICIAL_SEQ", sequenceName = "TARIFA_OFICIAL_SEQ", allocationSize = 1) +@Table(name = "TARIFA_OFICIAL") +public class TarifaOficial implements Serializable { + + private static final long serialVersionUID = 1L; + @Id + @Basic(optional = false) + @GeneratedValue(strategy = GenerationType.AUTO, generator = "TARIFA_OFICIAL_SEQ") + @Column(name = "TARIFAOFICIAL_ID") + private Integer tarifaOficialId; + @Column(name = "PRECIO") + private BigDecimal precio; + @Column(name = "PRECIOORIGINAL") + private BigDecimal preciooriginal; + @Column(name = "STATUSTARIFA") + private String statustarifa; + @Column(name = "ACTIVO") + private Boolean activo; + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecmodif; + @Column(name = "USUARIO_ID") + private Integer usuarioId; + @OneToOne + @JoinColumn(name = "TRAMO_ID") + private Tramo tramo; + @OneToOne + @JoinColumn(name = "MARCA_ID") + private Marca marca; + @OneToOne + @JoinColumn(name = "CLASESERVICIO_ID") + private ClaseServicio claseServicio; + @OneToOne + @JoinColumn(name = "MONEDA_ID") + private Moneda moneda; + @OneToOne + @JoinColumn(name = "VIGENCIATARIFA_ID") + private VigenciaTarifa vigenciaTarifa; + @Column(name = "PRECIOREDABIERTO") + private BigDecimal precioredabierto; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "TARIFA_ID", referencedColumnName = "TARIFA_ID") + private List lsTarifaTipoptovta; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "TARIFA_ID", referencedColumnName = "TARIFA_ID") + private List lsTarifaCategoria; + @OneToOne + @JoinColumn(name = "ORIGEN_ID") + private Parada origen; + @OneToOne + @JoinColumn(name = "DESTINO_ID") + private Parada destino; + @OneToOne + @JoinColumn(name = "RUTA_ID") + private Ruta ruta; + @OneToOne + @JoinColumn(name = "ORGAOCONCEDENTE_ID") + private OrgaoConcedente orgaoConcedente; + + + + public TarifaOficial() { + } + + + public OrgaoConcedente getOrgaoConcedente() { + return orgaoConcedente; + } + + public void setOrgaoConcedente(OrgaoConcedente orgaoConcedente) { + this.orgaoConcedente = orgaoConcedente; + } + + public Ruta getRuta() { + return ruta; + } + + public void setRuta(Ruta ruta) { + this.ruta = ruta; + } + + + + public Integer getTarifaOficialId() { + return tarifaOficialId; + } + + + public void setTarifaOficialId(Integer tarifaOficialId) { + this.tarifaOficialId = tarifaOficialId; + } + + + public BigDecimal getPrecio() { + return precio; + } + + public void setPrecio(BigDecimal precio) { + this.precio = precio; + } + + public BigDecimal getPreciooriginal() { + return preciooriginal; + } + + public void setPreciooriginal(BigDecimal preciooriginal) { + this.preciooriginal = preciooriginal; + } + + public String getStatustarifa() { + return statustarifa; + } + + public void setStatustarifa(String statustarifa) { + this.statustarifa = statustarifa; + } + + 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 ClaseServicio getClaseServicio() { + return claseServicio; + } + + public void setClaseServicio(ClaseServicio claseServicio) { + this.claseServicio = claseServicio; + } + + public Marca getMarca() { + return marca; + } + + public void setMarca(Marca marca) { + this.marca = marca; + } + + public Moneda getMoneda() { + return moneda; + } + + public void setMoneda(Moneda moneda) { + this.moneda = moneda; + } + + public Tramo getTramo() { + return tramo; + } + + public void setTramo(Tramo tramo) { + this.tramo = tramo; + } + + public VigenciaTarifa getVigenciaTarifa() { + return vigenciaTarifa; + } + + public void setVigenciaTarifa(VigenciaTarifa vigenciaTarifa) { + this.vigenciaTarifa = vigenciaTarifa; + } + + public BigDecimal getPrecioredabierto() { + return precioredabierto; + } + + public void setPrecioredabierto(BigDecimal precioredabierto) { + this.precioredabierto = precioredabierto; + } + + public List getLsTarifaCategoria() { + List tmp = new ArrayList(); + if (lsTarifaCategoria != null) { + for (TarifaCategoria ddab : this.lsTarifaCategoria) { + if (ddab.getActivo()) { + tmp.add(ddab); + } + } + } + + this.lsTarifaCategoria = tmp; + + return tmp; + } + + public void setLsTarifaCategoria(List lsTarifaCategoria) { + this.lsTarifaCategoria = lsTarifaCategoria; + } + + public List getLsTarifaTipoptovta() { + List tmp = new ArrayList(); + if (lsTarifaTipoptovta != null) { + for (TarifaTipoptovta ddab : this.lsTarifaTipoptovta) { + if (ddab.getActivo()) { + tmp.add(ddab); + } + } + } + + this.lsTarifaTipoptovta = tmp; + + return tmp; + } + + public void setLsTarifaTipoptovta(List lsTarifaTipoptovta) { + this.lsTarifaTipoptovta = lsTarifaTipoptovta; + } + + + public Parada getOrigen() { + return origen; + } + + public void setOrigen(Parada origen) { + this.origen = origen; + } + + public Parada getDestino() { + return destino; + } + + public void setDestino(Parada destino) { + this.destino = destino; + } + + @Override + public int hashCode() { + int hash = 0; + hash += (tarifaOficialId != null ? tarifaOficialId.hashCode() : 0); + return hash; + } + + @Override + public boolean equals(Object object) { + // TODO: Warning - this method won't work in the case the id fields are not set + if (!(object instanceof TarifaOficial)) { + return false; + } + TarifaOficial other = (TarifaOficial) object; + if ((this.tarifaOficialId == null && other.tarifaOficialId != null) || (this.tarifaOficialId != null && !this.tarifaOficialId.equals(other.tarifaOficialId))) { + return false; + } + return true; + } + + @Override + public String toString() { + return "com.rjconsultores.ventaboletos.entidad.TarifaOficial[tarifaOficialId=" + tarifaOficialId + "]"; + } +} diff --git a/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java b/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java new file mode 100644 index 000000000..bb1d17fb3 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java @@ -0,0 +1,29 @@ +package com.rjconsultores.ventaboletos.service; + +import com.rjconsultores.ventaboletos.entidad.Ruta; + +public interface TarifaOficialService { + + /** + * Gera as tarifas de acordo o cálculo da ANTT.
+ * + * Se o parametro ruta não for informado, será gerado tarifas para todas as rutas da ANTT.
+ * + * Obs.: Essa operção apenas gera tarifas que ainda não estão geradas
+ * + * @param ruta + */ + public void gerarTarifaANTT(Ruta ruta); + + + /** + * Atualiza as tarifas de acordo o cálculo da ANTT
+ * + * Se o parametro ruta não for informado, será atualizado as tarifas para todas as rutas da ANTT.
+ * + * @param ruta + */ + public void atualizarTarifaANTT(Ruta ruta); + + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java new file mode 100644 index 000000000..d43ad95d2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java @@ -0,0 +1,23 @@ +package com.rjconsultores.ventaboletos.service.impl; + +import org.springframework.stereotype.Service; + +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.service.TarifaOficialService; + +@Service("tarifaOficialService") +public class TarifaOficialServiceImpl implements TarifaOficialService { + + @Override + public void gerarTarifaANTT(Ruta ruta) { + // TODO Auto-generated method stub + + } + + @Override + public void atualizarTarifaANTT(Ruta ruta) { + // TODO Auto-generated method stub + + } + +}