Files
ledgerly-docs/dev/bill-fields.md
T

3.4 KiB
Raw Blame History

账单字段说明

本章说明支付宝「交易记录明细查询」导出的 CSV 在导入本系统时,各字段的读取与丢弃情况,可作为开发新解析器或调整字段映射的参考。

样例与实现位置

  • 编码:GBK(解析器兼容 UTF-8 / UTF-8 BOM)
  • 解析器:src/main/java/cn/rosercode/finance/importer/AlipayBillParser.java
  • 落库服务:src/main/java/cn/rosercode/finance/service/impl/BillImportServiceImpl.java

文件结构

位置 内容 是否处理
第 1 行 支付宝交易记录明细查询 忽略
第 2 行 账号:[...] 忽略
第 3 行 起始日期:[...] 终止日期:[...] 忽略
第 4 行 ---交易记录明细列表--- 忽略
第 5 行 表头(以「交易号」开头) 作为列定位依据
数据行 每行一笔交易 逐行解析
结尾统计 待收入/已支出/待支出、导出时间、用户 忽略

解析器通过「以 交易号 开头」定位表头行;遇到空行、--- 分隔线或 共 开头的统计行即结束。

CSV 完整表头(16 列)

序号 列名 序号 列名
1 交易号 9 商品名称
2 商家订单号 10 金额(元)
3 交易创建时间 11 收/支
4 付款时间 12 交易状态
5 最近修改时间 13 服务费(元)
6 交易来源地 14 成功退款(元)
7 类型 15 备注
8 交易对方 16 资金状态

完全丢弃的字段(7 个)

列名 说明
商家订单号 未使用
最近修改时间 未使用
交易来源地 未使用
类型 未使用,改用「收/支」推断类型
服务费(元) 未使用
成功退款(元) 未使用
备注 支付宝自带备注被丢弃;系统备注由「交易对方 · 商品名称」拼接生成

读取但未落库的字段(3 个)

列名 用途
交易状态 仅用于类型推断与预览展示
资金状态 仅用于「不计收支」行的类型推断
交易创建时间 仅当「付款时间」为空时作为交易时间兜底

落库映射(写入 t_transaction)

CSV 列 数据库字段 说明
交易号 external_no 导入去重键
付款时间(缺失时用交易创建时间) transaction_time 交易发生时间
金额(元) amount 去除千分位逗号后解析
收/支 type + include_in_stats 「不计收支」默认 include_in_stats = 0
交易对方 + 商品名称 remark 拼接为「交易对方 · 商品名称」,截断至 255 字符
— channel 固定为 ALIPAY
— category_id 取用户选择的默认分类;未选择则为 NULL

类型推断规则

收/支 交易状态 / 资金状态 推断类型
支出 — EXPENSE
收入 — INCOME
不计收支 交易状态含「退款」 INCOME
不计收支 资金状态为「已收入」 INCOME
不计收支 其他(如「交易关闭」) EXPENSE

可能的后续增强

  1. 将支付宝「备注」并入系统 remark(当前完全丢失)。
  2. 新增字段记录「服务费」/「成功退款」。
  3. 保留「商家订单号」作为辅助去重或展示。

相关文档