From 8612a0259b4ed6459c06a8732f879184e82812f0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 17 Dec 2025 09:54:33 +0800
Subject: [PATCH] fix(okxNewPrice): 修复账户和持仓状态初始化逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java |    2 +-
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java       |    6 ++++--
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java         |    3 +++
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
index 2ac2620..643a75f 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -129,7 +129,7 @@
         BigDecimal pos = PositionsWs.getAccountMap(positionAccountName).get("pos");
         if (BigDecimal.ZERO.compareTo( pos) >= 0) {
             log.error("持仓数量为零,进行初始化订单");
-            return OrderParamEnums.INIT.getValue();
+            return null;
         }
         // 判断是否保证金超标
         if (PositionsWs.getAccountMap(positionAccountName).get("imr") == null){
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
index bca358b..1e60135 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
@@ -96,6 +96,9 @@
                     for (int j = 0; j < detailsArray.size(); j++) {
                         JSONObject detail = detailsArray.getJSONObject(j);
                         initParam(detail, accountName);
+
+                        Map<String, String> accountMap = getAccountMap(accountName);
+                        WsMapBuild.saveStringToMap(accountMap, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_YES.getCode());
                     }
                 } catch (Exception innerEx) {
                     log.warn("处理账户频道数据失败", innerEx);
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java
index 73953c5..a27dad2 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java
@@ -108,6 +108,10 @@
                             markPx,fee,fundingFee
                     );
                     initParam(posData, accountName,posSide);
+
+                    String accountNamePositons = initAccountName(accountName, posSide);
+                    Map<String, BigDecimal> accountMap = getAccountMap(accountNamePositons);
+                    WsMapBuild.saveBigDecimalToMap(accountMap, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()));
                 }
             }
         } catch (Exception e) {
@@ -128,7 +132,5 @@
         WsMapBuild.saveBigDecimalToMap(accountMap, "realizedPnl", WsMapBuild.parseBigDecimalSafe(posData.getString("realizedPnl")));
         WsMapBuild.saveBigDecimalToMap(accountMap, "fee", WsMapBuild.parseBigDecimalSafe(posData.getString("fee")));
         WsMapBuild.saveBigDecimalToMap(accountMap, "fundingFee", WsMapBuild.parseBigDecimalSafe(posData.getString("fundingFee")));
-
-        WsMapBuild.saveBigDecimalToMap(accountMap, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()));
     }
 }

--
Gitblit v1.9.1