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;
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 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
public List<String[]> lerArquivo(Reader reader) {
public String[] lerArquivo(Reader reader, List<Empresa> empresas) {
String linha = null;
index = 0;
qtdeGravados = new StringBuilder();
erros = new StringBuilder();
inseridos = 0;
atualizados = 0;
this.empresas = empresas;
List<String[]> listaClientes = new ArrayList<String[]>();
try {
BufferedReader leitor = new BufferedReader(reader);
while ((linha = leitor.readLine()) != null) {
String[] dados = linha.split(",");
listaClientes.add(dados);
String[] dados = linha.replace("\"", "").split(",");
salvarClientes(dados);
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) {
log.error(e);
String[] resultado = { e.toString() };
return resultado;
}
return listaClientes;
}
@Override
public String[] salvarClientes(List<String[]> clientes, List<Empresa> empresas) {
StringBuilder qtdeGravados = new StringBuilder();
StringBuilder erros = new StringBuilder();
public void salvarClientes(String[] cliente) {
try {
String nomeCliente = cliente[1].replace("\"", "").toUpperCase();
Integer inseridos = 0;
Integer atualizados = 0;
for (int i = 0; i < clientes.size(); i++) {
String[] cliente = clientes.get(i);
try {
String nomeCliente = cliente[1].replace("\"", "").toUpperCase();
Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0]));
if (clienteGravar == null) {
clienteGravar = new Cliente();
clienteGravar.setNombcliente(nomeCliente);
clienteGravar.setNumIdentificaUno(cliente[3]);
Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0]));
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(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);
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(Integer.parseInt(cliente[0]));
List<ClienteFidelidad> ls = new ArrayList<ClienteFidelidad>();
for (Empresa e : empresas){
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);
@ -83,55 +130,19 @@ public class ImportacaoClientesServiceImpl implements ImportacaoClientesService
clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
clienteFidelidad.setCliente(clienteGravar);
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) {
erros.append("Linha ").append(i).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n");
clienteGravar.setNombcliente(nomeCliente);
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;
}
}