Administrator
2025-12-18 c45bf695a0af9f03f2064f79d502404cf67e416b
fix(okxWs): 优化订单发送前的就绪状态检查

- 提前提取并验证仓位通道就绪状态,避免无效订单发送
- 移除冗余的条件判断逻辑,简化代码结构
- 保留必要的账户通道就绪检查,确保交易安全
- 增强日志记录,便于问题追踪和调试
- 统一处理未就绪情况下的返回逻辑,提升代码可读性
- 修复潜在的空指针异常风险,提高系统稳定性
1 files modified
19 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java
@@ -83,6 +83,12 @@
         */
        String positionAccountName = PositionsWs.initAccountName(accountName, posSide);
        BigDecimal positionsReadyState = PositionsWs.getAccountMap(positionAccountName).get(CoinEnums.READY_STATE.name()) == null
                ? BigDecimal.ZERO : PositionsWs.getAccountMap(positionAccountName).get(CoinEnums.READY_STATE.name());
        if (WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()).compareTo(positionsReadyState) != 0) {
            log.info("仓位{}通道未就绪,取消发送",positionAccountName);
            return;
        }
        if (
                (posSide.equals(CoinEnums.POSSIDE_LONG.getCode()) && side.equals(CoinEnums.SIDE_BUY.getCode()))
                || (posSide.equals(CoinEnums.POSSIDE_SHORT.getCode()) && side.equals(CoinEnums.SIDE_SELL.getCode()))
@@ -92,19 +98,6 @@
                log.info("账户通道未就绪,取消发送");
                return;
            }
        }else if (
                (posSide.equals(CoinEnums.POSSIDE_LONG.getCode()) && side.equals(CoinEnums.SIDE_SELL.getCode()))
                || (posSide.equals(CoinEnums.POSSIDE_SHORT.getCode()) && side.equals(CoinEnums.SIDE_BUY.getCode()))
        ) {
            BigDecimal positionsReadyState = PositionsWs.getAccountMap(positionAccountName).get(CoinEnums.READY_STATE.name()) == null
                    ? BigDecimal.ZERO : PositionsWs.getAccountMap(positionAccountName).get(CoinEnums.READY_STATE.name());
            if (WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()).compareTo(positionsReadyState) != 0) {
                log.info("仓位{}通道未就绪,取消发送",positionAccountName);
                return;
            }
        }else{
            log.info("下单构建失败{},{},取消发送",posSide, side);
            return;
        }
        try {