吉安感知网项目-后端
linwei
2026-06-09 c79309477f6fa17009aeb1f0a2ced6a31781c63a
fix(xingtu): 完善星图接口调用的错误处理机制

- 在推送星图飞行任务后检查返回结果,失败时抛出异常回滚事务
- 添加详细的错误日志记录功能
- 检查接口内部返回的成功状态并提取错误信息
- 优化HTTP状态码相关的错误提示信息
- 统一错误处理流程以提高系统稳定性
2 files modified
20 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java 8 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/xingtu/JianXingtuApiService.java 12 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -256,7 +256,13 @@
        // 6. 判断是否审核成功,如果是,需要判断是否整个订单的子任务都审核成功了,除了被撤回和验收拒绝的
        if (auditStatus == 4) {
            // 将审核后的任务信息推送到星图
            pushXingtuFlyTask(auditParam.getId());
            R pushResult = pushXingtuFlyTask(auditParam.getId());
            // 检查推送结果,如果失败则抛出异常回滚事务
            if (pushResult != null && !pushResult.isSuccess()) {
                String errorMsg = pushResult.getMsg();
                log.error("推送星图飞行任务失败: {}", errorMsg);
                throw new RuntimeException("推送星图飞行任务失败: " + errorMsg);
            }
            // 查询同一个工单下的所有子任务
            List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery()
                .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId()));
drone-service/drone-gd/src/main/java/org/sxkj/gd/xingtu/JianXingtuApiService.java
@@ -139,11 +139,21 @@
            if (response.getStatusCode().is2xxSuccessful()) {
                R responseBody = response.getBody();
                if (responseBody != null) {
                    // 检查接口内部返回的success状态
                    if (!responseBody.isSuccess()) {
                        // 提取错误信息,优先使用msg字段
                        String errorMsg = responseBody.getMsg();
                        if (StringUtil.isBlank(errorMsg)) {
                            errorMsg = "接口调用失败";
                        }
                        log.warn("外部接口返回失败: {}", errorMsg);
                        return R.fail(errorMsg);
                    }
                    return responseBody;
                }
                return R.fail("接口返回为空");
            }
            return R.fail("请求外部接口失败");
            return R.fail("请求外部接口失败,HTTP状态码: " + response.getStatusCode());
        } catch (Exception e) {
            log.error("请求外部接口异常: ", e);
            return R.fail("请求外部接口异常: " + e.getMessage());