From fc68aa452e2fd56441128d1d5a4b32f254c6191d Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sun, 05 Oct 2025 00:45:32 +0800
Subject: [PATCH] 修改地址
---
src/main/java/project/contract/job/ContractApplyOrderHandleJob.java | 46 ++++++++++++++++++++--------------------------
1 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/src/main/java/project/contract/job/ContractApplyOrderHandleJob.java b/src/main/java/project/contract/job/ContractApplyOrderHandleJob.java
index 601ed67..928f08a 100644
--- a/src/main/java/project/contract/job/ContractApplyOrderHandleJob.java
+++ b/src/main/java/project/contract/job/ContractApplyOrderHandleJob.java
@@ -97,40 +97,34 @@
/**
* 平仓
*/
- List<ContractOrder> list = this.contractOrderService.findSubmitted(applyOrder.getPartyId().toString(),
- applyOrder.getSymbol(), applyOrder.getDirection());
- if (list.size() == 0) {
+ List<ContractOrder> list = this.contractOrderService.findSubmitted(
+ applyOrder.getPartyId().toString(), applyOrder.getSymbol(), applyOrder.getDirection());
+
+ if (list == null || list.isEmpty()) {
applyOrder.setVolume(0D);
applyOrder.setState(ContractApplyOrder.STATE_CREATED);
this.contractApplyOrderService.update(applyOrder);
- }
- for (int i = 0; i < list.size(); i++) {
- ContractOrder order = list.get(i);
- boolean lock_order = false;
- try {
- if (!ContractLock.add(order.getOrder_no())) {
- continue;
- }
- lock_order = true;
- applyOrder = this.contractOrderService.saveClose(applyOrder, realtime, order.getOrder_no());
-
- if (ContractApplyOrder.STATE_CREATED.equals(applyOrder.getState())) {
- break;
- }
- } catch (Exception e) {
- logger.error("error:", e);
- } finally {
- if (lock_order) {
- ThreadUtils.sleep(100);
- ContractLock.remove(order.getOrder_no());
+ } else {
+ for (ContractOrder order : list) {
+ synchronized (this){
+ try {
+ if (!ContractLock.add(order.getOrder_no())) {
+ continue;
+ }
+ applyOrder = this.contractOrderService.saveClose(applyOrder, realtime, order.getOrder_no());
+ if (ContractApplyOrder.STATE_CREATED.equals(applyOrder.getState())) {
+ break;
+ }
+ } catch (Exception e) {
+ logger.error("Error processing order. Apply order: " + applyOrder.getOrder_no() + ", Contract order: " + order.getOrder_no(), e);
+ } finally {
+ ContractLock.remove(order.getOrder_no());
+ }
}
}
-
}
-
}
-
} catch (Exception e) {
logger.error("error:", e);
} finally {
--
Gitblit v1.9.3