Helius
2020-08-28 a312eefe49dd7850a86fb1954beac22a5c42d59c
src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -1,5 +1,7 @@
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;
@@ -11,6 +13,7 @@
/**
 * 处理消费者的订单止盈等价格信息
 */
@Slf4j
public class OrderOperatePriceService {
    /**
@@ -23,7 +26,7 @@
        // 【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);
@@ -48,22 +51,25 @@
        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));
    }
@@ -79,24 +85,26 @@
        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) {