From d4ab82f09c8900c603703d48a2635b54f872d122 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Wed, 29 Oct 2025 11:49:04 +0800
Subject: [PATCH] 大宗持仓
---
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java | 77 ++++++++++++++++++++++++++++++++------
1 files changed, 65 insertions(+), 12 deletions(-)
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
index f57759a..cc1b3b3 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
@@ -7,12 +7,16 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yami.trading.bean.contract.domain.ContractApplyOrder;
+import com.yami.trading.bean.data.domain.Realtime;
import com.yami.trading.bean.dz.ExchangeApplyOrderDz;
import com.yami.trading.bean.dz.StockDz;
+import com.yami.trading.bean.exchange.ExchangeApplyOrder;
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.bean.model.MoneyLog;
import com.yami.trading.bean.model.User;
import com.yami.trading.bean.model.Wallet;
+import com.yami.trading.bean.model.WalletExtend;
import com.yami.trading.bean.syspara.domain.Syspara;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.domain.Result;
@@ -23,7 +27,9 @@
import com.yami.trading.dao.dz.StockDzMapper;
import com.yami.trading.service.MoneyLogService;
import com.yami.trading.service.WalletService;
+import com.yami.trading.service.data.DataService;
import com.yami.trading.service.dz.StockDzService;
+import com.yami.trading.service.exchange.ExchangeApplyOrderService;
import com.yami.trading.service.item.ItemService;
import com.yami.trading.service.syspara.SysparaService;
import com.yami.trading.service.user.UserService;
@@ -64,6 +70,12 @@
@Resource
private ItemService itemService;
+ @Resource
+ private ExchangeApplyOrderService exchangeApplyOrderService;
+
+ @Resource
+ private DataService dataService;
+
@Override
public Result getDzList(int pageNum, int pageSize, String orderBy, String keyWords, String stockType) {
try {
@@ -99,7 +111,7 @@
stockDz.setStockCode(item.getSymbol());
stockDz.setStockType(item.getType());
stockDz.setStockSpell(item.getSymbolData());
- stockDz.setIsLock(1);
+ stockDz.setIsLock(0);
stockDz.setIsShow(1);
stockDz.setAddTime(new Date());
stockDz.setStockNum(Integer.valueOf(stockNum));
@@ -227,7 +239,7 @@
throw new YamiShopBindException("股票价格0,请重试");
}
if (stockDz.getStockNum() > num) {
- throw new YamiShopBindException("最小购买数据" + stockDz.getStockNum());
+ throw new YamiShopBindException("最小购买数量" + stockDz.getStockNum());
}
Wallet wallet = this.walletService.saveWalletByPartyId(partyId);
@@ -246,6 +258,7 @@
order.setPartyId(partyId);
order.setSymbol(stockDz.getStockCode());
order.setSymbolValue(num);
+ order.setDzId(stockDz.getUuid());
order.setVolume(buyAmt.doubleValue());
order.setPrice(nowPrice.doubleValue());
order.setOrderNo(com.yami.trading.common.util.DateUtil.getToday("yyMMddHHmmss") + RandomUtil.getRandomNum(8));
@@ -265,11 +278,12 @@
walletService.update(wallet.getUserId(), Arith.sub(0, orderAmt.doubleValue()));
//TODO 转持仓
+ this.intoPosition(order, stockDz.getStockType());
MoneyLog log = new MoneyLog();
log.setCategory(Constants.MONEYLOG_CATEGORY_EXCHANGE);
- String name = Constants.MONEYLOG_MAP.get(Constants.US_STOCKS);
- String type2 = Constants.MONEYLOG_MAP_TYPE.get(Constants.US_STOCKS);
+ String name = Constants.MONEYLOG_MAP.get(stockDz.getStockType());
+ String type2 = Constants.MONEYLOG_MAP_TYPE.get(stockDz.getStockType());
log.setAmountBefore(amountBefore);
log.setAmount(orderAmt.negate());
log.setAmountAfter(amountBefore.subtract(orderAmt));
@@ -284,13 +298,13 @@
return Result.succeed("购买成功");
} catch (Exception e) {
log.error(e.getMessage());
+ return Result.failed("操作失败:" + e.getMessage());
}
- return Result.failed("操作失败");
}
@Transactional
@Override
- public Result dzCheck(String id, Integer checkType, double orderNum) {
+ public Result dzCheck(String id, Integer checkType, Double orderNum) {
try {
ExchangeApplyOrderDz order = exchangeApplyOrderDzMapper.selectById(id);
if (order == null) {
@@ -303,13 +317,13 @@
if (checkType == 2) {
order.setState(ExchangeApplyOrderDz.STATE_FAILED);
exchangeApplyOrderDzMapper.updateById(order);
- throw new YamiShopBindException("审核成功");
+ return Result.succeed("操作成功");
}
if (orderNum > order.getSymbolValue()) {
throw new YamiShopBindException("输入数量大于用户买入数量");
}
- StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("id", order.getDzId()));
+ StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("uuid", order.getDzId()));
if (stockDz == null) {
throw new YamiShopBindException("大宗不存在");
}
@@ -339,12 +353,12 @@
walletService.update(wallet.getUserId(), Arith.sub(0, orderAmt.doubleValue()));
//TODO 转持仓
-
+ this.intoPosition(order, stockDz.getStockType());
MoneyLog log = new MoneyLog();
log.setCategory(Constants.MONEYLOG_CATEGORY_EXCHANGE);
- String name = Constants.MONEYLOG_MAP.get(Constants.US_STOCKS);
- String type2 = Constants.MONEYLOG_MAP_TYPE.get(Constants.US_STOCKS);
+ String name = Constants.MONEYLOG_MAP.get(stockDz.getStockType());
+ String type2 = Constants.MONEYLOG_MAP_TYPE.get(stockDz.getStockType());
log.setAmountBefore(amountBefore);
log.setAmount(orderAmt.negate());
log.setAmountAfter(amountBefore.subtract(orderAmt));
@@ -359,8 +373,47 @@
return Result.succeed("审核成功,订单已转客户持仓");
} catch (Exception e) {
log.error(e.getMessage());
+ return Result.failed("操作失败:" + e.getMessage());
}
- return Result.failed("操作失败");
+ }
+
+ public void intoPosition(ExchangeApplyOrderDz orderDz, String stockType) {
+ ExchangeApplyOrder exOrder = new ExchangeApplyOrder();
+ exOrder.setPartyId(orderDz.getPartyId());
+ exOrder.setSymbol(orderDz.getSymbol());
+ exOrder.setOffset(ExchangeApplyOrder.OFFSET_OPEN);
+ exOrder.setSymbolValue(orderDz.getSymbolValue());
+ exOrder.setVolume(orderDz.getVolume());
+ exOrder.setPrice(orderDz.getPrice());
+ exOrder.setOrderPriceType(ContractApplyOrder.ORDER_PRICE_TYPE_OPPONENT);
+ exOrder.setState(ExchangeApplyOrder.STATE_CREATED);
+ exOrder.setClosePrice(orderDz.getPrice());
+ exOrder.setOrderNo(com.yami.trading.common.util.DateUtil.getToday("yyMMddHHmmss") + RandomUtil.getRandomNum(8));
+ exOrder.setFee(orderDz.getFee());
+ exOrder.setCreateTime(new Date());
+
+ double realValue = exOrder.getSymbolValue();
+ //入账
+ WalletExtend walletExtend = walletService.saveExtendByPara(exOrder.getPartyId(), exOrder.getSymbol());
+ double amountBeforeExtend = walletExtend.getAmount();
+ this.walletService.updateExtend(walletExtend.getPartyId(), walletExtend.getWallettype(), realValue);
+
+ MoneyLog log = new MoneyLog();
+ log.setCategory(Constants.MONEYLOG_CATEGORY_EXCHANGE);
+ String name = Constants.MONEYLOG_MAP.get(stockType);
+ String type2 = Constants.MONEYLOG_MAP_TYPE.get(stockType);
+ log.setAmountBefore(new BigDecimal(amountBeforeExtend));
+ log.setAmount(BigDecimal.valueOf(realValue));
+ log.setAmountAfter(BigDecimal.valueOf(amountBeforeExtend + realValue));
+ log.setLog(name + type2 + "现货交易买入委托单成交,订单号[" + exOrder.getOrderNo() + "]");
+ log.setUserId(exOrder.getPartyId());
+ log.setSymbol(exOrder.getSymbol());
+ log.setWalletType(exOrder.getSymbol());
+ log.setContentType(type2 + Constants.MONEYLOG_CONTENT_OPEN);
+ // 记录账变日志
+ moneyLogService.save(log);
+
+ exchangeApplyOrderService.save(exOrder);
}
--
Gitblit v1.9.3