| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package com.yingpai.gupiao.mapper;
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.yingpai.gupiao.domain.po.StockPool;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Select;
- import java.time.LocalDate;
- import java.util.List;
- /**
- * 股票池Mapper
- */
- @Mapper
- public interface StockPoolMapper extends BaseMapper<StockPool> {
- /**
- * 查询指定池类型的最新加入日期
- * @param poolType 池类型
- * @return 最新日期
- */
- @Select("SELECT MAX(add_date) FROM stock_pool WHERE pool_type = #{poolType} AND status IN (1, 2)")
- LocalDate selectLatestAddDate(Integer poolType);
- /**
- * 分页查询历史数据
- * 超短池:status=1 或 (status=2 且 add_date < 今天)
- * 强势池:status IN (1, 2)
- * @param startDate 开始日期
- * @param endDate 结束日期
- * @param poolType 池类型
- * @param offset 偏移量
- * @param limit 限制数量
- * @return 历史数据列表
- */
- @Select("SELECT stock_code, stock_name, add_date as recordDate, add_price, close_price as closePrice, " +
- "next_day_high as nextDayHighPrice, next_day_gain as nextDayHighTrend, status " +
- "FROM stock_pool " +
- "WHERE add_date BETWEEN #{startDate} AND #{endDate} " +
- "AND pool_type = #{poolType} " +
- "AND ((#{poolType} = 1 AND (status = 1 OR (status = 2 AND add_date < CURDATE()))) OR (#{poolType} = 2 AND status IN (1, 2))) " +
- "ORDER BY add_date DESC, id DESC " +
- "LIMIT #{limit} OFFSET #{offset}")
- List<com.yingpai.gupiao.domain.vo.StockHistoryVO> selectPoolHistory(
- LocalDate startDate, LocalDate endDate, Integer poolType, int offset, int limit);
- /**
- * 统计历史数据总数
- * 超短池:status=1 或 (status=2 且 add_date < 今天)
- * 强势池:status IN (1, 2)
- * @param startDate 开始日期
- * @param endDate 结束日期
- * @param poolType 池类型
- * @return 总数
- */
- @Select("SELECT COUNT(*) FROM stock_pool " +
- "WHERE add_date BETWEEN #{startDate} AND #{endDate} " +
- "AND pool_type = #{poolType} " +
- "AND ((#{poolType} = 1 AND (status = 1 OR (status = 2 AND add_date < CURDATE()))) OR (#{poolType} = 2 AND status IN (1, 2)))")
- int countPoolHistory(LocalDate startDate, LocalDate endDate, Integer poolType);
- /**
- * 从历史信息表中查询收盘价
- * @param stockCode 股票代码
- * @param recordDate 记录日期
- * @return 收盘价
- */
- @Select("SELECT close_price FROM stock_pool_history " +
- "WHERE stock_code = #{stockCode} AND record_date = #{recordDate} " +
- "LIMIT 1")
- java.math.BigDecimal selectClosePriceFromHistory(String stockCode, LocalDate recordDate);
- }
|