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