From 4affbdf8938d321c0926bc2b1832dfc81c317ffa Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 08 Jan 2026 18:49:30 +0800
Subject: [PATCH] ipo
---
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java | 27 +++++++++++++
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java | 7 ++-
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java | 6 ++-
trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java | 3 +
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java | 3 +
trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java | 2
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java | 3 +
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java | 8 +++
trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java | 10 +++-
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java | 1
10 files changed, 61 insertions(+), 9 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
index eef2f9a..5172e3a 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java
@@ -1,12 +1,17 @@
package com.yami.trading.admin.controller.dz;
+import com.yami.trading.bean.dz.ExchangeApplyOrderDz;
import com.yami.trading.bean.dz.StockDz;
+import com.yami.trading.bean.ipo.ApplyNewSharesOrder;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.domain.Result;
+import com.yami.trading.common.exception.BusinessException;
+import com.yami.trading.dao.dz.ExchangeApplyOrderDzMapper;
import com.yami.trading.service.dz.StockDzService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -20,6 +25,9 @@
@Resource
StockDzService stockDzService;
+
+ @Resource
+ ExchangeApplyOrderDzMapper exchangeApplyOrderDzMapper;
@ApiOperation("获取etf列表")
@PostMapping({"getDzListByAdmin.do"})
@@ -92,4 +100,23 @@
return stockDzService.dzCheck(id, checkType, orderNum, 0);
}
+ @ApiOperation(value = "解锁/锁定")
+ @PostMapping("unLock")
+ public Result unLock(String id){
+ if (StringUtils.isEmpty(id)){
+ throw new BusinessException("请选择申购订单记录");
+ }
+ ExchangeApplyOrderDz order = exchangeApplyOrderDzMapper.selectById(id);
+ if (order == null){
+ throw new BusinessException("未查到订单");
+ }
+ if (order.getUnLock() != null && order.getUnLock() == 1) {
+ order.setUnLock(0);
+ } else {
+ order.setUnLock(1);
+ }
+ exchangeApplyOrderDzMapper.updateById(order);
+ return Result.succeed();
+ }
+
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java
index 78ca054..65799a6 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java
@@ -129,8 +129,11 @@
}
if (model.getStatus()==2){
if (order.getWinningNumber() == null || order.getWinningNumber().compareTo(BigDecimal.ZERO) == 0) {
- order.setWinningNumber(order.getSubNumber());
+ throw new BusinessException("请先设置中签数量!");
}
+ /*if (order.getWinningNumber() == null || order.getWinningNumber().compareTo(BigDecimal.ZERO) == 0) {
+ order.setWinningNumber(order.getSubNumber());
+ }*/
order.setRequiredNumber(order.getWinningNumber().multiply(order.getSubPrice()));
if (applyNewSharesOrderService.subscribe(order)) {
@@ -151,7 +154,6 @@
if (StringUtils.isEmpty(orderNo)){
throw new BusinessException("请选择申购订单记录");
}
- System.out.println(orderNo);
ApplyNewSharesOrder order= applyNewSharesOrderService.findByOrderNo(orderNo);
if (order == null){
throw new BusinessException("未查到订单");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java
index 92c7b49..86fa5a7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java
@@ -93,7 +93,7 @@
}*/
LambdaQueryWrapper<ApplyNewSharesOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ApplyNewSharesOrder::getSell, 0);
- queryWrapper.gt(ApplyNewSharesOrder::getSubscribedAmount, BigDecimal.ZERO);
+ //queryWrapper.gt(ApplyNewSharesOrder::getSubscribedAmount, BigDecimal.ZERO);
queryWrapper.gt(ApplyNewSharesOrder::getRequiredNumber, BigDecimal.ZERO);
queryWrapper.apply("subscribed_amount < required_number");
List<ApplyNewSharesOrder> orders = applyNewSharesOrderService.list(queryWrapper);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java
index 85b5efa..8791cd0 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java
@@ -218,11 +218,15 @@
}
if (CollectionUtil.isNotEmpty(realtimes)) {
Realtime realtime = realtimes.get(0);
- BigDecimal newMarketValue = order.getWinningNumber().multiply(BigDecimal.valueOf(realtime.getClose()));
+ double close = realtime.getClose();
+ if (order.getSell() == 1 && (order.getSellPrice() != null && order.getSellPrice().compareTo(BigDecimal.ZERO) > 0)) {
+ close = order.getSellPrice().doubleValue();
+ }
+ BigDecimal newMarketValue = order.getWinningNumber().multiply(BigDecimal.valueOf(close));
inventoryGainsLosses = newMarketValue.subtract(initMarketValue);
order.setMarketValue(newMarketValue.doubleValue());
- order.setClosePrice(BigDecimal.valueOf(realtime.getClose()));
- order.setInventoryGainsLossesValue(calculateProfitPercentage(order.getSubPrice().doubleValue(), realtime.getClose()));
+ order.setClosePrice(BigDecimal.valueOf(close));
+ order.setInventoryGainsLossesValue(calculateProfitPercentage(order.getSubPrice().doubleValue(), close));
} else {
order.setMarketValue(initMarketValue.doubleValue());
}
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java
index d92ccaa..b153e68 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java
@@ -49,6 +49,9 @@
@ApiModelProperty("状态.submitted 已提交,position 持仓,closed 结算,failed 失败")
private String state = "submitted";
+ @ApiModelProperty("是否解锁 1 解锁 0 未解锁")
+ private Integer unLock = 0;
+
private Date createTime;
@ApiModelProperty("卖出价格")
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java b/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java
index 70ac44b..384926d 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java
@@ -50,6 +50,9 @@
@ApiModelProperty("卖出状态 1 已卖出 0 未卖出")
private int sell;
+ @ApiModelProperty("卖出价格")
+ private BigDecimal sellPrice;
+
@ApiModelProperty("已认缴金额")
private BigDecimal subscribedAmount;
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java b/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java
index 9b0571c..46e4dc9 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java
@@ -19,6 +19,9 @@
@ApiModelProperty("申购状态 1 申购中 2已中签 3 未中签")
private int status;
+ @ApiModelProperty("卖出状态 1 已卖出 0 未卖出")
+ private int sell;
+
private String userId;
@ApiModelProperty("股票代码")
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 d211588..f37af6f 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
@@ -687,11 +687,17 @@
// 锁仓截至时间
Date resultTime = calendar.getTime();
if (!isAdmin) {
+
if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
- if(now.getTime() < resultTime.getTime()){
+ if ((order.getUnLock() == null || order.getUnLock() == 0) && now.getTime() < resultTime.getTime()) {
+ return Result.failed("未到平仓时间");
+ }
+ } else {
+ if (order.getUnLock() == null || order.getUnLock() == 0) {
return Result.failed("未到平仓时间");
}
}
+
if (!stockDz.getStockName().contains("测试")) {
boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS);
if (!isOpen) {
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java
index 5f5fdc5..2f3c4bc 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java
@@ -174,6 +174,7 @@
//资金不足 进入待补
isDb = true;
//BigDecimal amountToBeCovered = amt.subtract(wallet.getMoney());
+ amt = wallet.getMoney();
wallet.setMoney(BigDecimal.ZERO);
//wallet.setAmountToBeCovered(wallet.getAmountToBeCovered().add(amountToBeCovered));
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java
index 871c2fa..b308da9 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java
@@ -85,7 +85,7 @@
if (newSharesConfig==null){
throw new YamiShopBindException("现股已被删除");
}
- applyNewSharesOrderService.updateById(applyNewSharesOrder);
+ //applyNewSharesOrderService.updateById(applyNewSharesOrder);
List<UserPromiseRecord> userPromiseRecords= findByOrderNo(orderNo);
for (UserPromiseRecord u:userPromiseRecords){
if ( u.getStatus()==1){
@@ -122,6 +122,7 @@
throw new YamiShopBindException("现股已卖出");
}
Realtime realtime= realtimes.get(0);
+ applyNewSharesOrder.setSellPrice(BigDecimal.valueOf(realtime.getClose()));
usdt = userPromiseRecord.getDeductNumber().multiply(BigDecimal.valueOf(realtime.getClose()));
userPromiseRecord.setShowFlag(1);
}
@@ -129,10 +130,12 @@
else {
throw new YamiShopBindException("认缴记录不存在!");
}
+ applyNewSharesOrder.setSell(1);
+ applyNewSharesOrderService.updateById(applyNewSharesOrder);
updateBatchById(userPromiseRecords);
walletService.updateMoney("USDT",userId, usdt, BigDecimal.ZERO,
Constants.MONEYLOG_CATEGORY_IPO_SEll, Constants.WALLET, Constants.MONEYLOG_CATEGORY_IPO_SEll, applyNewSharesOrder.getSymbolName()+
- "新股卖出新增USDT"+usdt.doubleValue());
+ "新股卖出"+applyNewSharesOrder.getOrderNo() + ":新增USDT" + usdt.doubleValue());
// BigDecimal initMarketValue = order.getWinningNumber().multiply(order.getSubPrice());
// if (CollectionUtil.isNotEmpty(realtimes)) {
--
Gitblit v1.9.3