ipo
zyy
2026-01-08 4affbdf8938d321c0926bc2b1832dfc81c317ffa
ipo
10 files modified
70 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/dz/AdminETFDzController.java 27 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java 6 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java 2 ●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ipo/ApiApplyNewSharesOrderController.java 10 ●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/dz/ExchangeApplyOrderDz.java 3 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java 3 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java 3 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java 8 ●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java 1 ●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java 7 ●●●● patch | view | raw | blame | history
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();
    }
}
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("未查到订单");
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);
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());
            }
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("卖出价格")
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;
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("股票代码")
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) {
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));
            }
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)) {