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