From 5880c05eaaaf5350cd4a69afeaf197e4aea70156 Mon Sep 17 00:00:00 2001
From: zyy3 <zyy3@zy.com>
Date: Thu, 06 Nov 2025 23:58:52 +0800
Subject: [PATCH] 1
---
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java | 8 +++-
trading-order-huobi/src/main/java/com/yami/trading/huobi/data/internal/KlineServiceImpl.java | 37 ++++++++++--------
trading-order-admin/src/main/java/com/yami/trading/admin/task/StockTask.java | 8 +++
trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java | 30 ++++++--------
4 files changed, 46 insertions(+), 37 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 f43d66c..716781f 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
@@ -215,6 +215,12 @@
if (list.isEmpty()) {
return;
}
+ /*list.forEach( x-> {
+ if (x.getSymbol().equalsIgnoreCase("IONM")) {
+ System.out.println(x);
+ System.out.println(x);
+ }
+ });*/
List<Item> indicesList = itemService.list(new QueryWrapper<Item>()
.eq("type", Item.indices));
@@ -259,7 +265,7 @@
public static void main(String[] args) {
StockTask task = new StockTask();
- task.loadAllStock(EStockType.US);
+ task.initAllStock(EStockType.US);
}
@Override
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
index f1d50ee..f60d54e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
@@ -71,8 +71,12 @@
if (!Item.cryptos.equals(bySymbol.getType())) {
if (bySymbol.getType().equalsIgnoreCase(Item.US_STOCKS)) {
data = klineService.getKData(bySymbol, line);
- formatKlineTimestamps(data, line);
- return Result.succeed(this.build(data, line, symbol));
+ if (!data.isEmpty()) {
+ formatKlineTimestamps(data, line);
+ return Result.succeed(this.build(data, line, symbol));
+ } else {
+ return Result.succeed(null);
+ }
} else {
return getKlineForNonCryptos(bySymbol, line, symbol);
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
index 3db41b9..168ea27 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
@@ -1,7 +1,6 @@
package com.yami.trading.api.controller;
import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.text.split.SplitIter;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import com.yami.trading.bean.data.domain.Realtime;
@@ -10,7 +9,6 @@
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
-import com.yami.trading.common.util.StringUtils;
import com.yami.trading.huobi.data.DataCache;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.item.ItemService;
@@ -318,34 +316,26 @@
itemsTotal = new ArrayList<>(itemList).stream().filter(item -> item.getType().equals(type)
&& item.getCategory().equals(finalCategory)).collect(Collectors.toList());
}
- if (pageNo * pageSize - pageSize < itemsTotal.size()) {
- int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1;
- int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize);
- items = itemsTotal.stream().skip(start).limit(pageSize).collect(Collectors.toList());
- }
} else if (null != type) {
itemsTotal = new ArrayList<>(itemList).stream().filter(item -> item.getType().equals(type))
.collect(Collectors.toList());
- if (pageNo * pageSize - pageSize < itemsTotal.size()) {
- int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1;
- int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize);
- items = itemsTotal.stream().skip(start).limit(pageSize).collect(Collectors.toList());
- items.forEach(x -> x.setCategory("prominent"));
- }
+ itemsTotal.forEach(x -> x.setCategory("prominent"));
+
} else {
itemsTotal = new ArrayList<>(itemList);
List<String> symbols = Item.types;
for (String symbol : symbols) {
List<Item> list = itemsTotal.stream().filter(item -> symbol.equals(item.getType())).limit(5).collect(Collectors.toList());
if (list.size() > 0) {
- items.addAll(list);
+ itemsTotal.addAll(list);
}
}
}
List<QueryRealtimeDTO> list = new ArrayList<>();
- assert items != null;
- items.forEach(item -> {
+ assert itemsTotal != null;
+ List<QueryRealtimeDTO> finalList = list;
+ itemsTotal.forEach(item -> {
Realtime realtime = DataCache.getRealtime(item.getSymbol());
if (realtime != null) {
QueryRealtimeDTO dto = QueryRealtimeDTO.builder()
@@ -367,13 +357,19 @@
.category(item.getCategory())
.type(item.getType())
.build();
- list.add(dto);
+ finalList.add(dto);
} else {
log.error("获取行情接口,realtime is null;币种->{}", item.getSymbol());
}
});
+ list = finalList;
if (!list.isEmpty()) {
list.sort(Comparator.comparing(QueryRealtimeDTO::getChangeRatio).reversed());
+ if (pageNo * pageSize - pageSize < itemsTotal.size()) {
+ int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1;
+ int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize);
+ list = list.stream().skip(start).limit(pageSize).collect(Collectors.toList());
+ }
}
Result<List<QueryRealtimeDTO>> ok = Result.ok(list);
ok.setTotal((long) itemsTotal.size());
diff --git a/trading-order-huobi/src/main/java/com/yami/trading/huobi/data/internal/KlineServiceImpl.java b/trading-order-huobi/src/main/java/com/yami/trading/huobi/data/internal/KlineServiceImpl.java
index 7a8e13f..78189cd 100644
--- a/trading-order-huobi/src/main/java/com/yami/trading/huobi/data/internal/KlineServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com/yami/trading/huobi/data/internal/KlineServiceImpl.java
@@ -979,25 +979,28 @@
Gson gson = new Gson();
List<kData> dataList = gson.fromJson(object.toString(), new TypeToken<List<kData>>(){}.getType());
logger.info("{}获取{}条K线" , item.getSymbol() ,dataList.size());
- Realtime realtime = DataCache.getRealtime(item.getSymbol());
- // 修改 List 中的最后一条数据
- kData lastData = dataList.get(dataList.size() - 1);
- lastData.setC(String.valueOf(realtime.getClose()));
- lastData.setO(String.valueOf(realtime.getOpen()));
- lastData.setH(String.valueOf(realtime.getHigh()));
- lastData.setL(String.valueOf(realtime.getLow()));
-
List<Kline> list = new ArrayList<>();
- for (int i = 0; i < dataList.size(); i++) {
- kData kData = dataList.get(i);
- Kline kline = new Kline();
- kline.setTs(Long.valueOf(kData.getT() + "000"));
- kline.setClose(Double.valueOf(kData.getC()));
- kline.setOpen(Double.valueOf(kData.getO()));
- kline.setHigh(Double.valueOf(kData.getH()));
- kline.setLow(Double.valueOf(kData.getL()));
- list.add(kline);
+ if (!dataList.isEmpty() && dataList.size() > 0) {
+ Realtime realtime = DataCache.getRealtime(item.getSymbol());
+ // 修改 List 中的最后一条数据
+ kData lastData = dataList.get(dataList.size() - 1);
+ lastData.setC(String.valueOf(realtime.getClose()));
+ lastData.setO(String.valueOf(realtime.getOpen()));
+ lastData.setH(String.valueOf(realtime.getHigh()));
+ lastData.setL(String.valueOf(realtime.getLow()));
+
+ for (int i = 0; i < dataList.size(); i++) {
+ kData kData = dataList.get(i);
+ Kline kline = new Kline();
+ kline.setTs(Long.valueOf(kData.getT() + "000"));
+ kline.setClose(Double.valueOf(kData.getC()));
+ kline.setOpen(Double.valueOf(kData.getO()));
+ kline.setHigh(Double.valueOf(kData.getH()));
+ kline.setLow(Double.valueOf(kData.getL()));
+ list.add(kline);
+ }
}
+
return list;
} catch (Exception e) {
logger.error("getKData error", e);
--
Gitblit v1.9.3