Quellcode durchsuchen

强势池加入规则修正

Zhangbw vor 1 Monat
Ursprung
Commit
4dc5eb12c4

+ 18 - 14
ruoyi-modules/yp-stock/src/main/java/com/yingpai/stock/service/impl/StockPoolHistoryServiceImpl.java

@@ -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));