Files
mileage-bonus/.claude_plans/rosy-shimmying-rain.md
kkfluous 573f8397a6 chore: 添加输入输出文件 + .claude记忆和计划
输入文件:
- 租赁任务考核_2026年{1,2,3}月.xlsx (考核源数据)
- {1,2}月.xlsx (客户盈亏表)
- 车辆里程考核与奖金发放规则(V.1.2).docx

输出文件:
- 里程任务考核_{1,2,3}月核算.xlsx (月度核算结果)
- 里程任务考核_Q1汇总.xlsx (含车辆台账)
- 3月客户盈亏表(待填写).xlsx (模版)

.claude_memory: 项目记忆(规则/偏好/架构/测试车辆)
.claude_plans: 历次计划文件

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 14:09:24 +08:00

7.6 KiB
Raw Permalink Blame History

加氢站对账单功能

Context

加氢记录审核通过后,需要定期和加氢站对账结算。当前只有一个 settlement_status 字段0未对账/1已出账/2已付款但没有对账单实体。需要新建对账单模块支持生成对账单 → 查看/下载 → 确认付款 → 状态同步到氢费记录。

核心概念

一张对账单 = 一个加氢站 + 一个时间段内的所有已审核订单
  • 生成条件时间范围内该站所有订单必须已审核reviewStatus=1
  • 付款含义:我们向加氢站付款(成本结算)
  • 状态流转:生成(已出账) → 付款(已付款) / 删除(回退未对账)
  • 关联订单:对账单关联的订单 snapshot 快照,生成后订单 settlementStatus 同步为已出账
  • 下载格式Excel + PDF

数据模型

新建表:hydrogen_settlement_bill(加氢站对账单)

字段 类型 说明
id BIGINT PK 主键
bill_code VARCHAR(32) UNIQUE 对账单编号SB+日期+序号)
station_id BIGINT 加氢站ID
station_name VARCHAR(128) 加氢站名称(冗余)
period_start DATE 对账起始日期
period_end DATE 对账截止日期
order_count INT 订单笔数
total_gas_weight DECIMAL(12,4) 总加注量(kg)
total_amount DECIMAL(12,2) 总金额(元) — 成本金额
status TINYINT 0-已出账 1-已付款
paid_time DATETIME 付款时间
paid_by BIGINT 付款确认人
remark VARCHAR(500) 备注
create_by/create_time/update_by/update_time/del_flag 审计字段

新建表:hydrogen_settlement_bill_item(对账单明细快照)

字段 类型 说明
id BIGINT PK 主键
bill_id BIGINT 关联对账单ID
order_id BIGINT 关联氢费记录ID
order_number VARCHAR(64) 订单编号
plate_number VARCHAR(16) 车牌号
fill_end_time DATETIME 加注时间
gas_weight DECIMAL(10,4) 加注重量(kg)
gas_price DECIMAL(10,4) 气价(元/kg)
total_amount DECIMAL(10,2) 金额(元)
create_time DATETIME 创建时间

注:明细快照不含客户/项目信息——加氢站对账只关心站方数据(车牌、时间、重量、气价、金额)。


API 设计

后端接口

