|  |  | 
 |  |  | import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService; | 
 |  |  | import com.xcong.excoin.rabbit.producer.OrderProducer; | 
 |  |  | import com.xcong.excoin.utils.CalculateUtil; | 
 |  |  | import com.xcong.excoin.utils.CoinTypeConvert; | 
 |  |  | import com.xcong.excoin.utils.RedisUtils; | 
 |  |  | import com.xcong.excoin.utils.ThreadPoolUtils; | 
 |  |  | import lombok.SneakyThrows; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeForceNewTest() { | 
 |  |  |         String symbol = "BTC/USDT"; | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(15L); | 
 |  |  |         ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(144L); | 
 |  |  |         List<ContractHoldOrderEntity> wholeOrders = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(), null); | 
 |  |  |         MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name()); | 
 |  |  |         if (CollUtil.isNotEmpty(wholeOrders)) { | 
 |  |  |             BigDecimal totalProfitOrLoss = BigDecimal.ZERO; | 
 |  |  |             BigDecimal otherSymbolBond = BigDecimal.ZERO; | 
 |  |  |             for (ContractHoldOrderEntity wholeOrder : wholeOrders) { | 
 |  |  |                 BigDecimal profitOrLoss = CalculateUtil.calProfitOrLoss(wholeOrder, memberEntity); | 
 |  |  |                 totalProfitOrLoss = totalProfitOrLoss.add(profitOrLoss); | 
 |  |  |                 if (!wholeOrder.getId().equals(holdOrder.getId())) { | 
 |  |  |                     otherSymbolBond = otherSymbolBond.add(wholeOrder.getBondAmount()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey("BTC/USDT"))); | 
 |  |  |  | 
 |  |  |             BigDecimal bond = wallet.getTotalBalance().add(totalProfitOrLoss).subtract(otherSymbolBond); | 
 |  |  |             System.out.println(bond); | 
 |  |  |             System.out.println(CalculateUtil.getForceSetPrice(bond, holdOrder.getOpeningPrice(), holdOrder.getSymbolCntSale(), holdOrder.getSymbolSku(), holdOrder.getOpeningType(), memberEntity)); | 
 |  |  |         } | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(19L); | 
 |  |  |         ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(932L); | 
 |  |  |  | 
 |  |  |         System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 2)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeForceNewTest2() { | 
 |  |  |         BigDecimal holdBond = new BigDecimal("1161.8951"); | 
 |  |  |  | 
 |  |  |         BigDecimal sku = new BigDecimal("0.1"); | 
 |  |  |         BigDecimal openPrice = new BigDecimal("58094.75"); | 
 |  |  |         int cnt = 50; | 
 |  |  |         BigDecimal total = new BigDecimal("9866.3820"); | 
 |  |  |         // 成本 数量*面值*开仓价 | 
 |  |  |         BigDecimal cost = sku.multiply(openPrice).multiply(new BigDecimal(cnt)); | 
 |  |  |         // 费率 | 
 |  |  |         BigDecimal ratio = openPrice.multiply(new BigDecimal("0.005")); | 
 |  |  |         // 总账户 - 维持保证金 | 
 |  |  |         BigDecimal orderProfitOrLoss = total.subtract(holdBond); | 
 |  |  |         // 权益 | 
 |  |  |         BigDecimal qy = BigDecimal.ZERO; | 
 |  |  |  | 
 |  |  |         BigDecimal prefix = cost.subtract(ratio); | 
 |  |  |         BigDecimal divideChild; | 
 |  |  | //        if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) { | 
 |  |  |             divideChild = prefix.subtract(orderProfitOrLoss).subtract(qy); | 
 |  |  | //        } else { | 
 |  |  | //            divideChild = prefix.add(orderProfitOrLoss).add(qy); | 
 |  |  | //        } | 
 |  |  | //            BigDecimal divideChild = walletContract.getTotalBalance().add(totalProfitOrLoss).subtract(holdBond).subtract(cost).add(newPrice.multiply(new BigDecimal("0.005"))); | 
 |  |  |         BigDecimal divideParent = sku.multiply(new BigDecimal(cnt)); | 
 |  |  |  | 
 |  |  |         System.out.println(divideChild.divide(divideParent, 8, BigDecimal.ROUND_DOWN)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |