JSF datatable registros duplicados

9 respostas Resolvido
primefacesjsfjava
E

Boa noite, preciso de uma ajuda.
Tenho a seguinte situação:

tenho que eliminar os meses duplicados, já que só há 2 meses ai, os 2 ultimos.
e preciso somar os valores daquele mês, alguem me da uma luz.

Estou utilizando java, jsf, primefaces consumindo uma api rest

9 Respostas

L

Faça uma consulta usando SUM e agrupada pelo mês.

E

você pode me mostrar um exemplo de como seria essa consulta?

L

Não sei qual banco está usando, mas é algo mais ou menos assim:

SELECT id, EXTRACT(month FROM data) as mes, SUM(custoTotal)
FROM SuaTabela
GROUP BY id, EXTRACT(month FROM data)
E

não estou usando base de dados, estou jogando do json direto no objeto com gson, e mostrando no datatable do primeface

L

hmmm. Informação importante. Como vc está carregando os dados desse json para ser apresentado na tela?

E

aqui está o json que estou querendo somar os valores: https://dadosabertos.camara.leg.br/api/v2/deputados/204554/despesas?mes=3&mes=2&ordem=DESC&ordenarPor=dataDocumento

eu tenho que pegar os daods dos 2 ultimos meses (que já esta na url) e somar os valores de casa mes, no caso mostraria 2 valores: mes 2 - valor tanto total, mes 3 - valor tanto total.

Eu estou usando o gson para transformar o json em objeto, e então transformo em uma lista e mostro da datatable

L
Solucao aceita

Esse link abre uma estrutura XML e não JSON. Sobre fazer o agrupamento na lista, vc pode usar lambda para isso, veja:

Map<Integer, Double> collect = itens.stream().collect(Collectors.groupingBy(Item::getMes, Collectors.summingDouble(Item::getValor)));

Porém, a função de agrupar retorna um Map. No meu exemplo, o key do map é o mês e o value é o valor somado.

E

esqueci de por &formato=json no final…
https://dadosabertos.camara.leg.br/api/v2/deputados/204554/despesas?mes=3&mes=2&ordem=DESC&ordenarPor=dataDocumento&formato=json

vou testar a solução.

E

Tá funcionou, e desde já obrigado.
Agora vem a luta de como conseguir mostrar na datatable ou como outputLabel mesmo no primefaces

Criado 21 de março de 2020
Ultima resposta 22 de mar. de 2020
Respostas 9
Participantes 2