AdmMono/src/com/rjconsultores/ventaboletos/service/impl/ImportacaoClientesServiceIm...

121 lines
4.4 KiB
Java

package com.rjconsultores.ventaboletos.service.impl;
import java.io.BufferedReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.rjconsultores.ventaboletos.entidad.Cliente;
import com.rjconsultores.ventaboletos.entidad.ClienteFidelidad;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.TarjetaFidelidad;
import com.rjconsultores.ventaboletos.service.ClienteService;
import com.rjconsultores.ventaboletos.service.ImportacaoClientesService;
import com.rjconsultores.ventaboletos.service.TarjetaFidelidadService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@Service("importacaoClientesService")
public class ImportacaoClientesServiceImpl implements ImportacaoClientesService {
@Autowired
private ClienteService clienteService;
@Autowired
private TarjetaFidelidadService tarjetaFidelidadService;
private static Logger log = Logger.getLogger(ImportacaoClientesServiceImpl.class);
@Override
public String[] lerArquivo(Reader reader, List<Empresa> empresas) {
String linha = null;
Integer index = 0;
StringBuilder qtdeGravados = new StringBuilder();
StringBuilder erros = new StringBuilder();
Integer inseridos = 0;
Integer atualizados = 0;
try {
BufferedReader leitor = new BufferedReader(reader);
while ((linha = leitor.readLine()) != null) {
String[] dados = linha.replace("\"", "").split(",");
Integer[] gravados = salvarClientes(dados, empresas);
inseridos = gravados[0] + inseridos;
atualizados = gravados[1] + atualizados;
index++;
}
leitor.close();
qtdeGravados.append("Gravados ").append(inseridos + atualizados).append(" clientes de ").append(index).append(" importados.\n");
qtdeGravados.append("Atualizados ").append(atualizados).append(" clientes.\n");
qtdeGravados.append("Inseridos ").append(inseridos).append(" novos clientes.");
String[] resultado = { qtdeGravados.toString(), erros.toString() };
return resultado;
} catch (Exception e) {
erros.append("Linha ").append(index).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n");
log.error(e);
String[] resultado = { e.toString() };
return resultado;
}
}
@Override
public Integer[] salvarClientes(String[] cliente, List<Empresa> empresas) {
String nomeCliente = cliente[1].replace("\"", "").toUpperCase();
Integer inseridos = new Integer(0);
Integer atualizados = new Integer(0);
Integer[] gravados = {0,0};
for (Empresa e : empresas){
Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0]), e);
if (clienteGravar == null) {
clienteGravar = new Cliente();
clienteGravar.setNombcliente(nomeCliente);
clienteGravar.setNumIdentificaUno(cliente[3]);
TarjetaFidelidad tarjetaFidelidad = new TarjetaFidelidad();
tarjetaFidelidad.setActivo(Boolean.TRUE);
tarjetaFidelidad.setFecmodif(Calendar.getInstance().getTime());
tarjetaFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
// cast para Integer para remover 0 a esquerda:
tarjetaFidelidad.setNumTarjeta(Long.parseLong(cliente[0]));
List<ClienteFidelidad> ls = new ArrayList<ClienteFidelidad>();
ClienteFidelidad clienteFidelidad = new ClienteFidelidad();
clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad);
clienteFidelidad.setActivo(Boolean.TRUE);
clienteFidelidad.setFecmodif(Calendar.getInstance().getTime());
clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
clienteFidelidad.setCliente(clienteGravar);
clienteFidelidad.setEmpresa(e);
ls.add(clienteFidelidad);
clienteGravar.setListClienteFidelidad(ls);
clienteService.suscribir(clienteGravar);
inseridos = inseridos + 1;
gravados[0] =gravados[0] + inseridos;
} else {
clienteGravar.setNombcliente(nomeCliente);
clienteGravar.setNumIdentificaUno(cliente[3]);
clienteService.actualizacion(clienteGravar);
atualizados = atualizados + 1;
gravados[1] =gravados[1] + atualizados;
}
}
return gravados;
}
}