xiaoyong931011
2021-01-28 968f77fbe04b387274522ad5e682bacdbbcbe9bc
src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -1,6 +1,8 @@
package com.xcong.excoin.rabbit.pricequeue;
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue;
import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@@ -26,7 +28,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);
@@ -51,25 +53,25 @@
        Long orderId = order.getOrderId();
        queue.add(new DescBigDecimal(price));
        log.info("原有:{}", JSONObject.toJSONString(orderMap));
//        log.info("原有:{}", JSONObject.toJSONString(orderMap));
        removeExistOrder(type, orderId, orderMap);
        log.info("删除后:{}", JSONObject.toJSONString(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());
                OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
                list.add(orderModel);
            }
//            }
        } else {
            List<OrderModel> list = new ArrayList<OrderModel>();
            OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
            OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
            list.add(orderModel);
            orderMap.put(price, list);
        }
        log.info("调整后:{}", JSONObject.toJSONString(orderMap));
//        log.info("调整后:{}", JSONObject.toJSONString(orderMap));
    }
@@ -85,26 +87,26 @@
        int type = order.getType();
        Long orderId = order.getOrderId();
        queue.add(new AscBigDecimal(price));
        log.info("原有:{}", JSONObject.toJSONString(orderMap));
//        log.info("原有:{}", JSONObject.toJSONString(orderMap));
        // 需要找到这个订单的原始的单进行处理
        removeExistOrder(type, orderId, orderMap);
        log.info("删除后:{}", JSONObject.toJSONString(orderMap));
//        log.info("删除后:{}", JSONObject.toJSONString(orderMap));
        if (orderMap.containsKey(price)) {
            // 有这个价的key
            List<OrderModel> list = orderMap.get(price);
            // 判断这个单的这个类型是否有
//            if (CollectionUtils.isNotEmpty(list)) {
                // 新增
                OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
                OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
                list.add(orderModel);
//            }
        } else {
            List<OrderModel> list = new ArrayList<OrderModel>();
            OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
            OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
            list.add(orderModel);
            orderMap.put(price, list);
        }
        log.info("调整后:{}", JSONObject.toJSONString(orderMap));
//        log.info("调整后:{}", JSONObject.toJSONString(orderMap));
    }
    private static void removeExistOrder(Integer type, Long orderId, Map<String, List<OrderModel>> orderMap) {
@@ -129,4 +131,15 @@
        }
    }
    public static void wholePriceDataOperation(WholePriceDataModel wholePriceData) {
        Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
        WholePriceDataModel isExistData = dataModelMap.get(wholePriceData.getMemberId().toString());
        if (isExistData != null) {
            dataModelMap.remove(wholePriceData.getMemberId().toString());
        }
        dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData);
    }
}