From ddb79e7126625aa7e97d1a8d9a1a0dcde7dfff0a Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 21 Aug 2020 11:25:33 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 29 ++++++++++------------------- 1 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index 258355a..7d167ed 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; import com.xcong.excoin.common.exception.GlobalException; import com.xcong.excoin.common.response.Result; @@ -86,9 +87,8 @@ * 全仓模式 -- 预估强平价 * 面值*(多单张数*多单开仓价-空单张数*空单开仓价)-余额-已实现盈亏 / 面值*(多单张数-空单张数)-(维持保证金率+TAKER手续费)*面值*(开多张数+开空张数) * - * @return */ - public static BigDecimal getForceSetPriceForWhole(@NotNull String symbol, @NotNull MemberEntity memberEntity) { + public static void getForceSetPriceForWhole(@NotNull String symbol, @NotNull MemberEntity memberEntity) { ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class); CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class); @@ -96,8 +96,8 @@ Long memberId = memberEntity.getId(); BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol); PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); - MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol); - List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberId, symbol, 2); + MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(symbol)); + List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, symbol); if (CollUtil.isNotEmpty(holdOrderEntities)) { // 多单开仓价 BigDecimal moreOpenPrice = BigDecimal.ZERO; @@ -109,7 +109,6 @@ int lessCnt = 0; // 已实现盈亏 BigDecimal rewardAmount = BigDecimal.ZERO; - List<ContractHoldOrderEntity> updateHoldOrders = new ArrayList<>(); for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { if (holdOrderEntity.getOpeningType() == ContractHoldOrderEntity.OPENING_TYPE_MORE) { moreOpenPrice = holdOrderEntity.getOpeningPrice(); @@ -118,14 +117,8 @@ lessOpenPrice = holdOrderEntity.getOpeningPrice(); lessCnt = holdOrderEntity.getSymbolCntSale(); } - ContractHoldOrderEntity updateHoldOrder = new ContractHoldOrderEntity(); - updateHoldOrder.setOperateNo(holdOrderEntity.getOperateNo() + 1); - updateHoldOrder.setId(holdOrderEntity.getId()); - updateHoldOrder.setOpeningType(holdOrderEntity.getOpeningType()); - updateHoldOrder.setSymbol(holdOrderEntity.getSymbol()); - updateHoldOrders.add(updateHoldOrder); - rewardAmount = rewardAmount.add(holdOrderEntity.getRewardAmount()); + rewardAmount = rewardAmount.add(holdOrderEntity.getRewardAmount() == null ? BigDecimal.ZERO : holdOrderEntity.getRewardAmount()); log.info("rewardAmount : {}", rewardAmount); } @@ -146,18 +139,16 @@ BigDecimal forceSetPrice = divisor.divide(dividendOne.subtract(dividendTwo), 8, BigDecimal.ROUND_DOWN); log.info("forceSetPrice : {}", forceSetPrice); - for (ContractHoldOrderEntity updateHoldOrder : updateHoldOrders) { + for (ContractHoldOrderEntity updateHoldOrder : holdOrderEntities) { updateHoldOrder.setForceClosingPrice(forceSetPrice); + updateHoldOrder.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y); holdOrderDao.updateById(updateHoldOrder); - sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { + sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + } } - - } else { - throw new GlobalException("强平价异常"); } - - return null; } private static void sendOrderBombMsg(Long id, int type, BigDecimal forceClosingPrice, String symbol, int operateNo) { -- Gitblit v1.9.1