Done ticket GEPAFINBE-141

This commit is contained in:
Piyush
2025-01-21 14:21:57 +05:30
parent 511e8fbc27
commit e1f1ffd69e
12 changed files with 223 additions and 6 deletions

View File

@@ -9,6 +9,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
@@ -80,4 +82,54 @@ public interface ApplicationAmendmentRequestRepository extends JpaRepository<App
"AND a.endDate BETWEEN :startTime AND :endTime")
List<ApplicationAmendmentRequestEntity> findExpiringBetween(LocalDateTime startTime, LocalDateTime endTime);
@Query("SELECT COUNT(a) FROM ApplicationAmendmentRequestEntity a WHERE a.applicationId IN :applicationIds AND a.isDeleted = false")
Long countAmendmentsByApplicationIds(@Param("applicationIds") List<Long> applicationIds);
@Query("SELECT COUNT(a) FROM ApplicationAmendmentRequestEntity a WHERE a.applicationId IN :applicationIds AND a.status = :status AND a.isDeleted = false")
Long countAmendmentsByApplicationIdsAndStatus(@Param("applicationIds") List<Long> applicationIds, @Param("status") String status);
@Query("""
SELECT e
FROM ApplicationAmendmentRequestEntity e
WHERE e.applicationId IN :applicationIds
AND e.status IN :statuses
AND e.isDeleted = false
""")
List<ApplicationAmendmentRequestEntity> findAllByApplicationIdsAndStatuses(
@Param("applicationIds") List<Long> applicationIds,
@Param("statuses") List<String> statuses
);
List<ApplicationAmendmentRequestEntity> findAllByApplicationIdInAndStatusAndIsDeletedFalse(List<Long> applicationIds, String status);
@Query("""
SELECT COALESCE(AVG(TIMESTAMPDIFF(DAY, a.startDate, a.closingDate)), 0)
FROM ApplicationAmendmentRequestEntity a
WHERE a.applicationId IN :applicationIds
AND a.status = :status
AND a.isDeleted = false
AND a.closingDate IS NOT NULL
""")
BigDecimal findAverageResponseDaysByApplicationIdsAndStatus(
@Param("applicationIds") List<Long> applicationIds,
@Param("status") String status
);
@Query(value = """
SELECT COUNT(*)
FROM application_amendment_request e
WHERE e.application_id IN :applicationIds
AND e.status IN :statuses
AND e.start_date + INTERVAL '1 DAY' * e.response_days <= :endDate
AND e.start_date + INTERVAL '1 DAY' * e.response_days >= :startDate
AND e.is_deleted = false
""", nativeQuery = true)
Long countExpiringRequestsIn48Hours(
@Param("applicationIds") List<Long> applicationIds,
@Param("statuses") List<String> statuses,
@Param("startDate") LocalDateTime startDate,
@Param("endDate") LocalDateTime endDate
);
}

View File

@@ -22,4 +22,7 @@ public interface AssignedApplicationsRepository extends JpaRepository<AssignedAp
@Query("SELECT COUNT(aa) FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false AND aa.userId = :userId AND aa.status <> 'CLOSE'")
Long countAssignedApplicationsByUserId(@Param("userId") Long userId);
@Query("SELECT aa.application.id FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false AND aa.userId = :userId")
List<Long> findApplicationIdsByUserIdAndIsDeletedFalse(@Param("userId") Long userId);
}