From 14c1946eae86a86f8d1edee6cf3bdaf7572fc966 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 30 Oct 2025 19:44:38 +0800
Subject: [PATCH] 1

---
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java            |    2 
 trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java                                   |   65 +++++++++++++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java                     |   16 +-
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java                  |    4 
 trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java                      |    2 
 trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java                   |    2 
 trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java             |   12 +-
 trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java                              |    4 
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java               |   10 +-
 trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java               |   12 +-
 trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java                   |    2 
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java          |   11 ++
 trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java                     |    8 
 trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java                        |    8 
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java                    |    2 
 trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java                        |    6 
 trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java                     |   10 +-
 trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java      |    8 
 trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java            |   10 +-
 trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java                            |   12 +-
 trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java                       |    4 
 trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java                           |   30 +++---
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java        |    8 
 trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java                       |    2 
 trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java                         |    6 
 trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java |   32 +++---
 26 files changed, 181 insertions(+), 107 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
index 43d4969..3fea91e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
@@ -45,7 +45,7 @@
      */
     @ApiOperation(value = "kline初始化")
     @GetMapping(value = {"klineInit.action", "klineInitConfig.action"})
-    public Result<String> klineInit(@RequestParam(required = true) String paraInitSymbol ) throws Exception {
+    public Result<String> klineInit(@RequestParam(required = false) String paraInitSymbol ) throws Exception {
 
 
 
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java b/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
index 5dc7e7c..174bb13 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
@@ -113,7 +113,7 @@
         if (currentValue == null) {
             marketQuotationsAdjust.setNewPrice(Arith.str(realtime.getClose(), decimal));
         } else {
-            marketQuotationsAdjust.setNewPrice(realtime.getClose().subtract(currentValue).setScale(decimal, RoundingMode.HALF_UP).toPlainString());
+            marketQuotationsAdjust.setNewPrice(realtime.getClose().subtract(currentValue).setScale(decimal, RoundingMode.DOWN).toPlainString());
         }
         marketQuotationsAdjust.setPips(Arith.str(item.getPips(), decimal));
         marketQuotationsAdjust.setAfterValue(Arith.str(realtime.getClose(), decimal));
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java
new file mode 100644
index 0000000..1df27b5
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java
@@ -0,0 +1,65 @@
+package com.yami.trading.admin.task;
+
+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.huobi.data.internal.KlineInitService;
+import com.yami.trading.huobi.data.internal.KlineService;
+import com.yami.trading.service.item.ItemService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.stream.Collectors;
+
+/**
+ * @program: trading-order-master
+ * @description:
+ * @create: 2025-10-30 15:49
+ **/
+@Component
+public class KineTask {
+
+    private final AtomicBoolean syncINStockData = new AtomicBoolean(false);
+
+    private final Lock syncINStockDataLock = new ReentrantLock();
+
+
+    @Autowired
+    private KlineInitService klineInitService ;
+    @Autowired
+    private ItemService itemService;
+
+
+
+    /**
+     * 同步系统所需要的股票
+     */
+    @Scheduled(cron = "0 0 0/1 * * ?")
+    public void syncINStockData() {
+        if (syncINStockData.get()) { // 判断任务是否在处理中
+            return;
+        }
+        if (syncINStockDataLock.tryLock()) {
+            try {
+                syncINStockData.set(true); // 设置处理中标识为true
+
+                String symbols = itemService.list().stream().map(Item::getSymbol).collect(Collectors.joining(","));
+                try {
+                    klineInitService.klineInit(symbols);
+                }catch (Exception e){
+                    throw new YamiShopBindException("定时任务k线图初始化失败");
+                }
+            } finally {
+                syncINStockDataLock.unlock();
+                syncINStockData.set(false); // 设置处理中标识为false
+            }
+        }
+    }
+
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
index d76ee20..bfdd3de 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
@@ -120,12 +120,12 @@
         map.put("high", realtime.getHigh());
         map.put("low", realtime.getLow());
         if( realtime.getVolume() != null){
-            map.put("volume", realtime.getVolume().setScale(2, RoundingMode.HALF_UP));
+            map.put("volume", realtime.getVolume().setScale(2, RoundingMode.DOWN));
         }else{
             map.put("volume", realtime.getVolume());
         }
         if( realtime.getAmount() != null){
-            map.put("amount", realtime.getAmount().setScale(2, RoundingMode.HALF_UP));
+            map.put("amount", realtime.getAmount().setScale(2, RoundingMode.DOWN));
         }else{
             map.put("amount", realtime.getAmount());
         }
@@ -157,13 +157,13 @@
             if (!map.containsKey(key)) {
                 map.put(key, stringObjectMap.get(key));
                 BigDecimal open = realtime.getClose();
-                map.put("open", open != null ? open.setScale(decimal, RoundingMode.HALF_UP) : null);
+                map.put("open", open != null ? open.setScale(decimal, RoundingMode.DOWN) : null);
                 BigDecimal close = realtime.getClose();
-                map.put("close", close != null ? close.setScale(decimal, RoundingMode.HALF_UP) : null);
+                map.put("close", close != null ? close.setScale(decimal, RoundingMode.DOWN) : null);
                 BigDecimal high = realtime.getHigh();
-                map.put("high", high != null ? high.setScale(decimal, RoundingMode.HALF_UP) : null);
+                map.put("high", high != null ? high.setScale(decimal, RoundingMode.DOWN) : null);
                 BigDecimal low = realtime.getLow();
-                map.put("low", low != null ? low.setScale(decimal, RoundingMode.HALF_UP) : null);
+                map.put("low", low != null ? low.setScale(decimal, RoundingMode.DOWN) : null);
             }
         }
 
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
index 5dc4ae3..b7504b7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
@@ -100,7 +100,7 @@
                     percent = BigDecimal.ZERO;
                 } else {
                     chg = close.subtract(open);
-                    percent = chg.divide(open, 10, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
+                    percent = chg.divide(open, 10, RoundingMode.DOWN).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
                     ;
                 }
                 model.setKLineData(JSONObject.toJSONString(klines));
@@ -314,7 +314,7 @@
             percent = BigDecimal.ZERO;
         } else {
             chg = close.subtract(open);
-            percent = chg.divide(open, 10, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
+            percent = chg.divide(open, 10, RoundingMode.DOWN).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
             ;
         }
         robotModel.setKLineData(JSONObject.toJSONString(klines));
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
index d98ce15..0117349 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
@@ -751,7 +751,7 @@
         if(content.contains("null")){
             return "-";
         }
-        return new BigDecimal(content).setScale(scale, RoundingMode.HALF_UP).toPlainString();
+        return new BigDecimal(content).setScale(scale, RoundingMode.DOWN).toPlainString();
     }
 
     public static String formatMoney(String moneyStr) {
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
index a8857bd..0d54b75 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
@@ -49,7 +49,7 @@
         Map<String, String> data = new HashMap<String, String>();
         DecimalFormat df2 = new DecimalFormat("#.##");
         // 向下取整
-        df2.setRoundingMode(RoundingMode.HALF_UP);
+        df2.setRoundingMode(RoundingMode.DOWN);
         String partyId = SecurityUtils.getCurrentUserId();
         if ("".equals(partyId) || null == partyId) {
             // 当前外汇资产
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
index bb144e5..c6c9b23 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -422,14 +422,14 @@
         map.put("price", order.getPrice());
         map.put("stop_price_profit", order.getStopPriceProfit());
         if( order.getStopPriceLoss() !=null) {
-            map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.HALF_UP));
+            map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.DOWN));
         }else{
             map.put("stop_price_loss", null);
 
         }
         map.put("price_type", order.getOrderPriceType());
         map.put("state", order.getState());
