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