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