-        map.put("amount", order.getVolume().multiply(order.getUnitAmount()).setScale(4, RoundingMode.HALF_UP));
+        map.put("amount", order.getVolume().multiply(order.getUnitAmount()).setScale(4, RoundingMode.DOWN));
         map.put("amount_open", order.getVolumeOpen().multiply(order.getUnitAmount()));
         map.put("fee", order.getFee());
         map.put("deposit", order.getDeposit());
@@ -606,9 +606,9 @@
             Realtime realtime = realtimeMap.get(data.getSymbol());
             BigDecimal mark_price = realtime.getClose();
             if(data.getDirection().equalsIgnoreCase("buy")){
-                expectedProfitAndLoss += data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.HALF_UP)).doubleValue();
+                expectedProfitAndLoss += data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.DOWN)).doubleValue();
             }else{
-                expectedProfitAndLoss -= data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.HALF_UP)).doubleValue();
+                expectedProfitAndLoss -= data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.DOWN)).doubleValue();
             }
             //手续费
             double fee = Double.parseDouble(data.getFee().toString());
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
index 376f533..6e528f9 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
@@ -78,8 +78,8 @@
         for (MoneyLog log : (List<MoneyLog>) page.getRecords()) {
             log.setContent_type(log.getContentType());
             log.setWallet_type(log.getWalletType());
-            log.setAmount_after(log.getAmountAfter().setScale(4, RoundingMode.HALF_UP));
-            log.setAmount_before(log.getAmountBefore().setScale(4, RoundingMode.HALF_UP));
+            log.setAmount_after(log.getAmountAfter().setScale(4, RoundingMode.DOWN));
+            log.setAmount_before(log.getAmountBefore().setScale(4, RoundingMode.DOWN));
             if (Constants.MONEYLOG_CONTENT_FINANCE_PROFIT.equals(log.getContentType())) {
                 log.setAmount(log.getAmount().add(new BigDecimal(amount)));
 
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 ff8aea6..d3261fe 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
@@ -126,10 +126,10 @@
             map.put("decimals", decimal);
             map.put("ts", ts);
             map.put("current_time", kline.getCurrentTime());
-            map.put("open", open.setScale(decimal, RoundingMode.HALF_UP));
-            map.put("close", close.setScale(decimal, RoundingMode.HALF_UP));
-            map.put("high", high.setScale(decimal, RoundingMode.HALF_UP));
-            map.put("low", low.setScale(decimal, RoundingMode.HALF_UP));
+            map.put("open", open.setScale(decimal, RoundingMode.DOWN));
+            map.put("close", close.setScale(decimal, RoundingMode.DOWN));
+            map.put("high", high.setScale(decimal, RoundingMode.DOWN));
+            map.put("low", low.setScale(decimal, RoundingMode.DOWN));
             map.put("volume", kline.getVolume());
             list.add(map);
         }
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 e403aa1..6c90e9c 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
@@ -66,18 +66,18 @@
 				d.setType(bySymbol.getType());
 				d.setName(bySymbol.getName());
 				Integer decimals = bySymbol.getDecimals();
-				d.setClose(d.getClose().setScale(decimals, RoundingMode.HALF_UP));
-				d.setOpen(d.getOpen().setScale(decimals, RoundingMode.HALF_UP));
-				d.setHigh(d.getHigh().setScale(decimals, RoundingMode.HALF_UP));
-				d.setLow(d.getLow().setScale(decimals, RoundingMode.HALF_UP));
+				d.setClose(d.getClose().setScale(decimals, RoundingMode.DOWN));
+				d.setOpen(d.getOpen().setScale(decimals, RoundingMode.DOWN));
+				d.setHigh(d.getHigh().setScale(decimals, RoundingMode.DOWN));
+				d.setLow(d.getLow().setScale(decimals, RoundingMode.DOWN));
 				BigDecimal bigDecimal = BigDecimal.valueOf(1, decimals);
-				d.setAsk(d.getClose().add(bigDecimal).setScale(decimals, RoundingMode.HALF_UP));
-				d.setBid(d.getClose().subtract(bigDecimal).setScale(decimals, RoundingMode.HALF_UP));
+				d.setAsk(d.getClose().add(bigDecimal).setScale(decimals, RoundingMode.DOWN));
+				d.setBid(d.getClose().subtract(bigDecimal).setScale(decimals, RoundingMode.DOWN));
 				if(d.getVolume()!=null){
-					d.setVolume(d.getVolume().setScale(2, RoundingMode.HALF_UP));
+					d.setVolume(d.getVolume().setScale(2, RoundingMode.DOWN));
 				}
 				if(d.getAmount()!=null){
-					d.setAmount(d.getAmount().setScale(2, RoundingMode.HALF_UP));
+					d.setAmount(d.getAmount().setScale(2, RoundingMode.DOWN));
 				}
 				d.setSymbolData(bySymbol.getSymbolData());
 
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
index ff33664..93811cd 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
@@ -207,7 +207,7 @@
 		if(unitAmount == null){
 			unitAmount = BigDecimal.ZERO;
 		}
-		BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+		BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
 		return bigDecimal1.toPlainString();
 	}
 
