Importação Clientes - Número fidelidade por empresa (fixed bug #5011)

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@34368 d1611594-4594-4d17-8e1d-87c2c4800839
master
leonardo 2014-03-27 21:08:33 +00:00
parent bf5bd7f559
commit bb664b6f46
2 changed files with 87 additions and 76 deletions

View File

@ -6,7 +6,7 @@ import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
public interface ImportacaoClientesService { public interface ImportacaoClientesService {
public List<String[]> lerArquivo(Reader reader); public String[] lerArquivo(Reader reader, List<Empresa> empresas);
public String[] salvarClientes(List<String[]> clientes, List<Empresa> empresa); public void salvarClientes(String[] cliente);
} }

View File

@ -28,54 +28,101 @@ public class ImportacaoClientesServiceImpl implements ImportacaoClientesService
private TarjetaFidelidadService tarjetaFidelidadService; private TarjetaFidelidadService tarjetaFidelidadService;
private static Logger log = Logger.getLogger(ImportacaoClientesServiceImpl.class); private static Logger log = Logger.getLogger(ImportacaoClientesServiceImpl.class);
private Integer index;
private StringBuilder qtdeGravados;
private StringBuilder erros;
private Integer inseridos;
private Integer atualizados;
private List<Empresa> empresas;
@Override @Override
public List<String[]> lerArquivo(Reader reader) { public String[] lerArquivo(Reader reader, List<Empresa> empresas) {
String linha = null; String linha = null;
index = 0;
qtdeGravados = new StringBuilder();
erros = new StringBuilder();
inseridos = 0;
atualizados = 0;
this.empresas = empresas;
List<String[]> listaClientes = new ArrayList<String[]>(); List<String[]> listaClientes = new ArrayList<String[]>();
try { try {
BufferedReader leitor = new BufferedReader(reader); BufferedReader leitor = new BufferedReader(reader);
while ((linha = leitor.readLine()) != null) { while ((linha = leitor.readLine()) != null) {
String[] dados = linha.split(","); String[] dados = linha.replace("\"", "").split(",");
listaClientes.add(dados); salvarClientes(dados);
index++;
} }
leitor.close(); 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) { } catch (Exception e) {
log.error(e); log.error(e);
String[] resultado = { e.toString() };
return resultado;
} }
return listaClientes;
} }
@Override @Override
public String[] salvarClientes(List<String[]> clientes, List<Empresa> empresas) { public void salvarClientes(String[] cliente) {
StringBuilder qtdeGravados = new StringBuilder(); try {
StringBuilder erros = new StringBuilder(); String nomeCliente = cliente[1].replace("\"", "").toUpperCase();
Integer inseridos = 0; Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0]));
Integer atualizados = 0; if (clienteGravar == null) {
for (int i = 0; i < clientes.size(); i++) { clienteGravar = new Cliente();
String[] cliente = clientes.get(i); clienteGravar.setNombcliente(nomeCliente);
try { clienteGravar.setNumIdentificaUno(cliente[3]);
String nomeCliente = cliente[1].replace("\"", "").toUpperCase();
Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0])); TarjetaFidelidad tarjetaFidelidad = new TarjetaFidelidad();
if (clienteGravar == null) { tarjetaFidelidad.setActivo(Boolean.TRUE);
clienteGravar = new Cliente(); tarjetaFidelidad.setFecmodif(Calendar.getInstance().getTime());
clienteGravar.setNombcliente(nomeCliente); tarjetaFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
clienteGravar.setNumIdentificaUno(cliente[3]); // cast para Integer para remover 0 a esquerda:
tarjetaFidelidad.setNumTarjeta(Integer.parseInt(cliente[0]));
TarjetaFidelidad tarjetaFidelidad = new TarjetaFidelidad(); List<ClienteFidelidad> ls = new ArrayList<ClienteFidelidad>();
tarjetaFidelidad.setActivo(Boolean.TRUE);
tarjetaFidelidad.setFecmodif(Calendar.getInstance().getTime());
tarjetaFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
// cast para Integer para remover 0 a esquerda:
tarjetaFidelidad.setNumTarjeta(Integer.parseInt(cliente[0]));
List<ClienteFidelidad> ls = new ArrayList<ClienteFidelidad>(); for (Empresa e : empresas){
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;
} else {
boolean possuiFidelidadeEmpresa;
for (Empresa e: empresas){
possuiFidelidadeEmpresa = false;
for (ClienteFidelidad cf : clienteGravar.getListClienteFidelidad()){
if (cf.getEmpresa() != null && cf.getEmpresa().equals(e)){
possuiFidelidadeEmpresa = true;
break;
}
}
if (!possuiFidelidadeEmpresa){
TarjetaFidelidad tarjetaFidelidad = tarjetaFidelidadService.obtenerNumTarjeta(Integer.parseInt(cliente[0]));
for (Empresa e : empresas){
ClienteFidelidad clienteFidelidad = new ClienteFidelidad(); ClienteFidelidad clienteFidelidad = new ClienteFidelidad();
clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad); clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad);
clienteFidelidad.setActivo(Boolean.TRUE); clienteFidelidad.setActivo(Boolean.TRUE);
@ -83,55 +130,19 @@ public class ImportacaoClientesServiceImpl implements ImportacaoClientesService
clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
clienteFidelidad.setCliente(clienteGravar); clienteFidelidad.setCliente(clienteGravar);
clienteFidelidad.setEmpresa(e); clienteFidelidad.setEmpresa(e);
ls.add(clienteFidelidad); clienteGravar.getListClienteFidelidad().add(clienteFidelidad);
} }
clienteGravar.setListClienteFidelidad(ls);
clienteService.suscribir(clienteGravar);
inseridos = inseridos + 1;
} else {
boolean possuiFidelidadeEmpresa;
for (Empresa e: empresas){
possuiFidelidadeEmpresa = false;
for (ClienteFidelidad cf : clienteGravar.getListClienteFidelidad()){
if (cf.getEmpresa() != null && cf.getEmpresa().equals(e)){
possuiFidelidadeEmpresa = true;
break;
}
}
if (!possuiFidelidadeEmpresa){
TarjetaFidelidad tarjetaFidelidad = tarjetaFidelidadService.obtenerNumTarjeta(Integer.parseInt(cliente[0]));
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);
clienteGravar.getListClienteFidelidad().add(clienteFidelidad);
}
}
clienteGravar.setNombcliente(nomeCliente);
clienteGravar.setNumIdentificaUno(cliente[3]);
clienteService.actualizacion(clienteGravar);
atualizados = atualizados + 1;
} }
} catch (Exception e) { clienteGravar.setNombcliente(nomeCliente);
erros.append("Linha ").append(i).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n"); clienteGravar.setNumIdentificaUno(cliente[3]);
clienteService.actualizacion(clienteGravar);
log.error(e); atualizados = atualizados + 1;
} }
}catch (Exception e) {
erros.append("Linha ").append(index).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n");
log.error(e);
} }
qtdeGravados.append("Gravados ").append(inseridos + atualizados).append(" clientes de ").append(clientes.size()).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;
} }
} }