diff --git a/.gradle/8.14.3/executionHistory/executionHistory.bin b/.gradle/8.14.3/executionHistory/executionHistory.bin index 4299707..69de1e1 100644 Binary files a/.gradle/8.14.3/executionHistory/executionHistory.bin and b/.gradle/8.14.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.14.3/executionHistory/executionHistory.lock b/.gradle/8.14.3/executionHistory/executionHistory.lock index 3da9944..c9f4ba2 100644 Binary files a/.gradle/8.14.3/executionHistory/executionHistory.lock and b/.gradle/8.14.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.14.3/fileHashes/fileHashes.bin b/.gradle/8.14.3/fileHashes/fileHashes.bin index 55a7f70..72f1a7b 100644 Binary files a/.gradle/8.14.3/fileHashes/fileHashes.bin and b/.gradle/8.14.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.14.3/fileHashes/fileHashes.lock b/.gradle/8.14.3/fileHashes/fileHashes.lock index e635740..c86d45b 100644 Binary files a/.gradle/8.14.3/fileHashes/fileHashes.lock and b/.gradle/8.14.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.14.3/fileHashes/resourceHashesCache.bin b/.gradle/8.14.3/fileHashes/resourceHashesCache.bin index 36a7658..8412854 100644 Binary files a/.gradle/8.14.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.14.3/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 16f8713..6535d94 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 8b24939..925b6d2 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/com/stockport/server/application/controller/stock/StockUpdateController.java b/src/main/java/com/stockport/server/application/controller/stock/StockUpdateController.java index 7fd8995..cec955e 100644 --- a/src/main/java/com/stockport/server/application/controller/stock/StockUpdateController.java +++ b/src/main/java/com/stockport/server/application/controller/stock/StockUpdateController.java @@ -64,4 +64,14 @@ public ApiResponse updateErrorStockData(@RequestParam String stockCd) { stockService.forceUpdateStockData(stockCd); return ApiResponse.onSuccess("오류 주가 데이터 재업데이트 성공"); } + + @GetMapping("/update/all-stock-prices") + @Operation( + summary = "모든 주식 가격 데이터 업데이트", + description = "모든 주식의 가격 데이터를 업데이트합니다. (오래 걸릴 수 있음)" + ) + public ApiResponse updateAllStockPriceData() { + stockService.updateAllStockPriceData(); + return ApiResponse.onSuccess("모든 주식 가격 데이터 업데이트 성공"); + } } diff --git a/src/main/java/com/stockport/server/application/service/indexData/IndexDataServiceImpl.java b/src/main/java/com/stockport/server/application/service/indexData/IndexDataServiceImpl.java index 11959dc..1111e41 100644 --- a/src/main/java/com/stockport/server/application/service/indexData/IndexDataServiceImpl.java +++ b/src/main/java/com/stockport/server/application/service/indexData/IndexDataServiceImpl.java @@ -46,7 +46,7 @@ public void updateCurrentIndexData(MarketType marketType) { @Transactional public void updateHistoricalIndexData(MarketType marketType) { LocalDate endDate = LocalDate.now(); - LocalDate startDate = endDate.minusYears(10); + LocalDate startDate = LocalDate.of(1980, 1, 4); // KOSPI 시작일 기준 List indexPeriodPriceList = new ArrayList<>(); diff --git a/src/main/java/com/stockport/server/application/service/stock/StockService.java b/src/main/java/com/stockport/server/application/service/stock/StockService.java index dd98e32..cbf6af6 100644 --- a/src/main/java/com/stockport/server/application/service/stock/StockService.java +++ b/src/main/java/com/stockport/server/application/service/stock/StockService.java @@ -23,4 +23,6 @@ public interface StockService { void forceUpdateStockData(String stockCd); void saveDailyStockData(); + + void updateAllStockPriceData(); } diff --git a/src/main/java/com/stockport/server/application/service/stock/StockServiceImpl.java b/src/main/java/com/stockport/server/application/service/stock/StockServiceImpl.java index 9606b69..bd1f1a1 100644 --- a/src/main/java/com/stockport/server/application/service/stock/StockServiceImpl.java +++ b/src/main/java/com/stockport/server/application/service/stock/StockServiceImpl.java @@ -79,7 +79,7 @@ public List searchStocks(String query) { @Transactional public void updateCurrentStockData() { List stocks = stockRepository.findAll(); - for (int stockIdx = 0; stockIdx < stocks.size() / 30; stockIdx++) { + for (int stockIdx = 0; stockIdx <= stocks.size() / 30; stockIdx++) { List stockList = stocks.subList(stockIdx * 30, Math.min((stockIdx + 1) * 30, stocks.size())); List stockCdList = stockList.stream() .map(Stock::getStockCd) @@ -141,6 +141,11 @@ public void saveDailyStockData() { for (Stock stock : stockList) { if (savedId.contains(stock.getStockCd())) continue; + if (stock.getCurrentPriceInfo() == null) { + log.info("[stock] 일간 주가 데이터 저장 건너뜀: {} {} (현재가 정보 없음)", stock.getStockName(), stock.getStockCd()); + continue; + } + StockPrice stockPrice = stock.getCurrentPriceInfo().toStockPriceEntity(); stockPrice.updateStock(stock); @@ -148,4 +153,19 @@ public void saveDailyStockData() { } stockPriceRepository.saveAll(savePriceList); } + + @Override + public void updateAllStockPriceData() { + List stocks = stockRepository.findAll(); + + for (Stock stock : stocks) { + for (LocalDate updateDate = stock.getListedDate(); updateDate.isBefore(LocalDate.of(2015, 11, 2)); updateDate = updateDate.plusDays(140)) { + periodicSaver.saveOnePeriod(stock, updateDate, updateDate.plusDays(139)); + } + + log.info("[stock] 전체 주가 데이터 업데이트 완료: {} 진행률 {}%", + stock.getStockCd(), + (stocks.indexOf(stock) + 1) * 100 / stocks.size()); + } + } }