diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java index ce004d30..abbdaac0 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Repository; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; /** @@ -34,6 +35,19 @@ import java.util.List; public class ComRiseSetQueryRepository { private final JPAQueryFactory query; + public List findUnDuplicatoinLocationByLocDate(String locDate){ + QComRiseSetBas bas = QComRiseSetBas.comRiseSetBas; + + List result = query + .selectDistinct(bas.id.location) + .from(bas) + .where(bas.id.location.eq(locDate)) + .fetch(); + + return result; + } + + public List findAllBySearch(ComnSunrisesetRq rq) { QComRiseSetBas bas = QComRiseSetBas.comRiseSetBas; diff --git a/pav-server/src/main/java/com/palnet/biz/scheduler/external/service/SunRiseSchedulerService.java b/pav-server/src/main/java/com/palnet/biz/scheduler/external/service/SunRiseSchedulerService.java index 2875f163..f27a563c 100644 --- a/pav-server/src/main/java/com/palnet/biz/scheduler/external/service/SunRiseSchedulerService.java +++ b/pav-server/src/main/java/com/palnet/biz/scheduler/external/service/SunRiseSchedulerService.java @@ -6,6 +6,7 @@ import com.palnet.biz.api.external.service.SunRiseSetMapper; import com.palnet.biz.jpa.entity.ComRiseSetBas; import com.palnet.biz.jpa.entity.ComRiseSetBasPK; import com.palnet.biz.jpa.repository.com.ComRiseSetBasRepository; +import com.palnet.biz.jpa.repository.com.ComRiseSetQueryRepository; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; import lombok.RequiredArgsConstructor; @@ -32,6 +33,8 @@ import java.util.List; @RequiredArgsConstructor public class SunRiseSchedulerService { + private final ComRiseSetQueryRepository comRiseSetQueryRepository; + private final ComRiseSetBasRepository comRiseSetBasRepository; @Value("${external.sunriseset.url}") @@ -70,7 +73,6 @@ public class SunRiseSchedulerService { }; public void sunsetSchedule(){ - List todayLocation = this.todayLocation(); LocalDate today = LocalDate.now(); List timeColumn = List.of("sunrise", "suntransit", "sunset", "moonrise", "moontransit", "moonset", "civilm", "civile", "nautm", "naute", "astm", "aste"); @@ -82,10 +84,13 @@ public class SunRiseSchedulerService { today = today.plusDays(1); String locdate = today.format(DateTimeFormatter.ofPattern("yyyyMMdd")); - for(int j = 0; j < todayLocation.size(); j ++){ - String location = todayLocation.get(j); + List rotateLocation = getUnDuplicationLocation(todayLocation,locdate); + + for(int j = 0; j < rotateLocation.size(); j ++){ + String location = rotateLocation.get(j); List results = callSunRiseSet(locdate, location); + // trim 제거 및 6자리로 맞추기 results.forEach(result -> { Class aClass = result.getClass(); @@ -129,6 +134,16 @@ public class SunRiseSchedulerService { } } + private List getUnDuplicationLocation(List todayLocation, String location){ + + List dateLocation = comRiseSetQueryRepository.findUnDuplicatoinLocationByLocDate(location); + + HashSet set = new HashSet<>(todayLocation); + set.removeAll(dateLocation); + + return new ArrayList<>(set); + } + private List callSunRiseSet(String locdate, String location) { String uriStr = UriComponentsBuilder.fromUriString(AREA_RISE_SEET_INFO_URL)