StockPoolMapper.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.yingpai.gupiao.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.yingpai.gupiao.domain.po.StockPool;
  4. import org.apache.ibatis.annotations.Mapper;
  5. import org.apache.ibatis.annotations.Select;
  6. import java.time.LocalDate;
  7. import java.util.List;
  8. /**
  9. * 股票池Mapper
  10. */
  11. @Mapper
  12. public interface StockPoolMapper extends BaseMapper<StockPool> {
  13. /**
  14. * 查询指定池类型的最新加入日期
  15. * @param poolType 池类型
  16. * @return 最新日期
  17. */
  18. @Select("SELECT MAX(add_date) FROM stock_pool WHERE pool_type = #{poolType} AND status IN (1, 2)")
  19. LocalDate selectLatestAddDate(Integer poolType);
  20. /**
  21. * 分页查询历史数据
  22. * 超短池:status=1 或 (status=2 且 add_date < 今天)
  23. * 强势池:status IN (1, 2)
  24. * @param startDate 开始日期
  25. * @param endDate 结束日期
  26. * @param poolType 池类型
  27. * @param offset 偏移量
  28. * @param limit 限制数量
  29. * @return 历史数据列表
  30. */
  31. @Select("SELECT stock_code, stock_name, add_date as recordDate, add_price, close_price as closePrice, " +
  32. "next_day_high as nextDayHighPrice, next_day_gain as nextDayHighTrend, status " +
  33. "FROM stock_pool " +
  34. "WHERE add_date BETWEEN #{startDate} AND #{endDate} " +
  35. "AND pool_type = #{poolType} " +
  36. "AND ((#{poolType} = 1 AND (status = 1 OR (status = 2 AND add_date < CURDATE()))) OR (#{poolType} = 2 AND status IN (1, 2))) " +
  37. "ORDER BY add_date DESC, id DESC " +
  38. "LIMIT #{limit} OFFSET #{offset}")
  39. List<com.yingpai.gupiao.domain.vo.StockHistoryVO> selectPoolHistory(
  40. LocalDate startDate, LocalDate endDate, Integer poolType, int offset, int limit);
  41. /**
  42. * 统计历史数据总数
  43. * 超短池:status=1 或 (status=2 且 add_date < 今天)
  44. * 强势池:status IN (1, 2)
  45. * @param startDate 开始日期
  46. * @param endDate 结束日期
  47. * @param poolType 池类型
  48. * @return 总数
  49. */
  50. @Select("SELECT COUNT(*) FROM stock_pool " +
  51. "WHERE add_date BETWEEN #{startDate} AND #{endDate} " +
  52. "AND pool_type = #{poolType} " +
  53. "AND ((#{poolType} = 1 AND (status = 1 OR (status = 2 AND add_date < CURDATE()))) OR (#{poolType} = 2 AND status IN (1, 2)))")
  54. int countPoolHistory(LocalDate startDate, LocalDate endDate, Integer poolType);
  55. /**
  56. * 从历史信息表中查询收盘价
  57. * @param stockCode 股票代码
  58. * @param recordDate 记录日期
  59. * @return 收盘价
  60. */
  61. @Select("SELECT close_price FROM stock_pool_history " +
  62. "WHERE stock_code = #{stockCode} AND record_date = #{recordDate} " +
  63. "LIMIT 1")
  64. java.math.BigDecimal selectClosePriceFromHistory(String stockCode, LocalDate recordDate);
  65. }