ConsultaController
@GetMapping("/relatorio-mensual/{mes}") --> En Portugues <--
public ResponseEntity<List<DatosRelatoriosConsultaMensual>> generarRelatorioConsultaMensual(@PathVariable
YearMonth mes) {
//var relatorio = consultaRepository.?
return ResponseEntity.ok(null);
}
Para Argentina:
@GetMapping("/reporte-mensual/{mes}")
public ResponseEntity<List<DatosReporteConsultaMensual>> generarReporteConsultaMensual(
@PathVariable @DateTimeFormat(pattern = "yyyy-MM") YearMonth mes) {
// Calculamos el inicio y fin del mes en Argentina
var inicio = mes.atDay(1).atStartOfDay();
var fin = mes.atEndOfMonth().atTime(23, 59, 59);
var reporte = consultaRepository.buscarReporteMensual(inicio, fin);
return ResponseEntity.ok(reporte);
}
Modificamos DatosReporteConsultaMensual:
public record DatosReporteConsultaMensual( --> Portugues <--
// String nome,
// String crm,
// Long quantidadeConsultasNoMes) {
//}
Por una interface, para no tener problemas con las consulta JPQL y los package. Ademas sacamos la interface del package 'dto' y lo pasamos a 'consulta'
public interface DatosReporteConsultaMensual {
String getNombreMedico();
Long getCantidadDeConsultas();
}
El ConsultaRepository:
@Query("""
SELECT c.medico.nombre AS nombreMedico, COUNT(c) AS cantidadDeConsultas
FROM Consulta c
WHERE c.fecha BETWEEN :inicio AND :fin
GROUP BY c.medico.nombre
""")
List<DatosReporteConsultaMensual> buscarReporteMensual(
@Param("inicio") LocalDateTime inicio,
@Param("fin") LocalDateTime fin
);
Mi postman: