Skip to content

Instantly share code, notes, and snippets.

@BrunoDSouza
Last active August 14, 2017 02:21
Show Gist options
  • Save BrunoDSouza/20bf4e1731091c8ee8f80711b9466a78 to your computer and use it in GitHub Desktop.
Save BrunoDSouza/20bf4e1731091c8ee8f80711b9466a78 to your computer and use it in GitHub Desktop.
public Map<String, Map<String, Double>> getFaturamentoFornecedor(){
Date date = utils.getDate(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);
return m.findByTipoMovimentacaoAndDtMovimentacaoGreaterThanEqual(TipoMovimentacao.SAIDA, date)
.stream()
//Agrupa a lista por Mês, aplicando um novo groupBy
// return Map<String, Map<String, Double>>
.collect(Collectors.groupingBy(utils.getNameMonth,
//Agrupa pelo nome do fornecedor, somando os valores das movimentacoes por forncedor
// return Map<String, Double>
Collectors.groupingBy(utils.getNameFornecedor,
Collectors.summingDouble(Movimentacao::getValorMovimentacao))))
//Aplica nova operação stream sobre o Map<> retornado, o objeto a partir daque é um obj stream()
.entrySet().stream()
//Ordena a lista pelos numeros do meses
.sorted(Map.Entry.comparingByKey(Comparator.comparing(utils.getNumberMonth)))
// Convert o mesmo obj stream para o Map<String, Map<String, Double>> retornado anteriormente
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
//oldvalue representa obj stream(), o segundo parametro
// representa o novo valor da lista
(oldvalue, newvalue) -> oldvalue, LinkedHashMap::new));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment