Files
ruoyi-java/doc/手机号码功能详细排查指南.md
2025-11-06 22:17:57 +08:00

8.8 KiB
Raw Blame History

手机号码功能详细排查指南

已确认信息

  • 表头列名: 下单电话 (严格匹配)
  • 数据字段: status 订单的status字段存储手机号码
  • 示例数据: 17703916233

🔍 增强的日志输出

现在代码中已经添加了详细的DEBUG和INFO日志重新编译部署后您会看到以下完整的日志链路

1 表头列识别日志

开始识别表头列,共 26 列
列 0 内容: [日期]
列 1 内容: [公司]
列 2 内容: [单号]
✓ 识别到 '单号' 列:第 3 列索引2
列 3 内容: [型号]
列 4 内容: [数量]
列 5 内容: [姓名]
列 6 内容: [下单电话]
✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
...
表头列识别完成
列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: 6

关键检查点:

  • 必须看到 ✓ 识别到 '下单电话' 列 这一行
  • 最后一行 下单电话: 6 不能是null

2 手机号提取日志

准备从status字段提取手机号 - 单号: JY202511061595, status内容: [17703916233]
原始文本: [17703916233]
清理后文本: [17703916233]
成功提取手机号码: [17703916233] <- 原文本: [17703916233]
✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233

关键检查点:

  • 必须看到 成功提取手机号码 这一行
  • status内容不能为空

3 准备写入日志

✓ 准备写入手机号码 - 单号: JY202511061595, 手机号: 17703916233, 行: 2575, 列: 6

4 batchUpdate请求体日志

批量更新表格 - 请求体: {
  "requests":[
    {"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":12,
      "rows":[{"values":[{"cellValue":{"link":{"url":"https://3.cn/xxx","text":"https://3.cn/xxx"}}}]}]}}},
    {"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":6,  <-- 手机号列
      "rows":[{"values":[{"cellValue":{"text":"17703916233"}}]}]}}},
    {"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":14,
      "rows":[{"values":[{"cellValue":{"text":"251106"}}]}]}}}
  ]
}

关键检查点:

  • requests 数组应该有 3个元素(物流、手机号、标记)
  • 其中一个 startColumn 应该是 6如果下单电话在第7列

5 写入成功日志

✓ 写入成功 - 行: 2575, 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233

🎯 部署和测试步骤

步骤1: 重新编译后端

cd d:\code\RuoYi-Vue-master\ruoyi-java
mvn clean package -DskipTests

步骤2: 重启后端服务

确保服务完全重启,加载了新的代码。

步骤3: 启用DEBUG日志可选推荐

如果想看到更详细的日志,修改 application.ymllogback.xml

logging:
  level:
    com.ruoyi.web.controller.jarvis.TencentDocController: DEBUG

步骤4: 执行批量同步

  1. 打开订单列表页面
  2. 点击"批量同步物流"按钮
  3. 确认同步

步骤5: 查看日志

查看后端日志,按照上面的 5 个关键节点逐一检查。

🐛 问题排查流程

问题A: 没有识别到"下单电话"列

症状:

列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: null

排查:

  1. 查看前面的 列 X 内容: [XXX] 日志,找到所有列名
  2. 确认是否真的有一列叫 "下单电话"
  3. 检查列名是否有额外的空格或特殊字符
  4. 如果列名是 "电话" 或 "手机",也应该能识别

解决:

  • 如果列名不匹配,在腾讯文档中将该列重命名为 "下单电话"
  • 或者修改代码,添加更多匹配规则

问题B: 识别到列但没有提取到手机号

症状:

✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
...
phoneColumn为null跳过手机号提取 - 单号: JY202511061595

这个不应该发生! 如果识别到了列,phoneColumn 就不应该是null。

排查:

  • 检查是否有异常日志
  • 可能是代码逻辑问题

问题C: status字段为空或不包含手机号

症状:

准备从status字段提取手机号 - 单号: JY202511061595, status内容: []
或
准备从status字段提取手机号 - 单号: JY202511061595, status内容: [其他内容,没有手机号]
未找到匹配的手机号码,文本: [其他内容]

排查:

  1. 确认订单的status字段确实存储了手机号码
  2. 检查数据库中该订单的status值
  3. 可能某些订单的status字段不包含手机号

解决:

  • 确保所有需要同步的订单其status字段都包含11位手机号码
  • 如果status字段用于其他用途可能需要调整数据结构

问题D: 提取成功但请求体中没有手机号字段

症状:

✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233
...
批量更新表格 - 请求体: {"requests":[...]} <-- 只有2个updateRangeRequest

排查:

  • 查看 ✓ 准备写入手机号码 日志是否存在
  • 检查代码逻辑update对象是否正确构建

问题E: 写入请求发送但腾讯文档没有显示

症状: 日志显示写入成功,但腾讯文档中"下单电话"列仍然为空。

排查:

  1. 检查API响应是否真的返回 updatedCells: 1
  2. 刷新腾讯文档页面
  3. 检查列索引是否正确(可能写到了其他列)
  4. 检查该列是否有格式限制或保护

📊 完整日志示例(成功场景)

22:03:29.150 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 开始读取表头 - 行号: 2, range: A2:Z2
22:03:29.259 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 开始识别表头列,共 26 列
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 0 内容: [日期]
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 1 内容: [公司]
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 2 内容: [单号]
22:03:29.259 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - ✓ 识别到 '单号' 列:第 3 列索引2
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 6 内容: [下单电话]
22:03:29.259 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - ✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
22:03:29.259 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 表头列识别完成
22:03:29.259 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: 6

... (读取数据行) ...

22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 准备从status字段提取手机号 - 单号: JY202511061595, status内容: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 原始文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 清理后文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 成功提取手机号码: [17703916233] <- 原文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - ✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233
22:03:29.500 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - 找到订单物流链接 - 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233, 行号: 2575, 已推送: 否

... (批量写入) ...

22:03:29.700 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - ✓ 准备写入手机号码 - 单号: JY202511061595, 手机号: 17703916233, 行: 2575, 列: 6
22:03:29.700 [http-nio-30313-exec-10] DEBUG c.r.j.u.TencentDocApiUtil - 批量更新表格 - 请求体: {"requests":[...3个updateRangeRequest...]}
22:03:30.284 [http-nio-30313-exec-10] INFO  c.r.w.c.j.TencentDocController - ✓ 写入成功 - 行: 2575, 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233

🎯 下一步行动

  1. 重新编译部署
  2. 执行一次批量同步
  3. 复制完整日志(从"开始识别表头列"到"写入成功"的所有日志)
  4. 提供给我分析

如果还有问题,请提供:

  • 完整的表头识别日志(包括所有 列 X 内容 的DEBUG日志
  • 手机号提取相关的所有日志
  • batchUpdate请求体的完整JSON
  • 腾讯文档表头的截图

最后更新: 2025-11-06 22:30
版本: v2.0 - 增强日志版