|  |  | 
 |  |  |         return result;
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     public static BigDecimal calForcePriceForWhole(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity) {
 | 
 |  |  |         ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
 | 
 |  |  |         MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
 | 
 |  |  | 
 | 
 |  |  |         Long memberId = memberEntity.getId();
 | 
 |  |  |         MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
 | 
 |  |  |         List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, null);
 | 
 |  |  |         BigDecimal forcePrice = BigDecimal.ZERO;
 | 
 |  |  |         if (CollUtil.isNotEmpty(holdOrderEntities)) {
 | 
 |  |  |             BigDecimal totalBondAmount = BigDecimal.ZERO;
 | 
 |  |  |             BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
 | 
 |  |  |             for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
 | 
 |  |  |                 totalBondAmount = totalBondAmount.add(holdOrderEntity.getBondAmount());
 | 
 |  |  |                 totalProfitOrLoss =  totalProfitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             BigDecimal divideChild = walletContract.getTotalBalance().subtract(totalBondAmount).add(totalProfitOrLoss);
 | 
 |  |  |             BigDecimal divideParent = contractHoldOrderEntity.getSymbolSku().multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCntSale()));
 | 
 |  |  | 
 | 
 |  |  |             BigDecimal divide = divideChild.divide(divideParent, 8, BigDecimal.ROUND_DOWN);
 | 
 |  |  | 
 | 
 |  |  |             if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
 | 
 |  |  |                 forcePrice = contractHoldOrderEntity.getOpeningPrice().subtract(divide);
 | 
 |  |  |             } else {
 | 
 |  |  |                 forcePrice = contractHoldOrderEntity.getOpeningPrice().add(divide);
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |         return forcePrice;
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     public static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) {
 | 
 |  |  |         CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
 | 
 |  |  |         RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
 | 
 |  |  | 
 |  |  |             redisUtils.set(AppContants.HOLD_BOND_RATIO, tradeSetting.getHoldBondRatio());
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         return contractHoldOrder.getOpeningPrice().multiply(new BigDecimal(contractHoldOrder.getSymbolCntSale())).multiply(holdBondRatio).multiply(contractHoldOrder.getSymbolSku());
 | 
 |  |  |         return contractHoldOrder.getOpeningPrice().multiply(new BigDecimal(contractHoldOrder.getSymbolCntSale())).multiply(holdBondRatio.multiply(new BigDecimal(100))).multiply(contractHoldOrder.getSymbolSku()).divide(new BigDecimal(contractHoldOrder.getLeverRatio()), 8, BigDecimal.ROUND_DOWN);
 | 
 |  |  |     }
 | 
 |  |  | }
 |