浏览代码

打饭查询页面历史查询功能修正

Zhangbw 1 月之前
父节点
当前提交
55b0fb730b

+ 0 - 15
src/main/java/com/yingpai/gupiao/domain/vo/StockHistoryVO.java

@@ -12,11 +12,6 @@ import java.time.LocalDate;
 @Data
 public class StockHistoryVO {
     
-    /**
-     * 主键ID
-     */
-    private Long id;
-    
     /**
      * 记录日期
      */
@@ -62,11 +57,6 @@ public class StockHistoryVO {
      */
     private String mainRisePeriod;
     
-    /**
-     * 近期涨手
-     */
-    private String recentRiseHand;
-    
     /**
      * 近期涨停
      */
@@ -82,11 +72,6 @@ public class StockHistoryVO {
      */
     private BigDecimal dayLowestPrice;
     
-    /**
-     * 当天均价
-     */
-    private BigDecimal dayAvgPrice;
-    
     /**
      * 当天收盘价
      */

+ 1 - 51
src/main/java/com/yingpai/gupiao/mapper/StockPoolHistoryMapper.java

@@ -5,70 +5,20 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDate;
-import java.util.List;
-import java.util.Map;
 
 /**
  * 股票池历史数据Mapper(小程序端)
  */
 @Mapper
 public interface StockPoolHistoryMapper {
-    
-    /**
-     * 查询指定日期区间的历史数据(带隔日信息),根据池类型筛选
-     * @param startDate 开始日期
-     * @param endDate 结束日期
-     * @param poolType 池类型:1-超短池,2-强势池
-     * @param offset 偏移量
-     * @param limit 每页数量
-     * @return 历史数据列表
-     */
-    List<StockHistoryVO> selectHistoryWithNextDay(
-        @Param("startDate") LocalDate startDate,
-        @Param("endDate") LocalDate endDate,
-        @Param("poolType") Integer poolType,
-        @Param("offset") int offset,
-        @Param("limit") int limit
-    );
-    
-    /**
-     * 统计指定日期区间的记录总数,根据池类型筛选
-     * @param startDate 开始日期
-     * @param endDate 结束日期
-     * @param poolType 池类型:1-超短池,2-强势池
-     * @return 记录总数
-     */
-    int countHistory(
-        @Param("startDate") LocalDate startDate,
-        @Param("endDate") LocalDate endDate,
-        @Param("poolType") Integer poolType
-    );
-    
-    /**
-     * 查询统计数据(成功率、平均收益、总交易次数)
-     * @param startDate 开始日期
-     * @param endDate 结束日期
-     * @param poolType 池类型:1-超短池,2-强势池
-     * @return 统计数据Map
-     */
-    Map<String, Object> selectHistoryStats(
-        @Param("startDate") LocalDate startDate,
-        @Param("endDate") LocalDate endDate,
-        @Param("poolType") Integer poolType
-    );
-    
+
     /**
      * 根据股票代码或名称模糊查询最新的历史记录
-     * @param keyword 搜索关键词(股票代码或名称)
-     * @return 最新的历史记录
      */
     StockHistoryVO selectLatestByKeyword(@Param("keyword") String keyword);
 
     /**
      * 根据股票代码或名称和日期查询历史记录
-     * @param keyword 搜索关键词(股票代码或名称)
-     * @param recordDate 记录日期
-     * @return 指定日期的历史记录
      */
     StockHistoryVO selectByKeywordAndDate(@Param("keyword") String keyword, @Param("recordDate") LocalDate recordDate);
 }

+ 42 - 4
src/main/java/com/yingpai/gupiao/service/impl/StockHistoryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yingpai.gupiao.service.impl;
 
 import com.yingpai.gupiao.domain.vo.StockHistoryVO;
+import com.yingpai.gupiao.mapper.StockPoolHistoryMapper;
 import com.yingpai.gupiao.mapper.StockPoolMapper;
 import com.yingpai.gupiao.service.StockHistoryService;
 import lombok.RequiredArgsConstructor;
@@ -22,6 +23,7 @@ import java.util.Map;
 public class StockHistoryServiceImpl implements StockHistoryService {
 
     private final StockPoolMapper stockPoolMapper;
+    private final StockPoolHistoryMapper stockPoolHistoryMapper;
     
     @Override
     public Map<String, Object> queryHistoryPage(LocalDate startDate, LocalDate endDate, Integer poolType, int pageNum, int pageSize) {
@@ -117,16 +119,52 @@ public class StockHistoryServiceImpl implements StockHistoryService {
     @Override
     public Map<String, Object> queryLatestHistoryByKeyword(String keyword) {
         Map<String, Object> result = new HashMap<>();
-        result.put("found", false);
-        result.put("message", "该功能暂不支持");
+        StockHistoryVO vo = stockPoolHistoryMapper.selectLatestByKeyword(keyword);
+        if (vo != null) {
+            result.put("found", true);
+            result.put("recordDate", vo.getRecordDate());
+            result.put("stockCode", vo.getStockCode());
+            result.put("stockName", vo.getStockName());
+            result.put("strengthScore", vo.getStrengthScore());
+            result.put("closePrice", vo.getClosePrice());
+            result.put("changePercent", vo.getChangePercent());
+            result.put("totalAmount", vo.getTotalAmount());
+            result.put("circulationMarketValue", vo.getCirculationMarketValue());
+            result.put("mainRisePeriod", vo.getMainRisePeriod());
+            result.put("recentLimitUp", vo.getRecentLimitUp());
+            result.put("dayHighestPrice", vo.getDayHighestPrice());
+            result.put("dayLowestPrice", vo.getDayLowestPrice());
+            result.put("dayClosePrice", vo.getDayClosePrice());
+            result.put("highTrend", vo.getHighTrend());
+        } else {
+            result.put("found", false);
+        }
         return result;
     }
 
     @Override
     public Map<String, Object> queryHistoryByKeywordAndDate(String keyword, LocalDate recordDate) {
         Map<String, Object> result = new HashMap<>();
-        result.put("found", false);
-        result.put("message", "该功能暂不支持");
+        StockHistoryVO vo = stockPoolHistoryMapper.selectByKeywordAndDate(keyword, recordDate);
+        if (vo != null) {
+            result.put("found", true);
+            result.put("recordDate", vo.getRecordDate());
+            result.put("stockCode", vo.getStockCode());
+            result.put("stockName", vo.getStockName());
+            result.put("strengthScore", vo.getStrengthScore());
+            result.put("closePrice", vo.getClosePrice());
+            result.put("changePercent", vo.getChangePercent());
+            result.put("totalAmount", vo.getTotalAmount());
+            result.put("circulationMarketValue", vo.getCirculationMarketValue());
+            result.put("mainRisePeriod", vo.getMainRisePeriod());
+            result.put("recentLimitUp", vo.getRecentLimitUp());
+            result.put("dayHighestPrice", vo.getDayHighestPrice());
+            result.put("dayLowestPrice", vo.getDayLowestPrice());
+            result.put("dayClosePrice", vo.getDayClosePrice());
+            result.put("highTrend", vo.getHighTrend());
+        } else {
+            result.put("found", false);
+        }
         return result;
     }
 }

+ 0 - 103
src/main/resources/mapper/StockPoolHistoryMapper.xml

@@ -2,107 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yingpai.gupiao.mapper.StockPoolHistoryMapper">
 
-    <!-- 查询历史数据(带隔日信息),每只股票只取隔日涨幅最大的一条 -->
-    <select id="selectHistoryWithNextDay" resultType="com.yingpai.gupiao.domain.vo.StockHistoryVO">
-        SELECT 
-            t.id,
-            t.recordDate,
-            t.stockCode,
-            t.stockName,
-            t.closePrice,
-            t.nextDayHighPrice,
-            t.nextDayHighTrend,
-            CASE 
-                WHEN t.nextDayHighTrend IS NOT NULL AND t.nextDayHighTrend >= 2 THEN 'success'
-                WHEN t.nextDayHighTrend IS NOT NULL AND t.nextDayHighTrend &lt;= -3 THEN 'fail'
-                ELSE NULL
-            END AS status
-        FROM (
-            SELECT 
-                h.id,
-                h.record_date AS recordDate,
-                h.stock_code AS stockCode,
-                h.stock_name AS stockName,
-                h.close_price AS closePrice,
-                next_day.day_highest_price AS nextDayHighPrice,
-                next_day.high_trend AS nextDayHighTrend,
-                ROW_NUMBER() OVER (PARTITION BY h.stock_code ORDER BY COALESCE(next_day.high_trend, -9999) DESC) AS rn
-            FROM stock_pool_history h
-            INNER JOIN stock_pool sp ON h.stock_code = sp.stock_code 
-                AND sp.pool_type = #{poolType} 
-                AND sp.status = 1
-            LEFT JOIN (
-                SELECT 
-                    stock_code,
-                    record_date,
-                    day_highest_price,
-                    high_trend
-                FROM stock_pool_history
-            ) next_day ON h.stock_code = next_day.stock_code 
-                AND next_day.record_date = (
-                    SELECT MIN(record_date) 
-                    FROM stock_pool_history 
-                    WHERE stock_code = h.stock_code 
-                    AND record_date > h.record_date
-                )
-            WHERE h.record_date >= #{startDate}
-              AND h.record_date &lt;= #{endDate}
-        ) t
-        WHERE t.rn = 1
-        ORDER BY CASE WHEN t.nextDayHighTrend IS NULL THEN 1 ELSE 0 END, t.nextDayHighTrend DESC
-        LIMIT #{limit} OFFSET #{offset}
-    </select>
-
-    <!-- 统计记录总数(每只股票只算一条) -->
-    <select id="countHistory" resultType="int">
-        SELECT COUNT(DISTINCT h.stock_code)
-        FROM stock_pool_history h
-        INNER JOIN stock_pool sp ON h.stock_code = sp.stock_code 
-            AND sp.pool_type = #{poolType} 
-            AND sp.status = 1
-        WHERE h.record_date >= #{startDate}
-          AND h.record_date &lt;= #{endDate}
-    </select>
-
-    <!-- 查询统计数据(成功率、平均收益、总交易次数) -->
-    <select id="selectHistoryStats" resultType="map">
-        SELECT 
-            COUNT(*) AS totalCount,
-            SUM(CASE WHEN nextDayHighTrend >= 2 THEN 1 ELSE 0 END) AS successCount,
-            SUM(CASE WHEN nextDayHighTrend &lt;= -3 THEN 1 ELSE 0 END) AS failCount,
-            AVG(nextDayHighTrend) AS avgTrend
-        FROM (
-            SELECT 
-                h.stock_code,
-                next_day.high_trend AS nextDayHighTrend,
-                ROW_NUMBER() OVER (PARTITION BY h.stock_code ORDER BY COALESCE(next_day.high_trend, -9999) DESC) AS rn
-            FROM stock_pool_history h
-            INNER JOIN stock_pool sp ON h.stock_code = sp.stock_code 
-                AND sp.pool_type = #{poolType} 
-                AND sp.status = 1
-            LEFT JOIN (
-                SELECT 
-                    stock_code,
-                    record_date,
-                    high_trend
-                FROM stock_pool_history
-            ) next_day ON h.stock_code = next_day.stock_code 
-                AND next_day.record_date = (
-                    SELECT MIN(record_date) 
-                    FROM stock_pool_history 
-                    WHERE stock_code = h.stock_code 
-                    AND record_date > h.record_date
-                )
-            WHERE h.record_date >= #{startDate}
-              AND h.record_date &lt;= #{endDate}
-        ) t
-        WHERE t.rn = 1
-    </select>
-
     <!-- 根据股票代码或名称模糊查询最新的历史记录 -->
     <select id="selectLatestByKeyword" resultType="com.yingpai.gupiao.domain.vo.StockHistoryVO">
         SELECT
-            h.id,
             h.record_date AS recordDate,
             h.stock_code AS stockCode,
             h.stock_name AS stockName,
@@ -112,11 +14,9 @@
             h.strength_score AS strengthScore,
             h.circulation_market_value AS circulationMarketValue,
             h.main_rise_period AS mainRisePeriod,
-            h.recent_rise_hand AS recentRiseHand,
             h.recent_limit_up AS recentLimitUp,
             h.day_highest_price AS dayHighestPrice,
             h.day_lowest_price AS dayLowestPrice,
-            h.day_avg_price AS dayAvgPrice,
             h.day_close_price AS dayClosePrice,
             h.high_trend AS highTrend
         FROM stock_pool_history h
@@ -129,7 +29,6 @@
     <!-- 根据股票代码或名称和日期查询历史记录 -->
     <select id="selectByKeywordAndDate" resultType="com.yingpai.gupiao.domain.vo.StockHistoryVO">
         SELECT
-            h.id,
             h.record_date AS recordDate,
             h.stock_code AS stockCode,
             h.stock_name AS stockName,
@@ -139,11 +38,9 @@
             h.strength_score AS strengthScore,
             h.circulation_market_value AS circulationMarketValue,
             h.main_rise_period AS mainRisePeriod,
-            h.recent_rise_hand AS recentRiseHand,
             h.recent_limit_up AS recentLimitUp,
             h.day_highest_price AS dayHighestPrice,
             h.day_lowest_price AS dayLowestPrice,
-            h.day_avg_price AS dayAvgPrice,
             h.day_close_price AS dayClosePrice,
             h.high_trend AS highTrend
         FROM stock_pool_history h