@@ -219,7 +219,7 @@
 		if(unitAmount == null){
 			unitAmount = BigDecimal.ZERO;
 		}
-		BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+		BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
 		return bigDecimal2.toPlainString();
 	}
 
@@ -237,8 +237,8 @@
 		if(unitAmount == null){
 			unitAmount = BigDecimal.ZERO;
 		}
-		BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
-		BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+		BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
+		BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
 		return bigDecimal1.toPlainString()+"/"+bigDecimal2.toPlainString();
 	}
 
@@ -249,6 +249,6 @@
 		if(depositOpen == null){
 			depositOpen = BigDecimal.ZERO;
 		}
-		return deposit.setScale(2, RoundingMode.HALF_UP).toPlainString()+"/"+depositOpen.setScale(2, RoundingMode.HALF_UP).toPlainString();
+		return deposit.setScale(2, RoundingMode.DOWN).toPlainString()+"/"+depositOpen.setScale(2, RoundingMode.DOWN).toPlainString();
 	}
 }
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java b/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
index 53a008f..0bd120b 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
@@ -172,7 +172,7 @@
             return BigDecimal.ZERO;
 
         }
-        BigDecimal changeRatio = close.subtract(open).divide(open, 10, RoundingMode.HALF_UP);
+        BigDecimal changeRatio = close.subtract(open).divide(open, 10, RoundingMode.DOWN);
         changeRatio = changeRatio.multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
         return changeRatio;
 
