From 00f42b535ae2001903ef18168f16fbe477e59a23 Mon Sep 17 00:00:00 2001
From: zyy3 <zyy3@zy.com>
Date: Thu, 06 Nov 2025 16:40:30 +0800
Subject: [PATCH] 1
---
trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java | 134 +++++++++++++++++++++++++++++++++-----------
1 files changed, 100 insertions(+), 34 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java
index a2959a3..f43d66c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java
@@ -7,8 +7,6 @@
import com.yami.trading.bean.data.domain.Realtime;
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.bean.model.StockRealTimeBean;
-import com.yami.trading.common.constants.RedisKeys;
-import com.yami.trading.common.util.RedisUtil;
import com.yami.trading.huobi.data.DataCache;
import com.yami.trading.huobi.websocket.constant.enums.EStockType;
import com.yami.trading.service.item.ItemService;
@@ -16,6 +14,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
@@ -30,7 +29,7 @@
@Component
-public class StockTask {
+public class StockTask implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(StockTask.class);
private final AtomicBoolean syncINStockData = new AtomicBoolean(false);
@@ -124,43 +123,43 @@
continue;
}
-
Item item = stockList.stream()
.filter(x -> x.getSymbol().equals(o.getSymbol()) &&
x.getStockCode().equals(o.getId()))
.findFirst()
.orElse(null);
- if (item == null) {
- item = new Item();
- String name = StringUtils.trim(o.getName());
- item.setEnName(name);
- item.setName(name);
- item.setSymbolFullName(name);
- item.setSymbol(o.getSymbol());
- item.setSymbolData(o.getSymbol());
- item.setPips(BigDecimal.valueOf(0.01).doubleValue());
- item.setPipsAmount(BigDecimal.valueOf(0.02).doubleValue());
- item.setAdjustmentValue(BigDecimal.ZERO.doubleValue());
- item.setUnitAmount(BigDecimal.valueOf(1000).doubleValue());
- item.setUnitFee(BigDecimal.valueOf(30).doubleValue());
- item.setMarket("FOREVER");
- item.setDecimals(2);
- item.setMultiple(BigDecimal.ZERO.doubleValue());
- item.setBorrowingRate(BigDecimal.ZERO.doubleValue());
- item.setDelFlag(0);
- item.setType(Item.US_STOCKS);
- item.setCategory(Item.US_STOCKS);
- item.setSorted("100");
- item.setOpenCloseType(Item.US_STOCKS);
- item.setFake("0");
- item.setShowStatus("1");
- item.setTradeStatus("1");
- item.setQuoteCurrency("USDT");
- item.setCrawlStatus("default_active");
- item.setStockCode(o.getId());
-
- updateStockList.add(item);
+ if (item != null) { //已有不添加
+ continue;
}
+ item = new Item();
+ String name = StringUtils.trim(o.getName());
+ item.setEnName(name);
+ item.setName(name);
+ item.setSymbolFullName(name);
+ item.setSymbol(o.getSymbol());
+ item.setSymbolData(o.getSymbol());
+ item.setPips(BigDecimal.valueOf(0.01).doubleValue());
+ item.setPipsAmount(BigDecimal.valueOf(0.02).doubleValue());
+ item.setAdjustmentValue(BigDecimal.ZERO.doubleValue());
+ item.setUnitAmount(BigDecimal.valueOf(1000).doubleValue());
+ item.setUnitFee(BigDecimal.valueOf(30).doubleValue());
+ item.setMarket("FOREVER");
+ item.setDecimals(2);
+ item.setMultiple(BigDecimal.ZERO.doubleValue());
+ item.setBorrowingRate(BigDecimal.ZERO.doubleValue());
+ item.setDelFlag(0);
+ item.setType(Item.US_STOCKS);
+ item.setCategory(Item.US_STOCKS);
+ item.setSorted("100");
+ item.setOpenCloseType(Item.US_STOCKS);
+ item.setFake("0");
+ item.setShowStatus("1");
+ item.setTradeStatus("1");
+ item.setQuoteCurrency("USDT");
+ item.setCrawlStatus("default_active");
+ item.setStockCode(o.getId());
+
+ updateStockList.add(item);
Realtime realtime = new Realtime();
@@ -192,6 +191,68 @@
}
}
+ /**
+ * 初始化所有股票数据
+ */
+ public void initAllStock(EStockType eStockType) {
+ log.info("init US股票 数据 {}", eStockType.getCode());
+ List<StockRealTimeBean> list = new ArrayList<>();
+ int totleStock = 1;
+ int page = 0;
+ try {
+ while (totleStock > list.size()) {
+ try {
+ String result = HttpClientRequest.doGet(eStockType.stockUrl + "list?country_id=" + eStockType.getContryId() + "&size=100000&page=" + page + "&key=" + eStockType.stockKey);
+ ReponseBase reponseBase = new Gson().fromJson(result, ReponseBase.class);
+ list.addAll(reponseBase.getData());
+ page++;
+ totleStock = reponseBase.getTotal();
+ } catch (Exception e) {
+ e.printStackTrace();
+ break;
+ }
+ }
+ if (list.isEmpty()) {
+ return;
+ }
+
+ List<Item> indicesList = itemService.list(new QueryWrapper<Item>()
+ .eq("type", Item.indices));
+ for (StockRealTimeBean o : list) {
+ Item indices = indicesList.stream()
+ .filter(x -> x.getSymbol().equals(o.getSymbol()))
+ .findFirst()
+ .orElse(null);
+ if (indices != null) { //指数不添加
+ continue;
+ }
+
+ Realtime realtime = new Realtime();
+ realtime.setUuid(o.getId());
+ realtime.setSymbol(o.getSymbol());
+ realtime.setName(o.getName());
+ realtime.setClose(new BigDecimal(o.getLast().trim()).doubleValue());
+ realtime.setLow(new BigDecimal(o.getLow().trim()).doubleValue());
+ realtime.setHigh(new BigDecimal(o.getHigh().trim()).doubleValue());
+ realtime.setOpen(new BigDecimal(o.getOpen().trim()).doubleValue());
+ realtime.setPrevClose(new BigDecimal(o.getPrevClose().trim()).doubleValue());
+ realtime.setTs(Long.valueOf(o.getTime() + "000"));
+ realtime.setVolume(new BigDecimal(o.getVolume().trim()).doubleValue());
+ realtime.setNetChange(new BigDecimal(o.getChg().trim()).doubleValue());
+ realtime.setChangeRatio(new BigDecimal(o.getChgPct()).doubleValue());
+ realtime.setType(o.getType());
+ realtime.setBid(new BigDecimal(o.getBid()).doubleValue());
+ realtime.setAsk(new BigDecimal(o.getAsk()).doubleValue());
+
+ DataCache.putRealtime(realtime.getSymbol(), realtime);
+ }
+ log.info("init US股票 数据 成功");
+ } catch (
+ Exception e) {
+ log.error("同步出错", e);
+ }
+ }
+
@@ -200,4 +261,9 @@
StockTask task = new StockTask();
task.loadAllStock(EStockType.US);
}
+
+ @Override
+ public void run(String... args) throws Exception {
+ initAllStock(EStockType.US);
+ }
}
--
Gitblit v1.9.3