From 02be66cea8554fedcbe02a94f811b4d0ba162c39 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 26 Nov 2020 17:17:05 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/trade/CoinTrader.java |   44 ++++++++++++++++++++++++--------------------
 1 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/trade/CoinTrader.java b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
index 38de6e4..20300e2 100644
--- a/src/main/java/com/xcong/excoin/trade/CoinTrader.java
+++ b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
@@ -330,8 +330,11 @@
             }
         }
         //如果还没有交易完,订单压入列表中,市价买单按成交量算
-        if (focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_SELL && focusedOrder.getDealCnt().compareTo(focusedOrder.getEntrustCnt()) < 0
-                || focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY && focusedOrder.getDealAmount().compareTo(focusedOrder.getEntrustAmount()) < 0) {
+        if ((focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_SELL && focusedOrder.getDealCnt().compareTo(focusedOrder.getEntrustCnt()) < 0)
+                || (focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY && focusedOrder.getDealAmount().compareTo(focusedOrder.getEntrustAmount()) < 0)) {
+            logger.info("市价单未交易完成:#{}"+JSON.toJSONString(focusedOrder));
+            // 打印此时的限价买单
+            logger.info("此时的买单:#{}"+JSON.toJSONString(lpList));
             addMarketPriceOrder(focusedOrder);
         }
         //每个订单的匹配批量推送
@@ -373,7 +376,7 @@
             BigDecimal leftTurnover = order.getEntrustAmount().subtract(order.getDealAmount());
             if(leftTurnover.divide(dealPrice,coinScale,BigDecimal.ROUND_DOWN)
                     .compareTo(BigDecimal.ZERO)==0){
-                //order.setDealAmount(order.getEntrustAmount());
+                order.setDealAmount(order.getEntrustAmount());
                 return leftTurnover;
             }
         }
@@ -422,20 +425,6 @@
         // 用户单成交金额
         focusedOrder.setDealAmount(focusedOrder.getDealAmount().add(turnover));
 
-        // 判断两个单是否完成
-        if(matchOrder.getEntrustAmount()!=null && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){
-            matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
-        }
-        if(matchOrder.getEntrustCnt()!=null && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){
-            matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
-        }
-
-        if(focusedOrder.getEntrustAmount()!=null && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){
-            focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
-        }
-        if(focusedOrder.getEntrustCnt()!=null && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){
-            focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
-        }
 
         //创建成交记录
         ExchangeTrade exchangeTrade = new ExchangeTrade();
@@ -451,10 +440,25 @@
         //校正市价单剩余成交额
         if (OrderCoinsEntity.TRADETYPE_MARKETPRICE == focusedOrder.getTradeType() && focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) {
             BigDecimal adjustTurnover = adjustMarketOrderTurnover(focusedOrder, dealPrice);
-            exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover));
-        } else if (OrderCoinsEntity.TRADETYPE_MARKETPRICE == matchOrder.getTradeType() && matchOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) {
+            //exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover));
+        }
+        if (OrderCoinsEntity.TRADETYPE_MARKETPRICE == matchOrder.getTradeType() && matchOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) {
             BigDecimal adjustTurnover = adjustMarketOrderTurnover(matchOrder, dealPrice);
-            exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover));
+            //exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover));
+        }
+        // 判断两个单是否完成
+        if(matchOrder.getEntrustAmount()!=null &&matchOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){
+            matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
+        }
+        if(matchOrder.getEntrustCnt()!=null &&matchOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){
+            matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
+        }
+
+        if(focusedOrder.getEntrustAmount()!=null &&  focusedOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){
+            focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
+        }
+        if(focusedOrder.getEntrustCnt()!=null &&focusedOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){
+            focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
         }
 
         if (focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) {

--
Gitblit v1.9.1