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/task/NewSharesTask.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 105 insertions(+), 9 deletions(-)
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 2c47785..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
@@ -1,11 +1,15 @@
package com.yami.trading.admin.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.yami.trading.bean.etf.domain.EtfMinuteKLine;
-import com.yami.trading.bean.item.domain.Item;
+import com.yami.trading.bean.ipo.ApplyNewSharesOrder;
+import com.yami.trading.bean.ipo.UserPromiseRecord;
+import com.yami.trading.bean.model.MoneyLog;
import com.yami.trading.bean.model.Wallet;
+import com.yami.trading.common.constants.Constants;
+import com.yami.trading.service.MoneyLogService;
import com.yami.trading.service.WalletService;
+import com.yami.trading.service.ipo.ApplyNewSharesOrderService;
+import com.yami.trading.service.ipo.UserPromiseRecordService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +19,6 @@
import java.math.BigDecimal;
import java.util.*;
-import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -32,8 +35,17 @@
@Autowired
WalletService walletService;
+ @Autowired
+ UserPromiseRecordService userPromiseRecordService;
+
+ @Autowired
+ ApplyNewSharesOrderService applyNewSharesOrderService;
+
+ @Autowired
+ MoneyLogService moneyLogService;
+
/**
- * 同步系统所需要的股票
+ * 待补自动扣费
*/
@Scheduled(cron = "0 0/5 * * * ?")
public void syncINStockData() {
@@ -44,19 +56,103 @@
if (syncINStockDataLock.tryLock()) {
try {
syncINStockData.set(true);
- LambdaQueryWrapper<Wallet> queryWrapper = new LambdaQueryWrapper<>();
+ /*LambdaQueryWrapper<Wallet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.gt(Wallet::getMoney, BigDecimal.ZERO);
queryWrapper.gt(Wallet::getAmountToBeCovered, BigDecimal.ZERO);
List<Wallet> walletList = walletService.list(queryWrapper);
if (!walletList.isEmpty()) {
log.info("==================进入待补自动扣费================");
+ walletList.forEach((wallet) -> {
+ BigDecimal money = wallet.getMoney();
+ BigDecimal amountToBeCovered = wallet.getAmountToBeCovered();
+ if (money.compareTo(amountToBeCovered) >= 0) {
+ wallet.setMoney(money.subtract(amountToBeCovered));
+ wallet.setAmountToBeCovered(BigDecimal.ZERO);
+ log.info("用户id{}已补完待补", wallet.getUserId());
+ LambdaQueryWrapper<UserPromiseRecord> queryWrapper2 = new LambdaQueryWrapper<>();
+ queryWrapper2.eq(UserPromiseRecord::getUserId, wallet.getUserId());
+ queryWrapper2.eq(UserPromiseRecord::getStatus, 1);
+ List<UserPromiseRecord> userPromiseRecords = userPromiseRecordService.list(queryWrapper2);
+ if (!userPromiseRecords.isEmpty()) {
+ userPromiseRecords.forEach((userPromiseRecord) -> {
+ userPromiseRecord.setStatus(2);
+ log.info("订单{}已确认认缴", userPromiseRecord.getOrderNo());
+ });
+ userPromiseRecordService.updateBatchById(userPromiseRecords);
+ }
+ } else {
+ //资金不足
+ BigDecimal newAmountToBeCovered = amountToBeCovered.subtract(money);
+ wallet.setMoney(BigDecimal.ZERO);
+ wallet.setAmountToBeCovered(newAmountToBeCovered);
+ log.info("用户id{}补待补{}", wallet.getUserId(), money.toString());
+ }
+ walletService.updateById(wallet);
+ });
+ }*/
+ LambdaQueryWrapper<ApplyNewSharesOrder> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ApplyNewSharesOrder::getSell, 0);
+ //queryWrapper.gt(ApplyNewSharesOrder::getSubscribedAmount, BigDecimal.ZERO);
+ queryWrapper.gt(ApplyNewSharesOrder::getRequiredNumber, BigDecimal.ZERO);
+ queryWrapper.apply("subscribed_amount < required_number");
+ List<ApplyNewSharesOrder> orders = applyNewSharesOrderService.list(queryWrapper);
+ if (!orders.isEmpty()) {
+ log.info("==================进入待补自动扣费================");
+ orders.forEach((order) -> {
+ //待补多少
+ BigDecimal amt = order.getRequiredNumber().subtract(order.getSubscribedAmount());
+ Wallet wallet =walletService.findByUserId(order.getUserId());
+ BigDecimal amountBefore = wallet.getMoney();
+ if (wallet.getMoney().compareTo(BigDecimal.ZERO) > 0) { //有钱扣款
+ Boolean isDb = false;
+ if (wallet.getMoney().compareTo(amt) >= 0) {
+ wallet.setMoney(wallet.getMoney().subtract(amt));
+ order.setSubscribedAmount(order.getSubscribedAmount().add(amt));
+
+ log.info("订单{}已补完待补", order.getOrderNo());
+ } else {
+ isDb = true;
+ amt = wallet.getMoney();
+ order.setSubscribedAmount(order.getSubscribedAmount().add(amt));
+ log.info("订单{}补待补{}", order.getOrderNo(), amt);
+ //资金不足 进入待补
+ wallet.setMoney(BigDecimal.ZERO);
+ }
+ applyNewSharesOrderService.updateById(order);
+ walletService.updateById(wallet);
+
+ MoneyLog moneyLog = new MoneyLog();
+ moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_IPO);
+ moneyLog.setAmountBefore(amountBefore);
+ moneyLog.setAmount(amt.negate());
+ moneyLog.setAmountAfter(amountBefore.subtract(amt).compareTo(BigDecimal.ZERO) <= 0 ?
+ BigDecimal.ZERO : amountBefore.subtract(amt));
+ moneyLog.setLog(order.getSymbolCode() + "新股认缴补缴" + order.getOrderNo());
+ moneyLog.setUserId(order.getUserId());
+ moneyLog.setWalletType(Constants.WALLET);
+ moneyLog.setContentType(Constants.MONEYLOG_CATEGORY_IPO);
+ moneyLogService.save(moneyLog);
+
+ LambdaQueryWrapper<UserPromiseRecord> queryWrapper2 = new LambdaQueryWrapper<>();
+ queryWrapper2.eq(UserPromiseRecord::getUserId, wallet.getUserId());
+ queryWrapper2.eq(UserPromiseRecord::getStatus, 1);
+ queryWrapper2.eq(UserPromiseRecord::getOrderNo, order.getOrderNo());
+ UserPromiseRecord userPromiseRecord = userPromiseRecordService.getOne(queryWrapper2);
+ if (userPromiseRecord != null) {
+ userPromiseRecord.setDeductUsdt(order.getSubscribedAmount());
+ if (!isDb) { //已经缴完 确认状态
+ userPromiseRecord.setStatus(2);
+ log.info("订单{}已确认认缴", userPromiseRecord.getOrderNo());
+ }
+ userPromiseRecordService.updateById(userPromiseRecord);
+ }
+ }
+ });
}
-
-
} catch (Exception e) {
- log.error("同步股票数据出错", e);
+ log.error("待补自动扣费出错", e);
} finally {
syncINStockDataLock.unlock();
syncINStockData.set(false);
--
Gitblit v1.9.3