|
|
@@ -81,9 +81,9 @@ public class StockPoolAsyncServiceImpl implements IStockPoolAsyncService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 回溯更新过去10天内所有记录的high_trend
|
|
|
- * 当导入新的历史数据后,需要更新过去10天内所有记录的high_trend,
|
|
|
- * 因为这些记录的"未来10天最高价"可能会因为新数据的加入而改变
|
|
|
+ * 回溯更新过去10个交易日内所有记录的high_trend
|
|
|
+ * 当导入新的历史数据后,需要更新过去10个交易日内所有记录的high_trend,
|
|
|
+ * 因为这些记录的"未来10个交易日最高价"可能会因为新数据的加入而改变
|
|
|
*
|
|
|
* @param importDate 当前导入的日期
|
|
|
* @return 更新结果信息
|
|
|
@@ -91,16 +91,30 @@ public class StockPoolAsyncServiceImpl implements IStockPoolAsyncService {
|
|
|
private String updatePastTenDaysHighTrend(LocalDate importDate) {
|
|
|
log.info("[回溯更新high_trend] 开始更新,导入日期: {}", importDate);
|
|
|
|
|
|
- // 查询过去10天内的所有历史记录(包括今天)
|
|
|
- LocalDate tenDaysAgo = importDate.minusDays(10);
|
|
|
+ // 查询向前10个交易日的日期列表
|
|
|
+ List<LocalDate> pastTradingDays = stockPoolHistoryMapper.selectPastTradingDays(importDate, 10);
|
|
|
+
|
|
|
+ if (pastTradingDays.isEmpty()) {
|
|
|
+ String message = "没有需要回溯更新的历史记录(向前10个交易日)";
|
|
|
+ log.info("[回溯更新high_trend] {}", message);
|
|
|
+ return message;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取最早的交易日作为查询起始日期
|
|
|
+ LocalDate earliestDate = pastTradingDays.get(pastTradingDays.size() - 1);
|
|
|
+
|
|
|
+ log.info("[回溯更新high_trend] 回溯范围:{} 到 {},共 {} 个交易日",
|
|
|
+ earliestDate, importDate, pastTradingDays.size());
|
|
|
+
|
|
|
+ // 查询这些交易日内的所有历史记录
|
|
|
LambdaQueryWrapper<StockPoolHistory> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.ge(StockPoolHistory::getRecordDate, tenDaysAgo)
|
|
|
+ lqw.ge(StockPoolHistory::getRecordDate, earliestDate)
|
|
|
.le(StockPoolHistory::getRecordDate, importDate);
|
|
|
|
|
|
List<StockPoolHistory> recordsToUpdate = stockPoolHistoryMapper.selectList(lqw);
|
|
|
|
|
|
if (recordsToUpdate.isEmpty()) {
|
|
|
- String message = "没有需要回溯更新的历史记录(过去10天内)";
|
|
|
+ String message = "没有需要回溯更新的历史记录(向前10个交易日)";
|
|
|
log.info("[回溯更新high_trend] {}", message);
|
|
|
return message;
|
|
|
}
|
|
|
@@ -123,7 +137,7 @@ public class StockPoolAsyncServiceImpl implements IStockPoolAsyncService {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 查询从记录日期到当前导入日期的最高价(向后查询,最多10天)
|
|
|
+ // 查询从记录日期向后10个交易日的最高价
|
|
|
BigDecimal maxHighPrice = stockPoolHistoryMapper.selectForwardTenDaysHighestPrice(
|
|
|
stockCode, recordDate, importDate);
|
|
|
|