From 5e57de9b12ee136e45ce5754c7fe2e7eb12af05a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 12 Jun 2026 18:35:45 +0800
Subject: [PATCH] 1

---
 trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java |   52 +++++++++++++++++++++++++---------------------------
 1 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java b/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
index 19d72dc..61b1d63 100644
--- a/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
+++ b/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
@@ -7,13 +7,13 @@
 import com.yami.trading.bean.item.domain.Item;
 import com.yami.trading.common.constants.RedisKeys;
 import com.yami.trading.common.constants.RedisLockKeyConstants;
-import com.yami.trading.service.MarketOpenChecker;
 import com.yami.trading.common.util.RedisUtil;
 import com.yami.trading.common.util.ThreadUtils;
 import com.yami.trading.service.contract.ContractApplyOrderService;
 import com.yami.trading.service.contract.ContractLock;
 import com.yami.trading.service.contract.ContractOrderService;
 import com.yami.trading.service.data.DataService;
+import com.yami.trading.service.item.ItemPreMarketService;
 import com.yami.trading.service.item.ItemService;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
@@ -44,6 +44,9 @@
 
 	@Autowired
 	private ItemService itemService;
+
+	@Autowired(required = false)
+	private ItemPreMarketService itemPreMarketService;
 
 	@Autowired
 	private RedissonClient redissonClient;
@@ -78,50 +81,45 @@
 					continue;
 				}
 
-				List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
-				Realtime realtime = null;
-				if (realtime_list.size() > 0) {
-					realtime = realtime_list.get(0);
-					//log.info("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为:{}", order.getSymbol(), realtime);
-				} else {
-					log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为空", order.getSymbol());
-					continue;
-				}
-
-				// 休市不做撮合
 				Item bySymbol = itemService.findBySymbol(order.getSymbol());
 				if (bySymbol == null) {
 					continue;
 				}
-				boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType());
+				boolean preMarketActive = itemPreMarketService != null
+						&& itemPreMarketService.isPreMarketTradingActive(order.getSymbol());
+				boolean isOpen = itemService.isOpen(order.getSymbol());
 				if (!isOpen) {
-					//log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 未open", order.getSymbol());
 					continue;
 				}
 
+				List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
+				Realtime realtime = null;
+				if (realtime_list.size() > 0) {
+					realtime = realtime_list.get(0);
+				} else {
+					log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为空", order.getSymbol());
+					continue;
+				}
+				if (preMarketActive && itemPreMarketService != null) {
+					Double prePrice = itemPreMarketService.getActivePreMarketPrice(order.getSymbol());
+					if (prePrice != null) {
+						realtime.setClose(prePrice);
+					}
+				}
+
 				if ("limit".equals(order.getOrderPriceType())) {
-					/**
-					 * 限价单
-					 */
-					if ("buy".equals(order.getDirection())) {
-						/**
-						 * 买涨
-						 */
+					if (preMarketActive) {
+						processSuccess = this.handle(order, realtime);
+					} else if ("buy".equals(order.getDirection())) {
 						if (BigDecimal.valueOf(realtime.getClose()).compareTo(order.getPrice()) <= 0) {
 							processSuccess = this.handle(order, realtime);
 						}
 					} else {
-						/**
-						 * 买跌
-						 */
 						if (BigDecimal.valueOf(realtime.getClose()).compareTo(order.getPrice()) >= 0) {
 							processSuccess = this.handle(order, realtime);
 						}
 					}
 				} else {
-					/**
-					 * 非限制,直接进入市场
-					 */
 					processSuccess = this.handle(order, realtime);
 				}
 			} catch (Exception e) {

--
Gitblit v1.9.3