feat(okxNewPrice): 增加持仓初始化订单的异常处理
- 修改 saveStringToMap 方法返回布尔值以标识操作结果
- 在持仓初始化逻辑中增加对保存操作成功与否的判断
- 操作失败时返回 null,避免后续流程使用无效状态
- 增强系统在关键数据写入失败时的健壮性
| | |
| | | BigDecimal pos = PositionsWs.POSITIONSWSMAP.get("pos"); |
| | | if (BigDecimal.ZERO.compareTo( pos) >= 0) { |
| | | log.error("持仓数量为零,进行初始化订单"); |
| | | WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue()); |
| | | return OrderParamEnums.INIT.getValue(); |
| | | boolean flag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue()); |
| | | if ( flag){ |
| | | return OrderParamEnums.INIT.getValue(); |
| | | }else{ |
| | | return null; |
| | | } |
| | | } |
| | | // 判断是否保证金超标 |
| | | if (PositionsWs.POSITIONSWSMAP.get("imr") == null){ |
| | |
| | | @Slf4j |
| | | public class WsMapBuild { |
| | | |
| | | public static void saveBigDecimalToMap(Map<String,BigDecimal> accountMap, String key, BigDecimal value) { |
| | | public static boolean saveBigDecimalToMap(Map<String,BigDecimal> accountMap, String key, BigDecimal value) { |
| | | try { |
| | | accountMap.put(key, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error("保存账户数据到MAP 失败", e); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public static void saveStringToMap(Map<String,String> accountMap, String key, String value) { |
| | | public static boolean saveStringToMap(Map<String,String> accountMap, String key, String value) { |
| | | try { |
| | | accountMap.put(key, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error("保存账户数据到MAP 失败", e); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 安全地将字符串解析为 BigDecimal 类型 |
| | | * |