| | |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | BigDecimal forceClose; |
| | | if (order_close_line_type == 1) { |
| | | Wallet wallet = this.walletService.findByUserId(order.getPartyId().toString()); |
| | | if (wallet == null) { |
| | | forceClose = calculateType2ForceClosePrice(order); |
| | | } else { |
| | | forceClose = calculateType1ForceClosePrice(order, wallet); |
| | | } |
| | | forceClose = calculateType1ForceClosePrice(order, wallet); |
| | | } else { |
| | | forceClose = calculateType2ForceClosePrice(order); |
| | | } |
| | |
| | | List<ContractOrder> list = contractOrderService.findSubmitted(order.getPartyId(), null, null, null, null, null); |
| | | BigDecimal otherEquity = BigDecimal.ZERO; |
| | | for (ContractOrder contractOrder : list) { |
| | | if (contractOrder == null) { |
| | | continue; |
| | | } |
| | | if (ContractOrder.STATE_SUBMITTED.equals(contractOrder.getState())) { |
| | | contractOrderService.wrapProfit(contractOrder); |
| | | } |
| | | if (Objects.equals(order.getUuid(), contractOrder.getUuid())) { |
| | | if (order.getUuid().equals(contractOrder.getUuid())) { |
| | | continue; |
| | | } |
| | | otherEquity = otherEquity.add(defaultZero(contractOrder.getProfit()).add(defaultZero(contractOrder.getDeposit()))); |
| | | } |
| | | |
| | | BigDecimal baseEquity = defaultZero(wallet != null ? wallet.getMoney() : null) |
| | | BigDecimal baseEquity = defaultZero(wallet.getMoney()) |
| | | .add(otherEquity) |
| | | .add(defaultZero(order.getDeposit())); |
| | | BigDecimal priceOffset = baseEquity.divide(volumeFactor, 10, RoundingMode.HALF_UP); |