Merge pull request 'Modificação Massiva Contratos feat bug#AL-4544' (!268) from AL-4544 into master

Reviewed-on: adm/ModelWeb#268
Reviewed-by: Gleison da Cruz <gleison.cruz@totvs.com.br>
master
fabio 2024-09-05 17:46:42 +00:00
commit 2555db02bf
8 changed files with 272 additions and 2 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId> <groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId> <artifactId>ModelWeb</artifactId>
<version>1.103.3</version> <version>1.104.0</version>
<distributionManagement> <distributionManagement>
<repository> <repository>

View File

@ -3,9 +3,12 @@ package com.rjconsultores.ventaboletos.dao;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.TarifaGrupoContrato; import com.rjconsultores.ventaboletos.entidad.TarifaGrupoContrato;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.TarifaGrupoContratoVO;
public interface TarifaGrupoContratoDAO extends GenericDAO<TarifaGrupoContrato, Integer>{ public interface TarifaGrupoContratoDAO extends GenericDAO<TarifaGrupoContrato, Integer>{
public boolean gravarTarifasGrupoContrato( List<TarifaGrupoContrato> tarifas); public boolean gravarTarifasGrupoContrato( List<TarifaGrupoContrato> tarifas);
public TarifaGrupoContrato obterTarifaPeloVo(TarifaGrupoContratoVO tarifa);
} }

View File

@ -9,7 +9,6 @@ import java.util.List;
import org.hibernate.Criteria; import org.hibernate.Criteria;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Projections; import org.hibernate.criterion.Projections;

View File

@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.TarifaGrupoContratoDAO; import com.rjconsultores.ventaboletos.dao.TarifaGrupoContratoDAO;
import com.rjconsultores.ventaboletos.entidad.TarifaGrupoContrato; import com.rjconsultores.ventaboletos.entidad.TarifaGrupoContrato;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.TarifaGrupoContratoVO;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Repository("tarifaGrupoContratoDAO") @Repository("tarifaGrupoContratoDAO")
@ -42,4 +43,12 @@ public class TarifaGrupoContratoHibernateDAO extends GenericHibernateDAO<TarifaG
return true; return true;
} }
@Override
public TarifaGrupoContrato obterTarifaPeloVo(TarifaGrupoContratoVO tarifa) {
if( tarifa.getTarifaGrupoContratoId() != null ) {
return obtenerID(tarifa.getTarifaGrupoContratoId());
}
return null;
}
} }

View File

