diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index 5b705fd9..ac6b6fd7 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -432,14 +432,14 @@ public AssignedApplicationWidgetResponseBean getApplicationDetailsForEvaluation( return preInstructorWidgetResponseBean; } private void setPreInstructorWidgets(List applicationIds, PreInstructorWidgetResponseBean responseBean,Long hubId) { - - Long totalAssignedApplications = assignedApplicationsRepository.countAssignedApplicationsByApplicationIds(applicationIds); + List assignedApplicationStatus = Arrays.asList(AssignedApplicationEnum.AWAITING.getValue(), AssignedApplicationEnum.OPEN.getValue()); + Long totalAssignedApplications = assignedApplicationsRepository.countAssignedApplicationsByApplicationIds(applicationIds,assignedApplicationStatus); if (totalAssignedApplications != null) { responseBean.getAssignedApplication().setTotalAssignedApplication(totalAssignedApplications); } LocalDateTime yesterday = LocalDateTime.now().minusDays(1); - Long newApplicationsAddedYesterday = assignedApplicationsRepository.countApplicationsAddedYesterdayForHub(applicationIds, hubId, yesterday); + Long newApplicationsAddedYesterday = assignedApplicationsRepository.countApplicationsAddedYesterdayForHub(applicationIds, hubId, yesterday,assignedApplicationStatus); if (newApplicationsAddedYesterday != null && totalAssignedApplications != null && totalAssignedApplications > 0) { BigDecimal percentageAdded = BigDecimal.valueOf(newApplicationsAddedYesterday) .divide(BigDecimal.valueOf(totalAssignedApplications), 4, RoundingMode.HALF_UP) @@ -449,17 +449,17 @@ public AssignedApplicationWidgetResponseBean getApplicationDetailsForEvaluation( List statuses = Arrays.asList(ApplicationStatusTypeEnum.APPROVED.getValue(), ApplicationStatusTypeEnum.REJECTED.getValue()); LocalDateTime sevenDaysAgo = LocalDateTime.now().minusDays(7); - Long evaluatedApplication = applicationRepository.countEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); + Long evaluatedApplication = assignedApplicationsRepository.countEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); if (evaluatedApplication != null) { responseBean.getEvaluatedApplication().setEvaluatedApplication(evaluatedApplication); - BigDecimal dailyAverage = applicationRepository.countDailyAverageEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); + BigDecimal dailyAverage = assignedApplicationsRepository.countDailyAverageEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); if (dailyAverage != null) { responseBean.getEvaluatedApplication().setDailyAverage(dailyAverage.setScale(2, RoundingMode.HALF_UP)); // Rounded to 2 decimal places } } - - Long rescueInstructorsInProgress = assignedApplicationsRepository.countApplicationsByIdsAndStatus(applicationIds, AssignedApplicationEnum.SOCCORSO.getValue()); + List amendmentStatus =Arrays.asList( ApplicationAmendmentRequestEnum.AWAITING.getValue(), ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue()); + Long rescueInstructorsInProgress = applicationAmendmentRequestRepository.countAmendmentsByApplicationIds(applicationIds,amendmentStatus); if (rescueInstructorsInProgress != null) { responseBean.getAmendmentInProgress().setTotalAmendmentInProgress(rescueInstructorsInProgress); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java index 7037ba7e..fc492019 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java @@ -148,4 +148,6 @@ public interface ApplicationAmendmentRequestRepository extends JpaRepository applicationIds, @Param("statuses") List statuses); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index 0f8bbf89..a536baaf 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -94,16 +94,5 @@ public interface ApplicationRepository extends JpaRepository findApplicationIdsByHubId(@Param("hubId") Long hubId); - @Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.id IN :applicationIds AND a.status IN :statuses AND a.isDeleted = false AND a.updatedDate >= :sevenDaysAgo") - Long countEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, - @Param("statuses") List statuses, - @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); - - @Query("SELECT (COUNT(a) / 7.0) FROM ApplicationEntity a WHERE a.id IN :applicationIds AND a.status IN :statuses AND a.isDeleted = false AND a.updatedDate >= :sevenDaysAgo") - BigDecimal countDailyAverageEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, - @Param("statuses") List statuses, - @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); - - } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java index 90791462..43a40f04 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -27,8 +28,8 @@ public interface AssignedApplicationsRepository extends JpaRepository findApplicationIdsByUserIdAndIsDeletedFalse(@Param("userId") Long userId); - @Query("SELECT COUNT(a) FROM AssignedApplicationsEntity a WHERE a.application.id IN :applicationIds AND a.isDeleted = false") - Long countAssignedApplicationsByApplicationIds(@Param("applicationIds") List applicationIds); + @Query("SELECT COUNT(a) FROM AssignedApplicationsEntity a WHERE a.application.id IN :applicationIds AND a.status IN :statuses AND a.isDeleted = false") + Long countAssignedApplicationsByApplicationIds(@Param("applicationIds") List applicationIds, @Param("statuses") List statuses); @Query(""" SELECT COUNT(aa) @@ -36,10 +37,12 @@ public interface AssignedApplicationsRepository extends JpaRepository= :yesterday + AND aa.isDeleted = false AND (:applicationIds IS NULL OR aa.application.id IN :applicationIds) """) - Long countApplicationsAddedYesterdayForHub(@Param("applicationIds") List applicationIds, @Param("hubId") Long hubId, @Param("yesterday") LocalDateTime yesterday); + Long countApplicationsAddedYesterdayForHub(@Param("applicationIds") List applicationIds, @Param("hubId") Long hubId, @Param("yesterday") LocalDateTime yesterday, @Param("statuses") List statuses); @Query("SELECT COUNT(a) FROM AssignedApplicationsEntity a WHERE a.application.id IN :applicationIds AND a.status = :status AND a.isDeleted = false") Long countApplicationsByIdsAndStatus(@Param("applicationIds") List applicationIds, @Param("status") String status); @@ -83,6 +86,28 @@ public interface AssignedApplicationsRepository extends JpaRepository findApplicationIdsByHubId(@Param("hubId") Long hubId); + @Query(" SELECT COUNT(aa) FROM AssignedApplicationsEntity aa " + + "JOIN aa.application a " + + "WHERE a.status IN :statuses " + + "AND a.isDeleted = false " + + "AND a.updatedDate >= :sevenDaysAgo " + + "AND aa.status = 'CLOSE'" + + "AND aa.isDeleted = false " + + " AND (:applicationIds IS NULL OR aa.application.id IN :applicationIds) ") + Long countEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, + @Param("statuses") List statuses, + @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); + @Query("SELECT (COUNT(a) / 7.0) FROM AssignedApplicationsEntity aa " + + "JOIN aa.application a " + + "WHERE a.status IN :statuses " + + "AND a.isDeleted = false " + + "AND a.updatedDate >= :sevenDaysAgo " + + "AND aa.status = 'CLOSE'" + + "AND aa.isDeleted = false " + + "AND (:applicationIds IS NULL OR aa.application.id IN :applicationIds)") + BigDecimal countDailyAverageEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, + @Param("statuses") List statuses, + @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); }