Estou fazendo uma consulta para buscar a cidade selecionada e o bairro selecionado pelo usuario. Podem ocorrer duas situações:
-
Buscar apenas um bairro, que seria o local de entrega
-
Buscar dois bairros, que seria o local de entrega e o local de cobrança
Quando faço apenas uma busca, os dados retornados são os esperados.
Quando as cidades são diferentes a query retorna os dados esperados.
Porém se eu tenho duas buscas (cobrança e entrega) na mesma cidade não retorna o esperado.
A seguir o código que verifico se tenho o endereço de entrega e cobrança e faço as consultas no BD
// se tiver o endereço de cobrança
if(viewSearchShipping.getIdBilling()>0){
// procuro o endereco do cliente no BD
AddressBook addressBook = addressBookService.findById(viewSearchShipping.getIdBilling());
//procuro no BD a cidade e bairros que a empresa atende
CityShipping cityShipping = cityShippingService.findByName(addressBook.getCity());
// aqui removo os bairros que não importam para cotar o frete, ou seja deixo apenas o bairro que o cliente selecionou
cityShipping.getDistrictShipping().removeIf(disct -> !disct.getName().equalsIgnoreCase(addressBook.getDistrict()));
// e adiciono numa lista que sera o retorno no final do codigo para poder cotar o frete total
shippingList.add(cityShipping);
}
// endereço de entrega
if(viewSearchShipping.getIdShipping()>0){
AddressBook addressBook = addressBookService.findById(viewSearchShipping.getIdShipping());
CityShipping cityShipping = cityShippingService.findByName2(addressBook.getCity());
cityShipping.getDistrictShipping().removeIf(disct -> !disct.getName().equalsIgnoreCase(addressBook.getDistrict()));
shippingList.add(cityShipping);
}
OBS.: Como sou novo no forum só posso postar uma foto, então uni as duas fotos em uma.
Na imagem 1 demonstro o que retorna na primeira consulta (retorna o esperado)
O bairro procurado era “Costa e Silva”. No método shippingList.add(cityShipping); o retornado seria a cidade e o bairro “Costa e Silva”.
Na imagem 2 demonstro o que retorna na segunda consulta
E aqui que acontece o estranho, deveria retornar igual a imagem 1, a cidade com seus 3 bairros atendidos porém retorna o bairro “Costa e Silva”. Isso que não entendo do por que o retorno do bairro Costa e silva se executo a mesma query com a mesma cidade.
Meu Service é esse:
@Override
public CityShipping findByName(String name) {
return cityShippingRepository.findByNameAndActiveAndExcluded(name, true, false);
}
Meu repositório:
CityShipping findByNameAndActiveAndExcluded(String name, boolean active, boolean excluded);
Desde já agradeço pela ajuda!
