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)) {