局域网站建设模版网站优化北京seo
web/
2025/9/27 5:16:36/
文章来源:
局域网站建设模版,网站优化北京seo,wordpress页面突然不能访问,个人免费推广网站后端业务#xff1a;定时更新“A股日线行情”数据
需求说明 为了获取前一天的最新数据#xff0c;我们需要每天晚上10点定时刷新daily股票列表基础信息#xff0c;并将最新数据插入或更新到数据库中。 如果该内容是在当天交易日信息未更新前查询#xff08;15~16点之前定时更新“A股日线行情”数据
需求说明 为了获取前一天的最新数据我们需要每天晚上10点定时刷新daily股票列表基础信息并将最新数据插入或更新到数据库中。 如果该内容是在当天交易日信息未更新前查询15~16点之前会导致一条信息都查不到 返回 {msg:,code:0,data:{has_more:false,fields:[ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount],items:[]},request_id:10449486502d11ee949207ef2f187cbe} 这时候在测试时可以暂时拿昨天的交易信息来测试功能。 股票日线信息表tb_stock_daily_info 股票日线信息实体StockDailyInfo
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;Data
AllArgsConstructor
NoArgsConstructor
public class StockDailyInfo {private Integer id;private String thcode; //股票代码private String tradedate; //交易日期private Float stockopen; //开盘价private Float high; //最高价private Float low; //最低价private Float stockclose; //收盘价private Float preclose; //昨收价private Float stockchange; //涨跌额private Float pctchg; //涨跌幅private Float vol; //成交量private Float amount; //成交额
}
三层搭建 StockDailyInfoMapper
import org.springframework.stereotype.Repository;Repository
public interface StockDailyInfoMapper {
}
StockDailyInfoMapper.xml: ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.quanttradedata.stock.mapper.StockDailyInfoMapper/mapperService
Service
public class StockService {Autowiredprivate StockBasicInfoMapper stockBasicInfoMapper;Autowiredprivate TuShareAPI tuShareAPI;private SimpleDateFormat sdf1 new SimpleDateFormat(yyyy-MM-dd);Autowiredprivate StockDailyInfoMapper stockDailyInfoMapper;
//其他代码忽略
}
业务实现
StockDailyInfoJob import com.quanttradedata.stock.service.StockService;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;Component
public class StockDailyInfoJob extends QuartzJobBean {Autowiredprivate StockService stockService;Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println(更新当日A股日线行情数据....);stockService.saveStockDailyInfoFromNet();}
}
QuartzConfig 注意测试时将时间频率改为15秒一次
import com.quanttradedata.stock.job.StockBasicInfoJob;
import com.quanttradedata.stock.job.StockDailyInfoJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class QuartzConfig {//股票基本信息的 任务详情创建 及 触发器创建Beanpublic JobDetail getStockBasicInfoJob(){return JobBuilder.newJob(StockBasicInfoJob.class).storeDurably().build();}Beanpublic Trigger getStockBasicInfoJobTrigger(JobDetail getStockBasicInfoJob){//1、编写cron表达式指定触发的时间和周期//开发执行 每个工作日的晚上22点CronScheduleBuilder cron CronScheduleBuilder.cronSchedule(0 0 22 ? * MON-FRI);//测试执行 每15秒执行一次
// CronScheduleBuilder cron CronScheduleBuilder.cronSchedule(0/15 * * * * ? );//2、构建触发器执行任务return TriggerBuilder.newTrigger().forJob(getStockBasicInfoJob).withSchedule(cron).build();}//A股日线行情基本信息的 任务详情创建 及 触发器创建Beanpublic JobDetail getStockDailyInfoJob(){return JobBuilder.newJob(StockDailyInfoJob.class).storeDurably().build();}Beanpublic Trigger getStockDailyInfoJobTrigger(JobDetail getStockDailyInfoJob){//1、编写cron表达式指定触发的时间和周期//开发执行 每个工作日的晚上22点CronScheduleBuilder cron CronScheduleBuilder.cronSchedule(0 0 22 ? * MON-FRI);//测试执行 每15秒执行一次
// CronScheduleBuilder cron CronScheduleBuilder.cronSchedule(0/15 * * * * ? );//2、构建触发器执行任务return TriggerBuilder.newTrigger().forJob(getStockDailyInfoJob).withSchedule(cron).build();}
}
StockService 注意如果当天并非是工作日的15~16点之后用指定天数据来进行测试
private SimpleDateFormat sdf2 new SimpleDateFormat(yyyyMMdd);/*** 更新当日的A股日线行情数据*/public void saveStockDailyInfoFromNet() {//1、编辑传递给TuShare平台的参数MapString, String param new HashMap();param.put(trade_date,sdf2.format(new Date())); //当天日期//因为老师在写代码时时间没有超过工作日的16:00当天日线数据还不存在为了测试的方便取前面某天的数据来测试
// param.put(trade_date,20231018);//2、向TuShare平台发出请求获取json数据JSONObject jsonObject tuShareAPI.get(Const.STOCK_DAILY, param, null);//3、解析json数据解析为List集合//3.1、获取日线json数据JSONArray jsonArray jsonObject.getJSONObject(data).getJSONArray(items);//3.2、创建List集合遍历日线Json数据每遍历一行数据转为一个StockDailyInfo对象存入List集合ListStockDailyInfo stockDailyInfos new ArrayList();for (int i 0; i jsonArray.size(); i) {JSONArray array jsonArray.getJSONArray(i);stockDailyInfos.add(new StockDailyInfo(null,array.getString(0),array.getString(1),array.getFloat(2),array.getFloat(3),array.getFloat(4),array.getFloat(5),array.getFloat(6),array.getFloat(7),array.getFloat(8),array.getFloat(9),array.getFloat(10)));}/*for (StockDailyInfo sdi : stockDailyInfos) {System.out.println(sdi);}*///4、直接将List集合整体插入数据库if(stockDailyInfos.size()0){int rows 0;try {rows stockDailyInfoMapper.insertStockDailyInfos(stockDailyInfos);} catch (Exception e) {if(e.getCause() instanceof SQLIntegrityConstraintViolationException e.getMessage().contains(Duplicate entry)){//说明当天数据已经更新过了System.out.println(当天数据已更新无需重复更新);}}//5、展示结果System.out.println(成功向数据库插入了rows条日线数据);}else{System.out.println(当天无日线数据 或 当前时间还未更新日线数据);}}
StockDailyInfoMapper
import com.quanttradedata.stock.javabean.StockDailyInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.List;Repository
public interface StockDailyInfoMapper {/*** 向数据库插入多条日线信息* param stockDailyInfos* return*/int insertStockDailyInfos(Param(list) ListStockDailyInfo stockDailyInfos);
}
StockDailyInfoMapper.xml ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.quanttradedata.stock.mapper.StockDailyInfoMapperinsert idinsertStockDailyInfosinsert into tb_stock_daily_info (thcode,tradedate,stockopen,high,low,stockclose,preclose,stockchange,pctchg,vol,amount) valuesforeach collectionlist itemsdi separator,(#{sdi.thcode},#{sdi.tradedate},#{sdi.stockopen},#{sdi.high},#{sdi.low},#{sdi.stockclose},#{sdi.preclose},#{sdi.stockchange},#{sdi.pctchg},#{sdi.vol},#{sdi.amount})/foreach/insert
/mapper
后端业务定时更新“A股日线行情”数据业务完成 项目开发之量化交易抓取数据QuantTradeData(三)后端业务之分页查询股票列表基础信息—传送门
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82556.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!