From 954a7233a7bdc89153edafd32f312ef198a2870a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 03 Jun 2020 14:19:45 +0800
Subject: [PATCH] modify rabbit init data

---
 src/main/resources/mapper/contract/ContractHoldOrderDao.xml                      |    4 +
 src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java |    2 
 src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java    |    2 
 src/main/resources/mapper/contract/ContractEntrustOrderDao.xml                   |    4 +
 src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java                |  135 +++++++++++++++++++++++++++++++++++++++++++++
 src/main/resources/application.yml                                               |    4 
 6 files changed, 149 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
index 7f6d128..f52382e 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
@@ -16,4 +16,6 @@
     public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberId(@Param("memberId") Long memberId);
 
     public List<ContractEntrustOrderEntity> selectEntrustOrderListByIds(@Param("list") List<Long> list);
+
+    public List<ContractEntrustOrderEntity> selectAllEntrustOrder();
 }
diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
index adaab0b..e4e4b23 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
@@ -40,4 +40,6 @@
 
     public int updateHoldOrderIsCanClosingById(@Param("isCanClosing") int isCanClosing, @Param("id") Long id);
 
+    public List<ContractHoldOrderEntity> selectAllHoldOrder();
+
 }
diff --git a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
new file mode 100644
index 0000000..25638d8
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
@@ -0,0 +1,135 @@
+package com.xcong.excoin.rabbit.init;
+
+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.rabbit.pricequeue.OrderModel;
+import com.xcong.excoin.rabbit.producer.OrderProducer;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+
+/**
+ * 后台开启 APP不开启
+ *
+ * @author helius
+ */
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true")
+public class OrderProducerInit {
+
+    @Resource
+    private ContractEntrustOrderDao contractEntrustOrderDao;
+
+    @Resource
+    private ContractHoldOrderDao contractHoldOrderDao;
+
+    @Resource
+    private OrderProducer producer;
+
+    @PostConstruct
+    public void initOrder() {
+        log.info("=======初始化未完成订单信息=======");
+
+        // 查询所有未平仓的单
+        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectAllHoldOrder();
+        // 查询所有未完成的委托单
+        List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectAllEntrustOrder();
+
+        if (CollectionUtils.isNotEmpty(holdOrderEntities)) {
+            for (ContractHoldOrderEntity order : holdOrderEntities) {
+                // 开多1,开空 2
+                int openingType = order.getOpeningType();
+                // 1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空
+                // 9:止盈平多10:止盈平空11:止损平多12:止损平空
+                if (ContractHoldOrderEntity.OPENING_TYPE_MORE == openingType) {
+                    // 开多 发送开多止损 止盈 爆仓
+                    // 爆仓价
+                    BigDecimal forceSetPrice = order.getForceClosingPrice();
+                    if (forceSetPrice != null) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(),
+                                order.getSymbol(), order.getOperateNo());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+                    // 止损
+                    BigDecimal stopLossPrice = order.getStopLossPrice();
+                    if (stopLossPrice != null && stopLossPrice.compareTo(BigDecimal.ZERO) > 0) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_LESS.getValue(),
+                                stopLossPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                                order.getSymbol());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+                    // 止盈
+                    BigDecimal stopProfitPrice = order.getStopProfitPrice();
+                    if (stopProfitPrice != null && stopProfitPrice.compareTo(BigDecimal.ZERO) > 0) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_PROFIT.getValue(),
+                                stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                                order.getSymbol());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+
+                } else {
+                    // 开空 发送开空止损 止盈 爆仓
+                    // 爆仓价
+                    BigDecimal forceSetPrice = order.getForceClosingPrice();
+                    if (forceSetPrice != null) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceSetPrice.toPlainString(),
+                                order.getSymbol(), order.getOperateNo());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+                    // 止损
+                    BigDecimal stopLossPrice = order.getStopLossPrice();
+                    if (stopLossPrice != null && stopLossPrice.compareTo(BigDecimal.ZERO) > 0) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_LESS.getValue(),
+                                stopLossPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                                order.getSymbol());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+                    // 止盈
+                    BigDecimal stopProfitPrice = order.getStopProfitPrice();
+                    if (stopProfitPrice != null && stopProfitPrice.compareTo(BigDecimal.ZERO) > 0) {
+                        OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_PROFIT.getValue(),
+                                stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                                order.getSymbol());
+                        producer.sendPriceOperate(JSONObject.toJSONString(model));
+                    }
+                }
+
+            }
+        }
+
+        if (CollectionUtils.isNotEmpty(entrustOrderEntities)) {
+            for (ContractEntrustOrderEntity order : entrustOrderEntities) {
+                // 开多1,开空 2
+                int entrustType = order.getEntrustType();
+                // 开多
+                BigDecimal entrustPrice = order.getEntrustPrice();
+                OrderModel model;
+                if (ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE == entrustType) {
+                    // 开多委托
+                    model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(),
+                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                            order.getSymbol());
+
+                } else {
+                    model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(),
+                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
+                            order.getSymbol());
+                }
+                producer.sendPriceOperate(JSONObject.toJSONString(model));
+            }
+        }
+    }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index b28cd2d..cf1a6f1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -96,10 +96,10 @@
   # k线更新任务控制
   kline-update-job: false
   #最新价任务控制
-  newest-price-update-job: true
+  newest-price-update-job: false
   #其他任务控制
   other-job: false
-  rabbit-consumer: true
+  rabbit-consumer: false
 
 aliyun:
   oss:
diff --git a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
index be44bef..8b31fb1 100644
--- a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
@@ -18,4 +18,8 @@
             #{item}
         </foreach>
     </select>
+
+    <select id="selectAllEntrustOrder" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity">
+        select * from contract_entrust_order
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
index ae43110..024fe90 100644
--- a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
@@ -32,4 +32,8 @@
         update contract_hold_order set is_can_closing=#{isCanClosing}
         where id=#{id}
     </update>
+
+    <select id="selectAllHoldOrder" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
+        select * from contract_hold_order
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1