@@ -180,7 +180,7 @@
     }
 
     public BigDecimal getNetChange() {
-        BigDecimal netChange = close.multiply(getChangeRatio()).divide(new BigDecimal(100), 10, RoundingMode.HALF_UP);
+        BigDecimal netChange = close.multiply(getChangeRatio()).divide(new BigDecimal(100), 10, RoundingMode.DOWN);
         netChange = netChange.setScale(4, RoundingMode.DOWN);
         return netChange;
     }
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java b/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
index 1024c89..4fa7c4e 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
@@ -73,9 +73,9 @@
 
 
 	public void divide(){
-		this.setProfitRatio(profitRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
-		this.setProfitRatioMax(profitRatioMax.divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP));
-		this.setUnitFee(unitFee.divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP));
+		this.setProfitRatio(profitRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN));
+		this.setProfitRatioMax(profitRatioMax.divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN));
+		this.setUnitFee(unitFee.divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN));
 	}
 
 }
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
index df096f9..4266d87 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
@@ -76,7 +76,7 @@
                         AdjustmentValueCache.getDelayValue().remove(symbol);
                     } else {
                         // 本次调整值
-                        BigDecimal currentValue_frequency = delayValue.getValue().divide(new BigDecimal(frequency), decimal, RoundingMode.HALF_UP);
+                        BigDecimal currentValue_frequency = delayValue.getValue().divide(new BigDecimal(frequency), decimal, RoundingMode.DOWN);
 
                         if (currentValue == null) {
                             AdjustmentValueCache.getCurrentValue().put(symbol, currentValue_frequency);
@@ -99,14 +99,14 @@
                 currentValue = AdjustmentValueCache.getCurrentValue().get(realtime.getSymbol());
 
                 if (currentValue != null && currentValue.compareTo(BigDecimal.ZERO) != 0) {
-                    realtime.setClose(realtime.getClose().add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setClose(realtime.getClose().add(currentValue).setScale(decimal, RoundingMode.DOWN));
                     BigDecimal ask = realtime.getAsk();
                     if(ask!=null){
-                        realtime.setAsk(ask.add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+                        realtime.setAsk(ask.add(currentValue).setScale(decimal, RoundingMode.DOWN));
                     }
                     BigDecimal bid = realtime.getBid();
                     if(bid!=null){
-                        realtime.setBid(bid.add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+                        realtime.setBid(bid.add(currentValue).setScale(decimal, RoundingMode.DOWN));
                     }
                     // realtime.setVolume(Arith.add(realtime.getVolume(), Arith.mul(Arith.div(currentValue, realtime.getClose()), realtime.getVolume())));
                     // realtime.setAmount(Arith.add(realtime.getAmount(), Arith.mul(Arith.div(currentValue, realtime.getClose()), realtime.getAmount())));
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
index 9aa50b4..4282697 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
@@ -569,14 +569,14 @@
                     realtime.setSymbol(currency);
                     realtime.setName(currency);
                     realtime.setTs(realtimeJson.getLong("timestamp"));
-                    realtime.setOpen(realtimeJson.getBigDecimal("open").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setClose(realtimeJson.getBigDecimal("mid").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setHigh(realtimeJson.getBigDecimal("high").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setLow(realtimeJson.getBigDecimal("low").setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setOpen(realtimeJson.getBigDecimal("open").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setClose(realtimeJson.getBigDecimal("mid").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setHigh(realtimeJson.getBigDecimal("high").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setLow(realtimeJson.getBigDecimal("low").setScale(decimal, RoundingMode.DOWN));
                     realtime.setAmount(BigDecimal.ZERO);
                     realtime.setVolume(BigDecimal.ZERO);
-                    realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setBid(realtimeJson.getBigDecimal("bid").setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setBid(realtimeJson.getBigDecimal("bid").setScale(decimal, RoundingMode.DOWN));
                     list.add(realtime);
                 }
             } else {
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
index a6e9c70..b379b8d 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
@@ -118,13 +118,13 @@
                 realtime.setSymbol(symbol);
                 realtime.setTs(timestamp);
                 realtime.setName(symbol);
-                realtime.setOpen(BigDecimal.valueOf(Double.parseDouble(split[5])).setScale(decimal, RoundingMode.HALF_UP));
-                realtime.setHigh(BigDecimal.valueOf(Double.parseDouble(split[6])).setScale(decimal, RoundingMode.HALF_UP));
-                realtime.setLow(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.HALF_UP));
+                realtime.setOpen(BigDecimal.valueOf(Double.parseDouble(split[5])).setScale(decimal, RoundingMode.DOWN));
+                realtime.setHigh(BigDecimal.valueOf(Double.parseDouble(split[6])).setScale(decimal, RoundingMode.DOWN));
+                realtime.setLow(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.DOWN));
                 if(StringUtils.isNotEmpty(split[1])){
-                    realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[1])).setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[1])).setScale(decimal, RoundingMode.DOWN));
                 }else{
-                    realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.DOWN));
                 }
                 realtime.setMarketCapital(0L);
                 realtime.setFloatMarketCapital(0L);
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
index aed4a9c..09bea2e 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
@@ -343,10 +343,10 @@
                         timestamp = timestamp / 1000;
                     }
                     realtime.setTs(timestamp);
-                    realtime.setOpen(jsonObject.getBigDecimal("open").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setClose(jsonObject.getBigDecimal("current").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setHigh(jsonObject.getBigDecimal("high").setScale(decimal, RoundingMode.HALF_UP));
-                    realtime.setLow(jsonObject.getBigDecimal("low").setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setOpen(jsonObject.getBigDecimal("open").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setClose(jsonObject.getBigDecimal("current").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setHigh(jsonObject.getBigDecimal("high").setScale(decimal, RoundingMode.DOWN));
+                    realtime.setLow(jsonObject.getBigDecimal("low").setScale(decimal, RoundingMode.DOWN));
                     realtime.setMarketCapital(jsonObject.getLong("market_capital"));
                     realtime.setFloatMarketCapital(jsonObject.getLong("float_market_capital"));
                     realtime.setPeForecast(jsonObject.getBigDecimal("pe_forecast"));
@@ -356,12 +356,12 @@
                     if (amount == null) {
                         amount = BigDecimal.ZERO;
                     }
-                    realtime.setAmount(amount.setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setAmount(amount.setScale(decimal, RoundingMode.DOWN));
                     BigDecimal volume = jsonObject.getBigDecimal("volume");
                     if (volume == null) {
                         volume = BigDecimal.ZERO;
                     }
-                    realtime.setVolume(volume.setScale(decimal, RoundingMode.HALF_UP));
+                    realtime.setVolume(volume.setScale(decimal, RoundingMode.DOWN));
 //                    realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.HALF_UP));
 //                    realtime.setBid(realtimeJson.getBigDecimal("pb").setScale(decimal, RoundingMode.HALF_UP));
                     list.add(realtime);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
index d1e99e7..05305bb 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -241,7 +241,8 @@
         Wallet wallet = this.walletService.findByUserId(order.getPartyId());
         BigDecimal amountBefore = wallet.getMoney();
         BigDecimal totalAmountCost = order.getDeposit().add(order.getFee());
-
+        log.info("amountBefore:"+amountBefore);
+        log.info("totalAmountCost:"+totalAmountCost);
         if (amountBefore.compareTo(totalAmountCost) < 0) {
             throw new YamiShopBindException("not sufficient funds");
         }
@@ -378,4 +379,12 @@
         return list(queryWrapper);
 
     }
+
+    public static void main(String[] args) {
+        System.out.println();
+        if (new BigDecimal("1432.34").compareTo(new BigDecimal("1432.34")) < 0) {
+            throw new YamiShopBindException("not sufficient funds");
+        }
+
+    }
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
index 607e3a9..4a56311 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -526,7 +526,7 @@
         BigDecimal point = close.subtract(order.getTradeAvgPrice());
         BigDecimal profit = point.multiply(new BigDecimal("0.01")).multiply(order.getVolumeOpen()).setScale(4, BigDecimal.ROUND_DOWN);;
         BigDecimal rentalProfit = order.getDeposit().add(profit);
-        BigDecimal rate = volume.divide(order.getVolumeOpen(), 2, RoundingMode.HALF_UP);
+        BigDecimal rate = volume.divide(order.getVolumeOpen(), 2, RoundingMode.DOWN);
         order.setAmountClose(order.getAmountClose().add(profit));
         order.setVolume(order.getVolume().subtract(volume));
         order.setDeposit(order.getDeposit().subtract(order.getDepositOpen().multiply(rate)));
@@ -803,13 +803,13 @@
         map.put("trade_avg_price", order.getTradeAvgPrice());
         map.put("close_avg_price", order.getCloseAvgPrice());
         if (order.getStopPriceProfit() != null) {
-            map.put("stop_price_profit", order.getStopPriceProfit().setScale(4, RoundingMode.HALF_UP));
+            map.put("stop_price_profit", order.getStopPriceProfit().setScale(4, RoundingMode.DOWN));
         }else{
             map.put("stop_price_profit", order.getStopPriceProfit());
 
         }
         if (order.getStopPriceLoss() != null) {
-            map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.HALF_UP));
+            map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.DOWN));
         }else{
             map.put("stop_price_loss", order.getStopPriceLoss());
         }
@@ -819,10 +819,10 @@
         map.put("fee", order.getFee());
         map.put("deposit", order.getDeposit());
         map.put("deposit_open", order.getDepositOpen());
-        map.put("change_ratio", order.getChangeRatio().setScale(2, RoundingMode.HALF_UP));
+        map.put("change_ratio", order.getChangeRatio().setScale(2, RoundingMode.DOWN));
 
         if(order.getProfit()!=null){
-            map.put("profit", order.getProfit().setScale(2, RoundingMode.HALF_UP));
+            map.put("profit", order.getProfit().setScale(2, RoundingMode.DOWN));
         }else{
             map.put("profit", order.getProfit());
         }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java b/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
index 6e62401..14103f0 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
@@ -345,7 +345,7 @@
 
         BigDecimal range = upperBound.subtract(lowerBound);
         BigDecimal randomValue = range.multiply(BigDecimal.valueOf(Math.random())).add(lowerBound);
-        return randomValue.setScale(3, RoundingMode.HALF_UP);
+        return randomValue.setScale(3, RoundingMode.DOWN);
     }
 
     private void printResult(List<Kline> originalSecKline) {
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java b/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
index 35db422..2c83986 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
@@ -90,10 +90,10 @@
         realtime.setName(symbol);
 
         realtime.setTs(kline.getTs() / 1000);
-        realtime.setOpen(kline.getOpen().setScale(decimal, RoundingMode.HALF_UP));
-        realtime.setClose(kline.getClose().setScale(decimal, RoundingMode.HALF_UP));
-        realtime.setHigh(kline.getHigh().setScale(decimal, RoundingMode.HALF_UP));
-        realtime.setLow(kline.getLow().setScale(decimal, RoundingMode.HALF_UP));
+        realtime.setOpen(kline.getOpen().setScale(decimal, RoundingMode.DOWN));
+        realtime.setClose(kline.getClose().setScale(decimal, RoundingMode.DOWN));
+        realtime.setHigh(kline.getHigh().setScale(decimal, RoundingMode.DOWN));
+        realtime.setLow(kline.getLow().setScale(decimal, RoundingMode.DOWN));
 //        realtime.setMarketCapital(realtimeJson.getLong("marketCapital"));
 //        realtime.setFloatMarketCapital(realtimeJson.getLong("floatMarketCapital"));
 //        realtime.setPeForecast(realtimeJson.getBigDecimal("peForecast"));
@@ -104,11 +104,11 @@
         BigDecimal lastAmount = (BigDecimal) Optional.ofNullable(redisTemplate.opsForHash().get(RedisKeys.SYMBOL_AMOUNT_VOLUME + symbol, "amount")).orElse(BigDecimal.ZERO);
         BigDecimal amount = Optional.of(kline.getAmount()).orElse(BigDecimal.ZERO);
 
-        realtime.setAmount(lastAmount.add(amount).setScale(decimal, RoundingMode.HALF_UP));
+        realtime.setAmount(lastAmount.add(amount).setScale(decimal, RoundingMode.DOWN));
         BigDecimal lastVolume = (BigDecimal) Optional.ofNullable(redisTemplate.opsForHash().get(RedisKeys.SYMBOL_AMOUNT_VOLUME + symbol, "volume")).orElse(BigDecimal.ZERO);
         BigDecimal volume = Optional.of(kline.getVolume()).orElse(BigDecimal.ZERO);
 
-        realtime.setVolume(lastVolume.add(volume).setScale(decimal, RoundingMode.HALF_UP));
+        realtime.setVolume(lastVolume.add(volume).setScale(decimal, RoundingMode.DOWN));
         realtime.setAsk(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(realtime.getLow(), realtime.getClose(), random)));
         realtime.setBid(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(realtime.getHigh(), realtime.getClose(), random)));
 
@@ -159,10 +159,10 @@
                 List<Realtime> realtimes = dataService.realtime(IXIC);
                 if (CollectionUtils.isNotEmpty(realtimes)) {
                     Realtime realtime = realtimes.get(0);
-                    BigDecimal ratio = realtime.getClose().divide(realtime.getOpen(), 10, RoundingMode.HALF_UP);
-                    BigDecimal close = ratio.multiply(kline.getClose()).setScale(2, RoundingMode.HALF_UP);
-                    BigDecimal low = ratio.multiply(kline.getLow()).setScale(2, RoundingMode.HALF_UP);
-                    BigDecimal high = ratio.multiply(kline.getHigh()).setScale(2, RoundingMode.HALF_UP);
+                    BigDecimal ratio = realtime.getClose().divide(realtime.getOpen(), 10, RoundingMode.DOWN);
+                    BigDecimal close = ratio.multiply(kline.getClose()).setScale(2, RoundingMode.DOWN);
+                    BigDecimal low = ratio.multiply(kline.getLow()).setScale(2, RoundingMode.DOWN);
+                    BigDecimal high = ratio.multiply(kline.getHigh()).setScale(2, RoundingMode.DOWN);
                     retKline.setClose(close);
                     retKline.setLow(low);
                     retKline.setHigh(high);
@@ -286,15 +286,15 @@
 
             buy = new DepthEntry();
             // 买
-            BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue();
-            buy.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
-            buy.setAmount(enlarge * volumeSplit.get(i).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+            BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue();
+            buy.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
+            buy.setAmount(enlarge * volumeSplit.get(i).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
 
             // 卖
             sell = new DepthEntry();
-            sell.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getHigh(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+            sell.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getHigh(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
 
-            sell.setAmount(enlarge * volumeSplit.get(i + 5).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+            sell.setAmount(enlarge * volumeSplit.get(i + 5).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
 
 
             depth.getAsks().add(sell);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
index a987339..359ca84 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
@@ -262,17 +262,17 @@
             toDayProfitLoss = (marketValue - (openPrice * volume));
             profitLoss = marketValue - cost;
             ExchangeSymbolDto exchangeSymbolDto = new ExchangeSymbolDto();
-            exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue());
+            exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue());
+            exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.DOWN).doubleValue());
             exchangeSymbolDto.setName(name);
             exchangeSymbolDto.setSymbol(key);
-            exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
             exchangeSymbolDto.setToDayProfitLossPercentage(calculateProfitPercentage(openPrice, currentPrice));
-            exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+            exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+            exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.DOWN).doubleValue());
+            exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
             exchangeSymbolDto.setProfitLossPercentage(calculateProfitPercentage(price, currentPrice));
             result.add(exchangeSymbolDto);
         }
@@ -284,7 +284,7 @@
         double profit = currentPrice - buyPrice;
         double profitPercentage = (profit / buyPrice) * 100;
         System.out.println(profitPercentage);
-        return new BigDecimal(profitPercentage).setScale(2, RoundingMode.HALF_UP).doubleValue();
+        return new BigDecimal(profitPercentage).setScale(2, RoundingMode.DOWN).doubleValue();
     }
 
     public static void test() {
@@ -315,15 +315,15 @@
 
         }
         SumEtfDto sumEtfDto = new SumEtfDto();
-        sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
-        sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
-        sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
+        sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+        sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
         // usdt余额
         Wallet wallet = new Wallet();
         if (!"".equals(userId) && userId != null) {
             wallet = walletService.findByUserId(userId.toString());
         }
-        sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.HALF_UP).doubleValue());
+        sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.DOWN).doubleValue());
         return sumEtfDto;
     }
 
