From 5677479567a47c14ee091770170e4c7e01bbf31c Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 29 Aug 2020 17:17:04 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java | 62 ++++++++++++++++++++++++------- 1 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java index ad8f3e0..94d6e76 100644 --- a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java +++ b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java @@ -1,13 +1,17 @@ package com.xcong.excoin.rabbit.init; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.member.dao.MemberDao; +import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.rabbit.pricequeue.OrderModel; import com.xcong.excoin.rabbit.producer.OrderProducer; +import com.xcong.excoin.utils.CalculateUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +22,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.HashMap; import java.util.List; /** @@ -38,6 +43,8 @@ @Resource private OrderProducer producer; + @Resource + private MemberDao memberDao; @PostConstruct public void initOrder() { @@ -56,13 +63,15 @@ // 9:止盈平多10:止盈平空11:止损平多12:止损平空 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == openingType) { // 开多 发送开多止损 止盈 爆仓 - // 爆仓价 - BigDecimal forceSetPrice = order.getForceClosingPrice(); - if (forceSetPrice != null) { - if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { - OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(), - order.getSymbol(), order.getOperateNo()); - producer.sendPriceOperate(JSONObject.toJSONString(model)); + if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { + // 爆仓价 + BigDecimal forceSetPrice = order.getForceClosingPrice(); + if (forceSetPrice != null) { + if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(), + order.getSymbol(), order.getOperateNo()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } } } // 止损 @@ -85,12 +94,14 @@ } else { // 开空 发送开空止损 止盈 爆仓 // 爆仓价 - BigDecimal forceSetPrice = order.getForceClosingPrice(); - if (forceSetPrice != null) { - if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { - OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceSetPrice.toPlainString(), - order.getSymbol(), order.getOperateNo()); - producer.sendPriceOperate(JSONObject.toJSONString(model)); + if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { + BigDecimal forceSetPrice = order.getForceClosingPrice(); + if (forceSetPrice != null) { + if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceSetPrice.toPlainString(), + order.getSymbol(), order.getOperateNo()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } } } // 止损 @@ -114,6 +125,21 @@ } } + // 全仓持仓 + List<HashMap<String, Object>> wholeHoldOrders = contractHoldOrderDao.selectAllWholeOrderMemberIdAndSymbol(); + if (CollUtil.isNotEmpty(wholeHoldOrders)) { + MemberEntity memberEntity = null; + for (HashMap<String, Object> wholeHoldOrder : wholeHoldOrders) { + Long memberId = (Long) wholeHoldOrder.get("member_id"); + String symbol = (String) wholeHoldOrder.get("symbol"); + if (memberEntity == null || !memberId.equals(memberEntity.getId())) { + memberEntity = memberDao.selectById(memberId); + } + + CalculateUtil.getForceSetPriceForWhole(symbol, memberEntity); + } + } + if (CollectionUtils.isNotEmpty(entrustOrderEntities)) { for (ContractEntrustOrderEntity order : entrustOrderEntities) { // 开多1,开空 2 @@ -127,10 +153,18 @@ entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), order.getSymbol()); - } else { + } else if (ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS == entrustType){ model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(), entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), order.getSymbol()); + } else if (ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE == entrustType) { + model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_MORE.getValue(), + entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + } else { + model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_LESS.getValue(), + entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); } producer.sendPriceOperate(JSONObject.toJSONString(model)); } -- Gitblit v1.9.1