fixes bug#AL-2358

master
lucas.taia 2023-03-22 14:48:10 -03:00
parent 7bd30d3d37
commit d1bffcf7b8
3 changed files with 62 additions and 18 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId>
<version>1.0.43</version>
<version>1.0.44</version>
<distributionManagement>
<repository>
<id>rj-releases</id>

View File

@ -38,6 +38,7 @@ import com.rjconsultores.ventaboletos.entidad.ComEmpTipoEventoExtra;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.InscricaoEstadual;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.enums.FolioSistemaEnum;
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosEmpresaResultTransformer;
/**
@ -47,10 +48,9 @@ import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosEmpres
@Repository("empresaDAO")
public class EmpresaHibernateDAO extends GenericHibernateDAO<Empresa, Integer> implements EmpresaDAO {
private static String FOLIO_SISTEMA_BPE = "FOLIO_SISTEMA_BPE_";
private static String FS_BPE = "FS_BPE_";
private static String FOLIO_SISTEMA = "FOLIO_SISTEMA_";
private static String FS_BPE = "FS_BPE_";
@Autowired
private DataSource dataSource;
@ -224,41 +224,42 @@ public class EmpresaHibernateDAO extends GenericHibernateDAO<Empresa, Integer> i
private void gerarSeqNumFolioSistema(Integer idEmpresa) throws SQLException {
final Connection conn = dataSource.getConnection();
try {
geraSequence(conn, idEmpresa, false);
geraSequence(conn, idEmpresa, true);
geraSequence(conn, idEmpresa);
} finally {
conn.close();
}
}
@SuppressWarnings("unchecked")
private void geraSequence(final Connection conn, final Integer idEmpresa, final Boolean isFolioBpe) throws SQLException {
private void geraSequence(final Connection conn, final Integer idEmpresa) throws SQLException {
final Statement statement = conn.createStatement();
try {
List<String> lista = getSession().createSQLQuery(obtemSqlSequence(idEmpresa, isFolioBpe)).list();
for (String instrucao : lista) {
statement.execute(instrucao);
for (FolioSistemaEnum folioSistemaEnum : FolioSistemaEnum.values()) {
List<String> lista = getSession().createSQLQuery(obtemSqlSequence(idEmpresa, folioSistemaEnum)).list();
for (String instrucao : lista) {
statement.execute(instrucao);
}
}
} finally {
statement.close();
}
}
private String obtemSqlSequence(Integer idEmpresa, Boolean isFolioBpe) {
private String obtemSqlSequence(Integer idEmpresa, FolioSistemaEnum folioSistemaEnum) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT 'CREATE SEQUENCE ' || SEQUENCIA || ' INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE' FROM (");
sql.append(" SELECT DISTINCT '" + obtemNomeFolio(isFolioBpe) +"'||CVEESTADO||'_" + idEmpresa + "_SEQ' SEQUENCIA ");
sql.append(
"SELECT 'CREATE SEQUENCE ' || SEQUENCIA || ' INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE' FROM (");
sql.append(" SELECT DISTINCT '" + folioSistemaEnum.getNome()
+ (folioSistemaEnum.isCveEstado() ? "'||CVEESTADO||'_" : "_") + idEmpresa + "_SEQ' SEQUENCIA ");
sql.append(" FROM ESTADO WHERE ACTIVO = 1) TMP ");
sql.append("WHERE TMP.SEQUENCIA NOT IN( ");
sql.append(" SELECT SEQUENCE_NAME FROM USER_SEQUENCES ");
sql.append(" WHERE SEQUENCE_NAME LIKE '" + obtemNomeFolio(isFolioBpe) + "%_" + idEmpresa + "_SEQ')");
sql.append(" WHERE SEQUENCE_NAME LIKE '" + folioSistemaEnum.getNome() + "%_" + idEmpresa + "_SEQ')");
return sql.toString();
}
private String obtemNomeFolio(Boolean isFolioBpe) {
return isFolioBpe ? FOLIO_SISTEMA_BPE : FOLIO_SISTEMA;
}
@Override
@SuppressWarnings("unchecked")
public List<Empresa> obtenerTodosIncluindoEmpresaTodas() {

View File

@ -0,0 +1,43 @@
package com.rjconsultores.ventaboletos.enums;
public enum FolioSistemaEnum {
FOLIO_SISTEMA("FOLIO_SISTEMA_", true),
FOLIO_SISTEMA_BPE("FOLIO_SISTEMA_BPE_", true),
FOLIO_SISTEMA_DAV("FOLIO_SISTEMA_DAV_", false),
;
private String nome;
private boolean isCveEstado;
private FolioSistemaEnum(String nome, boolean isCveEstado) {
this.nome = nome;
this.isCveEstado = isCveEstado;
}
public static FolioSistemaEnum getFolioSistema(String nome) {
for (FolioSistemaEnum folio : FolioSistemaEnum.values()) {
if (folio.nome.equals(nome)) {
return folio;
}
}
throw new IllegalArgumentException("Folio Sistema não encontrado.");
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean isCveEstado() {
return isCveEstado;
}
public void setCveEstado(boolean isCveEstado) {
this.isCveEstado = isCveEstado;
}
}