Просмотр исходного кода

当天股票增删场景修正

Zhangbw 1 месяц назад
Родитель
Сommit
e734d55e84

+ 22 - 7
src/main/java/com/yingpai/gupiao/service/impl/StockPoolServiceImpl.java

@@ -218,32 +218,47 @@ public class StockPoolServiceImpl implements StockPoolService {
             throw new RuntimeException("股票代码不存在");
         }
         
-        // 检查是否已存在
+        // 检查是否已存在(当前有效)
         LambdaQueryWrapper<StockPool> existWrapper = new LambdaQueryWrapper<>();
         existWrapper.eq(StockPool::getStockCode, stockCode)
                    .eq(StockPool::getPoolType, poolType)
-                   .eq(StockPool::getStatus, 2);  // 检查是否在当前池中
+                   .eq(StockPool::getStatus, 2);
         if (stockPoolMapper.selectCount(existWrapper) > 0) {
             log.warn("[添加股票到池] 股票已存在: {}", stockCode);
             throw new RuntimeException("该股票已在池中");
         }
-        
+
+        LocalDate today = LocalDate.now();
+
+        // 当天有被撤出的记录(status=1),直接恢复状态,避免产生重复记录
+        LambdaQueryWrapper<StockPool> todayWrapper = new LambdaQueryWrapper<>();
+        todayWrapper.eq(StockPool::getStockCode, stockCode)
+                    .eq(StockPool::getPoolType, poolType)
+                    .eq(StockPool::getStatus, 1)
+                    .eq(StockPool::getAddDate, today);
+        StockPool existing = stockPoolMapper.selectOne(todayWrapper);
+        if (existing != null) {
+            existing.setStatus(2);
+            existing.setAdminId(adminId);
+            existing.setUpdateTime(LocalDateTime.now());
+            return stockPoolMapper.updateById(existing) > 0;
+        }
+
         // 获取实时价格
         BigDecimal currentPrice = fetchCurrentPrice(stockCode);
 
         // 从历史信息中查询当天的收盘价
-        LocalDate today = LocalDate.now();
         BigDecimal closePrice = fetchClosePriceFromHistory(stockCode, today);
 
-        // 添加到池
+        // 插入新记录
         StockPool pool = new StockPool();
         pool.setStockCode(stockCode);
         pool.setStockName(stockInfo.getStockName());
         pool.setPoolType(poolType);
         pool.setAddPrice(currentPrice);
-        pool.setClosePrice(closePrice);  // 设置收盘价
+        pool.setClosePrice(closePrice);
         pool.setAddDate(today);
-        pool.setStatus(2);  // 新增时设置为当前有效
+        pool.setStatus(2);
         pool.setAdminId(adminId);
         pool.setCreateTime(LocalDateTime.now());
         pool.setUpdateTime(LocalDateTime.now());