123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.zx.dataservice.task;
- import com.jfinal.plugin.activerecord.Db;
- import com.jfinal.plugin.activerecord.Record;
- import com.zx.dataservice.controller.WebSocketController;
- import com.zx.dataservice.options.DataOptions;
- import com.zx.dataservice.options.RiskOptions;
- import com.zx.dataservice.service.ChoiceHisService;
- import com.zx.dataservice.utils.DateUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * 每天 17点和 6点 初始化 风控相关的配置
- */
- @Component
- public class AnalysisRiskDataTask {
- private static final Logger log = LoggerFactory.getLogger(AnalysisRiskDataTask.class);
- @Scheduled(cron = "0 0 6,17 * * ? ")
- public void toAnalysisRestAfterData() {
- List<Record> recordRisks = Db.use("gp").find("select id,riskkey from risk_config ");
- for (Record record:recordRisks) {
- String tableNamenow = "risk_control_formula_" + record.getStr("riskkey").toLowerCase() ;
- Record recordr = Db.use("hb").findFirst("select TABLE_NAME,TABLE_TYPE from information_schema.TABLES where TABLE_NAME = ? ", tableNamenow);
- if (recordr == null) { // 如果表不存在
- Db.use("gp").update("CREATE TABLE `" + tableNamenow + "` (\n" +
- " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',\n" +
- " `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '代码',\n" +
- " `minimumFluctuation` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最小波动\\n\\n',\n" +
- " `riskControl` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '风控参数(+-*/)',\n" +
- " `status` int(11) NULL DEFAULT NULL COMMENT '状态,0启动、1关闭',\n" +
- " `codeName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '',\n" +
- " `tocode` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新币/股 code ',\n" +
- " `startTime` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '开始时间',\n" +
- " `endTime` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '结束时间',\n" +
- " `multiples` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '倍数',\n" +
- " PRIMARY KEY (`id`) USING BTREE\n" +
- ") ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; ");
- String tableNamenowHist = "risk_control_formula_" + record.getStr("riskkey").toLowerCase() ;
- Db.use("gp").update("CREATE TABLE "+tableNamenowHist+" (\n" +
- " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',\n" +
- " `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '指数代码',\n" +
- " `minimumFluctuation` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最小波动',\n" +
- " `riskControl` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '风控参数',\n" +
- " `status` int(11) NULL DEFAULT NULL COMMENT '状态',\n" +
- " `startTime` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '开始时间',\n" +
- " `endTime` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '结束时间',\n" +
- " `tocode` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新币/股 code ',\n" +
- " `multiples` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '倍数',\n" +
- " PRIMARY KEY (`id`) USING BTREE\n" +
- ") ENGINE = InnoDB AUTO_INCREMENT = 38 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;");
- }else {// 初始化备份表
- List<Record> recordRiskList = Db.use("gp").find("select id,code,tocode,minimumFluctuation as mini,multiples,riskControl as risk,status from risk_control_formula_hy ");
- for (Record r :recordRiskList) {
- String tableNamenow2 = "data_rt_" + r.getStr("tocode").replace(".","_").toLowerCase()+"_"+ record.getStr("riskkey").toLowerCase();
- Record recordr2 = Db.use("gp").findFirst("select TABLE_NAME,TABLE_TYPE from information_schema.TABLES where TABLE_NAME = ? ", tableNamenow2);
- //还没有备份表
- if(recordr2==null){
- //创建备份表
- //创建实时表
- Db.use("gp").update("CREATE TABLE `" + tableNamenow2 + "` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` varchar(128) NOT NULL COMMENT '日期', `time` varchar(128) NOT NULL COMMENT '交易时间', `now` decimal(64,6) NOT NULL COMMENT '最新价', `high` decimal(64,6) NOT NULL COMMENT '最高价', `low` decimal(64,6) NOT NULL COMMENT '最低价', `open` decimal(64,6) NOT NULL COMMENT '开盘价', `preclose` decimal(64,6) NOT NULL COMMENT '前收盘价', `roundlot` varchar(128) NOT NULL COMMENT '现手', `change` varchar(128) NOT NULL COMMENT '涨跌', `pctchange` varchar(128) NOT NULL COMMENT '涨跌幅', `volume` varchar(128) NOT NULL COMMENT '成交量', `amount` varchar(128) NOT NULL COMMENT '成交额', `volumeratio` varchar(128) NOT NULL COMMENT '量比', `commissionratio` varchar(128) NOT NULL COMMENT '委比', `commissiondiff` varchar(128) NOT NULL COMMENT '委差', `tradestatus` varchar(128) NOT NULL COMMENT '交易状态', `outvolume` varchar(128) NOT NULL COMMENT '外盘', `involume` varchar(128) NOT NULL COMMENT '内盘', `highlimit` varchar(128) NOT NULL COMMENT '涨停价', `lowlimit` varchar(128) NOT NULL COMMENT '跌停价', `speed` varchar(128) NOT NULL COMMENT '涨速', `averageprice` varchar(128) NOT NULL COMMENT '均价', `buyprice1` varchar(128) NOT NULL COMMENT '买1价', `buyprice2` varchar(128) NOT NULL COMMENT '买2价', `buyprice3` varchar(128) NOT NULL COMMENT '买3价', `buyprice4` varchar(128) NOT NULL COMMENT '买4价', `buyprice5` varchar(128) NOT NULL COMMENT '买5价', `buyvolume1` varchar(128) NOT NULL COMMENT '买1量', `buyvolume2` varchar(128) NOT NULL COMMENT '买2量', `buyvolume3` varchar(128) NOT NULL COMMENT '买3量', `buyvolume4` varchar(128) NOT NULL COMMENT '买4量', `buyvolume5` varchar(128) NOT NULL COMMENT '买5量', `sellprice1` varchar(128) NOT NULL COMMENT '卖1价', `sellprice2` varchar(128) NOT NULL COMMENT '卖2价', `sellprice3` varchar(128) NOT NULL COMMENT '卖3价', `sellprice4` varchar(128) NOT NULL COMMENT '卖4价', `sellprice5` varchar(128) NOT NULL COMMENT '卖5价', `sellvolume1` varchar(128) NOT NULL COMMENT '卖1量', `sellvolume2` varchar(128) NOT NULL COMMENT '卖2量', `sellvolume3` varchar(128) NOT NULL COMMENT '卖3量', `sellvolume4` varchar(128) NOT NULL COMMENT '卖4量', `sellvolume5` varchar(128) NOT NULL COMMENT '卖5量', `closedtime` varchar(128) NOT NULL COMMENT '盘后时间', `closedvolume` varchar(128) NOT NULL COMMENT '盘后成交量', `closedamount` varchar(128) NOT NULL COMMENT '盘后成交额', `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `dateOne` bigint(15) DEFAULT '0', `dateFive` bigint(15) DEFAULT '0', `dateFifteen` bigint(15) DEFAULT '0', `dateThirty` bigint(15) DEFAULT '0', `dateSixty` bigint(15) DEFAULT '0', `realTime` bigint(15) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- // 创建历史表
- String histTableName = "data_hist_" + r.getStr("tocode").replace(".","_").toLowerCase()+"_" +record.getStr("riskkey").toLowerCase();
- Db.use("gp").update("CREATE TABLE `" + histTableName + "` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `open` decimal(64,6) NOT NULL COMMENT '开盘价', `close` decimal(64,6) NOT NULL COMMENT '收盘价', `high` decimal(64,6) NOT NULL COMMENT '最高价', `low` decimal(64,6) NOT NULL COMMENT '最低价', `preclose` decimal(64,6) NOT NULL COMMENT '前收盘价', `average` varchar(128) NOT NULL COMMENT '均价', `change` varchar(128) NOT NULL COMMENT '涨跌', `pctchange` varchar(128) NOT NULL COMMENT '涨跌幅', `volume` varchar(128) NOT NULL COMMENT '成交量', `highlimit` varchar(128) NOT NULL COMMENT '是否涨停', `amount` varchar(128) NOT NULL COMMENT '成交金额', `turn` varchar(128) NOT NULL COMMENT '换手率', `tradestatus` varchar(128) NOT NULL COMMENT '交易状态', `lowlimit` varchar(128) NOT NULL COMMENT '是否跌停', `amplitude` varchar(128) NOT NULL COMMENT '振幅', `tnum` varchar(128) NOT NULL COMMENT '成交笔数', `tafactor` varchar(128) NOT NULL COMMENT '复权因子(后)', `fronttafactor` varchar(128) NOT NULL COMMENT '前复权因子(定点复权)', `isststock` varchar(128) NOT NULL COMMENT '是否为ST股票', `isxststock` varchar(128) NOT NULL COMMENT '是否为*ST股票', `date_year` bigint(20) DEFAULT '0' COMMENT '年期', `date_month` bigint(20) DEFAULT '0' COMMENT '月期', `date_week` bigint(20) DEFAULT '0' COMMENT '周', `realTime` bigint(20) DEFAULT '0' COMMENT '日', `dates` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- }
- // 存入 DataOptions 缓存
- DataOptions.set(r.getStr("code")+"_"+r.get("tocode")+"_"+record.getStr("riskkey"), // code _ hy // BTC_hy LTC_LTC_hy LINK_GCT_xh
- r.getStr("tocode")+"&"+r.get("mini")+"&"+r.get("risk")+"&"+r.get("multiples")+"&"+r.get("status")); //tocode & mini & risk & multiples & status
- // 开盘价 每天 17点和 6点 初始化更新 清空 RiskOptions缓存 在交易时间内更新系统的话 取 当天的第一条
- RiskOptions.remove("open_"+r.getStr("code")+"_"+r.get("tocode")+"_"+record.getStr("riskkey"));
- //收盘价 定时任务 每天 17点和 6点 初始化更新 添加 当前 rt表 最后一条数据 即为收盘价 其他时间取 最后一条的 现价为风控收盘价 ,
- BigDecimal precloseNow = Db.use("gp").queryBigDecimal(
- " select now from " + tableNamenow2 + " order by id desc LIMIT 1 ");
- if(precloseNow!=null){
- RiskOptions.set("preclose_"+r.getStr("code")+"_"+r.get("tocode")+"_"+record.getStr("riskkey"),precloseNow+"");
- }
- }
- }
- }
- }
- @Scheduled(cron = "0 0 0/1 * * ? ")
- public void soutLog(){
- new WebSocketController().soutLog();
- }
- }
|