1
zj
2025-05-08 4130970dd61791e0a5cb0771a9b707084f1ed464
src/main/java/com/nq/utils/UserPointUtil.java
@@ -1,9 +1,13 @@
package com.nq.utils;
import com.github.pagehelper.util.StringUtil;
import com.nq.pojo.UserPosition;
import com.nq.service.impl.UserServiceImpl;
import com.nq.vo.position.PositionProfitVO;
import com.nq.vo.position.UserPositionVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
@@ -11,6 +15,7 @@
 * 仓位计算工具类
 * */
public class UserPointUtil {
    private static final Logger log = LoggerFactory.getLogger(UserPointUtil.class);
    /**
@@ -49,12 +54,27 @@
        userPositionVO.setStockPlate(position.getStockPlate());
        userPositionVO.setSpreadRatePrice(position.getSpreadRatePrice());
        PositionProfitVO positionProfitVO = getPositionProfitVO(position,nowPrice);
       BigDecimal ss =  positionProfitVO.getProfitAndLose().divide(userPositionVO.getOrderTotalPrice(),BigDecimal.ROUND_CEILING)
               .multiply(new BigDecimal(100));
        BigDecimal profitAndLose = positionProfitVO.getProfitAndLose();
        BigDecimal orderTotalPrice = userPositionVO.getOrderTotalPrice();
        BigDecimal ss = BigDecimal.ZERO;
        if (orderTotalPrice.compareTo(BigDecimal.ZERO) == 0) {
            // 如果分母为0,可以选择返回一个默认值,比如BigDecimal.ZERO
            // 或者根据业务逻辑进行其他处理
            ss = BigDecimal.ZERO;
        } else {
            ss = profitAndLose.divide(orderTotalPrice, BigDecimal.ROUND_CEILING)
                    .multiply(new BigDecimal(100));
        }
        userPositionVO.setProfitAndLoseParent(ss.setScale(2, BigDecimal.ROUND_DOWN)+"%");
        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;
    }
@@ -64,7 +84,6 @@
    public static PositionProfitVO getPositionProfitVO(UserPosition position,BigDecimal nowPrice) {
        BigDecimal profitAndLose = new BigDecimal("0");
        BigDecimal allProfitAndLose = new BigDecimal("0");
        if (position.getSellOrderId() != null) {
            BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());