5.5 KiB
title, aliases, tags, audience, status, sub_feature, last_review, code_version
| title | aliases | tags | audience | status | sub_feature | last_review | code_version | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prop-acc · meter · 场景 - 单独新增一张表 |
|
|
|
已发布 | meter | 2026-05-26 | 2026-05-22 |
场景:单独新增一张表
社区已经初始化完成(走过 init-new-community-batch 或老社区已有数据),后续个别新装一张表(新业户入住装表 / 旧业户加装电表分户 / 商铺新进驻装表),走后台单录而非批量。
典型情境
[!example] 真实情境 嘉禾花园 12-3-501 业户陈先生最近装修后想加装一个独立电表(主表外的厨房专用电表,方便核算厨房电费)。物业财务王主管要在系统建这张新表。
业务人员视角
第 1 步:确认装表信息
向陈先生 / 抄表员李师傅核实:
- 房号 / 资产编号:12-3-501(对应 asset)
- 费用类型:电费(对应 FeeType)
- 物理表编号:E-501-K(物业自编,K 表示厨房)
- 倍率:1(普通家用单相表)
- 安装日期:今天(2026-05-26)
- 初始读数:抄表员现场看物理表读数,假设 0(全新表)
第 2 步:打开后台
后台 → 计量表 → 列表 → 右上角 "新建" 按钮 → 进 CreateMeter 页面。
第 3 步:填表单(MeterForm)
| 字段 | 填什么 |
|---|---|
| 社区(community_id) | 嘉禾花园 |
| 绑定房屋(asset_id) | 12-3-501(下拉选) |
| 费用类型(fee_type_id) | 电费(下拉选) |
| 表编号(code) | E-501-K |
| 倍率(multiplier) | 1.0 |
| 初始读数(initial_reading) | 0.0 |
| 安装日期(installed_at) | 2026-05-26 |
| 是否在役(is_active) | ✅ 是(默认) |
| 替换上一代(replaced_meter_id) | 留空(全新表,不是换表) |
| 备注 | "陈先生厨房分户表" |
第 4 步:提交
系统:
- 校验 asset / fee_type 存在
- 校验 code 在该社区不重复(若有 unique 约束)
- 建 Meter 记录(
is_active=true,replaced_meter_id=null) - 可选:是否同时建一条
initial_reading的 MeterReading?看CreateMeter实现 —— 若 form 有"初始读数"字段(目前应该有),installed_at当天会建一条MeterReading(current_reading=0)作为起点,这样下次抄表算用量有 previous 可对照
第 5 步:启用 + 抄表
新表建好后,下次抄表周期就纳入正常流程(MetersNeedingReadingListWidget 会显示)。
系统流程
sequenceDiagram
participant 王主管
participant Filament
participant CreateMeter
participant 数据库
王主管->>Filament: ListMeters → 新建按钮
Filament->>CreateMeter: 渲染 form
王主管->>CreateMeter: 填字段 + 提交
CreateMeter->>数据库: 校验 asset / fee_type / code
CreateMeter->>数据库: 建 Meter(is_active=true)
alt form 含 initial_reading
CreateMeter->>数据库: 建 MeterReading(current=initial, source=manual, operated_by=王主管)
end
CreateMeter-->>Filament: 跳转 ViewMeter
Filament-->>王主管: 显示新表详情
与批量导入的对比
| 维度 | init-new-community-batch | 单录(本场景) |
|---|---|---|
| 触发场景 | 新社区接管 / 一次性大批量 | 个别新装 / 后续补建 |
| 数量级 | 100+ | 1 |
| UI | Excel 导入 | Filament CreateMeter 表单 |
| 时长 | 几分钟 / 小时 | 1-2 分钟 |
| 出错容忍 | 单行失败 / 部分行可独立处理 | 单条提交,错就改了再交 |
| 业务人员熟练度 | 需熟悉 Excel 模板 | 任何人填表都行 |
常见问题
[!question] 业主已经有主电表,加装分表合规吗? 业务问题,看物业政策 / 法律法规:
- 国家电网通常禁止业主自己装"二次表"用于电费分摊
- 但物业内部核算可以(例如商铺租户共用一个主表,物业按业主装的分表算各自费用)
系统层面只管记录,不判断合规性。
[!question] 同一房屋有主表也有分表怎么办? 系统允许同一
asset_id+ 同一fee_type_id下有多张表(不像 prepaid 的"一户一账"约束)。每张表独立抄表 + 独立账单。但业务上要清楚谁付谁的钱:
- 主表账单给业主
- 分表账单给租户 / 厨房承包人(看场景)
这要业务方明确账单收方,系统按
community_asset_users关系找业户。
[!question] 单录时填错 code 怎么办? 表创建后可走
EditMeter(is_active=true时允许)修改。但若已抄过表 / 生成 Bill,改 code 会让"历史照片上的表号"与"系统 code"对不上 → 强烈不推荐改。详见 decommission-and-locking"为什么退役表不能改"段。
[!question] 单录后没抄表就发现错了能删吗? 看
MeterPolicy::delete():**仅允许"已退役 + 无任何读数"**的表被删。处理流程:
- 先退役表(
is_active=false,decommission_reason=Removed)- 走删除(若 Policy 允许 + 没读数)
- 重新建正确的表
[!question] 单录的表如何同步给抄表员?
MetersNeedingReadingListWidget会自动显示新表(下个抄表周期)。无需手工通知。
异常分支
- 大批量 → init-new-community-batch
- 换表(旧表退役 + 新表建)→ replace-broken-meter
- 错了删表 → decommission-without-replacement