From b957141654eacd3207fd50d391d72cc8faf9eed4 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 28 Aug 2020 18:42:30 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index 51af5ac..55c9d91 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -99,7 +99,51 @@ MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(symbol)); List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, symbol); if (CollUtil.isNotEmpty(holdOrderEntities)) { - BigDecimal totalSetPrice = BigDecimal.ZERO; + int maxCnt = 0; + int subCnt = 0; + BigDecimal openPrice = BigDecimal.ZERO; + int type = 1; + BigDecimal feeAmount = BigDecimal.ZERO; + BigDecimal sku = BigDecimal.ZERO; + boolean flag = false; + + for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { + if (holdOrderEntity.getSymbolCntSale() == maxCnt) { + flag = true; + return; + } + + if (holdOrderEntity.getSymbolCntSale() > maxCnt) { + maxCnt = holdOrderEntity.getSymbolCntSale(); + subCnt = holdOrderEntity.getSymbolCntSale() - maxCnt; + openPrice = holdOrderEntity.getOpeningPrice(); + type = holdOrderEntity.getOpeningType(); + } + + feeAmount = feeAmount.add(holdOrderEntity.getOpeningFeeAmount()); + sku = holdOrderEntity.getSymbolSku(); + } + BigDecimal forceSetPrice = BigDecimal.ZERO; + if (!flag) { + log.info("{}, {}, {}, {}, {}", openPrice, subCnt, sku, type, maxCnt); + forceSetPrice = getForceSetPrice(walletContract.getTotalBalance().subtract(feeAmount), openPrice, subCnt, sku, type, memberEntity); + } + + log.info("强平价:{}", forceSetPrice); + for (ContractHoldOrderEntity updateHoldOrder : holdOrderEntities) { + updateHoldOrder.setForceClosingPrice(forceSetPrice); + updateHoldOrder.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y); + holdOrderDao.updateById(updateHoldOrder); + + if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { +// sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + } + } + } + } + + /* + BigDecimal totalSetPrice = BigDecimal.ZERO; int totalCnt = 0; for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { @@ -118,12 +162,10 @@ holdOrderDao.updateById(updateHoldOrder); if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { -// sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); } } - - } - } + */ /* // 多单开仓价 -- Gitblit v1.9.1