1
resposta

Paginação retornando um map

Estou efetuando uma consulta de todos os colaboradores e preciso retornar os mesmo agrupados pelo setor.

Consegui retornar o MAP mas não consigo retornar os dados completo da paginação.

Qual a forma para retornar a paginação com o MAP?

segue o código.

@GetMapping()
    public ResponseEntity<Map<String, List<ColaboradorSetorDTO>>> getTodosColaboradores(
            @RequestParam int pagina, @RequestParam int qtd
    ) {

        Pageable paginacao = PageRequest.of(pagina, qtd);

        Page<Colaborador> colaboradores = colaboradorRepository.findAll(paginacao);

        colaboradores.forEach(c -> {
            int i = DateUtil.calculateAge(c.getDataNascimento());
            c.setIdade(i);
        });

        Page<ColaboradorSetorDTO> colaboradorSetorDTOS;

        colaboradorSetorDTOS = ColaboradorSetorDTO.converter(colaboradores);

        Map<String, List<ColaboradorSetorDTO>> setorListMap = colaboradorSetorDTOS.stream()
                .collect(groupingBy(c -> c.getSetor().getDescricao()));

        return ResponseEntity.ok(setorListMap);

    }
1 resposta

Oi Emerson,

Desse jeito não vai rolar, pois você que está criando o map e não tem como ele puxar automaticamente os dados da paginação.

Pelo que eu entendi do seu código você está fazendo uma consulta dos colaboradores e os agrupando pelo setor. Isso não seria um relatório ao invés de uma consulta simples? Porque no caso de relatório acho que não faria sentido utilizar paginação, mas sim devolver o resumo geral de todos os dados.