From 170264a09fe1cba82864902617d459d20aa8de8f Mon Sep 17 00:00:00 2001 From: mmm8955405 Date: Sat, 16 Mar 2024 04:13:12 +0800 Subject: [PATCH] xg --- .../controller/GetFutDailyController.java | 174 ++++++++++++------ .../biz/webadmin/task/ContractInfoTime.java | 164 +++-------------- .../biz/webadmin/task/FutDailyTime.java | 174 +++--------------- src/main/resources/application-prod.yml | 2 +- 4 files changed, 166 insertions(+), 348 deletions(-) diff --git a/src/main/java/jj/tech/finance/biz/webadmin/controller/GetFutDailyController.java b/src/main/java/jj/tech/finance/biz/webadmin/controller/GetFutDailyController.java index 5852b9d..1bf7c54 100644 --- a/src/main/java/jj/tech/finance/biz/webadmin/controller/GetFutDailyController.java +++ b/src/main/java/jj/tech/finance/biz/webadmin/controller/GetFutDailyController.java @@ -152,11 +152,22 @@ public class GetFutDailyController { @GetMapping("/getDateNow") public Object getDateNow() { - LocalDate d = LocalDate.now(); +// LocalDate d = LocalDate.now(); +// var from = select(ContractInfoMapper.selectList) +// .from(ContractInfoDynamicSqlSupport.contractInfo) +// .where(ContractInfoDynamicSqlSupport.contractInfo.delist_date, isGreaterThan(d)) +// //.and(ContractInfoDynamicSqlSupport.ts_code, ) +// .build() +// .render(RenderingStrategies.MYBATIS3); + var from = select(ContractInfoMapper.selectList) - .from(ContractInfoDynamicSqlSupport.contractInfo) - .where(ContractInfoDynamicSqlSupport.contractInfo.delist_date, isGreaterThan(d)) - //.and(ContractInfoDynamicSqlSupport.ts_code, ) + .from(select(ContractInfoMapper.selectList) + .from(ContractInfoDynamicSqlSupport.contractInfo) + .orderBy(ContractInfoDynamicSqlSupport.delist_date.descending()) + .limit(20000), + "t1" + ) + .groupBy(ContractInfoDynamicSqlSupport.fut_code) .build() .render(RenderingStrategies.MYBATIS3); @@ -453,71 +464,112 @@ public class GetFutDailyController { } -// @GetMapping("/test") -// public Object test() throws Exception{ + @GetMapping("/test") + public Object test() throws Exception{ + +// LocalDate d = LocalDate.now(); +// var from = select(ContractInfoMapper.selectList) +// .from(ContractInfoDynamicSqlSupport.contractInfo) +// .where(ContractInfoDynamicSqlSupport.contractInfo.delist_date, isGreaterThan(d)) +// //.and(ContractInfoDynamicSqlSupport.ts_code, ) +// .build() +// .render(RenderingStrategies.MYBATIS3); // -// -// HashMap h = new HashMap(); -// h.put("api_name", "fut_daily"); -// h.put("token", TushareConfig.TOKEN); -// HashMap params = new HashMap(); -// params.put("ts_code", "HC2405.SHF"); -// params.put("limit", 10000); -// h.put("params", params); -// logger.debug("tushare:" + objectMapper.writeValueAsString(h)); -// -// InputStream stean = -// Request.Post(TushareConfig.URL) -// .connectTimeout(15000) -// .socketTimeout(15000) -// .bodyString(objectMapper.writeValueAsString(h), ContentType.APPLICATION_JSON) -// .execute() -// .returnContent() -// .asStream(); -// JsonNode root = objectMapper.readTree(stean); -// JsonNode items = root.get("data").get("items"); -// -// ArrayList list = new ArrayList(); -// -// if(items!=null) { -// for(JsonNode jsonNode : items) { -// FutDaily bean = new FutDaily(); -// bean.setTs_code(jsonNode.get(0).asText()); -// -// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); -// LocalDate localDate = LocalDate.parse(jsonNode.get(1).asText(), formatter); -// -// bean.setTrade_date(localDate); -// bean.setPre_close(jsonNode.get(2).asDouble()); -// bean.setPre_settle(jsonNode.get(3).asDouble()); -// bean.setOpen(jsonNode.get(4).asDouble()); -// bean.setHigh(jsonNode.get(5).asDouble()); -// -// bean.setLow(jsonNode.get(6).asDouble()); -// bean.setClose(jsonNode.get(7).asDouble()); -// bean.setSettle(jsonNode.get(8).asDouble()); -// bean.setChange1(jsonNode.get(9).asDouble()); -// bean.setChange2(jsonNode.get(10).asDouble()); -// -// bean.setVol(jsonNode.get(11).asDouble()); -// bean.setAmount(jsonNode.get(12).asDouble()); -// bean.setOi(jsonNode.get(13).asDouble()); -// bean.setOi_chg(jsonNode.get(14).asDouble()); -// list.add(bean); -// } -// } -// if(!list.isEmpty()) { -// dailyService.getCurr("HC2405.SHF", list); -// } // +// +// List contractInfos = contractInfoMapper.selectMany(from); +// +// contractInfos.forEach(i->{ +// +// if(i.getTs_code().equals("HC2405.SHF")) { +// +// try { +// HashMap h = new HashMap(); +// h.put("api_name", "fut_daily"); +// h.put("token", TushareConfig.TOKEN); +// HashMap params = new HashMap(); +// params.put("ts_code", i.getTs_code()); +// params.put("limit", 10000); +// h.put("params", params); +// logger.debug("tushare:" + objectMapper.writeValueAsString(h)); +// +// InputStream stean = +// Request.Post(TushareConfig.URL) +// .connectTimeout(15000) +// .socketTimeout(15000) +// .bodyString(objectMapper.writeValueAsString(h), ContentType.APPLICATION_JSON) +// .execute() +// .returnContent() +// .asStream(); +// JsonNode root = objectMapper.readTree(stean); +// JsonNode items = root.get("data").get("items"); +// +// ArrayList list = new ArrayList(); +// +// if(items!=null) { +// for(JsonNode jsonNode : items) { +// FutDaily bean = new FutDaily(); +// bean.setTs_code(jsonNode.get(0).asText()); +// +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); +// LocalDate localDate = LocalDate.parse(jsonNode.get(1).asText(), formatter); +// +// bean.setTrade_date(localDate); +// bean.setPre_close(jsonNode.get(2).asDouble()); +// bean.setPre_settle(jsonNode.get(3).asDouble()); +// bean.setOpen(jsonNode.get(4).asDouble()); +// bean.setHigh(jsonNode.get(5).asDouble()); +// +// bean.setLow(jsonNode.get(6).asDouble()); +// bean.setClose(jsonNode.get(7).asDouble()); +// bean.setSettle(jsonNode.get(8).asDouble()); +// bean.setChange1(jsonNode.get(9).asDouble()); +// bean.setChange2(jsonNode.get(10).asDouble()); +// +// bean.setVol(jsonNode.get(11).asDouble()); +// bean.setAmount(jsonNode.get(12).asDouble()); +// bean.setOi(jsonNode.get(13).asDouble()); +// bean.setOi_chg(jsonNode.get(14).asDouble()); +// list.add(bean); +// } +// } +// if(!list.isEmpty()) { +// dailyService.getCurr(i.getTs_code(), list); +// } +// +// //Thread.sleep(200); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } // // // -// +// +// +// }); // // // return R.SUCCESS("getDate is ok"); -// } + + var from = select(ContractInfoMapper.selectList) + .from(select(ContractInfoMapper.selectList) + .from(ContractInfoDynamicSqlSupport.contractInfo) + .orderBy(ContractInfoDynamicSqlSupport.delist_date.descending()) + .limit(20000), + "t1" + ) + .groupBy(ContractInfoDynamicSqlSupport.fut_code) + .build() + .render(RenderingStrategies.MYBATIS3); + + + + List contractInfos = contractInfoMapper.selectMany(from); + System.out.println(contractInfos.size()); + return R.SUCCESS(contractInfos); + } // // // public static void main(String[] args) throws Exception { diff --git a/src/main/java/jj/tech/finance/biz/webadmin/task/ContractInfoTime.java b/src/main/java/jj/tech/finance/biz/webadmin/task/ContractInfoTime.java index ef9f50f..5890e5e 100644 --- a/src/main/java/jj/tech/finance/biz/webadmin/task/ContractInfoTime.java +++ b/src/main/java/jj/tech/finance/biz/webadmin/task/ContractInfoTime.java @@ -1,137 +1,27 @@ -//package jj.tech.finance.biz.webadmin.task; -// -//import static org.mybatis.dynamic.sql.SqlBuilder.*; -// -//import java.io.InputStream; -//import java.util.ArrayList; -//import java.util.Arrays; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.stream.Collectors; -// -//import org.apache.http.client.fluent.Request; -//import org.apache.http.entity.ContentType; -//import org.mybatis.dynamic.sql.render.RenderingStrategies; -//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 org.springframework.web.service.annotation.GetExchange; -// -//import com.fasterxml.jackson.databind.JsonNode; -//import com.fasterxml.jackson.databind.ObjectMapper; -// -//import jj.tech.finance.config.enums.Exchange; -//import jj.tech.finance.repository.mybatis.dao.ContractInfoMapper; -//import jj.tech.finance.repository.mybatis.dao.support.ContractInfoDynamicSqlSupport; -//import jj.tech.finance.repository.mybatis.entity.ContractInfo; -//import jj.tech.finance.utils.tushare.TushareConfig; -// -// -//@Component -//public class ContractInfoTime { -// private static Logger logger = LoggerFactory.getLogger(ContractInfoTime.class); -// -// @Autowired ObjectMapper objectMapper; -// @Autowired ContractInfoMapper contractInfoMapper; -// -// /** -// * 同步tushare的合约信息 -// */ -//// @Scheduled(cron = "0 0 0/4 * * ?") //4小时一次 -//// @Scheduled(cron = "0/50 * * * * ?") //50秒一次 -// @Scheduled(cron = "0 0 8-17/4 * * ?") //8点到15点之间,4小时一次 -// public void checkUser() throws Exception { -// -// List exchanges = Arrays.asList(Exchange.values()); -// -// exchanges.forEach(i->{ -// HashMap h = new HashMap(); -// h.put("api_name", "fut_basic"); -// h.put("token", TushareConfig.TOKEN); -// HashMap params = new HashMap(); -// params.put("exchange", i); -// h.put("params", params); -// try { -// this.getExchangeDate(i, h); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// }); -// -// } -// -// public void getExchangeDate(Exchange exchange, HashMap parm) throws Exception{ -// logger.debug("tushare:" + objectMapper.writeValueAsString(parm)); -// -// InputStream stean = -// Request.Post(TushareConfig.URL) -// .connectTimeout(3000) -// .socketTimeout(3000) -// .bodyString(objectMapper.writeValueAsString(parm), ContentType.APPLICATION_JSON) -// .execute() -// .returnContent() -// .asStream(); -//// .asString(StandardCharsets.UTF_8); -// -// JsonNode root = objectMapper.readTree(stean); -// JsonNode items = root.get("data").get("items"); -// -// -// ArrayList list = new ArrayList(); -// for(JsonNode jsonNode : items) { -// ContractInfo bean = new ContractInfo(); -// bean.setTs_code(jsonNode.get(0).asText()); -// bean.setSymbol(jsonNode.get(1).asText()); -// bean.setExchange(jsonNode.get(2).asText()); -// bean.setName(jsonNode.get(3).asText()); -// bean.setFut_code(jsonNode.get(4).asText()); -// bean.setMultiplier(jsonNode.get(5).asDouble()); -// -// bean.setTrade_unit(jsonNode.get(6).asText()); -// bean.setPer_unit(jsonNode.get(7).asDouble()); -// bean.setQuote_unit(jsonNode.get(8).asText()); -// bean.setQuote_unit_desc(jsonNode.get(9).asText()); -// bean.setD_mode_desc(jsonNode.get(10).asText()); -// -// bean.setList_date(jsonNode.get(11).asText()); -// bean.setDelist_date(jsonNode.get(12).asText()); -// bean.setD_month(jsonNode.get(13).asText()); -// bean.setLast_ddate(jsonNode.get(14).asText()); -// list.add(bean); -// } -// -// -// var from = select(ContractInfoMapper.selectList) -// .from(ContractInfoDynamicSqlSupport.contractInfo) -// .where(ContractInfoDynamicSqlSupport.exchange, isEqualTo(exchange.toString())) -// .limit(8888) -// .build() -// .render(RenderingStrategies.MYBATIS3); -// -// List contractInfos = contractInfoMapper.selectMany(from); -// Map local = -// contractInfos.stream().collect( -// Collectors.toMap(ContractInfo::getTs_code, i->i) -// ); -// //System.out.println(local); -// -// -// List bath = new ArrayList(); -// list.forEach(i->{ -// if(local.get(i.getTs_code()) == null) { -// bath.add(i); -// } -// }); -// if(!bath.isEmpty()) { -// contractInfoMapper.insertMultiple(bath); -// } -// -// -// } -// -// -//} +package jj.tech.finance.biz.webadmin.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import jj.tech.finance.biz.webadmin.controller.GetFutDailyController; + + +@Component +public class ContractInfoTime { + @Autowired GetFutDailyController getFutDailyController; + + /** + * 同步tushare的合约信息 + */ +// @Scheduled(cron = "0 0 0/4 * * ?") //4小时一次 +// @Scheduled(cron = "0/50 * * * * ?") //50秒一次 +// @Scheduled(cron = "0 0 8-17/4 * * ?") //8点到15点之间,4小时一次 + + @Scheduled(cron = "0 0 01 * * ?") //每天早上1点 + public void init() throws Exception { + getFutDailyController.init(); + } + + +} diff --git a/src/main/java/jj/tech/finance/biz/webadmin/task/FutDailyTime.java b/src/main/java/jj/tech/finance/biz/webadmin/task/FutDailyTime.java index c13c85e..655ca6e 100644 --- a/src/main/java/jj/tech/finance/biz/webadmin/task/FutDailyTime.java +++ b/src/main/java/jj/tech/finance/biz/webadmin/task/FutDailyTime.java @@ -1,149 +1,25 @@ -//package jj.tech.finance.biz.webadmin.task; -// -//import static org.mybatis.dynamic.sql.SqlBuilder.*; -// -//import java.io.IOException; -//import java.io.InputStream; -//import java.util.ArrayList; -//import java.util.Arrays; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//import java.util.stream.Collectors; -// -//import org.apache.http.client.ClientProtocolException; -//import org.apache.http.client.fluent.Request; -//import org.apache.http.entity.ContentType; -//import org.mybatis.dynamic.sql.SqlBuilder; -//import org.mybatis.dynamic.sql.render.RenderingStrategies; -//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 com.fasterxml.jackson.core.JsonProcessingException; -//import com.fasterxml.jackson.databind.JsonNode; -//import com.fasterxml.jackson.databind.ObjectMapper; -// -//import jj.tech.finance.config.enums.Exchange; -//import jj.tech.finance.repository.mybatis.dao.ContractInfoMapper; -//import jj.tech.finance.repository.mybatis.dao.FutDailyMapper; -//import jj.tech.finance.repository.mybatis.dao.support.ContractInfoDynamicSqlSupport; -//import jj.tech.finance.repository.mybatis.dao.support.FutDailyDynamicSqlSupport; -//import jj.tech.finance.repository.mybatis.entity.ContractInfo; -//import jj.tech.finance.utils.tushare.TushareConfig; -// -//@Component -//public class FutDailyTime { -// private static Logger logger = LoggerFactory.getLogger(FutDailyTime.class); -// -// @Autowired ObjectMapper objectMapper; -// @Autowired ContractInfoMapper contractInfoMapper; -// @Autowired FutDailyMapper futDailyMapper; -// -// //@Scheduled(cron = "0 0/5 * * * ?") //5分钟 -// @Scheduled(cron = "0/50 * * * * ?") -// public void checkUser() throws Exception { -// -// List exchanges = Arrays.asList(Exchange.values()); -// -// exchanges.forEach(i->{ -// HashMap h = new HashMap(); -// h.put("api_name", "fut_daily"); -// h.put("token", TushareConfig.TOKEN); -// HashMap params = new HashMap(); -// params.put("ts_code", "RU2310.SHF"); -// h.put("params", params); -// try { -// this.getExchangeDate(i, h); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// }); -// -// } -// -// public void getExchangeDate(Exchange exchange, HashMap parm) throws Exception{ -// logger.debug("tushare:" + objectMapper.writeValueAsString(parm)); -// -// -// -// -// -// -// -// -// -// var ts_codes = select(FutDailyDynamicSqlSupport.ts_code) -// .from(FutDailyDynamicSqlSupport.futDaily) -// .groupBy(FutDailyDynamicSqlSupport.futDaily.ts_code); -// -// var from = select(ContractInfoMapper.selectList) -// .from(ContractInfoDynamicSqlSupport.contractInfo) -// .where(ContractInfoDynamicSqlSupport.contractInfo.ts_code, isNotIn(ts_codes)) -// .groupBy(ContractInfoDynamicSqlSupport.contractInfo.ts_code) -// .build() -// .render(RenderingStrategies.MYBATIS3); -// -// List contractInfos = contractInfoMapper.selectMany(from); -// -// contractInfos.forEach(i->{ -// try { -// HashMap h = new HashMap(); -// h.put("api_name", "fut_daily"); -// h.put("token", TushareConfig.TOKEN); -// HashMap params = new HashMap(); -// params.put("ts_code", i.getTs_code()); -// h.put("params", params); -// logger.debug("tushare:" + objectMapper.writeValueAsString(h)); -// -// InputStream stean = -// Request.Post(TushareConfig.URL) -// .connectTimeout(3000) -// .socketTimeout(3000) -// .bodyString(objectMapper.writeValueAsString(h), ContentType.APPLICATION_JSON) -// .execute() -// .returnContent() -// .asStream(); -// JsonNode root = objectMapper.readTree(stean); -// JsonNode items = root.get("data").get("items"); -// -// ArrayList list = new ArrayList(); -// for(JsonNode jsonNode : items) { -// ContractInfo bean = new ContractInfo(); -// bean.setTs_code(jsonNode.get(0).asText()); -// bean.setSymbol(jsonNode.get(1).asText()); -// bean.setExchange(jsonNode.get(2).asText()); -// bean.setName(jsonNode.get(3).asText()); -// bean.setFut_code(jsonNode.get(4).asText()); -// bean.setMultiplier(jsonNode.get(5).asDouble()); -// -// bean.setTrade_unit(jsonNode.get(6).asText()); -// bean.setPer_unit(jsonNode.get(7).asDouble()); -// bean.setQuote_unit(jsonNode.get(8).asText()); -// bean.setQuote_unit_desc(jsonNode.get(9).asText()); -// bean.setD_mode_desc(jsonNode.get(10).asText()); -// -// bean.setList_date(jsonNode.get(11).asText()); -// bean.setDelist_date(jsonNode.get(12).asText()); -// bean.setD_month(jsonNode.get(13).asText()); -// bean.setLast_ddate(jsonNode.get(14).asText()); -// list.add(bean); -// } -// -// Thread.sleep(300); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// -// -// -// }); -// -// -// } -// -//} +package jj.tech.finance.biz.webadmin.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import jj.tech.finance.biz.webadmin.controller.GetFutDailyController; + +@Component +public class FutDailyTime { + @Autowired GetFutDailyController getFutDailyController; + + //@Scheduled(cron = "0 0/5 * * * ?") //5分钟 + @Scheduled(cron = "0 0 02 * * ?") //每天早上2点 + public void getDateNow() throws Exception { + getFutDailyController.getDateNow(); + } + + @Scheduled(cron = "0 0 03 * * ?") //每天早上3点 + public void checkUser() throws Exception { + getFutDailyController.getDate(); + } + + +} diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index b1dfd2a..77e0416 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -60,7 +60,7 @@ spring: logging: level: - root: info + root: error # org.jooq: debug # org.springframework.amqp: debug # org.mybatis: debug