package com.nq.utils.task.stock;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.nq.dao.StockMapper;
|
import com.nq.pojo.Stock;
|
import com.nq.service.IStockService;
|
import com.nq.utils.HttpClientRequest;
|
import com.nq.utils.PropertiesUtil;
|
import com.nq.utils.redis.RedisShardedPoolUtils;
|
import com.nq.utils.stock.BuyAndSellUtils;
|
import com.nq.utils.stock.pinyin.GetPyByChinese;
|
import lombok.extern.slf4j.Slf4j;
|
import org.junit.Test;
|
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 javax.annotation.PostConstruct;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLDecoder;
|
import java.util.ArrayList;
|
import java.util.Date;
|
|
import static com.nq.utils.DateTimeUtil.*;
|
|
|
@Component
|
public class StockOthersTask {
|
@Autowired
|
IStockService stockService;
|
@Autowired
|
StockMapper stockMapper;
|
private static final Logger log = LoggerFactory.getLogger(StockOthersTask.class);
|
|
/* //9点到15点每隔10s执行一次
|
// @Scheduled(cron = "0 0/1 9-15 * * MON-FRI")
|
//redis存股票信息
|
@Scheduled(cron = "0/30 0/1 9-16 * * MON-FRI")
|
public void HkStockTask() throws UnsupportedEncodingException {
|
|
//当前毫秒时间戳
|
long now = System.currentTimeMillis();
|
ArrayList diff = null;
|
|
String url = PropertiesUtil.getProperty("hk.stock.url") + now;
|
String result = null;
|
try {
|
result = HttpClientRequest.doGet(url);
|
} catch (Exception e) {
|
log.error("获取港股信息失败,重新获取", e);
|
result = HttpClientRequest.doGet(url);
|
}
|
if (result == null) {
|
log.error("获取港股信息失败");
|
return;
|
}
|
JSONObject json = JSONObject.parseObject(result);
|
//取出data里的diff数组
|
diff = (ArrayList) json.getJSONObject("data").get("diff");
|
|
|
for (Object o : diff) {
|
//取第一条数据存入redisDB1
|
JSONObject data = (JSONObject) o;
|
String stockCode = data.getString("f12");
|
//存入redis
|
RedisShardedPoolUtils.set("hk" + stockCode, String.valueOf(data), 1);
|
}
|
log.info("港股信息存入redis成功");
|
|
}*/
|
|
/**
|
* 美股存redis 22:00-05:00
|
|
// @Scheduled(cron = "0/20 0/1 22-23 * * ?")
|
@Scheduled(cron = "0/25 0/1 * * * ?")
|
|
|
public void UsStockTask() {
|
boolean am = false;
|
boolean pm = false;
|
try {
|
am = BuyAndSellUtils.isTransTime("21:00", "0:00");
|
pm = BuyAndSellUtils.isTransTime("0:00", "5:00");
|
} catch (Exception e) {
|
log.error("= {}", e);
|
}
|
// log.info("美股UsStock-am = {} pm = {}", Boolean.valueOf(am), Boolean.valueOf(pm));
|
if (am || pm) {
|
//当前毫秒时间戳
|
this.usStockTask2();
|
}
|
} */
|
|
/**
|
* 美股信息启动加载
|
*
|
|
public void usStockTask2(){
|
long now = System.currentTimeMillis();
|
ArrayList diff = null;
|
String result = null;
|
String url = PropertiesUtil.getProperty("us.stock.url") + now;
|
try {
|
result = HttpClientRequest.doGet(url);
|
} catch (Exception e) {
|
log.error("获取美股信息失败,尝试重新获取", e);
|
result = HttpClientRequest.doGet(url);
|
}
|
if (result == null) {
|
log.error("获取美股信息失败");
|
return;
|
}
|
//取第一个(后到最后的数据
|
String da = null;
|
try {
|
da = result.substring(result.indexOf("(") + 1, result.indexOf(");"));
|
} catch (Exception e) {
|
log.error("此次美股信息获取失败", e);
|
return;
|
}
|
JSONObject json = JSONObject.parseObject(da);
|
//取出data里的diff数组
|
diff = (ArrayList) json.getJSONObject("data").get("diff");
|
|
for (Object o : diff) {
|
//取第一条数据存入redisDB1
|
JSONObject data = (JSONObject) o;
|
String stockCode = data.getString("f12");
|
//存入redis
|
|
RedisShardedPoolUtils.set("us" + stockCode, String.valueOf(data), 2);
|
}
|
log.info("美股信息存入redis成功");
|
}
|
*/
|
/**
|
* 美股港股指数
|
|
@Scheduled(cron = "0/30 0/1 * * * ?")
|
public void HkIndexTask() throws UnsupportedEncodingException {
|
boolean am = false;
|
boolean pm = false;
|
try {
|
am = BuyAndSellUtils.isTransTime("9:00", "0:00");
|
pm = BuyAndSellUtils.isTransTime("0:00", "5:00");
|
} catch (Exception e) {
|
log.error("= {}", e);
|
}
|
// log.info("HkIndex-am = {} pm = {}", Boolean.valueOf(am), Boolean.valueOf(pm));
|
if (am || pm) {
|
String[] keys = {"hk", "us"};
|
//当前毫秒时间戳
|
long now = System.currentTimeMillis();
|
for (String key : keys) {
|
String url = null;
|
if ("hk".equals(key)) {
|
url = PropertiesUtil.getProperty("hk.index.url") + now;
|
} else {
|
url = PropertiesUtil.getProperty("us.index.url") + now;
|
}
|
|
String result = null;
|
try {
|
result = HttpClientRequest.doGet(url);
|
} catch (Exception e) {
|
log.error("获取指数信息失败,尝试重新获取", e);
|
result = HttpClientRequest.doGet(url);
|
}
|
|
JSONObject json = JSONObject.parseObject(result);
|
|
//取出data里的diff数组
|
ArrayList diff = null;
|
try {
|
diff = (ArrayList) json.getJSONObject("data").get("diff");
|
} catch (Exception e) {
|
log.error("获取指数信息失败", e);
|
return;
|
}
|
|
for (int i = 0; i < diff.size(); i++) {
|
JSONObject data = (JSONObject) diff.get(i);
|
String stockCode = data.getString("f12");
|
//存入redis
|
RedisShardedPoolUtils.set(key + stockCode, String.valueOf(data), 3);
|
}
|
}
|
|
log.info("美股港股指数信息存入redis成功");
|
}
|
}
|
*/
|
/**
|
* @Description: 股票数据启动后初始化
|
* @param
|
* @throws Exception
|
|
@PostConstruct
|
public void init() {
|
try {
|
this.HkStockTask();
|
} catch (UnsupportedEncodingException e) {
|
log.error("初始化港股数据加载失败"+e);
|
}
|
this.usStockTask2();
|
try {
|
this.HkIndexTask();
|
} catch (UnsupportedEncodingException e) {
|
log.error("初始化美港指数数据加载失败"+e);
|
}
|
log.info("=======================数据加载完毕============================");
|
}
|
*/
|
@Test
|
public void test() throws UnsupportedEncodingException {
|
//当前系统分钟时间戳
|
|
String date = getCurrentTimeMiaoZero();
|
//?cat_time=1669089660&stock_gid=sz000001&price=10
|
log.info("date = {}", date);
|
String result = HttpClientRequest.doGet("http://116.124.132.181/stock/base/cx_gp?cat_time="+date+"&stock_gid=sz000001&price=10");
|
log.info("result = {}", result);
|
// net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(result);
|
// String nowPrice = jsonObject.getJSONObject("data").getString("new_price");
|
System.out.println(result);
|
}
|
}
|