2
respostas

Formato do objeto sai errado!

Olá. Tenho o método que tem por finalidade gerar um objeto em forma de json para enviar para a view, o problema que preciso fazer uma comparação entre dois valores que estão em listas separadas para então o if entrar em cena e gerar o objeto correto, mas eis o que tenho:

Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Alimentação = Alimentação
Compare = Alimentação = Alimentação
Compare = Água = Alimentação
Compare = Aluguel  = Alimentação
Objeto =  {"data":[["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Alimentação = Alimentação
Compare = Alimentação = Alimentação
Compare = Água = Alimentação
Compare = Aluguel  = Alimentação
Objeto =  {"data":[["Despesa 4","3652.00"],["Despesa 5","1596.00"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Aluguel  = Alimentação
Compare = Energia = Alimentação
Compare = Alimentação = Alimentação
Compare = Alimentação = Alimentação
Compare = Água = Alimentação
Compare = Aluguel  = Alimentação
Objeto =  {"data":[["Despesa 4","3652.00"],["Despesa 5","1596.00"],["Despesa 4","3652.00"],["Despesa 5","1596.00"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}

um dos 'for s' esta me trazendo apenas um item para comparação que é Alimentação e portanto só entra nesse item e tem essa loop para esse item que no meu caso é descartável. Exponho o meu controller para exemplificar:

// Pie Chart Despesas home
    @RequestMapping(value = "/despesasPieCharts", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody List<MinhasDespesas> despesasPieCharts(@AuthenticationPrincipal UsuarioLogado logado) throws JSONException, JsonProcessingException {

        Long userId = logado.getId();
        AtualizaMesAno mesAno = mesAnoService.findId(userId);

        String mes = mesAno.getMes();
        String ano = mesAno.getAno();

        List<CatTipoDespesas> listCatDespesas = tipoDespesasService.findByUsuarioByDate(userId, mes, ano);
        List<MinhasDespesas> listDespesas = minhasDespesasService.findByUsuarioByDate(userId, mes, ano);

        JSONObject obj = new JSONObject();
        JSONArray array = new JSONArray();

        for(int i = 0; i < listDespesas.size(); i++){
            String nomeTipoDespesa = "";
            for(CatTipoDespesas cp : listCatDespesas){
                nomeTipoDespesa = cp.getNomeTipoDespesas();
            }
            for(MinhasDespesas dp : listDespesas){
                System.out.println("Compare = " + dp.getNomeCategoria() + " = " + nomeTipoDespesa);
                if(dp.getNomeCategoria().equals(nomeTipoDespesa)){
                    obj.put("id", dp.getNomeCategoria());

                    String[] array1 = {dp.getDescricaoDespesa(), dp.getValorDespesa().toString()};
                    array.put(array1);
                }
            }
            obj.put("data", array);
            System.out.println("Objeto =  " +  obj);
        }
        return listDespesas;
    }
2 respostas

Não analisei seu código inteiro mas encontrei algo estranho nesta parte:

String nomeTipoDespesa = "";
for(CatTipoDespesas cp : listCatDespesas){
                nomeTipoDespesa = cp.getNomeTipoDespesas();
            }
for(MinhasDespesas dp : listDespesas){
                System.out.println("Compare = " + dp.getNomeCategoria() + " = " + nomeTipoDespesa);
                if(dp.getNomeCategoria().equals(nomeTipoDespesa)){

Aqui você itera numa lista e logo depois fecha o for, ficando só com o último nome na variável nomeTipoDespesa que é a sua "Alimentação" que se repete.

Será que sua intenção não era fechar este for(CatTipoDespesas cp : listCatDespesas) depois, afim de comparar com cada nomeTipoDespesa?

Sim Cayo, era isso mesmo, alterei e agora guardo num array e faço a comparação com método abaixo:

// Pie Chart Despesas home
    @RequestMapping(value = "/despesasPieCharts", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody List<MinhasDespesas> despesasPieCharts(@AuthenticationPrincipal UsuarioLogado logado) throws JSONException, JsonProcessingException {

        Long userId = logado.getId();
        AtualizaMesAno mesAno = mesAnoService.findId(userId);

        String mes = mesAno.getMes();
        String ano = mesAno.getAno();

        List<CatTipoDespesas> listCatDespesas = tipoDespesasService.findByUsuarioByDate(userId, mes, ano);
        List<MinhasDespesas> listDespesas = minhasDespesasService.findByUsuarioByDate(userId, mes, ano);

        JSONObject obj = new JSONObject();
        JSONArray array = new JSONArray();
        List<String> list = new ArrayList<String>();

        for(int i = 0; i < listCatDespesas.size(); i++){
            for(CatTipoDespesas catDesp : listCatDespesas){
                list.add(catDesp.getNomeTipoDespesas());
            }
        }

        for(int i = 0; i < listDespesas.size(); i++){
            for(MinhasDespesas dp : listDespesas){

                System.out.println("Compare ## " + list.toString() + " = " + dp.getNomeCategoria());
                if(list.contains(dp.getNomeCategoria())){
                    obj.put("id", dp.getNomeCategoria());
                    System.out.println("Objeto ==  " +  obj);
                    String[] array1 = {dp.getDescricaoDespesa(), dp.getValorDespesa().toString()};
                    array.put(array1);
                }
                obj.put("data", array);
                System.out.println("Objeto =  " +  obj);
            }
        }

        return listDespesas;
    }

e objeto ainda sai errado:

Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Aluguel 
Objeto =  {"data":[]}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Energia
Objeto ==  {"data":[],"id":"Energia"}
Objeto =  {"data":[["Despesa 2","500.00"]],"id":"Energia"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Aluguel 
Objeto =  {"data":[["Despesa 2","500.00"]],"id":"Energia"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Energia
Objeto ==  {"data":[["Despesa 2","500.00"]],"id":"Energia"}
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"]],"id":"Energia"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Alimentação
Objeto ==  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"]],"id":"Alimentação"}
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"]],"id":"Alimentação"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Alimentação
Objeto ==  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"]],"id":"Alimentação"}
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Água
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Aluguel 
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Aluguel 
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Alimentação"}
Compare ## [Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação, Aluguel, Energia, Água , Alimentação] = Energia
Objeto ==  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"]],"id":"Energia"}
Objeto =  {"data":[["Despesa 2","500.00"],["Despesa 7","985.20"],["Despesa 4","3652.00"],["Despesa 5","1596.00"],["Despesa 2","500.00"]],"id":"Energia"}