From 36be00e0f3cbe0d559c646fd2977e6e3a74aa6f9 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 30 Sep 2024 16:57:22 +0800
Subject: [PATCH] Merge branch 'bea' of http://120.27.238.55:7000/r/exchange into bea

---
 src/main/java/com/xcong/excoin/modules/exchange/service/impl/HandleKlineServiceImpl.java |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/exchange/service/impl/HandleKlineServiceImpl.java b/src/main/java/com/xcong/excoin/modules/exchange/service/impl/HandleKlineServiceImpl.java
index 7add4f8..ec776b7 100644
--- a/src/main/java/com/xcong/excoin/modules/exchange/service/impl/HandleKlineServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/exchange/service/impl/HandleKlineServiceImpl.java
@@ -39,18 +39,60 @@
         CoinProcessor processor = processorFactory.getProcessor(symbol);
         Map<String, Candlestick> currentKlineMap = processor.getCurrentKlineMap();
         Collection<Candlestick> values = currentKlineMap.values();
-        BigDecimal newPrice = trades.get(trades.size()-1).getPrice();
+        BigDecimal newPrice =null;
         for (Candlestick candlestick : values) {
             for (ExchangeTrade exchangeTrade : trades) {
+                if(exchangeTrade==null){
+                    continue;
+                }
                 processor.processTrade(candlestick, exchangeTrade);
+                newPrice=exchangeTrade.getPrice();
             }
         }
-
+        // 更新今日高地价
+        BigDecimal min=BigDecimal.ZERO;
+        BigDecimal max=BigDecimal.ZERO;
+        BigDecimal vol = BigDecimal.ZERO;
+        for (ExchangeTrade exchangeTrade : trades) {
+            if(exchangeTrade==null){
+                continue;
+            }
+            if(min.compareTo(BigDecimal.ZERO)==0){
+                min = exchangeTrade.getPrice();
+            }else{
+                min=exchangeTrade.getPrice().min(min);
+            }
+            max=exchangeTrade.getPrice().max(max);
+            vol=vol.add(exchangeTrade.getAmount());
+        }
+        Object o = redisUtils.get(symbolUsdt);
+        if(o!=null){
+            Candlestick today =   (Candlestick)o;
+            today.setVolume(today.getVolume()==null?BigDecimal.ZERO:today.getVolume());
+            today.setHigh(today.getHigh().max(max));
+            today.setLow(today.getLow().min(min));
+            today.setVolume(today.getVolume().add(vol));
+            redisUtils.set(symbolUsdt,today);
+        }else{
+            Candlestick today =   new Candlestick();
+            today.setClose(newPrice);
+            today.setLow(newPrice);
+            today.setHigh(newPrice);
+            today.setVolume(BigDecimal.ZERO);
+            today.setHigh(today.getHigh().max(max));
+            today.setLow(today.getLow().min(min));
+            today.setVolume(vol);
+            redisUtils.set(symbolUsdt,today);
+        }
         // 存入redis,websocket去取
         String key = "NEW_KINE_{}";
         key = StrUtil.format(key, symbolUsdt);
         redisUtils.set(key,currentKlineMap);
         // 更新最新价
-        redisUtils.set(CoinTypeConvert.convertToKey(symbolUsdt), newPrice);
+        if(newPrice!=null){
+            redisUtils.set(CoinTypeConvert.convertToKey(symbolUsdt), newPrice);
+        }
+
     }
+
 }

--
Gitblit v1.9.1