Package com.gestorrh.api.repository
Interface FichajeRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<Fichaje,,Long> org.springframework.data.jpa.repository.JpaRepository<Fichaje,,Long> org.springframework.data.repository.ListCrudRepository<Fichaje,,Long> org.springframework.data.repository.ListPagingAndSortingRepository<Fichaje,,Long> org.springframework.data.repository.PagingAndSortingRepository<Fichaje,,Long> org.springframework.data.repository.query.QueryByExampleExecutor<Fichaje>,org.springframework.data.repository.Repository<Fichaje,Long>
@Repository
public interface FichajeRepository
extends org.springframework.data.jpa.repository.JpaRepository<Fichaje,Long>
Repositorio para gestionar las operaciones de base de datos de la entidad
Fichaje.
Registra y consulta las entradas y salidas de los empleados, así como sus incidencias.-
Method Summary
Modifier and TypeMethodDescriptionfindByEmpleadoEmpresaIdEmpresaAndFechaBetween(Long idEmpresa, LocalDate fechaInicio, LocalDate fechaFin) Recupera todos los fichajes de una empresa en un rango de fechas.findByEmpleadoIdEmpleadoAndFechaAndHoraSalidaIsNull(Long idEmpleado, LocalDate fecha) Busca fichajes activos de un empleado (sin hora de salida) para una fecha específica.findByEmpleadoIdEmpleadoAndFechaBetween(Long idEmpleado, LocalDate fechaInicio, LocalDate fechaFin) Recupera el historial de fichajes de un empleado en un rango de fechas.obtenerTopRetrasos(Long idEmpresa) Obtiene un ranking de los empleados con más retrasos (fichajes marcados "fuera de horario").Methods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, saveMethods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlushMethods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAllMethods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor
count, exists, findAll, findBy, findOne
-
Method Details
-
findByEmpleadoIdEmpleadoAndFechaAndHoraSalidaIsNull
Busca fichajes activos de un empleado (sin hora de salida) para una fecha específica. Útil para detectar si un empleado tiene un fichaje pendiente de cerrar.- Parameters:
idEmpleado- El ID del empleado.fecha- La fecha a consultar.- Returns:
- Lista de fichajes abiertos.
-
findByEmpleadoIdEmpleadoAndFechaBetween
List<Fichaje> findByEmpleadoIdEmpleadoAndFechaBetween(Long idEmpleado, LocalDate fechaInicio, LocalDate fechaFin) Recupera el historial de fichajes de un empleado en un rango de fechas.- Parameters:
idEmpleado- El ID del empleado.fechaInicio- Fecha de inicio del periodo.fechaFin- Fecha de fin del periodo.- Returns:
- Lista de fichajes realizados en el periodo.
-
findByEmpleadoEmpresaIdEmpresaAndFechaBetween
@Query("SELECT f FROM Fichaje f JOIN FETCH f.empleado e WHERE e.empresa.idEmpresa = :idEmpresa AND f.fecha BETWEEN :fechaInicio AND :fechaFin") List<Fichaje> findByEmpleadoEmpresaIdEmpresaAndFechaBetween(@Param("idEmpresa") Long idEmpresa, @Param("fechaInicio") LocalDate fechaInicio, @Param("fechaFin") LocalDate fechaFin) Recupera todos los fichajes de una empresa en un rango de fechas.Utiliza JOIN FETCH para traer al empleado en la misma consulta y evitar el problema N+1.
- Parameters:
idEmpresa- El ID de la empresa.fechaInicio- Fecha de inicio del periodo.fechaFin- Fecha de fin del periodo.- Returns:
- Lista de fichajes de todos los empleados de la empresa en ese periodo.
-
obtenerTopRetrasos
@Query("SELECT f.empleado.nombre, COUNT(f) FROM Fichaje f WHERE f.empleado.empresa.idEmpresa = :idEmpresa AND f.incidencias LIKE \'%fuera de horario%\' GROUP BY f.empleado.nombre ORDER BY COUNT(f) DESC") List<Object[]> obtenerTopRetrasos(@Param("idEmpresa") Long idEmpresa) Obtiene un ranking de los empleados con más retrasos (fichajes marcados "fuera de horario").- Parameters:
idEmpresa- El ID de la empresa.- Returns:
- Lista de arrays de objetos conteniendo el nombre del empleado y el número de retrasos.
-