From bc4d530071edfb7f1bcff970b7039a1447859c1d Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 29 Aug 2020 14:57:00 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 53 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..15a21e8 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -99,7 +99,57 @@ 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; + int index = 0; + BigDecimal openPrice = BigDecimal.ZERO; + int type = 1; + BigDecimal feeAmount = BigDecimal.ZERO; + BigDecimal sku = BigDecimal.ZERO; + + for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { + if (holdOrderEntity.getSymbolCntSale() >= maxCnt) { + int temp = maxCnt; + maxCnt = holdOrderEntity.getSymbolCntSale(); + subCnt = holdOrderEntity.getSymbolCntSale() - temp; + openPrice = holdOrderEntity.getOpeningPrice(); + type = holdOrderEntity.getOpeningType(); + index++; + log.info("--{}, {}, {}, {}, {}", maxCnt, subCnt, openPrice, type, index); + } + + if (index == 0) { + index ++; + maxCnt = holdOrderEntity.getSymbolCntSale(); + subCnt = holdOrderEntity.getSymbolCntSale(); + type = holdOrderEntity.getOpeningType(); + openPrice = holdOrderEntity.getOpeningPrice(); + log.info("---{}, {}, {}, {}, {}", maxCnt, subCnt, type, openPrice, index); + } + feeAmount = feeAmount.add(holdOrderEntity.getOpeningFeeAmount()); + sku = holdOrderEntity.getSymbolSku(); + } + BigDecimal forceSetPrice = BigDecimal.ZERO; + if (subCnt != 0) { + 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 +168,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