@@ -579,12 +579,12 @@
             }
 
             map.put("create_time", DateUtil.formatDate(order.getCreateTime(), DateUtils.DF_yyyyMMddHHmmss));
-            map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP));
+            map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN));
             // 买的时候total 为volume,卖的时候total = volume*closeTime
             if("open".equalsIgnoreCase(order.getOffset())){
-                map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP));
+                map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN));
             }else{
-                map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.HALF_UP));
+                map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.DOWN));
             }
             map.put("offset", order.getOffset());
             map.put("price", order.getPrice());
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java b/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
index c7ea49a..b51f38a 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
@@ -61,7 +61,7 @@
         if (profitRatio.compareTo(val) < 0 || profitRatioMax.compareTo(val) < 0) {
             scale = 1;
         }
-        String profitRatioFront = profitRatio.setScale(scale, RoundingMode.HALF_UP) + "-" + profitRatioMax.setScale(scale, RoundingMode.HALF_UP);
+        String profitRatioFront = profitRatio.setScale(scale, RoundingMode.DOWN) + "-" + profitRatioMax.setScale(scale, RoundingMode.DOWN);
         futuresPara.setProfitRatioFront(profitRatioFront);
         BigDecimal unitMaxAmount =  futuresPara.getUnitMaxAmount().compareTo(BigDecimal.ZERO)<= 0?null: futuresPara.getUnitMaxAmount();
         futuresPara.setBuyMin(new BigDecimal(futuresPara.getUnitAmount()));
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
index 93828f3..cbe3b9e 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
@@ -38,7 +38,7 @@
         if (result < 0) {
             return 0;
         }
