diff --git a/src/main/java/com/example/fercoganbackend/controller/PujaController.java b/src/main/java/com/example/fercoganbackend/controller/PujaController.java index 9ca2e51..8302f88 100644 --- a/src/main/java/com/example/fercoganbackend/controller/PujaController.java +++ b/src/main/java/com/example/fercoganbackend/controller/PujaController.java @@ -32,6 +32,21 @@ public class PujaController { public List getForInforme(@PathVariable Long remateId){ return pujaService.fingForReporte(remateId); } + + @GetMapping("/informe/npujas/{remateId}") + public ResponseEntity> getReporteTopPujas( + @PathVariable Long remateId, + @RequestParam(defaultValue = "3") int limite) { + + List reporte = pujaService.findForNPujasReporte(remateId, limite); + + if (reporte.isEmpty()) { + return ResponseEntity.noContent().build(); + } + + return ResponseEntity.ok(reporte); + } + @GetMapping("/remate/{id}") public List getForRemate(@PathVariable Long id){ return pujaService.findForRemtae(id); diff --git a/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java b/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java index 75182bc..42de19b 100644 --- a/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java +++ b/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java @@ -35,4 +35,16 @@ public interface PujaRepository extends JpaRepository { """, nativeQuery = true) List findMayorPujaPorLotePorRemateNative(Long remateId); + @Query(value = """ + SELECT p.* FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY lote_id ORDER BY monto DESC) as posicion + FROM pujas + WHERE lote_id IN (SELECT id FROM lotes WHERE remate_id = :remateId) + ) p + WHERE p.posicion <= :limite + ORDER BY p.lote_id, p.posicion + """, nativeQuery = true) + List findTopNPujasPorLotePorRemateNative(Long remateId, int limite); + } diff --git a/src/main/java/com/example/fercoganbackend/service/PujaService.java b/src/main/java/com/example/fercoganbackend/service/PujaService.java index be23227..640fe9c 100644 --- a/src/main/java/com/example/fercoganbackend/service/PujaService.java +++ b/src/main/java/com/example/fercoganbackend/service/PujaService.java @@ -54,6 +54,10 @@ public class PujaService { public List fingForReporte(Long id){ return pujaRepository.findMayorPujaPorLotePorRemateNative(id); } + + public List findForNPujasReporte(Long id, int limite){ + return pujaRepository.findTopNPujasPorLotePorRemateNative(id,limite); + } public Optional findById(Long id) { return pujaRepository.findById(id); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 03fcd84..1b1d6d5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ spring.application.name=fercoganbackend -spring.profiles.active=prod +spring.profiles.active=dev spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=update