| | |
| | | package com.xcong.excoin.rabbit.pricequeue; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | /** |
| | | * 处理消费者的订单止盈等价格信息 |
| | | */ |
| | | @Slf4j |
| | | public class OrderOperatePriceService { |
| | | |
| | | /** |
| | |
| | | // 【1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空8:撤单9:止盈平多10:止盈平空11:止损平多12:止损平空】 |
| | | int type = orderModel.getType(); |
| | | Map<String, List<OrderModel>> orderMap = PricePriorityQueue.getOrderMap(orderModel.getSymbol(), type); |
| | | if (type == 12 || type == 9 || type == 7 || type == 3) { |
| | | if (type == 12 || type == 9 || type == 7 || type == 3 || type == 4) { |
| | | // 需要价格涨的 |
| | | PriorityBlockingQueue<AscBigDecimal> queue = PricePriorityQueue.getQueueAsc(orderModel.getSymbol()); |
| | | dealPriceAsc(orderModel, orderMap, queue); |
| | |
| | | Long orderId = order.getOrderId(); |
| | | queue.add(new DescBigDecimal(price)); |
| | | |
| | | log.info("原有:{}", JSONObject.toJSONString(orderMap)); |
| | | removeExistOrder(type, orderId, orderMap); |
| | | log.info("删除后:{}", JSONObject.toJSONString(orderMap)); |
| | | if (orderMap.containsKey(price)) { |
| | | // 有这个价的key |
| | | List<OrderModel> list = orderMap.get(price); |
| | | // 判断这个单的这个类型是否有 |
| | | if (CollectionUtils.isNotEmpty(list)) { |
| | | // if (CollectionUtils.isNotEmpty(list)) { |
| | | // 新增 |
| | | OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo()); |
| | | list.add(orderModel); |
| | | } |
| | | // } |
| | | } else { |
| | | List<OrderModel> list = new ArrayList<OrderModel>(); |
| | | OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo()); |
| | | list.add(orderModel); |
| | | orderMap.put(price, list); |
| | | } |
| | | log.info("调整后:{}", JSONObject.toJSONString(orderMap)); |
| | | } |
| | | |
| | | |
| | |
| | | int type = order.getType(); |
| | | Long orderId = order.getOrderId(); |
| | | queue.add(new AscBigDecimal(price)); |
| | | log.info("原有:{}", JSONObject.toJSONString(orderMap)); |
| | | // 需要找到这个订单的原始的单进行处理 |
| | | removeExistOrder(type, orderId, orderMap); |
| | | |
| | | log.info("删除后:{}", JSONObject.toJSONString(orderMap)); |
| | | if (orderMap.containsKey(price)) { |
| | | // 有这个价的key |
| | | List<OrderModel> list = orderMap.get(price); |
| | | // 判断这个单的这个类型是否有 |
| | | if (CollectionUtils.isNotEmpty(list)) { |
| | | // if (CollectionUtils.isNotEmpty(list)) { |
| | | // 新增 |
| | | OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo()); |
| | | list.add(orderModel); |
| | | } |
| | | // } |
| | | } else { |
| | | List<OrderModel> list = new ArrayList<OrderModel>(); |
| | | OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo()); |
| | | list.add(orderModel); |
| | | orderMap.put(price, list); |
| | | } |
| | | log.info("调整后:{}", JSONObject.toJSONString(orderMap)); |
| | | } |
| | | |
| | | private static void removeExistOrder(Integer type, Long orderId, Map<String, List<OrderModel>> orderMap) { |