| | |
| | | import project.log.LogService; |
| | | import project.syspara.Syspara; |
| | | import project.syspara.SysparaService; |
| | | import project.wallet.Wallet; |
| | | import project.wallet.WalletService; |
| | | import security.SecUser; |
| | | import security.internal.SecUserService; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private AdminContractOrderService adminContractOrderService; |
| | | @Autowired |
| | | private WalletService walletService; |
| | | |
| | | private final String action = "normal/adminContractOrderAction!"; |
| | | |
| | |
| | | |
| | | List<Map> list = page.getElements(); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | Map map = list.get(i); |
| | | Map map = list.get(i); |
| | | if (null == map.get("rolename")) { |
| | | map.put("roleNameDesc", ""); |
| | | } else { |
| | | String roleName = map.get("rolename").toString(); |
| | | map.put("roleNameDesc", Constants.ROLE_MAP.containsKey(roleName) ? Constants.ROLE_MAP.get(roleName) : roleName); |
| | | } |
| | | double currentPrice = Double.parseDouble(map.get("trade_avg_price").toString()); |
| | | |
| | | double leve = Double.parseDouble(map.get("lever_rate").toString()); |
| | | //得到强平价格 |
| | | if(null != map.get("direction")){ |
| | | double liquidationPrice; |
| | | if(map.get("direction").equals("sell")){ |
| | | liquidationPrice = currentPrice * (1 + (1 / leve)); |
| | | double depositOpen = Double.parseDouble(map.get("deposit_open").toString()); |
| | | double leverRate = Double.parseDouble(map.get("lever_rate").toString()); |
| | | double tradeAvgPrice = Double.parseDouble(map.get("trade_avg_price").toString()); |
| | | |
| | | double mul = Arith.mul(depositOpen, leverRate);//仓位 |
| | | double div = Arith.div(mul, tradeAvgPrice);//持有币的数量 |
| | | /** |
| | | * 计算全仓收益 保证金 |
| | | */ |
| | | double profit = 0; |
| | | List<ContractOrder> contractOrders = contractOrderService.findSubmitted(map.get("party_id").toString(), null, null); |
| | | for (int f = 0; f < contractOrders.size(); f++) { |
| | | ContractOrder close_line = contractOrders.get(f); |
| | | if(close_line.getProfit() > 0){ |
| | | profit = Arith.add(profit, Arith.add(close_line.getProfit(), close_line.getDeposit())); |
| | | }else{ |
| | | liquidationPrice = currentPrice * (1 - 1 / leve); |
| | | profit = Arith.add(profit, close_line.getDeposit()); |
| | | } } |
| | | Wallet wallet = this.walletService.saveWalletByPartyId(map.get("party_id").toString()); |
| | | double totleMoney = wallet.getMoney(); |
| | | profit = Arith.add(profit,totleMoney); |
| | | |
| | | |
| | | if (map.get("direction") != null) { |
| | | String direction = map.get("direction").toString(); |
| | | double liquidationPrice; |
| | | double deposit = depositOpen + profit; |
| | | if(leverRate == 1){ |
| | | liquidationPrice = 0; |
| | | }else { |
| | | if ("sell".equals(direction)) { |
| | | liquidationPrice = tradeAvgPrice + (deposit / div); |
| | | } else { |
| | | liquidationPrice = (mul * tradeAvgPrice) / (deposit + mul); |
| | | } |
| | | } |
| | | DecimalFormat df = new DecimalFormat("#.#####"); |
| | | String formattedPrice = df.format(liquidationPrice); |
| | | map.put("qiangPing",formattedPrice); |
| | | DecimalFormat dfs = new DecimalFormat("#.#####"); |
| | | String formattedPrice = dfs.format(liquidationPrice); |
| | | map.put("qiangPing", formattedPrice); |
| | | } |
| | | } |
| | | |