From 7289903c3b78d4e6e141e3a5e976ddef52e9fc97 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 29 May 2026 14:31:40 +0800
Subject: [PATCH] 1

---
 trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/RemoteDataServiceImpl.java |  106 +++++++++++++++++++++++------------------------------
 1 files changed, 46 insertions(+), 60 deletions(-)

diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/RemoteDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/RemoteDataServiceImpl.java
index 785ae72..c97d876 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/RemoteDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/RemoteDataServiceImpl.java
@@ -73,10 +73,6 @@
 
     @Override
     public List<Kline> kline(String symbol, String line) {
-        Item bySymbol = itemService.findBySymbol(symbol);
-        if(Item.cryptos.equals(bySymbol.getType())){
-            return klineCryptos(symbol, line);
-        }
         KlineTimeObject timeObject = DataCache.getKline(symbol, line);
         List<Kline> list = new ArrayList<Kline>();
         if (timeObject != null) {
@@ -85,7 +81,7 @@
         List<Kline> list_clone = new ArrayList<Kline>();
         try {
             for (int i = 0; i < list.size(); i++) {
-                if(list.get(i) == null){
+                if (list.get(i) == null) {
                     continue;
                 }
                 Kline kline = (Kline) list.get(i).clone();
@@ -96,71 +92,61 @@
         }
 
         Realtime realtime = DataCache.getLatestRealTime(symbol);
-        if (realtime != null) {
-            Kline kline = null;
-            if (KlineConstant.PERIOD_1MIN.equals(line)) {
-                kline = klineService.bulidKline1Minute(realtime, KlineConstant.PERIOD_1MIN);
-            } else if (KlineConstant.PERIOD_5MIN.equals(line)) {
-                kline = klineService.bulidKline5Minute(realtime, KlineConstant.PERIOD_5MIN);
-            } else if (KlineConstant.PERIOD_15MIN.equals(line)) {
-                kline = klineService.bulidKline15Minute(realtime, KlineConstant.PERIOD_15MIN);
-            } else if (KlineConstant.PERIOD_30MIN.equals(line)) {
-                kline = klineService.bulidKline30Minute(realtime, KlineConstant.PERIOD_30MIN);
-            } else if (KlineConstant.PERIOD_60MIN.equals(line)) {
-                kline = klineService.bulidKline60Minute(realtime, KlineConstant.PERIOD_60MIN);
-            } else if (KlineConstant.PERIOD_4HOUR.equals(line)) {
-                kline = klineService.bulidKline4Hour(realtime, KlineConstant.PERIOD_4HOUR);
-            } else if (KlineConstant.PERIOD_1DAY.equals(line)) {
-                kline = klineService.bulidKline1Day(realtime, KlineConstant.PERIOD_1DAY);
-            } else if (KlineConstant.PERIOD_5DAY.equals(line)) {
-                kline = klineService.bulidKline5Day(realtime, KlineConstant.PERIOD_5DAY);
-            } else if (KlineConstant.PERIOD_1WEEK.equals(line)) {
-                kline = klineService.bulidKline1Week(realtime, KlineConstant.PERIOD_1WEEK);
-            } else if (KlineConstant.PERIOD_1MON.equals(line)) {
-                kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_1MON);
-            } else if (KlineConstant.PERIOD_QUARTER.equals(line)) {
-                kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_QUARTER);
-            } else if (KlineConstant.PERIOD_YEAR.equals(line)) {
-                kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_YEAR);
-            }
-            if (null != kline) {
-                list_clone.add(kline);
-            }
+        if (realtime == null) {
+            realtime = DataCache.getRealtime(symbol);
         }
-        // 按时间升序
+        if (realtime != null) {
+            appendOrReplaceKline(list_clone, buildCurrentKline(realtime, line));
+        }
         Collections.sort(list_clone);
         return list_clone;
+    }
 
+    private Kline buildCurrentKline(Realtime realtime, String line) {
+        if (KlineConstant.PERIOD_1MIN.equals(line)) {
+            return klineService.bulidKline1Minute(realtime, KlineConstant.PERIOD_1MIN);
+        } else if (KlineConstant.PERIOD_5MIN.equals(line)) {
+            return klineService.bulidKline5Minute(realtime, KlineConstant.PERIOD_5MIN);
+        } else if (KlineConstant.PERIOD_15MIN.equals(line)) {
+            return klineService.bulidKline15Minute(realtime, KlineConstant.PERIOD_15MIN);
+        } else if (KlineConstant.PERIOD_30MIN.equals(line)) {
+            return klineService.bulidKline30Minute(realtime, KlineConstant.PERIOD_30MIN);
+        } else if (KlineConstant.PERIOD_60MIN.equals(line)) {
+            return klineService.bulidKline60Minute(realtime, KlineConstant.PERIOD_60MIN);
+        } else if (KlineConstant.PERIOD_4HOUR.equals(line)) {
+            return klineService.bulidKline4Hour(realtime, KlineConstant.PERIOD_4HOUR);
+        } else if (KlineConstant.PERIOD_1DAY.equals(line)) {
+            return klineService.bulidKline1Day(realtime, KlineConstant.PERIOD_1DAY);
+        } else if (KlineConstant.PERIOD_5DAY.equals(line)) {
+            return klineService.bulidKline5Day(realtime, KlineConstant.PERIOD_5DAY);
+        } else if (KlineConstant.PERIOD_1WEEK.equals(line)) {
+            return klineService.bulidKline1Week(realtime, KlineConstant.PERIOD_1WEEK);
+        } else if (KlineConstant.PERIOD_1MON.equals(line)) {
+            return klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_1MON);
+        } else if (KlineConstant.PERIOD_QUARTER.equals(line)) {
+            return klineService.bulidKlineQuarter(realtime, KlineConstant.PERIOD_QUARTER);
+        } else if (KlineConstant.PERIOD_YEAR.equals(line)) {
+            return klineService.bulidKlineYear(realtime, KlineConstant.PERIOD_YEAR);
+        }
+        return null;
     }
 
     public List<Kline> klineCryptos(String symbol, String line) {
-        KlineTimeObject timeObject = DataCache.getKline(symbol, line);
-        List<Kline> list = new ArrayList<Kline>();
-        if (timeObject != null) {
-            list = timeObject.getKline();
+        return kline(symbol, line);
+    }
+
+    private void appendOrReplaceKline(List<Kline> list, Kline kline) {
+        if (kline == null) {
+            return;
         }
-        List<Kline> list_clone = new ArrayList<Kline>();
-        try {
-            for (int i = 0; i < list.size(); i++) {
-                Kline kline = (Kline) list.get(i).clone();
-                list_clone.add(kline);
+        for (int i = list.size() - 1; i >= 0; i--) {
+            Kline existing = list.get(i);
+            if (existing.getTs() != null && existing.getTs().equals(kline.getTs())) {
+                list.set(i, kline);
+                return;
             }
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
         }
-        Realtime realtime = DataCache.getRealtime(symbol);
-        Kline hobiOne = DataCache.getKline_hobi().get(symbol + "_" + line);
-
-        Kline lastOne = null;
-        if (list != null && list.size() > 0) {
-            lastOne = list.get(list.size() - 1);
-        }
-        if (realtime != null && hobiOne != null && lastOne != null) {
-            list_clone.add(this.klineService.bulidKline(realtime, lastOne, hobiOne, line));
-        }
-        Collections.sort(list_clone); // 按时间升序
-        return list_clone;
-
+        list.add(kline);
     }
 
     @Override

--
Gitblit v1.9.3