From d6aab42892b3e027d6174ce83ed454631b326fb7 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Thu, 25 Sep 2025 00:08:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=97=A5=E7=BA=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A2=9E=E5=8A=A0=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/task/UpdateDailyTask.java | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyTask.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyTask.java index 35965b6..e0e0b32 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyTask.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/UpdateDailyTask.java @@ -56,39 +56,42 @@ public class UpdateDailyTask extends TaskRunner { var existsTradeDates = dailyRepository.findDistinctTradeDate(); var nowDate = LocalDate.now(); var stocksMap = stockRepository.findAll().stream().collect(Collectors.toMap(Stock::getCode, stock -> stock)); - tradeDates.parallelStream() + var targetTradeDates = tradeDates.stream() .filter(date -> date.isBefore(nowDate) || date.isEqual(nowDate)) .filter(date -> !existsTradeDates.contains(date)) - .forEach(tradeDate -> { - var factorResponse = tuShareService.factorList(tradeDate); - var factorMap = new HashMap(); - for (List item : factorResponse.data().items()) { - factorMap.put(item.get(0), Double.valueOf(item.get(2))); - } + .toList(); + for (int index = 0, total = targetTradeDates.size(); index < total; index++) { + var tradeDate = targetTradeDates.get(index); + var factorResponse = tuShareService.factorList(tradeDate); + var factorMap = new HashMap(); + for (List item : factorResponse.data().items()) { + factorMap.put(item.get(0), Double.valueOf(item.get(2))); + } - var response = tuShareService.dailyList(tradeDate); - for (List item : response.data().items()) { - var code = item.get(0); - if (stocksMap.containsKey(code)) { - var stock = stocksMap.get(code); - var factor = factorMap.get(code); - var daily = new Daily(); - daily.setTradeDate(tradeDate); - daily.setOpen(NumberHelper.parseDouble(item.get(2))); - daily.setHigh(NumberUtil.parseDouble(item.get(3))); - daily.setLow(NumberUtil.parseDouble(item.get(4))); - daily.setClose(NumberUtil.parseDouble(item.get(5))); - daily.setPreviousClose(NumberUtil.parseDouble(item.get(6))); - daily.setPriceChangeAmount(NumberUtil.parseDouble(item.get(7))); - daily.setPriceFluctuationRange(NumberUtil.parseDouble(item.get(8))); - daily.setVolume(NumberUtil.parseDouble(item.get(9))); - daily.setTurnover(NumberUtil.parseDouble(item.get(10))); - daily.setFactor(factor); - daily.setStock(stock); - dailyRepository.save(daily); - } + var response = tuShareService.dailyList(tradeDate); + for (List item : response.data().items()) { + var code = item.get(0); + if (stocksMap.containsKey(code)) { + var stock = stocksMap.get(code); + var factor = factorMap.get(code); + var daily = new Daily(); + daily.setTradeDate(tradeDate); + daily.setOpen(NumberHelper.parseDouble(item.get(2))); + daily.setHigh(NumberUtil.parseDouble(item.get(3))); + daily.setLow(NumberUtil.parseDouble(item.get(4))); + daily.setClose(NumberUtil.parseDouble(item.get(5))); + daily.setPreviousClose(NumberUtil.parseDouble(item.get(6))); + daily.setPriceChangeAmount(NumberUtil.parseDouble(item.get(7))); + daily.setPriceFluctuationRange(NumberUtil.parseDouble(item.get(8))); + daily.setVolume(NumberUtil.parseDouble(item.get(9))); + daily.setTurnover(NumberUtil.parseDouble(item.get(10))); + daily.setFactor(factor); + daily.setStock(stock); + dailyRepository.save(daily); } - }); + } + updater.update(index * 1.0 / total); + } return null; }