try to fix bug

develop
bvn13 2020-04-21 02:34:14 +03:00
parent 5264c5c870
commit 5504a0b063
2 changed files with 14 additions and 10 deletions

View File

@ -32,13 +32,19 @@ import java.util.Optional;
@Repository @Repository
public interface CovidUpdatesRepository extends JpaRepository<CovidUpdate, Long> { public interface CovidUpdatesRepository extends JpaRepository<CovidUpdate, Long> {
@Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn)) from CovidUpdate U") @Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn))" +
" from CovidUpdate U")
Optional<CovidUpdateInfoDto> findLastUpdate(); Optional<CovidUpdateInfoDto> findLastUpdate();
@Query("select U from CovidUpdate U where U.datetime >= :date1 and U.datetime < :date2") @Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn))" +
Optional<CovidUpdate> findByDateOfUpdate(@Param("date1") ZonedDateTime date1, @Param("date2") ZonedDateTime date2); " from CovidUpdate U" +
" where U.datetime >= :date1" +
" and U.datetime < :date2")
Optional<CovidUpdateInfoDto> findByDateOfUpdate(@Param("date1") ZonedDateTime date1, @Param("date2") ZonedDateTime date2);
@Query("select U from CovidUpdate U where U.id in (select max(U1.id) from CovidUpdate U1 group by U1.datetime)") @Query("select U" +
" from CovidUpdate U" +
" where U.id in (select max(U1.id) from CovidUpdate U1 group by U1.datetime)")
Collection<CovidUpdate> findAllLastUpdatesPerDay(); Collection<CovidUpdate> findAllLastUpdatesPerDay();
Optional<CovidUpdate> findFirstByCreatedOn(LocalDateTime createdOn); Optional<CovidUpdate> findFirstByCreatedOn(LocalDateTime createdOn);

View File

@ -19,6 +19,7 @@ package com.bvn13.covid19.site.service;
import com.bvn13.covid19.model.entities.CovidStat; import com.bvn13.covid19.model.entities.CovidStat;
import com.bvn13.covid19.model.entities.CovidUpdate; import com.bvn13.covid19.model.entities.CovidUpdate;
import com.bvn13.covid19.model.entities.Region; import com.bvn13.covid19.model.entities.Region;
import com.bvn13.covid19.site.dtos.CovidUpdateInfoDto;
import com.bvn13.covid19.site.repositories.CovidStatsRepository; import com.bvn13.covid19.site.repositories.CovidStatsRepository;
import com.bvn13.covid19.site.repositories.CovidUpdatesRepository; import com.bvn13.covid19.site.repositories.CovidUpdatesRepository;
import com.bvn13.covid19.site.repositories.RegionsRepository; import com.bvn13.covid19.site.repositories.RegionsRepository;
@ -92,15 +93,12 @@ public class StatisticsPreparator {
if (date.isBefore(projectStartZonedDate)) { if (date.isBefore(projectStartZonedDate)) {
return Optional.empty(); return Optional.empty();
} else { } else {
Optional<CovidUpdate> update = updatesRepository.findByDateOfUpdate( Optional<CovidUpdateInfoDto> update = updatesRepository.findByDateOfUpdate(
dateWithTime(prevDate(date), 0, 0, 0), dateWithTime(prevDate(date), 0, 0, 0),
dateWithTime(date, 0, 0, 0) dateWithTime(date, 0, 0, 0)
); );
if (update.isPresent()) { return update.map(upd -> updatesRepository.findFirstByCreatedOn(update.get().getCreatedOn()))
return update; .orElse(findPrevUpdateByDate(prevDate(date)));
} else {
return findPrevUpdateByDate(prevDate(date));
}
} }
} }