财务域功能详细设计文档(反推自代码)
文档类型: 反推设计文档(基于实际代码逆向分析)
生成日期: 2026-04-23
分析方法: 全量搜索 ether-pms 后端代码 + ether-admin 前端代码
对比基线: ether-docs/02-DESIGN/domains/04-FINANCE.md
一、领域概述(当前实现状态)
1.1 总体结论
财务域核心功能(FeeItem / FeeBill / FeePayment / FeeRefund)均未实现。 不存在 module-finance 模块,不存在任何 fin_* 数据库表,不存在任何收费/账单/支付/退款相关的后端实体、服务或控制器。
当前已实现的与财务域有间接关联的功能,仅有 能耗计量管理(EnergyMeter / EnergyConsumption),归属在 module-mdm 模块中,实现了能耗数据的采集和简单费用计算(消耗量 × 单价),但未与账单系统对接。
1.2 实现状态总览
| 功能模块 |
设计文档状态 |
实际代码状态 |
差异 |
| FeeItem(收费项目) |
🟢 已实现 |
🔴 未实现 |
设计文档与实际代码不符 |
| FeeBill(收费账单) |
🟢 已实现 |
🔴 未实现 |
设计文档与实际代码不符 |
| FeePayment(支付记录) |
🟢 已实现 |
🔴 未实现 |
设计文档与实际代码不符 |
| FeeRefund(退款记录) |
🔴 未实现 |
🔴 未实现 |
一致 |
| 费用催缴定时任务 |
🟢 已实现 |
🔴 未实现 |
设计文档与实际代码不符 |
| 滞纳金计算 |
🟢 已实现 |
🔴 未实现 |
设计文档与实际代码不符 |
| 能耗计量管理 |
未在设计文档中 |
🟢 已实现 |
在 module-mdm 中实现 |
| 能耗费用计算 |
未在设计文档中 |
🟢 已实现 |
简单的 consumption × unitPrice |
| 支付网关对接 |
🔴 未实现 |
🔴 未实现 |
一致 |
| 财务报表 |
🔴 未实现 |
🔴 未实现 |
一致 |
1.3 关键发现
module-finance 模块不存在 — 在 ether-pms 中无此目录
fin_* 数据库表不存在 — 无 FeeItem / FeeBill / FeePayment / FeeRefund 对应的表
- 设计文档 04-FINANCE.md 标注"已实现"的功能实际未实现 — 文档中 FeeItem/FeeBill/FeePayment 标记为 🟢 已实现,但代码中找不到任何对应实体
- 能耗管理在 module-mdm 中实现 — EnergyMeter / EnergyConsumption 实体、服务、控制器、前端页面均已实现
- 前端无任何财务相关页面 — ether-admin 中无 fee/bill/payment/refund 相关视图,仅有 energy 相关视图
- 员工端/业主端无财务功能 — ether-app-employee 和 ether-app-owner 中无任何财务相关代码
二、已实现的数据结构(能耗计量相关实体)
2.1 EnergyMeter(能源计量点)
所在模块: module-mdm
数据库表: ops_energy_meter
源码位置: ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java
| 字段名 |
类型 |
数据库列名 |
约束 |
说明 |
| id |
UUID |
id |
PK |
主键 |
| projectId |
UUID |
project_id |
NOT NULL |
所属项目 |
| meterCode |
String |
meter_code |
NOT NULL, UNIQUE |
计量点编码(自动生成:EM + yyyyMMddHHmmss) |
| meterName |
String |
meter_name |
NOT NULL |
计量点名称 |
| energyType |
EnergyType |
energy_type |
NOT NULL |
能源类型枚举 |
| spaceNodeId |
UUID |
space_node_id |
— |
关联空间节点 |
| installationLocation |
String |
installation_location |
— |
安装位置 |
| ratedCapacity |
BigDecimal(10,2) |
rated_capacity |
— |
额定容量 |
| unitPrice |
BigDecimal(10,4) |
unit_price |
— |
单价(用于费用计算) |
| status |
Status |
status |
NOT NULL |
状态枚举,默认 ACTIVE |
| createdAt |
LocalDateTime |
created_at |
— |
创建时间 |
| updatedAt |
LocalDateTime |
updated_at |
— |
更新时间 |
枚举定义:
public enum EnergyType {
LIGHTING("照明插座用电"),
HVAC("空调用电"),
POWER("动力用电"),
SPECIAL("特殊用电"),
WATER("给排水"),
GAS("燃气");
}
public enum Status {
ACTIVE, INACTIVE
}
与原设计文档的差异:
| 项目 |
原设计(04-FINANCE.md) |
实际实现 |
差异说明 |
| 所属模块 |
ether-finance |
module-mdm |
归属不同模块 |
| 能源类型 |
FeeType: PROPERTY/PARKING/WATER/ELECTRICITY/GAS/HEATING/REPAIR_FUND/OTHER |
EnergyType: LIGHTING/HVAC/POWER/SPECIAL/WATER/GAS |
实际更细分(按用电分项),但缺少供暖、物业费等 |
| 单价精度 |
NUMERIC(12,2) |
BigDecimal(10,4) |
实际精度更高(4位小数) |
| 计费方式 |
BillingMethod: FIXED/AREA/USAGE/CUSTOM |
无 |
未实现计费方式枚举 |
| 账期/到期日 |
billDay/dueDay/overdueDay |
无 |
未实现账期管理 |
| 滞纳金 |
enableLateFee/lateFeeRate/maxLateFee |
无 |
未实现滞纳金 |
2.2 EnergyConsumption(能耗记录)
所在模块: module-mdm
数据库表: ops_energy_consumption
源码位置: ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java
| 字段名 |
类型 |
数据库列名 |
约束 |
说明 |
| id |
UUID |
id |
PK |
主键 |
| projectId |
UUID |
project_id |
NOT NULL |
所属项目 |
| meterId |
UUID |
meter_id |
NOT NULL |
关联计量点 |
| consumptionDate |
LocalDate |
consumption_date |
NOT NULL |
记录日期 |
| previousReading |
BigDecimal(12,2) |
previous_reading |
— |
上次读数 |
| currentReading |
BigDecimal(12,2) |
current_reading |
— |
当前读数 |
| consumption |
BigDecimal(12,2) |
consumption |
NOT NULL |
消耗量 = current − previous |
| amount |
BigDecimal(10,2) |
amount |
— |
费用 = consumption × unitPrice |
| recordedBy |
UUID |
recorded_by |
— |
记录人 |
| recordMethod |
RecordMethod |
record_method |
— |
记录方式,默认 MANUAL |
| remarks |
String(1000) |
remarks |
— |
备注 |
| createdAt |
LocalDateTime |
created_at |
— |
创建时间 |
数据库索引:
idx_ec_meter_date -- (meter_id, consumption_date)
idx_ec_project_date -- (project_id, consumption_date)
枚举定义:
public enum RecordMethod {
MANUAL, // 手动录入
IOT // IoT自动采集
}
与原设计文档的差异:
| 项目 |
原设计(FeeBill) |
实际实现(EnergyConsumption) |
差异说明 |
| 实体性质 |
账单(应收费用单据) |
能耗记录(抄表数据) |
本质不同,能耗记录不是账单 |
| 账单编号 |
billNo |
无 |
无账单编号 |
| 关联业主 |
ownerId |
无 |
未关联业主 |
| 关联房产 |
spaceNodeId |
间接通过meter.spaceNodeId |
未直接关联 |
| 账期 |
billPeriod/billDate/dueDate/overdueDate |
consumptionDate |
无账期概念 |
| 金额体系 |
amount/lateFee/discount/payableAmount/paidAmount |
amount(仅计算值) |
无应收/已付/优惠/滞纳金 |
| 状态流转 |
UNPAID/PARTIAL_PAID/PAID/OVERDUE/CANCELLED |
无状态 |
无支付状态 |
| 用量单位 |
usageAmount + usageUnit |
consumption |
无独立用量单位 |
三、已实现的API接口
3.1 后端API(EnergyController)
基础路径: /api/ops/energy
源码位置: ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/controller/EnergyController.java
3.1.1 计量点管理
| 方法 |
路径 |
说明 |
请求参数 |
响应类型 |
| POST |
/meters |
创建计量点 |
EnergyMeter JSON |
ApiResponse<EnergyMeter> |
| GET |
/meters |
查询计量点列表 |
projectId(必填), energyType(可选) |
ApiResponse<List<EnergyMeter>> |
| GET |
/meters/{id} |
获取计量点详情 |
path: id |
ApiResponse<EnergyMeter> |
| PUT |
/meters/{id} |
更新计量点 |
path: id, EnergyMeter JSON |
ApiResponse<EnergyMeter> |
| DELETE |
/meters/{id} |
删除计量点(软删除) |
path: id |
ApiResponse<Void> |
3.1.2 能耗记录
| 方法 |
路径 |
说明 |
请求参数 |
响应类型 |
| POST |
/consumption |
录入能耗数据 |
{meterId, currentReading, recordedBy} |
ApiResponse<EnergyConsumption> |
| GET |
/consumption/{meterId} |
查询能耗记录 |
path: meterId, startDate(可选), endDate(可选) |
ApiResponse<List<EnergyConsumption>> |
3.1.3 能耗统计
| 方法 |
路径 |
说明 |
请求参数 |
响应类型 |
| GET |
/statistics/by-type |
按类型统计消耗 |
projectId, month(yyyy-MM-dd) |
ApiResponse<Map<EnergyType, BigDecimal>> |
| GET |
/statistics/unit-consumption |
单方能耗 |
projectId, month(yyyy-MM-dd) |
ApiResponse<BigDecimal> |
3.2 前端API封装
源码位置: ether-admin/src/api/energy.ts
| 函数名 |
HTTP方法 |
URL |
说明 |
getEnergyMeters |
GET |
/api/ops/energy/meters |
获取计量点列表 |
getEnergyMeter |
GET |
/api/ops/energy/meters/{id} |
获取计量点详情 |
createEnergyMeter |
POST |
/api/ops/energy/meters |
创建计量点 |
updateEnergyMeter |
PUT |
/api/ops/energy/meters/{id} |
更新计量点 |
deleteEnergyMeter |
DELETE |
/api/ops/energy/meters/{id} |
删除计量点 |
recordEnergyConsumption |
POST |
/api/ops/energy/consumption |
录入能耗 |
getEnergyConsumption |
GET |
/api/ops/energy/consumption/{meterId} |
获取能耗记录 |
getConsumptionByType |
GET |
/api/ops/energy/statistics/by-type |
按类型统计 |
getUnitConsumption |
GET |
/api/ops/energy/statistics/unit-consumption |
单方能耗 |
3.3 前端页面路由
源码位置: ether-admin/src/router/index.ts
| 路径 |
路由名 |
组件 |
说明 |
energy/meters |
EnergyMeters |
views/energy/MeterList.vue |
计量点管理 |
energy/consumption |
EnergyConsumption |
views/energy/ConsumptionRecord.vue |
能耗录入 |
energy/statistics |
EnergyStatistics |
views/energy/EnergyStatistics.vue |
能耗统计 |
四、已实现的业务规则
4.1 计量点管理规则
| 规则 |
实现位置 |
说明 |
| 编码自动生成 |
EnergyMeterServiceImpl.generateMeterCode() |
格式:EM + yyyyMMddHHmmss,确保唯一性(冲突时追加后缀) |
| 默认状态 |
EnergyMeterServiceImpl.createMeter() |
新建计量点默认状态为 ACTIVE |
| 软删除 |
EnergyMeterServiceImpl.deleteMeter() |
删除操作将状态设为 INACTIVE,非物理删除 |
| 查询过滤 |
EnergyMeterRepository.findByProjectIdAndStatus() |
按项目查询时仅返回 ACTIVE 状态的计量点 |
| 部分更新 |
EnergyMeterServiceImpl.updateMeter() |
仅更新非空字段 |
4.2 能耗录入规则
| 规则 |
实现位置 |
说明 |
| 仪表状态校验 |
EnergyConsumptionServiceImpl.recordConsumption() |
只能对 ACTIVE 状态的仪表进行抄表(错误码 6102) |
| 读数递增校验 |
EnergyConsumptionServiceImpl.recordConsumption() |
当前读数不能小于上次读数(错误码 6103) |
| 仪表存在性校验 |
EnergyConsumptionServiceImpl.recordConsumption() |
仪表不存在时抛出异常(错误码 6101) |
| 自动获取上次读数 |
EnergyConsumptionServiceImpl.recordConsumption() |
从最近一条记录获取 previousReading,首次抄表为 0 |
| 自动计算消耗量 |
EnergyConsumptionServiceImpl.recordConsumption() |
consumption = currentReading − previousReading |
| 自动计算费用 |
EnergyConsumptionServiceImpl.recordConsumption() |
amount = consumption × meter.unitPrice(单价为空时为 0) |
| 默认手动录入 |
EnergyConsumptionServiceImpl.recordConsumption() |
recordMethod 默认设为 MANUAL |
4.3 能耗统计规则
| 规则 |
实现位置 |
说明 |
| 按月统计 |
EnergyConsumptionServiceImpl.getConsumptionByType() |
根据 month 参数计算月份起止日期 |
| 类型初始化 |
EnergyConsumptionServiceImpl.getConsumptionByType() |
所有 EnergyType 初始化为 BigDecimal.ZERO |
| 按类型汇总(简化) |
EnergyConsumptionServiceImpl.getConsumptionByType() |
⚠️ 当前实现将项目总消耗全部归入 LIGHTING 类型,未按 meter.energyType 真正分项汇总 |
| 单方能耗 |
EnergyConsumptionServiceImpl.getUnitConsumption() |
遍历项目所有 ACTIVE 计量点,累加月度消耗量 |
4.4 已知实现缺陷
| 缺陷 |
严重度 |
说明 |
| 按类型统计不准确 |
🔴 高 |
getConsumptionByType() 将总消耗全部归入 LIGHTING,代码注释也承认"实际业务中应按 meter.energyType 汇总" |
| 前后端能源类型不一致 |
🟡 中 |
后端 EnergyType 枚举为 LIGHTING/HVAC/POWER/SPECIAL/WATER/GAS,前端 energyTypeMap 为 ELECTRICITY/WATER/GAS/CENTRAL_HEATING/CENTRAL_COOLING |
| 无账期概念 |
🟡 中 |
能耗记录只有 consumptionDate,无账单周期、到期日等概念 |
| 费用仅为计算值 |
🟡 中 |
amount 字段仅是 consumption × unitPrice 的计算结果,非正式账单金额 |
| 无支付流程 |
🔴 高 |
无支付记录、支付状态、支付方式等 |
| 无业主关联 |
🟡 中 |
能耗记录不关联业主,无法按业主统计费用 |
五、与原需求文档 04-FINANCE.md 的差异对比表
5.1 实体级差异
| 设计项 |
04-FINANCE.md 设计方案 |
实际代码实现 |
差异等级 |
| FeeItem 实体 |
已定义完整实体(code/name/type/billingMethod/unitPrice/unit/billDay/dueDay/overdueDay/enableLateFee/lateFeeRate/maxLateFee) |
❌ 不存在 |
🔴 完全缺失 |
| FeeBill 实体 |
已定义完整实体(billNo/feeItemId/spaceNodeId/ownerId/billPeriod/billDate/dueDate/overdueDate/usageAmount/amount/lateFee/discount/payableAmount/paidAmount/status) |
❌ 不存在 |
🔴 完全缺失 |
| FeePayment 实体 |
已定义完整实体(paymentNo/amount/method/thirdPartyNo/status/failReason/paymentTime) |
❌ 不存在 |
🔴 完全缺失 |
| FeeRefund 实体 |
已定义完整实体(refundNo/amount/reason/status/approverId/approveTime/thirdPartyRefundNo/refundTime) |
❌ 不存在 |
🔴 完全缺失 |
| fin_fee_item 表 |
已定义 DDL |
❌ 不存在 |
🔴 完全缺失 |
| fin_fee_bill 表 |
已定义 DDL |
❌ 不存在 |
🔴 完全缺失 |
| fin_fee_payment 表 |
已定义 DDL |
❌ 不存在 |
🔴 完全缺失 |
| fin_fee_refund 表 |
已定义 DDL |
❌ 不存在 |
🔴 完全缺失 |
| EnergyMeter 实体 |
未在设计文档中 |
✅ 在 module-mdm 中实现 |
🟡 设计文档遗漏 |
| EnergyConsumption 实体 |
未在设计文档中 |
✅ 在 module-mdm 中实现 |
🟡 设计文档遗漏 |
| ops_energy_meter 表 |
未在设计文档中 |
✅ 已创建 |
🟡 设计文档遗漏 |
| ops_energy_consumption 表 |
未在设计文档中 |
✅ 已创建 |
🟡 设计文档遗漏 |
5.2 功能级差异
| 功能 |
04-FINANCE.md 状态 |
实际状态 |
差异说明 |
| 收费项目管理(CRUD) |
🟢 已实现 |
🔴 未实现 |
无 FeeItem 代码 |
| 账单生成 |
🟢 已实现 |
🔴 未实现 |
无 FeeBill 代码 |
| 账单状态流转 |
🟢 已实现 |
🔴 未实现 |
无状态机 |
| 支付处理 |
🟢 已实现 |
🔴 未实现 |
无 FeePayment 代码 |
| 费用催缴(定时任务) |
🟢 已实现 |
🔴 未实现 |
无 FeeReminderJob 代码 |
| 滞纳金计算 |
🟢 已实现 |
🔴 未实现 |
无计算逻辑 |
| 退款流程 |
🔴 未实现 |
🔴 未实现 |
一致 |
| 支付网关对接 |
🔴 未实现 |
🔴 未实现 |
一致 |
| 财务报表 |
🔴 未实现 |
🔴 未实现 |
一致 |
| 能耗计量点管理 |
未提及 |
🟢 已实现 |
设计文档遗漏 |
| 能耗抄表录入 |
未提及 |
🟢 已实现 |
设计文档遗漏 |
| 能耗费用计算 |
未提及 |
🟢 已实现(简化) |
设计文档遗漏 |
| 能耗统计分析 |
未提及 |
🟢 已实现(有缺陷) |
设计文档遗漏 |
5.3 枚举差异
| 枚举 |
04-FINANCE.md 定义 |
实际代码定义 |
差异 |
| 收费类型 FeeType |
PROPERTY/PARKING/WATER/ELECTRICITY/GAS/HEATING/REPAIR_FUND/OTHER |
❌ 不存在 |
完全缺失 |
| 计费方式 BillingMethod |
FIXED/AREA/USAGE/CUSTOM |
❌ 不存在 |
完全缺失 |
| 账单状态 BillStatus |
UNPAID/PARTIAL_PAID/PAID/OVERDUE/CANCELLED |
❌ 不存在 |
完全缺失 |
| 支付方式 PaymentMethod |
WECHAT/ALIPAY/CASH/BANK_TRANSFER/CARD |
❌ 不存在 |
完全缺失 |
| 支付状态 PaymentStatus |
PENDING/SUCCESS/FAILED/REFUNDED |
❌ 不存在 |
完全缺失 |
| 退款状态 RefundStatus |
PENDING/APPROVED/REJECTED/REFUNDED |
❌ 不存在 |
完全缺失 |
| 能源类型 EnergyType |
未定义 |
LIGHTING/HVAC/POWER/SPECIAL/WATER/GAS |
设计文档遗漏 |
| 记录方式 RecordMethod |
未定义 |
MANUAL/IOT |
设计文档遗漏 |
六、待实现功能清单
6.1 P0 — 核心财务功能(必须实现)
| 编号 |
功能 |
说明 |
依赖 |
预估工作量 |
| FIN-001 |
创建 module-finance 模块 |
独立的财务模块,包含 entity/service/controller/repository 分层 |
无 |
0.5天 |
| FIN-002 |
FeeItem 收费项目实体 |
含 code/name/type/billingMethod/unitPrice/unit/billDay/dueDay/overdueDay/enableLateFee/lateFeeRate/maxLateFee |
FIN-001 |
1天 |
| FIN-003 |
FeeItem CRUD API |
创建/查询/更新/禁用收费项目 |
FIN-002 |
1.5天 |
| FIN-004 |
FeeBill 账单实体 |
含 billNo/feeItemId/spaceNodeId/ownerId/billPeriod/billDate/dueDate/overdueDate/amount/lateFee/discount/payableAmount/paidAmount/status |
FIN-002 |
1.5天 |
| FIN-005 |
账单自动生成 |
根据收费项目规则,按账期自动生成账单 |
FIN-003, FIN-004 |
3天 |
| FIN-006 |
账单状态流转 |
UNPAID → PARTIAL_PAID → PAID / OVERDUE → CANCELLED |
FIN-004 |
1天 |
| FIN-007 |
FeePayment 支付记录实体 |
含 paymentNo/amount/method/thirdPartyNo/status/failReason/paymentTime |
FIN-004 |
1天 |
| FIN-008 |
支付记录 API |
线下收款登记、支付记录查询 |
FIN-007 |
1.5天 |
| FIN-009 |
能耗数据与账单对接 |
将 EnergyConsumption 的 amount 作为按用量计费的账单数据来源 |
FIN-005, 能耗模块 |
2天 |
| FIN-010 |
财务管理前端页面 |
收费项目/账单/支付记录的管理页面 |
FIN-003, FIN-006, FIN-008 |
4天 |
6.2 P1 — 重要功能(近期实现)
| 编号 |
功能 |
说明 |
依赖 |
预估工作量 |
| FIN-011 |
费用催缴定时任务 |
到期提醒(3天内)、逾期催缴、周汇总 |
FIN-006 |
2天 |
| FIN-012 |
滞纳金自动计算 |
逾期天数 × 日利率,不超过上限 |
FIN-006, FIN-002 |
1.5天 |
| FIN-013 |
FeeRefund 退款实体与流程 |
退款申请 → 审批 → 执行 |
FIN-007 |
3天 |
| FIN-014 |
业主端缴费功能 |
业主查看账单、在线缴费 |
FIN-006, FIN-008 |
3天 |
| FIN-015 |
修复能耗按类型统计 |
getConsumptionByType() 应按 meter.energyType 真正分项汇总 |
无 |
0.5天 |
| FIN-016 |
统一前后端能源类型枚举 |
后端 LIGHTING/HVAC/POWER/SPECIAL/WATER/GAS 与前端 ELECTRICITY/WATER/GAS/CENTRAL_HEATING/CENTRAL_COOLING 对齐 |
无 |
0.5天 |
6.3 P2 — 增强功能(中期实现)
| 编号 |
功能 |
说明 |
依赖 |
预估工作量 |
| FIN-017 |
支付网关对接 |
微信支付/支付宝 SDK 集成 |
FIN-008 |
5天 |
| FIN-018 |
财务报表 |
收费统计、欠费分析、收入趋势 |
FIN-006, FIN-008 |
4天 |
| FIN-019 |
按面积计费 |
根据房产面积 × 单价计算物业费 |
FIN-002, 空间节点面积数据 |
2天 |
| FIN-020 |
固定金额计费 |
每月固定金额的收费项目(如停车费) |
FIN-002 |
1天 |
| FIN-021 |
批量账单生成 |
一次性为项目所有业主生成账单 |
FIN-005 |
2天 |
| FIN-022 |
账单导出 |
导出 Excel/PDF 格式账单 |
FIN-006 |
1.5天 |
| FIN-023 |
IoT 自动抄表 |
对接 IoT 平台自动采集能耗数据 |
能耗模块 |
3天 |
6.4 P3 — 远期规划
| 编号 |
功能 |
说明 |
依赖 |
预估工作量 |
| FIN-024 |
自定义计费规则 |
支持阶梯电价、分时计费等复杂规则 |
FIN-002 |
5天 |
| FIN-025 |
预缴费管理 |
业主预存费用、自动扣款 |
FIN-008 |
3天 |
| FIN-026 |
发票管理 |
开票申请、发票打印 |
FIN-008 |
3天 |
| FIN-027 |
对账功能 |
支付流水与银行流水对账 |
FIN-017 |
3天 |
| FIN-028 |
财务审批流 |
大额退款、减免审批流程 |
FIN-013 |
4天 |
七、架构建议
7.1 模块归属调整
当前能耗管理(EnergyMeter / EnergyConsumption)放在 module-mdm 中,建议:
- 方案A(推荐): 保持能耗管理在 module-mdm,财务域通过接口引用能耗数据。能耗是基础数据(MDM),费用计算是业务逻辑(Finance),职责分离清晰。
- 方案B: 将能耗管理迁移至 module-finance。耦合度高,不推荐。
7.2 数据流设计
EnergyMeter (module-mdm) FeeItem (module-finance)
│ │
▼ ▼
EnergyConsumption ──费用计算──→ FeeBill (自动/手动生成)
(抄表数据) │
▼
FeePayment (支付记录)
│
▼
FeeRefund (退款记录)
7.3 设计文档修正建议
04-FINANCE.md 中标记 FeeItem/FeeBill/FeePayment 为"🟢 已实现"与实际代码不符,建议:
- 将 FeeItem/FeeBill/FeePayment/FeeReminderJob 的状态修正为"🔴 未实现"
- 补充 EnergyMeter / EnergyConsumption 的设计说明
- 明确能耗管理与财务计费的边界和对接方式
八、代码文件索引
8.1 后端文件
| 文件 |
路径 |
| EnergyMeter 实体 |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java |
| EnergyConsumption 实体 |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java |
| EnergyController |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/controller/EnergyController.java |
| EnergyMeterService |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/service/EnergyMeterService.java |
| EnergyMeterServiceImpl |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/service/impl/EnergyMeterServiceImpl.java |
| EnergyConsumptionService |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/service/EnergyConsumptionService.java |
| EnergyConsumptionServiceImpl |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/service/impl/EnergyConsumptionServiceImpl.java |
| EnergyMeterRepository |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyMeterRepository.java |
| EnergyConsumptionRepository |
ether-pms/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyConsumptionRepository.java |
| EnergyMeterServiceTest |
ether-pms/module-mdm/src/test/java/com/ether/pms/mdm/service/EnergyMeterServiceTest.java |
8.2 前端文件
| 文件 |
路径 |
| 能耗 API |
ether-admin/src/api/energy.ts |
| 计量点管理页面 |
ether-admin/src/views/energy/MeterList.vue |
| 能耗录入页面 |
ether-admin/src/views/energy/ConsumptionRecord.vue |
| 能耗统计页面 |
ether-admin/src/views/energy/EnergyStatistics.vue |
| 路由配置(能耗部分) |
ether-admin/src/router/index.ts (L121-135) |
8.3 文档文件
| 文件 |
路径 |
| 原设计文档 |
ether-docs/02-DESIGN/domains/04-FINANCE.md |
| 特性清单 |
ether-docs/01-REQUIREMENTS/FEATURE_LIST.md |
文档说明: 本文档基于 2026-04-23 对 ether-pms 和 ether-admin 代码库的全量搜索结果生成。核心结论:财务域的 FeeItem/FeeBill/FeePayment/FeeRefund 四大实体及所有相关功能均未在代码中实现,仅能耗计量管理(EnergyMeter/EnergyConsumption)在 module-mdm 中有完整实现。04-FINANCE.md 中标注"已实现"的状态需修正。