Class EstadisticasService

java.lang.Object
com.gestorrh.api.service.EstadisticasService

@Service public class EstadisticasService extends Object
Servicio encargado de la generación de métricas y datos estadísticos estructurados para el panel de control.

Proporciona Indicadores Clave de Rendimiento (KPIs) en tiempo real, así como desgloses agregados para su representación gráfica (gráficos de tarta, de barras, etc.).

Permite a las empresas visualizar de un vistazo el estado de su plantilla, incluyendo la puntualidad, el ausentismo y la distribución departamental, garantizando un soporte sólido para la toma de decisiones gerenciales.

  • Field Details

  • Constructor Details

    • EstadisticasService

      public EstadisticasService()
  • Method Details

    • obtenerKpisDashboard

      @Transactional(readOnly=true) public Map<String,Long> obtenerKpisDashboard()
      Recupera los indicadores clave de rendimiento (KPIs) globales consolidados para la fecha actual.

      Las métricas proporcionadas incluyen:

      • totalEmpleados: Cantidad de trabajadores activos en la empresa.
      • planificadosHoy: Número de trabajadores que tienen al menos un turno asignado para hoy.
      • ausentesHoy: Conteo de trabajadores con ausencias aprobadas vigentes en la fecha actual.
      Returns:
      Map con las etiquetas descriptivas de los KPIs como clave y sus correspondientes valores numéricos.
    • obtenerEmpleadosPorDepartamento

      @Transactional(readOnly=true) public List<DatoGraficoDTO> obtenerEmpleadosPorDepartamento()
      Obtiene el desglose de empleados por departamento para su representación en gráficos (ej. Pie Chart).
      Returns:
      List de DatoGraficoDTO con el nombre del departamento y el número de empleados asociados.
    • obtenerAusenciasAprobadasPorTipo

      @Transactional(readOnly=true) public List<DatoGraficoDTO> obtenerAusenciasAprobadasPorTipo()
      Recupera el conteo de ausencias aprobadas agrupadas por su tipo (Vacaciones, Enfermedad, etc.).
      Returns:
      List de DatoGraficoDTO con la distribución por tipo de ausencia.
    • obtenerAusenciasPorEstado

      @Transactional(readOnly=true) public List<DatoGraficoDTO> obtenerAusenciasPorEstado()
      Obtiene la distribución de ausencias según su estado actual (Solicitada, Aprobada, Rechazada).
      Returns:
      List de DatoGraficoDTO con los totales por estado.
    • obtenerTopRetrasos

      @Transactional(readOnly=true) public List<DatoGraficoDTO> obtenerTopRetrasos()
      Identifica a los empleados con mayor número de retrasos acumulados en sus fichajes de entrada. Los resultados se limitan a los 5 casos más destacados.
      Returns:
      List de DatoGraficoDTO con el nombre del empleado y el conteo de sus retrasos.
    • mapearResultados

      private List<DatoGraficoDTO> mapearResultados(List<Object[]> resultados)
      Utilidad privada para transformar resultados brutos de consultas JPA (Object[]) en DTOs para gráficos.
      Parameters:
      resultados - Lista de arreglos de objetos devueltos por la base de datos.
      Returns:
      List de DatoGraficoDTO mapeada.
    • obtenerIdEmpresaAutenticada

      private Long obtenerIdEmpresaAutenticada()
      Recupera el identificador de la empresa del usuario autenticado. Si el usuario es un empleado o supervisor, se obtiene el ID de la empresa a la que pertenece.
      Returns:
      Long El identificador único de la empresa asociada al contexto de seguridad.
      Throws:
      jakarta.persistence.EntityNotFoundException - Si la empresa o el empleado no existen en el sistema.