-        return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+        return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
     }
 
 
@@ -66,7 +66,7 @@
         if (result < 0) {
             return 0;
         }
-        return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+        return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
     }
 
 
@@ -139,7 +139,7 @@
         if (result < 0) {
             return 0;
         }
-        return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+        return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
     }
 
 
@@ -166,7 +166,7 @@
         if (result < 0) {
             return 0;
         }
-        return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+        return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
     }
 
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
index defdf3e..37f6804 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
@@ -611,7 +611,7 @@
                     throw new YamiShopBindException("操作失败!修正后账户余额小于0。");
                 }
                 walletService.updateExtend(walletExtend.getPartyId().toString(), gift_symbol, gift_sum);
-                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
                 userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue());
 
                 /*
@@ -753,7 +753,7 @@
                 if (Arith.add(gift_sum, walletExtend.getAmount()) < 0.0D) {
                     throw new YamiShopBindException("操作失败!修正后账户余额小于0。");
                 }
-                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
                 userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue());                // 保存账变日志
 //                MoneyLog moneyLog = new MoneyLog();
 //                moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
@@ -1432,7 +1432,7 @@
                 if (!walletExtendService.saveOrUpdate(walletExtend)) {
                     throw new YamiShopBindException("操作钱包失败!");
                 }
-                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+                BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
                 userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue());
 
                 // 保存账变日志

--
Gitblit v1.9.3