From 539f733f62f4a368eb90a07a729b5d948378a705 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Sat, 19 Jul 2025 18:29:07 +0800
Subject: [PATCH] 后台新增建仓列表 新股列表新增购买状态
---
src/main/java/com/nq/utils/UserPointUtil.java | 69 +++++++++++++++++++++++++++++++++-
1 files changed, 66 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/nq/utils/UserPointUtil.java b/src/main/java/com/nq/utils/UserPointUtil.java
index 66376a2..2f4d8e7 100644
--- a/src/main/java/com/nq/utils/UserPointUtil.java
+++ b/src/main/java/com/nq/utils/UserPointUtil.java
@@ -1,11 +1,13 @@
package com.nq.utils;
+import com.github.pagehelper.util.StringUtil;
import com.nq.pojo.UserPosition;
import com.nq.vo.position.PositionProfitVO;
import com.nq.vo.position.UserPositionVO;
import java.math.BigDecimal;
+import java.math.RoundingMode;
/**
* 仓位计算工具类
@@ -51,12 +53,42 @@
PositionProfitVO positionProfitVO = getPositionProfitVO(position,nowPrice);
BigDecimal ss = positionProfitVO.getProfitAndLose().divide(userPositionVO.getOrderTotalPrice(),BigDecimal.ROUND_CEILING)
.multiply(new BigDecimal(100));
+ ss = ss.setScale(2, BigDecimal.ROUND_DOWN);
userPositionVO.setProfitAndLoseParent(ss+"%");
+ userPositionVO.setProfitAndLoseParent2(ss);
userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
- userPositionVO.setNow_price(positionProfitVO.getNowPrice());
+ if(StringUtil.isEmpty(userPositionVO.getSellOrderId())){
+ userPositionVO.setNow_price(nowPrice.toString());
+ }else{
+ userPositionVO.setNow_price(position.getSellOrderPrice().toString());
+ }
+ userPositionVO.setAmountToBeCovered(position.getAmountToBeCovered());
return userPositionVO;
}
+
+
+ /**
+ * 返回当前 仓位表 实时数据
+ * */
+ public static UserPositionVO assembleUserPositionVO2(UserPositionVO userPositionVO,BigDecimal nowPrice) {
+ PositionProfitVO positionProfitVO = getPositionProfitVO2(userPositionVO, nowPrice);
+ BigDecimal ss = positionProfitVO.getProfitAndLose().divide(userPositionVO.getOrderTotalPrice(), RoundingMode.CEILING)
+ .multiply(new BigDecimal(100));
+ ss = ss.setScale(2, RoundingMode.DOWN);
+ userPositionVO.setProfitAndLoseParent(ss+"%");
+ userPositionVO.setProfitAndLoseParent2(ss);
+ userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
+ userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
+ if(StringUtil.isEmpty(userPositionVO.getSellOrderId())){
+ userPositionVO.setNow_price(nowPrice.toString());
+ }else{
+ userPositionVO.setNow_price(userPositionVO.getSellOrderPrice().toString());
+ }
+ userPositionVO.setAmountToBeCovered(userPositionVO.getAmountToBeCovered());
+ return userPositionVO;
+ }
+
/**
* 计算仓位盈亏计算方法
@@ -72,7 +104,7 @@
if ("买跌".equals(position.getOrderDirection())) {
profitAndLose = profitAndLose.negate();
}
- allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
} else {
BigDecimal subPrice = nowPrice.subtract(position.getBuyOrderPrice());
profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
@@ -80,7 +112,38 @@
profitAndLose = profitAndLose.negate();
}
//总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费
- allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ }
+ PositionProfitVO positionProfitVO = new PositionProfitVO();
+ positionProfitVO.setProfitAndLose(profitAndLose);
+ positionProfitVO.setAllProfitAndLose(allProfitAndLose);
+ positionProfitVO.setNowPrice(nowPrice.setScale(5,BigDecimal.ROUND_UP).toString());
+ return positionProfitVO;
+ }
+
+ /**
+ * 计算仓位盈亏计算方法
+ * */
+ public static PositionProfitVO getPositionProfitVO2(UserPositionVO position,BigDecimal nowPrice) {
+ BigDecimal profitAndLose = new BigDecimal("0");
+ BigDecimal allProfitAndLose = new BigDecimal("0");
+
+ if (position.getSellOrderId() != null) {
+
+ BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
+ if ("买跌".equals(position.getOrderDirection())) {
+ profitAndLose = profitAndLose.negate();
+ }
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ } else {
+ BigDecimal subPrice = nowPrice.subtract(position.getBuyOrderPrice());
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
+ if ("买跌".equals(position.getOrderDirection())) {
+ profitAndLose = profitAndLose.negate();
+ }
+ //总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
}
PositionProfitVO positionProfitVO = new PositionProfitVO();
positionProfitVO.setProfitAndLose(profitAndLose);
--
Gitblit v1.9.3