方法 路径 说明
POST /station/settlement-bill/generate 生成对账单(传 stationId, periodStart, periodEnd
GET /station/settlement-bill/page 对账单分页列表
GET /station/settlement-bill/{id} 对账单详情(含明细)
PUT /station/settlement-bill/pay/{id} 确认付款
DELETE /station/settlement-bill/{id} 删除对账单(仅已出账可删)
GET /station/settlement-bill/export-excel/{id} 导出 Excel
GET /station/settlement-bill/export-pdf/{id} 导出 PDF

生成对账单逻辑

1. 校验:时间范围内该站所有订单 reviewStatus 必须全部为 1已审核
2. 校验:时间范围内该站不能有 settlementStatus != 0未对账的订单避免重复出账
3. 查询:该站 + 时间范围 + reviewStatus=1 + settlementStatus=0 的所有订单
4. 汇总:计算 orderCount, totalGasWeight, totalAmount
5. 创建hydrogen_settlement_bill + 逐条 snapshot 到 bill_item
6. 更新:所有关联订单的 settlementStatus → 1已出账
7. 返回对账单ID

确认付款逻辑

1. 校验:对账单 status 必须为 0已出账
2. 更新:对账单 status → 1已付款记录 paidTime, paidBy
3. 批量更新:关联订单的 settlementStatus → 2已付款

删除对账单逻辑

1. 校验:对账单 status 必须为 0已出账未付款才可删
2. 批量回退:关联订单的 settlementStatus → 0未对账
3. 删除:对账单 + 明细(逻辑删除)

前端设计

加氢记录页面 — 增加「生成对账单」按钮

工具栏新增按钮,点击弹出对话框:

  • 选择加氢站(下拉)
  • 选择对账时间范围(日期区间选择器)
  • 点击「生成」→ 调用后端 → 成功后自动跳转对账单详情页

对账单页面(/energy/order/settlement-bill/:id

不单独设菜单,通过加氢记录页面跳转。

页面结构:

┌─ 对账单详情 ─────────────────────────────┐
│                                          │
│  对账单号SB20260325001                  │
│  加氢站:嘉兴站   状态:[已出账]           │
│  对账周期2026-03-01 ~ 2026-03-31        │
│                                          │
│  ┌────────┬────────┬────────┐            │
│  │ 笔数   │ 总加注量│ 总金额  │            │
│  │  25    │ 150 kg │ ¥4,500 │            │
│  └────────┴────────┴────────┘            │
│                                          │
│  [确认付款]  [删除]  [导出Excel] [导出PDF] │
│                                          │
│  ── 明细列表 ──                           │
│  订单编号 | 车牌 | 加注时间 | 重量(kg) | 气价(元/kg) | 金额(元) │
│  ...                                     │
└──────────────────────────────────────────┘

对账单列表页(可选,也可嵌在加氢记录页面作为 Tab

暂不独立列表页,通过加氢记录页面「已出账/已付款」筛选 + 点击跳转查看。


文件清单

后端 — ln-energy

操作 文件
Create db/station/V6__create_settlement_bill.sql
Create entity/settlement/po/HydrogenSettlementBill.java
Create entity/settlement/po/HydrogenSettlementBillItem.java
Create entity/settlement/vo/SettlementBillVO.java
Create entity/settlement/vo/SettlementBillDetailVO.java
Create entity/settlement/req/GenerateSettlementBillReq.java
Create mapper/HydrogenSettlementBillMapper.java
Create mapper/HydrogenSettlementBillItemMapper.java
Create service/ISettlementBillService.java
Create service/impl/SettlementBillServiceImpl.java
Create controller/SettlementBillController.java
Modify db/init/V1__init_ln_energy.sql — 补建表语句

前端 — ln-one-os-web

操作 文件
Create views/station/settlement/bill-detail.vue — 对账单详情页
Create views/station/settlement/generate-modal.vue — 生成对账单对话框
Create api/station/settlement/index.ts — 对账单 API
Modify views/station/order/index.vue — 工具栏加「生成对账单」按钮
Modify 后端动态菜单 — 隐藏菜单注册hideInMenu

数据库

操作 说明
Execute DDL hydrogen_settlement_bill + hydrogen_settlement_bill_item
Menu 注册隐藏菜单(对账单详情页路由)

验证

  1. mvn clean compile 编译通过
  2. DDL 执行到数据库
  3. 测试:选择加氢站 + 时间范围 → 生成对账单 → 跳转详情
  4. 测试:时间范围内有未审核订单 → 生成失败提示
  5. 测试:确认付款 → 对账单状态+订单状态同步
  6. 测试:删除对账单 → 订单状态回退
  7. 测试:已付款的对账单不可删除
  8. 测试:导出 Excel / PDF