From 36e04e9e9cdcebd3305316c8d93d97d351d47f9d Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Sat, 15 Nov 2025 16:43:28 +0800
Subject: [PATCH] 委托成本
---
trading-order-service/src/main/java/com/yami/trading/service/exchange/ExchangeApplyOrderService.java | 5 +++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java | 19 +++++++++++++++++++
trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java | 11 +++++++++++
3 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
index ee906ee..da68acf 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -37,6 +37,7 @@
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
@@ -393,6 +394,24 @@
map.put("close_price", order.getClosePrice());
map.put("close_time", order.getCloseTime());
map.put("close_time_ts", order.getCloseTime() == null ? "" : order.getCloseTime().getTime());
+
+ if (ExchangeApplyOrder.OFFSET_CLOSE.equals(order.getOffset())) {
+ List<ExchangeSymbolDto> exchangeSymbolDtos = exchangeApplyOrderService.querySpotTradPosition(order.getPartyId(), order.getSymbol());
+ if (exchangeSymbolDtos != null && !exchangeSymbolDtos.isEmpty()) {
+ ExchangeSymbolDto exchangeSymbolDto = exchangeSymbolDtos.get(0);
+ double costPrice = exchangeSymbolDto.getPrice();
+ //单个收益
+ double profitLoss = order.getClosePrice() - costPrice;
+ double profitLossPercentage = (profitLoss / costPrice ) * 100;
+ profitLossPercentage = new BigDecimal(profitLossPercentage).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ //总收益
+ double profitLossSum = new BigDecimal(profitLoss * order.getVolume()).setScale(4, RoundingMode.HALF_UP).doubleValue();
+
+ map.put("costPrice", costPrice);
+ map.put("profitLoss", profitLossSum);
+ map.put("profitLossPercentage", profitLossPercentage);
+ }
+ }
return map;
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/exchange/ExchangeApplyOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/exchange/ExchangeApplyOrderService.java
index b606ece..3cda9ee 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/exchange/ExchangeApplyOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/exchange/ExchangeApplyOrderService.java
@@ -85,6 +85,11 @@
*/
List<ExchangeSymbolDto> querySpotTradPositionList(String userId);
+ /**
+ * 查询现货交易持仓单列表-单个
+ */
+ List<ExchangeSymbolDto> querySpotTradPosition(String userId, String symbol);
+
List<TodayTransactionDto> getTodayTransaction(String symbol, String currentUserId,
Date startDate,
Date endDate);
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 36f54ce..183a2f9 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
@@ -219,6 +219,17 @@
return getSettleList(list);
}
+ @Override
+ public List<ExchangeSymbolDto> querySpotTradPosition(String userId, String symbol) {
+ LambdaQueryWrapper<ExchangeApplyOrder> lambdaQueryWrapper = Wrappers.<ExchangeApplyOrder>query().lambda();
+ lambdaQueryWrapper.eq(ExchangeApplyOrder::getPartyId, userId);
+ lambdaQueryWrapper.eq(ExchangeApplyOrder::getSymbol, symbol);
+ lambdaQueryWrapper.eq(ExchangeApplyOrder::getState, ExchangeApplyOrder.STATE_CREATED);
+ lambdaQueryWrapper.orderByDesc(ExchangeApplyOrder::getCreateTime);
+ List<ExchangeApplyOrder> list = list(lambdaQueryWrapper);
+ return getDataList(list);
+ }
+
public List<ExchangeSymbolDto> getSettleList(List<ExchangeApplyOrder> dbList) {
List<ExchangeSymbolDto> result = new ArrayList<>();
Map<String, List<ExchangeSymbolDto>> map = new HashMap<>();
--
Gitblit v1.9.3