@ -12,6 +12,7 @@ public enum TipoLancamentoCaixa {
BILHETE_ABERTO(5,Labels.getLabel("label.tipoLancamento.bilheteAberto"), false), BILHETE_ABERTO(5,Labels.getLabel("label.tipoLancamento.bilheteAberto"), false),
EVENTO_EXTRA(6,Labels.getLabel("label.tipoLancamento.eventoExtra"), false), EVENTO_EXTRA(6,Labels.getLabel("label.tipoLancamento.eventoExtra"), false),
VOUCHER(7,Labels.getLabel("label.tipoLancamento.voucher"), false), VOUCHER(7,Labels.getLabel("label.tipoLancamento.voucher"), false),
EXPRESSO(8,Labels.getLabel("label.tipoLancamento.expresso"), false),
; ;
private Integer valor; private Integer valor;

View File

@ -0,0 +1,13 @@
package com.rjconsultores.ventaboletos.service;
import java.sql.SQLException;
import com.rjconsultores.ventaboletos.entidad.GrupoContrato;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.TarifaGrupoContratoVO;
public interface MudancaMassivaContratoService {
public String lerArquivo(String stream, String numContrato, GrupoContrato grupo);
public boolean salvarTarifaVO(TarifaGrupoContratoVO tarifa, Integer usuarioId) throws SQLException;
}

View File

@ -0,0 +1,181 @@
package com.rjconsultores.ventaboletos.service.impl;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.dao.TarifaGrupoContratoDAO;
import com.rjconsultores.ventaboletos.entidad.GrupoContrato;
import com.rjconsultores.ventaboletos.entidad.TarifaGrupoContrato;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.MudancaMassivaContratoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.TarifaGrupoContratoVO;
@Service("mudancaMassivaContratoService")
public class MudancaMassivaContratoServiceImpl implements MudancaMassivaContratoService {
@Autowired
private TarifaGrupoContratoDAO tarifaDAO;
private static final Logger log = LogManager.getLogger(MudancaMassivaContratoServiceImpl.class);
@Override
@Transactional
public String lerArquivo(String stream, String numContrato, GrupoContrato grupo){
StringBuilder resultado = new StringBuilder();
StringBuilder detalhado = new StringBuilder();
Integer atualizados = 0;
Integer erros = 0;
try {
List<TarifaGrupoContratoVO> arquivosEnviados = processaArquivoEnviado(stream);
if( arquivosEnviados == null ) {
throw new BusinessException("mudancaMassivaContrato.MSG.arquivoSemTarifa");
}
Integer usuarioId = UsuarioLogado.getUsuarioLogado().getUsuarioId();
for (TarifaGrupoContratoVO tarifa : arquivosEnviados) {
try {
if( tarifa.getNumContrato() == null && tarifa.getGrupoContratoId() == null ) {
erros++;
detalhado.append(Labels.getLabel("mudancaMassivaContrato.MSG.semContratoGrupo"))
.append(tarifa.getTarifaGrupoContratoId()).append(".\n");
}else
if( !tarifa.getNumContrato().equals(numContrato) &&
!tarifa.getGrupoContratoId().equals(grupo.getGrupoContratoId())) {
erros++;
detalhado.append(Labels.getLabel("mudancaMassivaContrato.MSG.contratoGrupoDiferente"))
.append(tarifa.getTarifaGrupoContratoId()).append(".\n");
}else
if( salvarTarifaVO( tarifa, usuarioId )) {
atualizados++;
detalhado.append(Labels.getLabel("label.processado"))
.append(tarifa.getTarifaGrupoContratoId()).append(".\n");
}else {
erros++;
detalhado.append(Labels.getLabel("label.naoProcessado"))
.append(tarifa.getTarifaGrupoContratoId()).append(".\n");
}
} catch (SQLException se) {
detalhado.append(Labels.getLabel("mudancaMassivaContrato.MSG.dbErro"))
.append(tarifa.getTarifaGrupoContratoId()).append(".\n");
log.error(se);
erros++;
}
}
resultado.append(Labels.getLabel("label.arquivoProcessado"));
if(erros > 0) {
resultado.append(Labels.getLabel("label.comRessalva")).append(".\n");
}else {
resultado.append(Labels.getLabel("label.comSucesso")).append(".\n");
}
resultado.append(Labels.getLabel("label.processado")).append(atualizados).append(".\n");
resultado.append(Labels.getLabel("label.naoProcessado")).append(erros).append(".\n");
resultado.append(detalhado);
return resultado.toString();
} catch (IOException ioe) {
resultado.append(Labels.getLabel("MSG.Error.processarArquivo"));
log.error(ioe);
return resultado.toString();
} catch (RuntimeException re) {
resultado.append( re.getMessage() );
log.error(re);
return resultado.toString();
} catch (Exception e) {
resultado.append(Labels.getLabel("MSG.Error.processarArquivo"));
log.error(e);
return resultado.toString();
}
}
private List<TarifaGrupoContratoVO> processaArquivoEnviado(String stream) throws IOException {
String linha = null;
List<TarifaGrupoContratoVO> arquivo = new ArrayList<TarifaGrupoContratoVO>();
InputStream inputStream = converterInputStream(stream);
try( BufferedReader leitor = new BufferedReader(new InputStreamReader(inputStream))){
while ((linha = leitor.readLine()) != null) {
TarifaGrupoContratoVO tarifa = new TarifaGrupoContratoVO();
String[] split = linha.split(";");
tarifa.setTarifaGrupoContratoId( split[0] );
tarifa.setNumContrato(split[1]);
tarifa.setGrupoContratoId(split[2]);
tarifa.setCveOrigem(split[3]);
tarifa.setDescOrigem(split[4]);
tarifa.setCveDestino(split[5]);
tarifa.setDescDestino(split[6]);
tarifa.setTarifa(split[7]);
arquivo.add(tarifa);
}
}
return arquivo;
}
@Override
@Transactional(readOnly = false)
public boolean salvarTarifaVO(TarifaGrupoContratoVO tarifaVO, Integer usuarioId) throws SQLException{
TarifaGrupoContrato tarifa = tarifaDAO.obterTarifaPeloVo( tarifaVO );
tarifa.setActivo(false);
tarifa.setUsuarioId(usuarioId);
tarifa.setFecModif(Calendar.getInstance().getTime());
tarifaDAO.actualizacion(tarifa);
TarifaGrupoContrato tarifanew = duplicaTarifa(tarifa);
tarifanew.setActivo(true);
tarifanew.setTarifa(tarifaVO.getTarifa());
tarifanew.setUsuarioId(usuarioId);
tarifanew.setFecModif(Calendar.getInstance().getTime());
tarifaDAO.suscribir(tarifanew);
return tarifanew.getTarifaGrupoContratoId()!=null;
}
private TarifaGrupoContrato duplicaTarifa(TarifaGrupoContrato tarifa) {
TarifaGrupoContrato novo = new TarifaGrupoContrato();
novo.setTarifa(tarifa.getTarifa());
novo.setOrigem(tarifa.getOrigem());
novo.setDestino(tarifa.getDestino());
novo.setIndCobertura(tarifa.isIndCobertura());
novo.setGrupoContrato(tarifa.getGrupoContrato());
novo.setClaseServicio(tarifa.getClaseServicio());
novo.setActivo(tarifa.isActivo());
novo.setUsuarioId(tarifa.getUsuarioId());
novo.setFecModif(Calendar.getInstance().getTime());
return novo;
}
private InputStream converterInputStream(String in) throws IOException {
byte[] buff = in.getBytes(StandardCharsets.UTF_8);
return new ByteArrayInputStream(buff);
}
}

View File

@ -0,0 +1,64 @@
package com.rjconsultores.ventaboletos.vo.configuracioneccomerciales;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.GrupoContrato;
import com.rjconsultores.ventaboletos.entidad.Parada;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TarifaGrupoContratoVO implements Serializable{
private static final long serialVersionUID = -8044552223526401469L;
private Integer tarifaGrupoContratoId;
private String numContrato;
private GrupoContrato grupoContrato;
private String descGrupoContrato;
private Long grupoContratoId;
private Parada origem;
private String descOrigem;
private String cveOrigem;
private Parada destino;
private String descDestino;
private String cveDestino;
private ClaseServicio claseServicio;
private String descClaseServicio;
private BigDecimal tarifa;
private Integer usuarioId;
private boolean indCobertura;
private boolean activo;
@Temporal(TemporalType.TIMESTAMP)
private Date fecModif;
public void setTarifaGrupoContratoId(String id) {
this.tarifaGrupoContratoId = Integer.valueOf(id);
}
public void setGrupoContratoId(String grupoId) {
this.grupoContratoId = Long.valueOf(grupoId);
}
public void setTarifa(String tarifa) {
this.tarifa = new BigDecimal(tarifa.replace(',', '.'));
}
}