|
|
@@ -230,12 +230,22 @@ public class StockPoolHistoryServiceImpl implements IStockPoolHistoryService {
|
|
|
debugVo.getChangePercent(), debugVo.getClosePrice());
|
|
|
}
|
|
|
|
|
|
- // 如果是重复导入同一天的数据,先删除该日期的所有历史记录
|
|
|
- LambdaQueryWrapper<StockPoolHistory> deleteLqw = Wrappers.lambdaQuery();
|
|
|
- deleteLqw.eq(StockPoolHistory::getRecordDate, parsedRecordDate);
|
|
|
- int deletedCount = baseMapper.delete(deleteLqw);
|
|
|
- if (deletedCount > 0) {
|
|
|
- log.info("删除同一天的旧历史记录: {} 条", deletedCount);
|
|
|
+ // 收集本次导入的股票代码
|
|
|
+ List<String> stockCodes = dataList.stream()
|
|
|
+ .map(StockPoolHistoryVo::getStockCode)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .distinct()
|
|
|
+ .collect(java.util.stream.Collectors.toList());
|
|
|
+
|
|
|
+ // 如果不支持更新,先删除本次导入的股票在该日期的记录(覆盖模式)
|
|
|
+ if (!updateSupport && !stockCodes.isEmpty()) {
|
|
|
+ LambdaQueryWrapper<StockPoolHistory> deleteLqw = Wrappers.lambdaQuery();
|
|
|
+ deleteLqw.eq(StockPoolHistory::getRecordDate, parsedRecordDate)
|
|
|
+ .in(StockPoolHistory::getStockCode, stockCodes);
|
|
|
+ int deletedCount = baseMapper.delete(deleteLqw);
|
|
|
+ if (deletedCount > 0) {
|
|
|
+ log.info("覆盖模式:删除本次导入股票在同一天的旧历史记录: {} 条", deletedCount);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int successNum = 0;
|
|
|
@@ -245,11 +255,6 @@ public class StockPoolHistoryServiceImpl implements IStockPoolHistoryService {
|
|
|
StringBuilder failureMsg = new StringBuilder();
|
|
|
|
|
|
// 批量查询已存在的记录
|
|
|
- List<String> stockCodes = dataList.stream()
|
|
|
- .map(StockPoolHistoryVo::getStockCode)
|
|
|
- .filter(StringUtils::isNotBlank)
|
|
|
- .distinct()
|
|
|
- .collect(java.util.stream.Collectors.toList());
|
|
|
|
|
|
Map<String, StockPoolHistory> existingMap = new java.util.HashMap<>();
|
|
|
if (!stockCodes.isEmpty()) {
|
|
|
@@ -506,11 +511,10 @@ public class StockPoolHistoryServiceImpl implements IStockPoolHistoryService {
|
|
|
.map(h -> h.getStockCode() + "-" + h.getStockName())
|
|
|
.collect(java.util.stream.Collectors.joining(", ")));
|
|
|
|
|
|
- // 2. 查询当天已存在的强势池数据
|
|
|
+ // 2. 查询当天已存在的强势池数据(不限制状态,避免重复插入)
|
|
|
LambdaQueryWrapper<StockPool> todayLqw = Wrappers.lambdaQuery();
|
|
|
todayLqw.eq(StockPool::getPoolType, 2)
|
|
|
- .eq(StockPool::getAddDate, recordDate)
|
|
|
- .eq(StockPool::getStatus, 2);
|
|
|
+ .eq(StockPool::getAddDate, recordDate);
|
|
|
List<StockPool> todayPools = stockPoolMapper.selectList(todayLqw);
|
|
|
Map<String, StockPool> todayPoolMap = todayPools.stream()
|
|
|
.collect(java.util.stream.Collectors.toMap(StockPool::getStockCode, p -> p));
|