|
|
|
|
@@ -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<String, Double>();
|
|
|
|
|
for (List<String> 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<String, Double>();
|
|
|
|
|
for (List<String> item : factorResponse.data().items()) {
|
|
|
|
|
factorMap.put(item.get(0), Double.valueOf(item.get(2)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var response = tuShareService.dailyList(tradeDate);
|
|
|
|
|
for (List<String> 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<String> 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;
|
|
|
|
|
}
|
|
|
|
|
|