From d9b3fe860d58c8a9759fa7f690febfc8cfc75827 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sat, 13 Dec 2025 22:10:21 +0800
Subject: [PATCH] refactor(okxWs): 优化账户和持仓状态更新逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java |   41 +++++++++++++++++++++--------------------
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java   |    3 ++-
 2 files changed, 23 insertions(+), 21 deletions(-)

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 9f9fb6a..70b13ec 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
@@ -89,7 +89,6 @@
                     for (int j = 0; j < detailsArray.size(); j++) {
                         JSONObject detail = detailsArray.getJSONObject(j);
                         initParam(detail);
-                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_YES.getCode());
                     }
                 } catch (Exception innerEx) {
                     log.warn("处理账户频道数据失败", innerEx);
@@ -130,6 +129,8 @@
         BigDecimal totalOrderUsdt = cashBalDecimal.multiply(total_order_usdt_factor).setScale(2, RoundingMode.DOWN);
         WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.TOTAL_ORDER_USDT.name(), String.valueOf(totalOrderUsdt));
 
+        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_YES.getCode());
+
 //        log.info(
 //                "账户详情-币种: {}, 可用余额: {}, 现金余额: {}, 余额: {}, 全仓未实现盈亏: {}, 下单总保证金: {}",
 //                ccy, availBal, cashBal, eq, upl, totalOrderUsdt
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 e1a0007..0752d51 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
@@ -65,25 +65,25 @@
                 String instId = posData.getString("instId");
                 if (CoinEnums.HE_YUE.getCode().equals(instId)) {
 //                    log.info("查询到账户{}持仓数据",CoinEnums.HE_YUE.getCode());
-                    String mgnMode = posData.getString("mgnMode");
-                    String posSide = posData.getString("posSide");
-                    String pos = posData.getString("pos");
-                    String avgPx = posData.getString("avgPx");
-                    String upl = posData.getString("upl");
-                    String uplRatio = posData.getString("uplRatio");
-                    String lever = posData.getString("lever");
-                    String liqPx = posData.getString("liqPx");
-                    String markPx = posData.getString("markPx");
-                    String imr = posData.getString("imr");
-                    String mgnRatio = posData.getString("mgnRatio");
-                    String mmr = posData.getString("mmr");
-                    String notionalUsd = posData.getString("notionalUsd");
-                    String ccy = posData.getString("ccy");
-                    String last = posData.getString("last");
-                    String idxPx = posData.getString("idxPx");
-                    String bePx = posData.getString("bePx");
-                    String realizedPnl = posData.getString("realizedPnl");
-                    String settledPnl = posData.getString("settledPnl");
+//                    String mgnMode = posData.getString("mgnMode");
+//                    String posSide = posData.getString("posSide");
+//                    String pos = posData.getString("pos");
+//                    String avgPx = posData.getString("avgPx");
+//                    String upl = posData.getString("upl");
+//                    String uplRatio = posData.getString("uplRatio");
+//                    String lever = posData.getString("lever");
+//                    String liqPx = posData.getString("liqPx");
+//                    String markPx = posData.getString("markPx");
+//                    String imr = posData.getString("imr");
+//                    String mgnRatio = posData.getString("mgnRatio");
+//                    String mmr = posData.getString("mmr");
+//                    String notionalUsd = posData.getString("notionalUsd");
+//                    String ccy = posData.getString("ccy");
+//                    String last = posData.getString("last");
+//                    String idxPx = posData.getString("idxPx");
+//                    String bePx = posData.getString("bePx");
+//                    String realizedPnl = posData.getString("realizedPnl");
+//                    String settledPnl = posData.getString("settledPnl");
 //                    log.info(
 //                            "账户持仓频道-产品类型: {}, 保证金模式: {}, 持仓方向: {}, 持仓数量: {}, 开仓平均价: {}, "
 //                                    + "未实现收益: {}, 未实现收益率: {}, 杠杆倍数: {}, 预估强平价: {}, 初始保证金: {}, "
@@ -98,7 +98,6 @@
 //                    );
 
                     initParam(posData);
-                    WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()));
                 }
             }
         } catch (Exception e) {
@@ -115,5 +114,7 @@
         WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "markPx", WsMapBuild.parseBigDecimalSafe(posData.getString("markPx")));
         WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "bePx", WsMapBuild.parseBigDecimalSafe(posData.getString("bePx")));
         WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "realizedPnl", WsMapBuild.parseBigDecimalSafe(posData.getString("realizedPnl")));
+
+        WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()));
     }
 }

--
Gitblit v1.9.1