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-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java |   56 +++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 19 deletions(-)

diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
index c7a844f..575e52f 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
@@ -20,7 +20,7 @@
 @Data
 @EqualsAndHashCode(callSuper = false)
 @TableName("t_contract_order")
-public class ContractOrder extends BaseEntity {
+public class  ContractOrder extends BaseEntity {
     public final static String STATE_SUBMITTED = "submitted";
     public final static String STATE_CREATED = "created";
     /**
@@ -133,6 +133,17 @@
 
     private String orderPriceType;
 
+    /**
+     * 仓位类型:0:逐仓 1:全仓
+     */
+    private Integer locationType = 1;
+
+
+    /**
+     * 盈亏比
+     */
+    private Double profitLossRatio;
+
     public BigDecimal getAmountClose() {
         if(amountClose == null){
             amountClose = BigDecimal.ZERO;
@@ -178,25 +189,32 @@
     }
 
     public BigDecimal getChangeRatio() {
-        if(amountClose == null){
-            amountClose = BigDecimal.ZERO;
-        }
-        if(profit == null){
-            profit = BigDecimal.ZERO;
-        }
-        if(deposit == null){
-            deposit = BigDecimal.ZERO;
-        }
-        if(depositOpen == null){
-            depositOpen = BigDecimal.ZERO;
-        }
-        if (STATE_SUBMITTED.equals(state)) {
-            changeRatio = amountClose.add(profit).add(deposit).subtract(depositOpen).divide(depositOpen,10 , RoundingMode.HALF_UP);
-        } else {
-            changeRatio = amountClose.add(deposit).subtract(depositOpen).divide(depositOpen, 10 , RoundingMode.HALF_UP);
-        }
+//        if(amountClose == null){
+//            amountClose = BigDecimal.ZERO;
+//        }
+//        if(profit == null){
+//            profit = BigDecimal.ZERO;
+//        }
+//        if(deposit == null){
+//            deposit = BigDecimal.ZERO;
+//        }
+//        if(depositOpen == null){
+//            depositOpen = BigDecimal.ZERO;
+//        }
+//        if (STATE_SUBMITTED.equals(state)) {
+//            changeRatio = amountClose.add(profit).add(deposit).subtract(depositOpen).divide(depositOpen,10 , RoundingMode.HALF_UP);
+//        } else {
+//            changeRatio = amountClose.add(deposit).subtract(depositOpen).divide(depositOpen, 10 , RoundingMode.HALF_UP);
+//        }
+//
+//        changeRatio = changeRatio.multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP);
+        // 计算收益率,指定除法时的精度
+        BigDecimal changeRatio = profit.divide(depositOpen, 10, BigDecimal.ROUND_DOWN)  // 设置精度为10位
+                .multiply(new BigDecimal("100"));
 
-        changeRatio = changeRatio.multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP);
+        // 保留两位小数
+        changeRatio = changeRatio.setScale(4, BigDecimal.ROUND_DOWN);
+
         return changeRatio;
     }
 

--
Gitblit v1.9.3