git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@20569 d1611594-4594-4d17-8e1d-87c2c4800839
parent
03d6b330ce
commit
c33cdd46a6
|
@ -8,6 +8,7 @@ public interface TarifaOficialDAO {
|
|||
/**
|
||||
* See {@link TarifaOficialService#gerarTarifaANTT(Ruta)}
|
||||
* @param ruta
|
||||
* @return TODO
|
||||
*/
|
||||
public void gerarTarifaANTT(Ruta ruta);
|
||||
public Integer gerarTarifaANTT(Ruta ruta);
|
||||
}
|
||||
|
|
|
@ -6,76 +6,30 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.TarifaOficialDAO;
|
||||
import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.entidad.TarifaOficial;
|
||||
|
||||
@Repository("tarifaOficialDAO")
|
||||
public class TarifaOficialHibernateDAO extends GenericHibernateDAO<TarifaOficial, Integer> implements TarifaOficialDAO {
|
||||
|
||||
@Autowired
|
||||
private SQLBuilder sqlBuilder;
|
||||
|
||||
@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)
|
||||
*/
|
||||
public Integer gerarTarifaANTT(Ruta ruta) {
|
||||
Integer rutaId = (ruta == null)?null:ruta.getRutaId();
|
||||
|
||||
String sql = sqlBuilder.getSQLTarifaOficial1(rutaId);
|
||||
|
||||
int qtd = getSession().createSQLQuery(sql).executeUpdate();
|
||||
|
||||
return qtd;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.rjconsultores.ventaboletos.dao.sqlbuilder;
|
||||
|
||||
|
||||
/**
|
||||
* Interface que indica quais são os SQL nativos da aplicação.
|
||||
*
|
||||
* Cada método representa um SQL nativo que deve ser implementado de acordo com a base de dados.
|
||||
*
|
||||
* O padrão para a clase é retornar o SQL nativo para o conjunto de parametros
|
||||
*
|
||||
*
|
||||
* @author gleimar
|
||||
*
|
||||
*/
|
||||
public interface SQLBuilder {
|
||||
|
||||
public String getSQLTarifaOficial1(Integer codRuta);
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.rjconsultores.ventaboletos.dao.sqlbuilder;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.sqlbuilder.impl.SQLBuilderOracle;
|
||||
import com.rjconsultores.ventaboletos.dao.sqlbuilder.impl.SQLBuilderSQLServer;
|
||||
import com.rjconsultores.ventaboletos.dao.util.DBUtil;
|
||||
|
||||
public class SQLFactory {
|
||||
private static Logger log = Logger.getLogger(SQLFactory.class);
|
||||
|
||||
public SQLBuilder getBuilder() {
|
||||
if (DBUtil.getInstance().isOracle()) {
|
||||
return new SQLBuilderOracle();
|
||||
}
|
||||
if (DBUtil.getInstance().isSQLServer()) {
|
||||
return new SQLBuilderSQLServer();
|
||||
}
|
||||
|
||||
log.error("Não foi identificado a base de dados");
|
||||
|
||||
return new SQLBuilderOracle();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
package com.rjconsultores.ventaboletos.dao.sqlbuilder.impl;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder;
|
||||
|
||||
public class SQLBuilderOracle implements SQLBuilder {
|
||||
|
||||
@Override
|
||||
public String getSQLTarifaOficial1(Integer codRuta) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("INSERT ");
|
||||
sb.append("INTO ");
|
||||
sb.append(" TARIFA_OFICIAL ");
|
||||
sb.append(" ( ");
|
||||
sb.append(" TARIFAOFICIAL_ID, ");
|
||||
sb.append(" PRECIO, ");
|
||||
sb.append(" PRECIOREDABIERTO, ");
|
||||
sb.append(" TRAMO_ID, ");
|
||||
sb.append(" MARCA_ID, ");
|
||||
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(" ) ");
|
||||
sb.append(" select ");
|
||||
sb.append(" ");
|
||||
sb.append(" TARIFA_OFICIAL_SEQ.NEXTVAL, ");
|
||||
sb.append(" ROUND( ");
|
||||
sb.append(" coalesce(ct1.coeficiente,0) * coalesce(tc.kmcoeficiente1,0) + ");
|
||||
sb.append(" coalesce(ct2.coeficiente,0) * coalesce(tc.kmcoeficiente2,0) + ");
|
||||
sb.append(" coalesce(ct3.coeficiente,0) * coalesce(tc.kmcoeficiente3,0),2), ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" t.tramo_id, ");
|
||||
sb.append(" mc.marca_id, ");
|
||||
sb.append(" r.CLASESERVICIO_ID, ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" m.moneda_id, ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" 'A', ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" null, ");
|
||||
sb.append(" oc.orgaoconcedente_id, ");
|
||||
sb.append(" r.ruta_id, ");
|
||||
sb.append(" 1, ");
|
||||
sb.append(" sysdate, ");
|
||||
sb.append(" 999, ");
|
||||
sb.append(" po.parada_id, ");
|
||||
sb.append(" pd.parada_id ");
|
||||
sb.append(" ");
|
||||
sb.append("from ");
|
||||
sb.append(" ruta_combinacion rc ");
|
||||
sb.append(" inner join ruta r on r.ruta_id = rc.ruta_id ");
|
||||
sb.append(" inner join orgao_tramo tc on tc.tramo_id = rc.tramo_id ");
|
||||
sb.append(" inner join orgao_concedente oc on oc.orgaoconcedente_id = tc.orgaoconcedente_id and oc.orgaoconcedente_id =r.orgaoconcedente_id ");
|
||||
sb.append(" inner join coeficiente_tarifa ct1 on ct1.coeficientetarifa_id = tc.coeficientetarifa1_id ");
|
||||
sb.append(" left join coeficiente_tarifa ct2 on ct2.coeficientetarifa_id = tc.coeficientetarifa2_id ");
|
||||
sb.append(" left join coeficiente_tarifa ct3 on ct3.coeficientetarifa_id = tc.coeficientetarifa3_id ");
|
||||
sb.append(" inner join tramo t on t.tramo_id = rc.tramo_id ");
|
||||
sb.append(" inner join parada po on po.parada_id = t.origen_id ");
|
||||
sb.append(" inner join parada pd on pd.parada_id = t.destino_id ");
|
||||
sb.append(" inner join MARCA_CLASESERVICIO mc on mc.CLASESERVICIO_ID = r.CLASESERVICIO_ID, ");
|
||||
sb.append(" moneda m ");
|
||||
sb.append(" ");
|
||||
sb.append("where ");
|
||||
sb.append(" rc.activo = 1 ");
|
||||
if (codRuta != null) {
|
||||
sb.append(" and r.ruta_id = ").append(codRuta);
|
||||
}
|
||||
sb.append(" and r.activo = 1 ");
|
||||
sb.append(" and m.moneda_id = 1 ");
|
||||
sb.append(" and oc.orgaoconcedente_id = 3 ");
|
||||
sb.append(" and ");
|
||||
sb.append(" (t.tramo_id, ");
|
||||
sb.append(" mc.marca_id, ");
|
||||
sb.append(" r.CLASESERVICIO_ID, ");
|
||||
sb.append(" m.moneda_id, ");
|
||||
sb.append(" oc.orgaoconcedente_id, ");
|
||||
sb.append(" 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) ");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.rjconsultores.ventaboletos.dao.sqlbuilder.impl;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder;
|
||||
|
||||
public class SQLBuilderSQLServer implements SQLBuilder {
|
||||
|
||||
@Override
|
||||
public String getSQLTarifaOficial1(Integer codRuta) {
|
||||
throw new RuntimeException("SQL getSQLTarifaOficial1 não implementado");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package com.rjconsultores.ventaboletos.dao.util;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
public class DBUtil {
|
||||
|
||||
private static Logger log = Logger.getLogger(DBUtil.class);
|
||||
private static DBUtil INSTANCE;
|
||||
private static Properties p;
|
||||
|
||||
public static DBUtil getInstance(){
|
||||
if (INSTANCE == null){
|
||||
INSTANCE = new DBUtil();
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private DBUtil() {
|
||||
p = new Properties();
|
||||
InputStream is;
|
||||
try {
|
||||
is = new ClassPathResource("/com/rjconsultores/ventaboletos/web/cliente/conf/database.properties").getInputStream();
|
||||
|
||||
p.load(is);
|
||||
is.close();
|
||||
} catch (IOException e) {
|
||||
log.error("Erro ao carregar o properties do banco de dados", e);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isOracle() {
|
||||
return p.getProperty("database.dialect").toUpperCase().contains("ORACLE");
|
||||
}
|
||||
|
||||
public boolean isSQLServer() {
|
||||
return p.getProperty("database.dialect").toUpperCase().contains("SQLSERVER");
|
||||
}
|
||||
|
||||
// private String getDefaultSchema(){
|
||||
// return p.getProperty("database.default_schema").toUpperCase();
|
||||
// }
|
||||
|
||||
// public String agregarDefaulSchema(String objBaseDados){
|
||||
// String [] array = objBaseDados.split("\\.");
|
||||
//
|
||||
// if (array.length == 1){
|
||||
// return getDefaultSchema() + "." + array[0];
|
||||
// }else if (array.length == 2){
|
||||
// return getDefaultSchema() + "." + array[1];
|
||||
// }
|
||||
// return objBaseDados;
|
||||
// }
|
||||
}
|
|
@ -7,23 +7,24 @@ public interface TarifaOficialService {
|
|||
/**
|
||||
* Gera as tarifas de acordo o cálculo da ANTT.<br/>
|
||||
*
|
||||
* Se o parametro ruta não for informado, será gerado tarifas para todas as rutas da ANTT.<br/>
|
||||
* Se o parametro ruta não for informado, será gerado tarifas para todas as
|
||||
* rutas da ANTT.<br/>
|
||||
*
|
||||
* Obs.: Essa operção apenas gera tarifas que ainda não estão geradas<br/>
|
||||
*
|
||||
* @param ruta
|
||||
* @return A quantidade de registros afetadas
|
||||
*/
|
||||
public void gerarTarifaANTT(Ruta ruta);
|
||||
|
||||
|
||||
public Integer gerarTarifaANTT(Ruta ruta);
|
||||
|
||||
/**
|
||||
* Atualiza as tarifas de acordo o cálculo da ANTT<br/>
|
||||
*
|
||||
* Se o parametro ruta não for informado, será atualizado as tarifas para todas as rutas da ANTT.<br/>
|
||||
* Se o parametro ruta não for informado, será atualizado as tarifas para
|
||||
* todas as rutas da ANTT.<br/>
|
||||
*
|
||||
* @param ruta
|
||||
*/
|
||||
public void atualizarTarifaANTT(Ruta ruta);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
package com.rjconsultores.ventaboletos.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.TarifaOficialDAO;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.service.TarifaOficialService;
|
||||
|
||||
@Service("tarifaOficialService")
|
||||
public class TarifaOficialServiceImpl implements TarifaOficialService {
|
||||
|
||||
@Autowired
|
||||
private TarifaOficialDAO tarifaOficialDAO;
|
||||
|
||||
@Override
|
||||
public void gerarTarifaANTT(Ruta ruta) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@Transactional
|
||||
public Integer gerarTarifaANTT(Ruta ruta) {
|
||||
return tarifaOficialDAO.gerarTarifaANTT(ruta);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue