今日指数项目股票成交量对比功能

股票成交量对比功能

1. 股票成交量对比功能分析

1.1 模型示列

功能描述:统计A股大盘T日和T-1日成交量对比功能(成交量为沪深两市成交量之和)](https://i-blog.csdnimg.cn/direct/80636d7361f94f8294a8cf45dd14f46f.png)

1.2 接口示列

返回数据格式
服务路径:/api/quot/stock/tradeAmt
服务方法:GET
前端请求频率:每分钟
请求参数:无

{
    "code": 1,
    "data": {
        "amtList": [{"count": 3926392,"time": "202112310930"},{"count": 3926392,"time": "202112310931"},...],//T日每分钟成交量信息
        "yesAmtList":[{"count": 3926392,"time": "202112310930"},...]//T-1日每分钟成交量信息 
	}
}

1.3调用表结构

stock_market_index_info
在这里插入图片描述

2. 股票sql代码分析

  • 确认所要查询的表(stock_market_index_info)
  • 确认查询字段 --> 时间(格式化为字符串) , 交易量(需要对沪深两股的交易额进行合并计算)
  • 确认查询条件 --> 从开盘到当前时间段沪深两股的交易信息
select
	date_format(smi.cur_time,'%Y%m%d%H%i') as time,
	sum(smi.trade_amount) as count
from
	stock_market_index_info as smi
where
	smi.cur_time between '2021-12-28 09:30:00' and '2021-12-28 14:40:00'
and
	smi.market_code in ('sh000001','sz399001')
group by time
order by time asc;

3. 代码实现

表现层

/**
     * 股票成交量统计
     */
    @ApiOperation(value = "股票成交量统计", notes = "股票成交量统计", httpMethod = "GET")
    @GetMapping("/stock/tradeAmt")
    public R<Map> getTradeAmt(){
        return service.getTradeAmt();
    }
   

服务层

@Override
    public R<Map> getTradeAmt() {
        // 1. 获取当前时间
        DateTime curTime = DateTimeUtil.getLastDate4Stock(DateTime.now());
        curTime = DateTime.parse("2021-12-28 14:40:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
        Date nowDate = curTime.toDate();
        // 获取开盘时间
        Date openDate = DateTimeUtil.getOpenDate(curTime).toDate();
        // 获取前一天的当前时间
        DateTime previousTradingDay = DateTimeUtil.getPreviousTradingDay(curTime);
        Date preDate = previousTradingDay.toDate();
        // 获取前一天的开盘时间
        Date tOpenDate = DateTimeUtil.getOpenDate(previousTradingDay).toDate();


        // 2. 获取当前交易日的数据
        List<Map> stockData =  stockMarketIndexInfoMapper.getTradeAmt(nowDate,openDate,stockInfoConfig.getInner());

        // 3. 获取前一天交易日的数据
        List<Map> stockPreData =  stockMarketIndexInfoMapper.getTradeAmt(preDate,tOpenDate,stockInfoConfig.getInner());

        // 4. 封装数据
        HashMap<String, List<Map>> data = new HashMap<>();
        data.put("amtList",stockData);
        data.put("yesAmtList",stockPreData);

        return R.ok(data);


    }

Dao层

<select id="getTradeAmt" resultType="java.util.Map">
        select
            date_format(smi.cur_time,'%Y%m%d%H%i') as time,
	sum(smi.trade_amount) as count
        from
            stock_market_index_info as smi
        where
            smi.cur_time between #{openDate} and #{nowDate}
          and
            smi.market_code in 
        <foreach collection="inner" item="mark" open="(" separator="," close=")">
            #{mark}
        </foreach>
        group by time
        order by time asc
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攒了一袋星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值