From 566a1b9fda0276e2cc4a35f7ba322c0e599a2c84 Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Wed, 26 Nov 2025 16:03:05 +0800
Subject: [PATCH] 修改

---
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 8dde425..c6f7764 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -715,13 +715,15 @@
         BigDecimal all_sell_amt = now_price.multiply(new BigDecimal(buy_num.intValue()));
 
         BigDecimal profitLoss = new BigDecimal("0");
-        if ("買漲".equals(userPosition.getOrderDirection())) {
+        if ("买涨".equals(userPosition.getOrderDirection())) {
             log.info("買賣方向:{}", "漲");
 
-            profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+//            profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+            profitLoss = all_sell_amt.subtract(all_buy_amt).setScale(2,4);
         } else {
             log.info("買賣方向:{}", "跌");
-            profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+//            profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+            profitLoss = all_buy_amt.subtract(all_sell_amt).setScale(2,4);
         }
         log.info("買入總金額 = {} , 賣出總金額 = {} , 盈虧 = {}", new Object[]{all_buy_amt, all_sell_amt, profitLoss});
 
@@ -813,6 +815,7 @@
 
         return ServerResponse.createBySuccessMsg("平倉成功!");
     }
+
 
     //用户追加保证金操作
     public ServerResponse addmargin(String positionSn, int doType, BigDecimal marginAdd) throws Exception {
@@ -1629,6 +1632,7 @@
         userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
         userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
         userPositionVO.setNow_price(positionProfitVO.getNowPrice());
+        userPositionVO.setAllProfitAndLoseStr(positionProfitVO.getAllProfitAndLoseStr());
 
 
         return userPositionVO;
@@ -1637,12 +1641,14 @@
     public PositionProfitVO getPositionProfitVO(UserPosition position) {
         BigDecimal profitAndLose = new BigDecimal("0");
         BigDecimal allProfitAndLose = new BigDecimal("0");
+        String allProfitAndLoseStr = "";
         String nowPrice = "";
 
         if (position.getSellOrderId() != null) {
 
             BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());
-            profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+//            profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+            profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4);
             if ("买跌".equals(position.getOrderDirection())) {
                 profitAndLose = profitAndLose.negate();
             }
@@ -1671,10 +1677,14 @@
 
             //总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费
             allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+            //改成盈亏百分比
+            BigDecimal allProfitAndLoseStrTemp = new BigDecimal(nowPrice).subtract(position.getBuyOrderPrice()).divide(position.getBuyOrderPrice(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2,4);
+            allProfitAndLoseStr = allProfitAndLoseStrTemp.toString() + "%";
         }
         PositionProfitVO positionProfitVO = new PositionProfitVO();
         positionProfitVO.setProfitAndLose(profitAndLose);
         positionProfitVO.setAllProfitAndLose(allProfitAndLose);
+        positionProfitVO.setAllProfitAndLoseStr(allProfitAndLoseStr);
         positionProfitVO.setNowPrice(nowPrice);
 
         return positionProfitVO;

--
Gitblit v1.9.3