Administrator
2025-12-17 8612a0259b4ed6459c06a8732f879184e82812f0
fix(okxNewPrice): 修复账户和持仓状态初始化逻辑

- 在 AccountWs 中处理账户频道数据时保存 READY_STATE 状态
- 修改 CaoZuoServiceImpl 持仓为零时返回 null 而非初始订单值
- 调整 PositionsWs 中持仓数据初始化流程并正确设置 READY_STATE
- 移除 PositionsWs 中重复的状态保存操作
3 files modified
11 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java 6 ●●●●● patch | view | raw | blame | history
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){
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);
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()));
    }
}