|
|
@@ -83,14 +83,16 @@ public class StockPoolServiceImpl implements IStockPoolService {
|
|
|
log.info("[添加股票到池] stockCode={}, poolType={}, addDate={}, status={}",
|
|
|
bo.getStockCode(), bo.getPoolType(), addDate, targetStatus);
|
|
|
|
|
|
- // 1. 先检查是否已存在当前有效的记录(status=2)
|
|
|
- LambdaQueryWrapper<StockPool> activeWrapper = Wrappers.lambdaQuery();
|
|
|
- activeWrapper.eq(StockPool::getStockCode, bo.getStockCode())
|
|
|
- .eq(StockPool::getPoolType, bo.getPoolType())
|
|
|
- .eq(StockPool::getStatus, 2);
|
|
|
- if (baseMapper.selectCount(activeWrapper) > 0) {
|
|
|
- log.warn("[添加股票到池] 股票已存在: {}", bo.getStockCode());
|
|
|
- throw new RuntimeException("该股票已在池中");
|
|
|
+ // 1. 如果要加入为当前有效(status=2),检查是否已存在其他当前有效的记录
|
|
|
+ if (targetStatus == 2) {
|
|
|
+ LambdaQueryWrapper<StockPool> activeWrapper = Wrappers.lambdaQuery();
|
|
|
+ activeWrapper.eq(StockPool::getStockCode, bo.getStockCode())
|
|
|
+ .eq(StockPool::getPoolType, bo.getPoolType())
|
|
|
+ .eq(StockPool::getStatus, 2);
|
|
|
+ if (baseMapper.selectCount(activeWrapper) > 0) {
|
|
|
+ log.warn("[添加股票到池] 股票已存在: {}", bo.getStockCode());
|
|
|
+ throw new RuntimeException("该股票已在池中");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 2. 检查指定日期是否已有记录(任何状态),如果有则修改状态
|
|
|
@@ -230,6 +232,20 @@ public class StockPoolServiceImpl implements IStockPoolService {
|
|
|
if (pool == null) {
|
|
|
throw new RuntimeException("记录不存在");
|
|
|
}
|
|
|
+
|
|
|
+ // 如果要修改为当前有效(status=2),需要检查是否已有其他当前有效的记录
|
|
|
+ if (status == 2) {
|
|
|
+ LambdaQueryWrapper<StockPool> activeWrapper = Wrappers.lambdaQuery();
|
|
|
+ activeWrapper.eq(StockPool::getStockCode, pool.getStockCode())
|
|
|
+ .eq(StockPool::getPoolType, pool.getPoolType())
|
|
|
+ .eq(StockPool::getStatus, 2)
|
|
|
+ .ne(StockPool::getId, id); // 排除当前记录
|
|
|
+
|
|
|
+ if (baseMapper.selectCount(activeWrapper) > 0) {
|
|
|
+ throw new RuntimeException("该股票已在池中,不能同时存在多条当前有效记录");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
pool.setStatus(status);
|
|
|
pool.setUpdateTime(LocalDateTime.now());
|
|
|
return baseMapper.updateById(pool) > 0;
|