Files
uniprop-manual/prop-acc/scenarios/meter/register-single-meter.md
2026-05-26 00:13:05 +08:00

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 · 场景 - 单独新增一张表
新增计量表
单录建表
register-single-meter
场景-新增计量表
场景
prop-acc
计量表
表管理
业务人员
已发布 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 步:提交

系统:

  1. 校验 asset / fee_type 存在
  2. 校验 code 在该社区不重复(若有 unique 约束)
  3. 建 Meter 记录(is_active=true, replaced_meter_id=null)
  4. 可选:是否同时建一条 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():**仅允许"已退役 + 无任何读数"**的表被删。

处理流程:

  1. 先退役表(is_active=false, decommission_reason=Removed)
  2. 走删除(若 Policy 允许 + 没读数)
  3. 重新建正确的表

详见 decommission-and-locking

[!question] 单录的表如何同步给抄表员? MetersNeedingReadingListWidget 会自动显示新表(下个抄表周期)。无需手工通知。

异常分支

相关文档