fujian_water_biz_doc/output/01_Database_Design_processed.md

102 KiB
Raw Blame History

title, author, date, documentclass, geometry, fontsize, mainfont, CJKmainfont
title author date documentclass geometry fontsize mainfont CJKmainfont
01_Database_Design 系统设计团队 2024年12月19日 article margin=1in 11pt PingFang SC PingFang SC

doc_id: TC-01-DB doc_role: master_document authority: primary scope: 数据库设计 source_of_truth: true last_reviewed: 2026-03-12 retrieval_priority: P0

福建水务营收系统数据库设计说明书

章节导航(精简)

文件状态: 文档密级: 公开
【 】草稿
【 】修改稿
【√】正式发布
当前版本: V1.6
作者: 唐伟杰
完成日期: 2025-08-01

版本历史

日期 版本号 作者 备注
2025-07-17 V1.0 唐伟杰 初稿
2025-07-17 V1.1 唐伟杰 根据用户要求严格对齐SQL文件确保所有表和字段的完整性。
2025-08-01 V1.2 唐伟杰 1. 根据详细设计说明书调整目录结构按6个子系统重新组织表结构。
2. 补充移动端表设计优化说明明确移动端与Web端表复用策略。
3. 新增5个移动端特有表的详细设计符合表设计优化原则。
2025-08-01 V1.3 唐伟杰 数据库系统变更将OpenGauss替换为达梦数据库 8.0+,作为主力国产数据库方案。
2025-08-01 V1.4 唐伟杰 单点登录采用OAuth2.0协议新增OAuth2.0相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。
2026-03-12 V1.6 唐伟杰 补充旧系统历史台账迁移与只读查询口径,明确在线主模型承接范围、历史最小保留集与迁移验收对账基线。

前言

本文档详细描述了福建水务营收系统的数据库设计包括总体架构、E-R图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。

外部设计

  • 数据库系统: 主力采用国产数据库 达梦数据库 8.0+。系统设计上兼容 MySQL 8.xMariaDB 10.x
  • 数据库工具: 使用 Navicat, DBeaver, DataGrip 等主流数据库管理工具。
  • 约定:
    • 表名: 全部小写,单词间使用下划线 _ 分隔。业务表以 biz_ 开头,系统管理表以 system_ 开头。
    • 字段名: 全部小写,单词间使用下划线 _ 分隔(如 user_id),与当前数据库主文档及主表命名口径保持一致。
    • 主键: 统一命名为 id,类型为 bigint,自增。
    • 通用字段: 所有表必须包含 id, creator, create_time, updater, update_time, deleted, tenant_id 字段。
    • 字符集: 统一使用 utf8mb4 字符集。

数据库设计说明

数据库设计遵循第三范式3NF并采用基于tenant_id字段隔离的SaaS多租户架构。

表结构设计

数据表总体概览

说明:本次重点对齐 SYS-002 相关数据库口径。SYS-002 的核心表命名已统一收敛为 biz_*bk_*,并已清理旧稿中分散的历史表模型。对于旧数据字典中仍未在 backend 识别到独立实体表的对象,本文以“业务对象/处理场景”描述,不强行拆分为真实表。

模块 表前缀 主要功能 当前口径
系统公共 system_ 用户、角色、权限、部门、租户、字典、日志、OAuth2 等统一平台能力 保持现稿
SYS-002 基础配置与价格体系 biz_community, biz_company_*, biz_meter_*, biz_price_*, biz_template_* 小区、水司账户、水表参数、价格体系、调价快照、优惠方案、模板关系等 已按真实表对齐
SYS-002 客户主数据与账户关系 biz_cust*, biz_account 客户主档、联系人、客户组、水表绑定、开票信息、托收/代扣关系、编号规则等 已按真实表对齐
SYS-002 抄表开账与账单 biz_meter, biz_meter_book, biz_meter_read, biz_reading_*, biz_charge* 抄表册本、抄表状态、读数留痕、开账主单与明细 已按真实表对齐
SYS-002 收费票据与操作留痕 biz_collection, biz_withholding, biz_invoice*, biz_operat_log* 收费、托收/代扣、发票、操作留痕与审计支撑 已按真实表对齐
SYS-002 业务办理与资料 biz_process*, biz_business_*, biz_content* 业务办理流程、流转、装表资料、附件与扩展数据 已按真实表对齐
SYS-002 银行代收与结算 bk_* 渠道路由、交易回调、代扣签约、批次、对账、结算 已按真实表对齐
SYS-003 手机抄表 APP mobile_* 移动作业缓存、登录日志、离线任务与现场上报 保持现稿
METER/INST 专题表 biz_meter_*installation_*、历史 water_meter_* 表务专题与报装签章专题扩展 已纳入专题边界(见 METER/INST 专题表边界

系统公共表 (system_*)

(基于 sw_system_publcli.sql)

点击展开/折叠系统表详情

system_dept (部门表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 部门id
name varchar(30) Y 部门名称
parent_id int8 N 0 父部门id
sort int4 N 0 显示顺序
leader_user_id int8 Y 负责人
phone varchar(11) Y 联系电话
email varchar(50) Y 邮箱
type varchar(10) Y 部门类型
code varchar(50) Y 部门代码
status int2 N 部门状态0正常 1停用
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号
longitude numeric(10,7) Y 经度
latitude numeric(10,7) Y 纬度
remark varchar(500) Y 备注

system_dict_data (字典数据表)

字段名 类型 是否可空 默认值 注释
id int8 N 字典编码
sort int4 N 0 字典排序
label varchar(100) Y 字典标签
value varchar(100) Y 字典键值
dict_type varchar(100) Y 字典类型
status int2 N 0 状态0正常 1停用
color_type varchar(100) Y 颜色类型
css_class varchar(100) Y css 样式
remark varchar(500) Y 备注
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_dict_type (字典类型表)

字段名 类型 是否可空 默认值 注释
id int8 N 字典主键
name varchar(100) Y 字典名称
type varchar(100) Y 字典类型
status int2 N 0 状态0正常 1停用
remark varchar(500) Y 备注
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
deleted_time timestamp(6) Y 删除时间

system_login_log (系统访问记录)

字段名 类型 是否可空 默认值 注释
id int8 N 访问ID
log_type int8 N 日志类型
trace_id varchar(64) Y 链路追踪编号
user_id int8 N 0 用户编号
user_type int2 N 0 用户类型
username varchar(50) Y 用户账号
result int2 N 登陆结果
user_ip varchar(50) N 用户 IP
user_agent varchar(512) N 浏览器 UA
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_mail_account (邮箱账号表)

字段名 类型 是否可空 默认值 注释
id int8 N 主键
mail varchar(255) N 邮箱
username varchar(255) N 用户名
password varchar(255) N 密码
host varchar(255) N SMTP 服务器域名
port int4 N SMTP 服务器端口
ssl_enable bool N false 是否开启 SSL
starttls_enable bool N false 是否开启 STARTTLS
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_mail_log (邮件日志表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
user_id int8 Y 用户编号
user_type int2 Y 用户类型
to_mail varchar(255) N 接收邮箱地址
account_id int8 N 邮箱账号编号
from_mail varchar(255) N 发送邮箱地址
template_id int8 N 模板编号
template_code varchar(63) N 模板编码
template_nickname varchar(255) Y 模版发送人名称
template_title varchar(255) N 邮件标题
template_content varchar(10240) N 邮件内容
template_params varchar(255) N 邮件参数
send_status int2 N 0 发送状态
send_time timestamp(6) Y 发送时间
send_message_id varchar(255) Y 发送返回的消息 ID
send_exception varchar(4096) Y 发送异常
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_mail_template (邮件模版表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
name varchar(63) N 模板名称
code varchar(63) N 模板编码
account_id int8 N 发送的邮箱账号编号
nickname varchar(255) Y 发送人名称
title varchar(255) N 模板标题
content varchar(10240) N 模板内容
params varchar(255) N 参数数组
status int2 N 开启状态
remark varchar(255) Y 备注
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_users (用户表)

字段名 类型 是否可空 默认值 注释
id int8 N 用户ID
username varchar(30) N 用户账号
password varchar(100) N 密码
nickname varchar(30) N 用户昵称
remark varchar(500) Y 备注
dept_id int8 Y 部门ID
post_ids varchar(255) Y 岗位编号数组
email varchar(50) Y 用户邮箱
mobile varchar(11) Y 手机号码
sex int2 Y 用户性别
avatar varchar(512) Y 头像地址
status int2 N 帐号状态0正常 1停用
login_ip varchar(50) Y 最后登录IP
login_date timestamp(6) Y 最后登录时间
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_role (角色信息表)

字段名 类型 是否可空 默认值 注释
id int8 N 角色ID
name varchar(30) N 角色名称
code varchar(100) N 角色权限字符串
sort int4 N 显示顺序
data_scope int2 N 1 数据范围1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限
data_scope_dept_ids varchar(500) N 数据范围(指定部门数组)
status int2 N 角色状态0正常 1停用
type int2 N 角色类型
remark varchar(500) Y 备注
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_menu (菜单权限表)

字段名 类型 是否可空 默认值 注释
id int8 N 菜单ID
name varchar(50) N 菜单名称
permission varchar(100) N 权限标识
type int2 N 菜单类型
sort int4 N 0 显示顺序
parent_id int8 N 0 父菜单ID
path varchar(200) Y 路由地址
icon varchar(100) Y 菜单图标
component varchar(255) Y 组件路径
component_name varchar(255) Y 组件名
status int2 N 菜单状态
visible bool N true 是否可见
keep_alive bool N true 是否缓存
always_show bool N true 是否总是显示
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_tenant (租户表)

字段名 类型 是否可空 默认值 注释
id int8 N 租户编号
name varchar(30) N 租户名
contact_user_id int8 Y 联系人的用户编号
contact_name varchar(30) N 联系人
contact_mobile varchar(500) Y 联系手机
status int2 N 租户状态0正常 1停用
website varchar(256) Y 绑定域名
package_id int8 N 租户套餐编号
expire_time timestamp(6) N 过期时间
account_count int4 N 账号数量
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_user_session (用户会话表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 会话ID
user_id int8 N 用户ID
session_id varchar(100) N 会话标识
token varchar(500) N 访问令牌
refresh_token varchar(500) Y 刷新令牌
login_ip varchar(50) N 登录IP
login_location varchar(100) Y 登录地点
user_agent varchar(500) Y 用户代理
session_timeout int4 N 1800 会话超时时间(秒)
last_access_time timestamp(6) N pg_systimestamp() 最后访问时间
is_active int2 N 1 是否活跃0-否1-是
logout_time timestamp(6) Y 登出时间
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_user_role (用户角色关联表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
user_id int8 N 用户ID
role_id int8 N 角色ID
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_role_menu (角色菜单关联表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
role_id int8 N 角色ID
menu_id int8 N 菜单ID
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

子系统1: 统一平台数据表

统一平台主要负责系统基础功能包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。

OAuth2.0单点登录相关表

为支持OAuth2.0协议的单点登录功能系统新增以下OAuth2.0相关数据表:

点击展开/折叠OAuth2.0表详情

system_oauth2_client (OAuth2客户端表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
client_id varchar(255) N 客户端编号
secret varchar(255) N 客户端密钥
name varchar(255) N 应用名
logo varchar(255) N 应用图标
description varchar(255) Y 应用描述
status int2 N 状态
access_token_validity_seconds int4 N 访问令牌的有效期
refresh_token_validity_seconds int4 N 刷新令牌的有效期
redirect_uris varchar(255) N 可重定向的 URI 地址
authorized_grant_types varchar(255) N 授权类型
scopes varchar(255) Y 授权范围
auto_approve_scopes varchar(255) Y 自动通过的授权范围
authorities varchar(255) Y 权限
resource_ids varchar(255) Y 资源
additional_information varchar(4096) Y 附加信息
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除

system_oauth2_access_token (OAuth2访问令牌表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
user_id int8 N 用户编号
user_type int2 N 用户类型
user_info varchar(512) N 用户信息
access_token varchar(255) N 访问令牌
refresh_token varchar(32) N 刷新令牌
client_id varchar(255) N 客户端编号
scopes varchar(255) Y 授权范围
expires_time timestamp(6) N 过期时间
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_oauth2_refresh_token (OAuth2刷新令牌表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
user_id int8 N 用户编号
refresh_token varchar(32) N 刷新令牌
user_type int2 N 用户类型
client_id varchar(255) N 客户端编号
scopes varchar(255) Y 授权范围
expires_time timestamp(6) N 过期时间
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_oauth2_code (OAuth2授权码表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
user_id int8 N 用户编号
user_type int2 N 用户类型
code varchar(32) N 授权码
client_id varchar(255) N 客户端编号
scopes varchar(255) Y 授权范围
expires_time timestamp(6) N 过期时间
redirect_uri varchar(255) Y 可重定向的 URI 地址
state varchar(255) Y 状态
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

system_oauth2_approve (OAuth2批准表)

字段名 类型 是否可空 默认值 注释
id int8 N 编号
user_id int8 N 用户编号
user_type int2 N 用户类型
client_id varchar(255) N 客户端编号
scope varchar(255) Y 授权范围
approved bool N false 是否接受
expires_time timestamp(6) N 过期时间
creator varchar(64) Y 创建者
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新者
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

子系统2: 营收系统数据表

营收系统是核心业务系统,包括客户管理、抄表管理、账务管理、发票管理等核心业务功能。

点击展开/折叠营收系统表详情

biz_community (所属小区表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(200) N 小区名称
code varchar(100) N 小区代码
address varchar(500) Y 小区地址
contact_number varchar(100) Y 联系号码
dept_code varchar(50) N 部门代码,关联系统部门表
parent_id int8 Y 父级小区id支持小区层级管理
ancestor_list varchar(1000) Y 祖级列表格式1,2,3表示祖级小区id列表
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

system_user_form_config (用户表单字段配置表-标准)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键ID
obj_id int8 Y 对象ID用户id/角色id等
config_type int2 N 配置类型1-个人配置2-角色配置
code varchar(100) N 表格标识/模版号(与菜单或功能标识关联)
column_key varchar(100) N 列字段标识
column_title varchar(100) Y 自定义列标题
column_width int4 Y 列宽度
is_visible int2 N 0 是否显示0-显示1-隐藏
is_printable int2 N 0 是否可打印0-是1-否
sort_order int4 N 0 排序序号
creator varchar(64) Y 创建人
create_time timestamp(6) N pg_systimestamp() 创建时间
updater varchar(64) Y 更新人
update_time timestamp(6) N pg_systimestamp() 更新时间
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户编号

biz_company_account (水司账户表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
account_name varchar(200) N 账户名称
account_address varchar(500) Y 账户地址
bank_name varchar(200) N 开户行名称
bank_code varchar(100) N 开户行代码
bank_account varchar(100) N 开户行账户
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_cost_component (费用组成表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 费用名称
code varchar(100) N 费用代码
penalty_coefficient numeric(10,4) Y 违约金系数违约金计算系数默认为0表示不收取违约金
zero_usage_calculation int2 N 0 零用量是否计算0-不计算1-计算
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_dept_account_rel (部门和水司账户关系表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
dept_code varchar(50) N 部门代码,关联系统部门表
account_id int8 N 水司账户id关联水司账户表
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_meter_caliber (水表口径表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 口径名称
code varchar(100) N 口径代码
value numeric(10,2) Y 口径值(单位:毫米)
check_period int4 Y 强检周期(单位:年)
replace_period int4 Y 定换周期(单位:年)
high_coefficient numeric(10,4) Y 量高系数,抄表量高提醒系数
low_coefficient numeric(10,4) Y 量低系数,抄表量低提醒系数
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_meter_maker (水表厂家表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 厂家名称
code varchar(100) N 厂家代码
recharge_type varchar(10) Y 充值类型
address varchar(500) Y 地址
contact varchar(100) Y 联系人
contact_number varchar(100) Y 联系号码
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_meter_model (水表型号表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
maker_code varchar(100) N 厂家代码,关联水表厂家表
name varchar(100) Y 型号名称
code varchar(100) N 型号代码
caliber_range varchar(200) Y 口径范围DN15-DN200
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_meter_range (水表量程表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 量程名称
code varchar(100) N 量程代码
value numeric(15,3) Y 量程值
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_category (水价归属表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 归属名称
code varchar(100) N 归属代码
parent_id int8 Y 父级归属id
ancestor_list varchar(1000) Y 祖级列表格式1,2,3表示祖级归属id列表
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_adjustment_history (水价调整历史表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
adjustment_id int8 N 调整id关联水价调整表
before_value numeric(15,4) Y 调整前价格
after_value numeric(15,4) Y 调整后价格
adjustment_reason varchar(500) Y 调整原因
effective_date timestamp(6) Y 生效日期
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_cost_adjustment (价格成本调整表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
cost_component_code varchar(100) N 费用组成代码,关联费用组成表
price_category_code varchar(100) N 价格归属代码,关联价格归属表
price_value numeric(15,4) Y 价格值
effective_date timestamp(6) Y 生效日期
expire_date timestamp(6) Y 失效日期
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_dept_rel (价格部门关系表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
price_category_code varchar(100) N 价格归属代码,关联价格归属表
dept_code varchar(50) N 部门代码,关联系统部门表
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_cost (价格折扣成本表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
scheme_id int8 N 折扣方案id关联价格折扣方案表
cost_component_code varchar(100) N 费用组成代码,关联费用组成表
discount_rate numeric(10,4) Y 折扣率0-1之间的小数
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_scheme (价格折扣方案表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 方案名称
code varchar(100) N 方案代码
price_category_code varchar(100) N 价格归属代码,关联价格归属表
discount_type varchar(20) Y 折扣类型,如:百分比、固定金额等
effective_date timestamp(6) Y 生效日期
expire_date timestamp(6) Y 失效日期
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_tier (价格折扣阶梯表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
scheme_id int8 N 折扣方案id关联价格折扣方案表
tier_level int4 Y 阶梯级别
start_value numeric(15,3) Y 起始值
end_value numeric(15,3) Y 结束值
discount_rate numeric(10,4) Y 折扣率
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_tier_adjustment (价格阶梯调整表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
cost_component_code varchar(100) N 费用组成代码,关联费用组成表
price_category_code varchar(100) N 价格归属代码,关联价格归属表
tier_level int4 Y 阶梯级别
start_value numeric(15,3) Y 起始值
end_value numeric(15,3) Y 结束值
price_value numeric(15,4) Y 价格值
effective_date timestamp(6) Y 生效日期
expire_date timestamp(6) Y 失效日期
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_adjustment_snap (水价调整快照表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
code int4 N 快照编号/版本号1->2->3递增
effective_date timestamp(6) N 生效日期
expiry_date timestamp(6) Y 失效日期,为空表示长期有效
adjuster varchar(100) Y 调价人
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间/调价时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_template (水价调整模版表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
name varchar(100) Y 用水性质名称
code varchar(100) N 模版代码/简号
price_category_code varchar(100) N 水价归属代码,关联价格归属表
adjustment_snap_code varchar(100) N 调价快照code关联水价调整快照表
meter_start int4 Y 起开量
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_template_dept_rel (模版部门关系表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
dept_code varchar(50) N 部门代码,关联系统部门表
template_code varchar(100) N 水价调整模版代码
adjustment_snap_code varchar(100) N 调价快照code
is_default int2 N 0 是否默认0-否1-是
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_tier_adjustment (水价阶梯调整表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
cost_adjustment_id int8 N 水价费用调整id
cost_component_code varchar(100) N 费用组成代码
tier_level int4 N 0 阶梯级别如1、2、3等
start_volume numeric(15,3) Y 开始水量,单位:立方米
end_volume numeric(15,3) Y 结束水量,为空表示无上限
price numeric(10,4) N 价格,单位:元/立方米或元
volume_coefficient numeric(10,4) N 1 水量系数,用于特殊计算场景
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_scheme (水价优惠方案表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
scheme_name varchar(200) N 方案名称居民用户优惠方案2024
scheme_code varchar(100) N 方案代码
template_code varchar(100) N 水价模版代码
discount_type int4 N 优惠方式1-按水量2-按比例
effective_date date N 生效日期
expiry_date date Y 失效日期,为空表示长期有效
scheme_description varchar(1000) Y 方案描述
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_tier (水价优惠阶梯表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
scheme_id int8 N 优惠方案id
tier_level int4 N 0 阶梯级别如1、2、3等
start_volume numeric(15,3) Y 开始水量,单位:立方米
end_volume numeric(15,3) Y 结束水量,为空表示无上限
include_in_tier int2 N 1 是否计入阶梯0-不计入1-计入
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

biz_price_discount_cost (水价优惠费用表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
tier_id int8 N 优惠阶梯id
cost_component_code varchar(100) N 费用组成代码
discount_price numeric(10,4) N 优惠价格,单位:元/立方米或元
sort int4 N 0 排序
remark varchar(500) Y 备注
status int2 N 0 状态0-否1-是
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

SYS-002 客户与账户关系表 (biz_cust* / biz_account)

说明:以下内容按 sql/lhc_数据库设计.mddocs/guides/BACKEND_TABLE_MAPPING.md 与当前 backend 真实表名进行整编,字段以“数据库专项设计阶段需重点关注的核心字段”为主,不再延续旧稿中的 customer_* 系列表命名。

biz_cust (客户主档表)

字段名 说明
id 主键
code 客户编号
name 客户名称
cust_type 客户类型
id_type / id_no 证件类型 / 证件号码
mobile / address 联系电话 / 地址
dept_code 所属营业部门
status 客户状态
tenant_id 租户编号

biz_account (客户账户表)

字段名 说明
id 主键
code 账户编号
cust_id 客户主档 ID
balance 账户余额
arrears_amount 欠费金额
account_status 账户状态
tenant_id 租户编号

biz_cust_contact (客户联系人表)

字段名 说明
id 主键
cust_id 客户主档 ID
name 联系人姓名
mobile 联系电话
contact_type 联系人类型
is_default 是否默认联系人

biz_cust_group (客户分组表)

字段名 说明
id 主键
code 分组编码
name 分组名称
parent_id 上级分组
status 状态

biz_cust_meter (客户与水表关系表)

字段名 说明
id 主键
cust_id 客户主档 ID
meter_id 水表主档 ID
bind_type 绑定类型
is_main 是否主表
status 关系状态

biz_cust_invoice (客户开票信息表)

字段名 说明
id 主键
cust_id 客户主档 ID
invoice_title 开票抬头
tax_no 纳税人识别号
email 发票接收邮箱
mobile 联系手机号

biz_cust_app_binds (客户应用绑定表)

字段名 说明
id 主键
cust_id 客户主档 ID
app_type 应用类型
app_user_id 外部应用用户标识
status 绑定状态

biz_cust_collection_rel / biz_cust_withholding_rel (托收/代扣关系表)

表名 关键字段 说明
biz_cust_collection_rel cust_id, collection_id, status 客户与托收关系
biz_cust_withholding_rel cust_id, withholding_id, status 客户与代扣关系

biz_cust_water_use_scheme / biz_cust_water_scheme_rel (用水方案关系表)

表名 关键字段 说明
biz_cust_water_use_scheme cust_id, scheme_code, effective_date 客户用水方案
biz_cust_water_scheme_rel cust_id, template_code, status 客户与价格模板关系

biz_cust_no_rule / biz_cust_hub_marks (客户编号与集抄标识表)

表名 关键字段 说明
biz_cust_no_rule rule_code, prefix, dept_code, status 客户编号规则
biz_cust_hub_marks cust_id, hub_code, mark_type 集抄/枢纽标识

SYS-002 抄表、水表与价格支撑表 (biz_meter* / biz_reading_* / biz_price_*)

biz_meter (水表主档表)

字段名 说明
id 主键
code 水表编号
meter_no 出厂表号
maker_code / model_code 厂家 / 型号
caliber_code / range_code 口径 / 量程
install_address 安装地址
meter_status 水表状态
tenant_id 租户编号

biz_meter_book (抄表册本表)

字段名 说明
id 主键
code 册本编号
name 册本名称
dept_code 所属部门
reader_user 抄表员
reading_cycle 抄表周期
status 册本状态

biz_meter_read (抄表任务/状态表)

字段名 说明
id 主键
book_id 册本 ID
cust_id 客户 ID
meter_id 水表 ID
read_period 抄表期间
read_status 抄表状态
read_type 抄表方式

biz_reading_data (抄表数据表)

字段名 说明
id 主键
meter_read_id 抄表任务 ID
last_reading 上次读数
current_reading 本次读数
water_usage 用水量
read_time 抄见时间
photo_url 抄表照片

biz_last_reading / biz_reading_logs (上次读数与抄表日志)

表名 关键字段 说明
biz_last_reading meter_id, last_reading, last_read_time 水表最近有效读数
biz_reading_logs meter_id, operate_type, operator, operate_time 抄表处理留痕

价格与模板支撑表

表名 关键字段 说明
biz_price_category code, name, parent_id 水价归属
biz_price_template code, price_category_code, adjustment_snap_code 水价模板
biz_price_adjustment_snap code, effective_date, expiry_date 调价快照
biz_price_cost_adjustment price_category_code, cost_component_code, price_value 费用调价
biz_price_tier_adjustment cost_component_code, tier_level, start_volume, end_volume, price 阶梯价格
biz_cost_component code, name, penalty_coefficient 费用组成
biz_water_use_scheme code, name, status 用水方案
biz_water_use_scheme_tier scheme_code, tier_level, start_volume, end_volume 用水阶梯
biz_exceed_water_use_scheme scheme_code, exceed_type, price_rule 超计划规则

SYS-002 开账、收费与票据表 (biz_charge* / biz_collection / biz_withholding / biz_invoice*)

biz_charge (营业账主表)

字段名 说明
id 主键
code 账单编号
cust_id 客户 ID
record_id 抄表记录或开账来源 ID
bill_period 账单期间
total_amount 账单总金额
charge_status 收费状态
due_date 应缴日期

biz_charge_detail (营业账明细表)

字段名 说明
id 主键
charge_id 营业账主表 ID
cost_component_code 费用组成代码
usage_amount 用量
unit_price 单价
detail_amount 明细金额

REV-002 账单生成承接口径

对象 正式口径 承接说明
biz_charge 账单生成主结果对象 统一表达客户、账期、抄表/开账来源、账单总金额、收费状态与应缴日期,不单独发明新的在线账单主模型
biz_charge_detail 账单生成明细对象 统一表达费用组成、用量、单价、明细金额,与主表通过 charge_id 建立主明细关系
biz_price_categorybiz_price_templatebiz_price_adjustment_snapbiz_price_tier_adjustment 计费规则来源对象 用于表达价格归属、基础价格、调价快照与阶梯规则来源,支撑账单金额计算与追溯
biz_cost_component 费用组成定义对象 用于表达水费、污水费、附加费、罚款类费用等明细分类,不将费用组成直接硬编码到主表
biz_water_use_schemebiz_water_use_scheme_tierbiz_exceed_water_use_scheme 计划用水与超计划规则对象 用于承接计划用水、超计划与阶梯类扩展规则,不额外发明平行的特殊开账规则表
历史开账记录、特殊开账 历史只读 / 同模型承接对象 统一纳入 biz_chargebiz_charge_detail 与操作留痕承接,通过来源类型、业务类型、依据说明区分,不单设“特殊开账表”

REV-002 承接口径:账单生成结果统一由 biz_chargebiz_charge_detail 承接,关键规则来源继续由 biz_price_*biz_cost_component 与计划用水相关对象提供;当价格模板、费用组成或规则关系不完整时,应按“阻断生成”口径处理。

当前 backend 证据:ChargeServiceImpl.generateSingleChargeWithCache 成功路径已执行 chargeMapper.insert(charge)chargeDetailService.insertChargeDetail(detail)updateReadingDataCheckState(readingDataId, 1),说明现有实现已能把按 readingDataIds 复核/开账的结果落入 biz_chargebiz_charge_detail

当前承接缺口:接口层返回仍为成功条数字符串,失败阻断主要依赖日志与布尔值,且仅支持 ACTUAL_USAGE 结算方式;biz_charge / biz_charge_detail 的主明细结果、失败对象范围和结构化原因尚未提升为正式 IF-REV-005 契约返回。

REV-004 承接口径:水量调整、金额调整、退款、冲正、坏账申请统一以 biz_chargebiz_charge_detail 作为账单主明细承接对象;当前数据库主文档不新增独立账务细表来承接一期场景。

biz_collection / biz_withholding (托收与代扣主表)

表名 关键字段 说明
biz_collection code, cust_id, charge_id, collection_status 托收主表
biz_withholding code, cust_id, charge_id, withholding_status 代扣主表

biz_invoice / biz_invoice_taxrate (发票主表与税率表)

表名 关键字段 说明
biz_invoice code, cust_id, charge_id, invoice_status, invoice_amount 发票主表,统一承接申请单号、账单关联、受理号、开票结果与电子票地址等核心状态
biz_invoice_taxrate tax_code, tax_name, tax_rate, status 税率基础配置

REV-005 发票承接口径

对象 已有字段 待补字段 仅快照/历史只读字段
biz_invoice 发票申请/结果主对象 codecust_idcharge_idinvoice_statusinvoice_amount application_nosys_request_noinvoice_typeinvoice_titletax_noemailmobilesource_channelfail_reasoninvoice_codeinvoice_numberfile_urllast_try_timenext_try_timetry_countpush_statuscharge_ids_snapshotcharge_bind_status、作废原因/备注、红冲原因/备注、原票/红票关联标识、作废/红冲申请来源、补偿查询/结果回写上下文 旧开票批次号、旧配置版本号、旧平台扩展回执
biz_cust_invoice 客户开票信息 cust_idinvoice_titletax_noemailmobile 企业/个人抬头类型、默认推送方式等扩展属性按后续实现补齐 旧抬头版本、历史修改快照
biz_invoice_taxrate 税率配置 tax_codetax_nametax_ratestatus 税率生效区间、适用票种范围等扩展控制字段 旧税率版本快照
账单-发票关系快照 当前主模型通过 biz_invoicebiz_charge* 关联承接 charge_ids_snapshot、账单集合来源、客户侧身份匹配结果、操作留痕标识 旧营业账开票关系表、旧发票明细表

biz_operat_log / biz_operat_log_detail (操作留痕表)

表名 关键字段 说明
biz_operat_log biz_type, biz_id, operate_user, operate_time 业务操作主日志
biz_operat_log_detail log_id, field_name, before_value, after_value 字段级变更留痕

REV-004 留痕口径:biz_operat_log* 统一承接账务处理的一期留痕,至少覆盖处理类型、目标账单、原交易引用、处理前后差异、原因说明、附件依据与操作人。

边界说明:旧数据字典中的“跨周期水量、特账、红冲、已销调整、呆坏账、实时收费日志”等对象,在当前 backend 范围内未全部识别到独立实体表,数据库专项中统一按业务处理场景描述,不误写为已明确落地的真实表。

旧系统历史台账迁移与只读查询口径

在线主模型承接范围

旧对象/旧菜单 当前主口径 承接方式 数据策略
开账记录、特殊开账 biz_chargebiz_charge_detailbiz_operat_log* 统一纳入营业账主表与明细表,特殊开账按来源类型、业务类型、依据说明留痕,不单设平行“特殊开账表” 在线保留
柜台收费、实时收费、代收代扣 biz_collectionbiz_withholdingbk_transaction*bk_withholding_* 统一纳入收费主模型与渠道交易模型,柜台班结/实时收费日志按交易结果和操作留痕归并 在线保留
发票申请、开票结果、票据税率 biz_invoicebiz_invoice_taxratebiz_cust_invoice 统一纳入发票主表、税率表和客户开票信息,不为旧“营业账开票表”机械复制新在线表 在线保留
微网厅业务字段、页面配置、微信参数 biz_business_typesbiz_business_datasbiz_page_settings*biz_parameter_settingssys_wechat_app_settings 统一归并为业务类型、页面配置和渠道参数模型 在线保留
办理附件、电子档案 biz_contentbiz_content_attach 当前新增与迁移后新增资料统一按资料主表与附件表承接 在线保留

历史只读保留范围

历史对象 当前正式口径 保留策略 查询要求
红冲记录、红冲原因、红冲前后账务快照 账单状态 + 账务处理场景 + 操作留痕 保留历史只读,不强制拆为新主库独立实体表 至少支持原单号、红冲单号、金额、原因、经办人、时间查询
预存退款、已销调整、价差调整、分账调整、违约金减免、呆坏账明细 REV-004 账务处理业务场景 旧细粒度台账以历史只读方式保留;新发生业务由流程与日志承接 至少支持汇总、明细、状态、审批结果和关联账单查询
柜台结账、打印记录、补打记录 收费结果 + 打印/操作留痕 旧查询菜单作为历史只读能力保留,不单独建设新结账台账表 至少支持班次、营业所、柜员、打印类型、结账状态查询
发票明细、营业账开票关系、开票配置快照 发票主模型 + 历史关系快照 旧细表和配置快照按历史只读保留;新在线模型只保留开票必需主数据 至少支持发票号、账单号、开票批次、配置版本和结果状态查询
催缴记录、停水记录、预存短信记录 催缴/停复水/消息联动业务场景 旧记录菜单按历史只读保留,与 IF-REV-013 的任务结果、通知链路和工单处置引用分层承接,不新增同名在线主表 至少支持客户、账期、催缴方式、执行结果、发送对象、发送时间、关联账单、处置引用查询
水表检定、领用、出库、退库、报废单据 METER-003 生命周期场景 当前在线主表承接水表状态,旧单据与检定证书按历史只读保留 至少支持表号、仓库、单据类型、检定结论、证书编号查询

迁移验收最低对账口径

对账主题 最低核对维度 主口径来源 验收要求
开账记录 客户数、账单数、账期、应收金额 biz_chargebiz_charge_detail + 历史账单来源 支持按账期、营业所、客户类型汇总比对
缴费记录 收费笔数、实收金额、渠道、核销状态 biz_collectionbk_transaction* 支持按渠道、日期、营业所汇总比对
发票记录 开票笔数、金额、状态、票据类型 biz_invoice* + 历史开票关系 支持按发票状态、开票日期比对
红冲与账务调整 调整笔数、调整金额、处理结果 账务处理结果 + 历史台账 支持汇总与单据级差异定位
催缴与停复水 通知笔数、执行结果、停复水状态 IF-REV-013 任务结果 + 历史记录 支持按账期、客户、执行状态、处置引用比对
电子档案 附件数、附件类型、关联业务单数 biz_content_attach + 历史档案目录 支持按业务类型、上传时间、来源系统比对

设计约束

  • 不以“旧菜单一项对应一张新表”为原则,优先复用当前已确认的 biz_*bk_* 在线主模型。
  • 对 backend 当前未识别到独立实体表的旧细粒度台账,仅写为“历史只读查询对象”,不误写为“已存在新在线表”。
  • 历史只读对象必须保留原系统关键标识(原单号、原客户号、原批次号或原附件标识)以支撑迁移验收与问题追溯。
  • 涉及历史附件、影像、高拍仪资料时,正式数据库设计只约束“资料元数据 + 文件引用”口径,不在本轮臆造新的文件表族。
  • REV-006 的正式结果状态按 PENDINGSUCCESSFAILMANUAL_VERIFIED 四态统一,数据库设计仅约束查询与追溯口径,不反推为已存在独立催缴结果主表。
  • 停复水、复水和工单处置在本轮仅保留“关联引用 + 状态摘要 + 建链时间”三类追溯字段要求,不展开下游业务表设计。

SYS-002 业务办理与资料表 (biz_process* / biz_business_* / biz_content*)

表名 关键字段 说明
biz_process code, biz_type_code, cust_id, process_status 业务办理流程主表
biz_process_transfer process_id, from_user, to_user, transfer_time 流转/转办记录
biz_process_cust_contact process_id, contact_name, mobile 办理过程联系人信息
biz_process_meter_install process_id, meter_id, install_addr 装表安装信息
biz_process_invoice_modifys process_id, invoice_id, modify_type 发票变更记录
biz_business_types code, name, status 业务类型定义
biz_business_datas biz_id, data_key, data_value 业务扩展数据
biz_content biz_id, content_type, content_title 办理资料主表
biz_content_attach content_id, file_name, file_url 办理附件表

SYS-002 银行代收与结算表 (bk_*)

表名 关键字段 说明
bk_payment_channel channel_code, channel_name, channel_type, status 支付渠道主表
bk_channel_api_config channel_code, api_type, endpoint, crypto_type 渠道接口配置
bk_channel_route_rule channel_code, route_type, priority, status 渠道路由规则
bk_channel_statistics channel_code, stat_date, success_count, success_amount 渠道统计
bk_transaction trade_no, biz_order_no, channel_code, trade_amount, trade_status 渠道交易流水
bk_transaction_callback trade_no, callback_time, callback_status, raw_message 回调留痕
bk_transaction_exception trade_no, exception_code, exception_desc, handle_status 异常处理

REV-004 原交易校验口径:退款、冲正场景统一依赖 bk_transaction* 校验原交易存在性、状态、回调结果与异常处理状态,数据库专项不再为一期新增平行退款交易表。 | bk_withholding_agreement | agreement_no, cust_id, channel_code, sign_status | 代扣签约 | | bk_withholding_batch | batch_no, channel_code, batch_date, batch_status | 代扣批次 | | bk_withholding_item | batch_id, cust_id, charge_id, item_status | 代扣明细 | | bk_reconcile_batch | batch_no, channel_code, bill_date, reconcile_status | 对账批次 | | bk_reconcile_diff | batch_id, trade_no, diff_type, diff_amount | 对账差异 | | bk_settlement_batch | batch_no, channel_code, settlement_date, settlement_status | 结算批次 |

当前实现边界说明:bk_* 表族已形成较完整的对象承接口径,且签约、解约、交易流水与后台资源管理具备明确实现证据;但送盘、回盘、对账、结算等业务编排仍缺少完整闭环与统一迁移证据,数据库专项不得据此倒推出“银行协同已全部落地”。

METER/INST 专题表边界

本章节用于收敛 SYS-002 主表之外、但在详细设计与附录中反复出现的表务与报装签章专题表口径,避免“主文档未覆盖、分文档各写一套”。

METER 专题(表务管理)

实现态(当前主库口径)

表名 角色定位 说明
biz_meter 水表主档 水表基础信息、状态、型号、口径、量程等主数据入口
biz_meter_read / biz_reading_data / biz_last_reading 抄表与读数 支撑抄表任务、读数提交、最新读数维护
biz_meter_log 表务留痕 记录换表、移表、校表、维修等过程动作
biz_meter_in_out / biz_meter_in_out_rel 库存与出入库 支撑领用、退库、报废及批次追踪
biz_process / biz_process_transfer 工单协同 与业务办理流程共享工单流转和处理状态

历史命名映射(存量资料口径)

历史命名(存量) 当前主口径(建议对齐) 说明
water_meter_workorder biz_meter_log + biz_process* 旧稿“工单”能力在主文档统一并入表务日志与流程流转模型
water_meter_stock / water_meter_inventory biz_meter_in_out + biz_meter_in_out_rel 旧稿库存/出入库能力按 biz_meter_* 专题表收敛
water_meter_archive biz_meter + biz_last_reading 旧稿档案口径统一并入水表主档与读数状态模型

说明:water_meter_* 仅用于历史资料追溯,不作为当前正式交付主口径。

INST 专题(报装与签章)

实现态(当前主库口径)

表名 角色定位 说明
biz_process / biz_process_transfer 报装流程主线 报装申请受理、节点流转、办理状态
biz_process_meter_install 装表落地信息 记录安装位置、装表结果等现场信息
biz_business_datas 业务扩展数据 踏勘、方案、审批扩展字段
biz_content / biz_content_attach 资料与附件 报装材料、验收资料、影像与附件管理

设计态(专项扩展口径)

表名 角色定位 说明
installation_contract 报装合同主表 合同主数据、合同状态、文件地址
installation_signature 签章记录表 签署方、签章任务、签署状态与时间
installation_evidence 电子存证表 存证凭证、哈希、存证状态
installation_ca_config CA 配置表 泛微 CA 对接配置参数
installation_signature_template 签章模板表 签章模板与签署位置配置
installation_application 报装申请映射 与报装申请主线对象的关联映射(设计态)

边界说明:installation_* 来源于报装签章专项设计与附录,当前在数据库主文档按“专题扩展”纳管。若实施库落地结构与本表不一致,以实施库与主详设联合评审结果为准。

子系统5: 客户服务数据表(复用 SYS-002 主数据)

客户服务模块本身不再单独维护旧稿中分散的平行表模型,而是以 SYS-002 主数据和交易表为主,按场景复用客户、账单、支付、发票与业务办理数据。

点击展开/折叠客户服务系统表详情

客户服务主要复用表

场景 复用表 说明
账户绑定管理 biz_cust, biz_cust_app_binds, biz_account 支撑账户绑定、默认客户切换与账号关联
信息查询服务 biz_cust, biz_cust_meter, biz_meter, biz_charge, biz_charge_detail 支撑客户档案、表计信息、账单与费用查询
在线缴费服务 biz_charge, biz_collection, biz_withholding, bk_transaction, bk_transaction_callback 支撑缴费下单、支付回写与异步回调
电子发票服务 biz_invoice, biz_invoice_taxrate, biz_cust_invoice 支撑发票申请、税率匹配与抬头信息
业务办理服务 biz_process, biz_process_transfer, biz_business_datas, biz_content_attach 支撑业务申请、进度查询与附件资料

说明:客户服务模块与 SYS-008SYS-009SYS-010 的协同在数据库层主要表现为复用 SYS-002 主业务表并接收外部服务回写结果,不再单列一套平行客户服务数据库模型。

子系统6: 手机抄表APP数据表

手机抄表APP为抄表员和外勤人员提供移动作业工具支持离线操作提升现场工作效率。

点击展开/折叠手机抄表APP表详情

移动端表 (mobile_*)

mobile_user_session (移动端用户会话表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
user_id int8 N 用户ID
device_id varchar(100) N 设备ID
device_type varchar(20) N 设备类型Android、iOS
app_version varchar(20) Y 应用版本
login_type varchar(20) N 登录类型:在线、离线
session_token varchar(500) N 会话令牌
login_time timestamp(6) N pg_systimestamp() 登录时间
last_active_time timestamp(6) Y 最后活跃时间
logout_time timestamp(6) Y 登出时间
session_duration int4 Y 0 会话时长(分钟)
login_ip varchar(50) Y 登录IP
login_location varchar(100) Y 登录位置
network_type varchar(20) Y 网络类型WiFi、4G、5G
session_status int2 N 1 会话状态0-已结束1-活跃
sync_status int2 N 0 同步状态0-未同步1-已同步
last_sync_time timestamp(6) Y 最后同步时间
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_user_cache (移动端用户缓存表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
user_id int8 N 用户ID
device_id varchar(100) N 设备ID
cache_key varchar(200) N 缓存键
cache_value text Y 缓存值
cache_type varchar(20) N 缓存类型:用户信息、权限、配置、数据
cache_size int4 Y 0 缓存大小(字节)
expire_time timestamp(6) Y 过期时间
access_count int4 Y 0 访问次数
last_access_time timestamp(6) Y 最后访问时间
cache_status int2 N 1 缓存状态0-已过期1-有效
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_login_log (移动端登录日志表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
user_id int8 N 用户ID
username varchar(50) N 用户名
device_id varchar(100) N 设备ID
device_type varchar(20) N 设备类型Android、iOS
device_model varchar(100) Y 设备型号
app_version varchar(20) Y 应用版本
login_type varchar(20) N 登录类型:在线、离线
login_time timestamp(6) N pg_systimestamp() 登录时间
login_result int2 N 登录结果0-成功1-失败
login_ip varchar(50) Y 登录IP
login_location varchar(100) Y 登录位置
network_type varchar(20) Y 网络类型WiFi、4G、5G
failure_reason varchar(200) Y 失败原因
user_agent varchar(500) Y 用户代理
screen_resolution varchar(20) Y 屏幕分辨率
operating_system varchar(50) Y 操作系统
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_reading_task (移动端抄表任务表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
task_no varchar(32) N 任务编号
book_id int8 N 册本ID
reader_id int8 N 抄表员ID
task_date date N 任务日期
total_meters int4 Y 0 总表数
completed_meters int4 Y 0 已完成表数
task_status int2 N 0 任务状态0-待开始1-进行中2-已完成
download_time timestamp(6) Y 下载时间
upload_time timestamp(6) Y 上传时间
sync_status int2 N 0 同步状态0-未同步1-已同步
completion_rate numeric(5,2) Y 0 完成率
start_time timestamp(6) Y 开始时间
end_time timestamp(6) Y 结束时间
work_duration int4 Y 0 工作时长(分钟)
exception_count int4 Y 0 异常数量
photo_count int4 Y 0 照片数量
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_reading_record (移动端抄表记录表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
task_id int8 N 任务ID
customer_id int8 N 客户ID
meter_id int8 N 水表ID
reading_value numeric(15,3) Y 0 抄表读数
reading_time timestamp(6) N pg_systimestamp() 抄表时间
reading_type varchar(20) N 抄表类型:正常、异常、估读
exception_code varchar(10) Y 异常代码
exception_description varchar(500) Y 异常描述
photo_path varchar(500) Y 照片路径
gps_longitude numeric(10,6) Y GPS经度
gps_latitude numeric(10,6) Y GPS纬度
location_accuracy numeric(8,2) Y 位置精度
reading_method varchar(20) Y 抄表方式:手工、扫码、拍照识别
sync_status int2 N 0 同步状态0-未同步1-已同步
sync_time timestamp(6) Y 同步时间
network_type varchar(20) Y 网络类型WiFi、4G、5G、离线
device_id varchar(100) Y 设备ID
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_task_progress (移动端任务进度表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
task_id int8 N 任务ID
user_id int8 N 用户ID
progress_time timestamp(6) N pg_systimestamp() 进度时间
completed_count int4 Y 0 已完成数量
total_count int4 Y 0 总数量
completion_rate numeric(5,2) Y 0 完成率
current_location varchar(200) Y 当前位置
working_status varchar(20) Y 工作状态:工作中、休息中、结束
progress_description varchar(500) Y 进度描述
device_id varchar(100) Y 设备ID
battery_level int4 Y 0 电池电量
network_status varchar(20) Y 网络状态:在线、离线
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_data_cache (移动端数据缓存表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
user_id int8 N 用户ID
device_id varchar(100) N 设备ID
data_type varchar(20) N 数据类型:抄表、收费、工单
data_key varchar(200) N 数据键
data_value text Y 数据值
data_size int4 Y 0 数据大小(字节)
cache_time timestamp(6) N pg_systimestamp() 缓存时间
sync_status int2 N 0 同步状态0-未同步1-已同步2-同步失败
sync_time timestamp(6) Y 同步时间
sync_error varchar(500) Y 同步错误
retry_count int4 Y 0 重试次数
priority int4 Y 0 优先级
expire_time timestamp(6) Y 过期时间
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_problem_report (移动端问题上报表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
report_no varchar(32) N 上报编号
reporter_id int8 N 上报人ID
problem_type varchar(20) N 问题类型:水表故障、管道漏水、水质问题
problem_description text N 问题描述
problem_location varchar(200) Y 问题位置
gps_longitude numeric(10,6) Y GPS经度
gps_latitude numeric(10,6) Y GPS纬度
urgency_level varchar(20) N 紧急程度:普通、紧急、特急
report_time timestamp(6) N pg_systimestamp() 上报时间
problem_photos text Y 问题照片
problem_status int2 N 0 问题状态0-待处理1-处理中2-已处理
handler varchar(100) Y 处理人
handle_time timestamp(6) Y 处理时间
handle_result varchar(500) Y 处理结果
customer_id int8 Y 客户ID
meter_id int8 Y 水表ID
device_id varchar(100) Y 设备ID
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

mobile_work_order (移动端工单表)

字段名 类型 是否可空 默认值 注释
id int8 N nextval() 主键
work_order_no varchar(32) N 工单编号
problem_report_id int8 Y 问题上报ID
work_order_type varchar(20) N 工单类型:维修、更换、检查
assigned_user varchar(100) Y 指派人员
assignment_time timestamp(6) Y 指派时间
work_description text Y 工作描述
work_location varchar(200) Y 工作位置
scheduled_time timestamp(6) Y 预约时间
start_time timestamp(6) Y 开始时间
end_time timestamp(6) Y 结束时间
work_duration int4 Y 0 工作时长(分钟)
work_status int2 N 0 工单状态0-待处理1-处理中2-已完成
work_result varchar(500) Y 工作结果
completion_photos text Y 完成照片
customer_signature varchar(500) Y 客户签名
satisfaction_rating int2 Y 满意度评分1-5分
device_id varchar(100) Y 设备ID
sync_status int2 N 0 同步状态0-未同步1-已同步
sync_time timestamp(6) Y 同步时间
remark varchar(500) Y 备注
create_time timestamp(6) N pg_systimestamp() 创建时间
update_time timestamp(6) N pg_systimestamp() 更新时间
creator varchar(100) Y 创建人id
updater varchar(100) Y 更新人id
deleted int2 N 0 是否删除
tenant_id int8 N 0 租户id

移动端特有表(优化后)

根据移动端表设计优化原则以下为移动端特有的5个表

mobile_user_cache (移动端用户缓存表)

字段名 类型 是否可空 默认值 注释
id bigint N AUTO_INCREMENT 主键
user_id bigint N 用户ID关联system_users.id
device_id varchar(100) N 设备唯一标识
cache_data longtext Y 缓存数据JSON格式
cache_type varchar(50) N 缓存类型user_info、task_data、config_data
expire_time datetime Y 过期时间
version int N 1 版本号,用于数据同步
create_time datetime N CURRENT_TIMESTAMP 创建时间
update_time datetime N CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间
creator varchar(64) Y 创建者
updater varchar(64) Y 更新者
deleted tinyint N 0 是否删除0-未删除1-已删除
tenant_id bigint N 0 租户ID

mobile_search_history (移动端搜索历史表)

字段名 类型 是否可空 默认值 注释
id bigint N AUTO_INCREMENT 主键
user_id bigint N 用户ID关联system_users.id
search_keyword varchar(200) N 搜索关键词
search_type varchar(50) N 搜索类型customer、meter、address
search_result_count int N 0 搜索结果数量
search_time datetime N CURRENT_TIMESTAMP 搜索时间
device_id varchar(100) Y 设备ID
create_time datetime N CURRENT_TIMESTAMP 创建时间
update_time datetime N CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间
creator varchar(64) Y 创建者
updater varchar(64) Y 更新者
deleted tinyint N 0 是否删除0-未删除1-已删除
tenant_id bigint N 0 租户ID

mobile_task_sync (移动端任务同步表)

字段名 类型 是否可空 默认值 注释
id bigint N AUTO_INCREMENT 主键
user_id bigint N 用户ID关联system_users.id
task_id bigint N 任务ID关联biz_meter_book.id
sync_status varchar(20) N pending 同步状态pending、syncing、completed、failed
sync_type varchar(20) N 同步类型download、upload
data_size int N 0 数据大小(字节)
sync_progress decimal(5,2) N 0.00 同步进度(百分比)
error_message text Y 错误信息
last_sync_time datetime Y 最后同步时间
retry_count int N 0 重试次数
device_id varchar(100) Y 设备ID
create_time datetime N CURRENT_TIMESTAMP 创建时间
update_time datetime N CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间
creator varchar(64) Y 创建者
updater varchar(64) Y 更新者
deleted tinyint N 0 是否删除0-未删除1-已删除
tenant_id bigint N 0 租户ID

mobile_work_attachment (移动端工单附件表)

字段名 类型 是否可空 默认值 注释
id bigint N AUTO_INCREMENT 主键
work_order_id bigint N 工单ID关联biz_process.id 或 biz_content.id
attachment_type varchar(20) N 附件类型image、video、document
attachment_name varchar(200) N 附件名称
attachment_path varchar(500) N 附件存储路径
attachment_size bigint N 0 附件大小(字节)
mime_type varchar(100) Y MIME类型
upload_status varchar(20) N pending 上传状态pending、uploading、completed、failed
upload_progress decimal(5,2) N 0.00 上传进度(百分比)
gps_longitude decimal(10,6) Y GPS经度
gps_latitude decimal(10,6) Y GPS纬度
capture_time datetime Y 拍摄/录制时间
device_id varchar(100) Y 设备ID
create_time datetime N CURRENT_TIMESTAMP 创建时间
update_time datetime N CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间
creator varchar(64) Y 创建者
updater varchar(64) Y 更新者
deleted tinyint N 0 是否删除0-未删除1-已删除
tenant_id bigint N 0 租户ID

mobile_app_config (移动端应用配置表)

字段名 类型 是否可空 默认值 注释
id bigint N AUTO_INCREMENT 主键
user_id bigint N 用户ID关联system_users.id
config_key varchar(100) N 配置项键名
config_value text Y 配置项值
config_type varchar(50) N 配置类型system、user、app
config_description varchar(500) Y 配置描述
is_active tinyint N 1 是否启用0-禁用1-启用
device_id varchar(100) Y 设备ID
create_time datetime N CURRENT_TIMESTAMP 创建时间
update_time datetime N CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间
creator varchar(64) Y 创建者
updater varchar(64) Y 更新者
deleted tinyint N 0 是否删除0-未删除1-已删除
tenant_id bigint N 0 租户ID

移动端表设计优化说明

设计原则

根据系统架构设计原则移动端优先使用Web端已有的数据表避免重复建表确保数据一致性和降低维护成本。

表复用策略

复用Web端表10个

移动端直接复用以下Web端已有表

表名 用途说明 备注
system_users 用户基本信息表 复用Web端用户管理
system_login_log 登录日志表 扩展设备类型字段记录移动端登录
biz_cust 客户主档表 复用 Web 端客户档案
biz_meter 水表主档表 复用 Web 端水表档案
biz_meter_book 抄表册本表 复用 Web 端抄表任务
biz_reading_data 抄表数据表 复用 Web 端抄表数据
biz_meter_read 抄表任务/状态表 复用 Web 端抄表过程状态
biz_process 业务办理流程表 复用 Web 端现场业务工单/办理数据
biz_content_attach 办理附件表 复用 Web 端附件资料
biz_account 客户账户表 复用 Web 端账务信息

移动端特有表5个

仅保留移动端特有的功能表:

表名 用途说明 特有原因
mobile_user_cache 移动端用户缓存表 用于离线缓存,移动端特有需求
mobile_search_history 移动端搜索历史表 移动端搜索记录管理
mobile_task_sync 移动端任务同步表 离线任务管理,移动端特有
mobile_work_attachment 移动端工单附件表 现场附件管理,移动端特有
mobile_app_config 移动端应用配置表 个性化设置,移动端特有

优化效果

  1. 减少冗余避免了15+个重复表的创建
  2. 提升一致性移动端和Web端共享核心业务数据
  3. 降低维护成本:统一的数据模型减少维护复杂度
  4. 符合架构原则遵循DRYDon't Repeat Yourself原则

数据同步策略

  • 实时同步:共用表自然保证数据一致性
  • 离线缓存:移动端特有表支持离线操作
  • 冲突处理:通过时间戳和版本控制处理数据冲突

视图的设计

数据库ER图设计

系统核心表关系图

erDiagram
    system_tenant ||--o{ system_users : "租户关系"
    system_users ||--o{ system_user_role : "用户角色"
    system_role ||--o{ system_user_role : "角色用户"
    system_role ||--o{ system_role_menu : "角色权限"
    system_menu ||--o{ system_role_menu : "菜单权限"
    system_dept ||--o{ system_users : "部门用户"
    
    system_tenant {
        int8 id PK
        varchar name
        varchar contact_name
        varchar contact_mobile
        int2 status
        timestamp expire_time
    }
    
    system_users {
        int8 id PK
        varchar username
        varchar nickname
        varchar password
        int8 dept_id FK
        int8 tenant_id FK
        int2 status
    }
    
    system_role {
        int8 id PK
        varchar name
        varchar code
        int2 data_scope
        int8 tenant_id FK
    }
    
    system_dept {
        int8 id PK
        varchar name
        int8 parent_id
        varchar code
        int8 tenant_id FK
    }

业务核心表关系图

erDiagram
    BIZ_CUST ||--|| BIZ_ACCOUNT : 对应账户
    BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 联系人
    BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定水表
    BIZ_METER ||--o{ BIZ_CUST_METER : 被绑定
    BIZ_METER_BOOK ||--o{ BIZ_METER_READ : 生成任务
    BIZ_METER_READ ||--o{ BIZ_READING_DATA : 采集读数
    BIZ_METER ||--o{ BIZ_LAST_READING : 最新读数
    BIZ_READING_DATA ||--o{ BIZ_CHARGE : 触发开账
    BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 明细拆分
    BIZ_CHARGE ||--o{ BIZ_INVOICE : 开票关联
    BIZ_CHARGE ||--o{ BK_TRANSACTION : 支付核销
    BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_TEMPLATE : 模板归属
    BIZ_PRICE_TEMPLATE ||--o{ BIZ_WATER_USE_SCHEME : 计费方案
    BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_COST_ADJUSTMENT : 费用调整
    BIZ_PRICE_COST_ADJUSTMENT ||--o{ BIZ_PRICE_TIER_ADJUSTMENT : 阶梯规则
    BK_WITHHOLDING_BATCH ||--o{ BK_WITHHOLDING_ITEM : 批次明细
    BK_RECONCILE_BATCH ||--o{ BK_RECONCILE_DIFF : 对账差异

    BIZ_CUST {
        int8 id PK
        varchar code
        varchar name
        varchar cust_type
        varchar mobile
        int8 tenant_id FK
    }

    BIZ_ACCOUNT {
        int8 id PK
        varchar code
        int8 cust_id FK
        numeric balance
        numeric arrears_amount
    }

    BIZ_METER {
        int8 id PK
        varchar code
        varchar meter_no
        varchar maker_code
        varchar model_code
    }

    BIZ_CHARGE {
        int8 id PK
        varchar code
        int8 cust_id FK
        varchar bill_period
        numeric total_amount
        int2 charge_status
    }

    BK_TRANSACTION {
        int8 id PK
        varchar trade_no
        varchar biz_order_no
        varchar channel_code
        numeric trade_amount
        int2 trade_status
    }

业务视图设计

为简化复杂查询和报表统计,设计以下视图:

v_price_info (价格信息视图)

综合展示价格体系信息,包含价格归属、费用组成、调整历史等。

CREATE VIEW v_price_info AS
SELECT 
    pc.id as category_id,
    pc.name as category_name,
    pc.code as category_code,
    cc.name as cost_name,
    cc.code as cost_code,
    pca.price_value,
    pca.effective_date,
    pca.expire_date
FROM biz_price_category pc
LEFT JOIN biz_price_cost_adjustment pca ON pc.code = pca.price_category_code
LEFT JOIN biz_cost_component cc ON pca.cost_component_code = cc.code
WHERE pc.deleted = 0 AND pca.deleted = 0 AND cc.deleted = 0;

v_meter_info (水表信息视图)

整合水表主档、厂家、型号、口径等基础信息,服务于册本分配、现场抄表和档案查询。

CREATE VIEW v_meter_info AS
SELECT
    m.id AS meter_id,
    m.code AS meter_code,
    m.meter_no,
    m.maker_code,
    maker.name AS maker_name,
    m.model_code,
    model.name AS model_name,
    m.caliber_code,
    caliber.name AS caliber_name,
    caliber.value AS caliber_value,
    m.range_code,
    range_cfg.name AS range_name,
    m.install_address,
    m.meter_status
FROM biz_meter m
LEFT JOIN biz_meter_maker maker ON m.maker_code = maker.code AND maker.deleted = 0
LEFT JOIN biz_meter_model model ON m.model_code = model.code AND model.deleted = 0
LEFT JOIN biz_meter_caliber caliber ON m.caliber_code = caliber.code AND caliber.deleted = 0
LEFT JOIN biz_meter_range range_cfg ON m.range_code = range_cfg.code AND range_cfg.deleted = 0
WHERE m.deleted = 0;

v_dept_hierarchy (部门层级视图)

展示完整的组织架构层级关系。

CREATE VIEW v_dept_hierarchy AS
WITH RECURSIVE dept_tree AS (
    SELECT id, name, code, parent_id, 0 as level, name as path
    FROM system_dept 
    WHERE parent_id = 0 AND deleted = 0
    
    UNION ALL
    
    SELECT d.id, d.name, d.code, d.parent_id, dt.level + 1, 
           CONCAT(dt.path, ' > ', d.name)
    FROM system_dept d
    INNER JOIN dept_tree dt ON d.parent_id = dt.id
    WHERE d.deleted = 0
)
SELECT * FROM dept_tree;

统计分析视图

v_tenant_summary (租户汇总视图)

按租户维度统计各类数据。

CREATE VIEW v_tenant_summary AS
SELECT 
    t.id as tenant_id,
    t.name as tenant_name,
    COUNT(DISTINCT u.id) as user_count,
    COUNT(DISTINCT d.id) as dept_count,
    COUNT(DISTINCT c.id) as community_count
FROM system_tenant t
LEFT JOIN system_users u ON t.id = u.tenant_id AND u.deleted = 0
LEFT JOIN system_dept d ON t.id = d.tenant_id AND d.deleted = 0
LEFT JOIN biz_community c ON t.id = c.tenant_id AND c.deleted = 0
WHERE t.deleted = 0
GROUP BY t.id, t.name;

REV-007 统计承接口径

设计定位

  • REV-007 以在线业务主数据聚合、视图或汇总口径支撑经营统计查询,不在本轮确认独立统计仓库、离线批处理表或专题分析表族。
  • 统计结果必须能够追溯到现有客户、账单、收费、交易、抄表和组织维度数据来源。
  • 当前数据库主文档仅约束“统计查询如何承接”,不反推 backend 已存在专门统计模块或已固化全部统计视图。

最小统计主题承接口径

统计主题 主数据来源 最低维度要求 最低指标要求 承接方式
营收汇总 biz_chargebiz_charge_detail 时间、账期、营业所、客户类别 应收金额、账单数、用水量 在线聚合 / 汇总口径
收费与实收统计 biz_collectionbk_transaction 时间、渠道、营业所、收费状态 实收金额、收费笔数、成功率 在线聚合 / 汇总口径
欠费规模与账龄统计 biz_chargebiz_charge_detail 账期、账龄、客户类别、区域 欠费余额、欠费户数、账龄分布 在线聚合 / 汇总口径
客户结构统计 biz_custbiz_account 客户类别、区域、状态 客户数、账户数、活跃状态分布 在线聚合 / 视图口径
渠道交易统计 bk_transactionbk_payment_channel 渠道、日期、结果状态 交易笔数、交易金额、渠道占比 在线聚合 / 汇总口径
抄表完成率统计 biz_meter_bookbiz_reading_databiz_last_reading 抄表周期、册本、片区、人员 应抄户数、已抄户数、完成率 在线聚合 / 汇总口径

设计约束

  • 统计查询可以由视图、临时汇总结果或聚合 SQL 承接,但未确认存在的 stat_*report_* 或专题报表表不得写成正式已实现对象。
  • 若某类统计仅在历史资料中出现而当前主文档未形成正式口径,应先作为后续专题保留项,不直接扩写为当前正式范围。
  • 涉及历史迁移核查的统计比对时,历史来源只承担补充核对职责,不替代在线主数据统计结果。
  • 导出能力属于查询扩展能力,数据库设计不单独为导出动作臆造新的物理表。

索引设计与性能优化

核心索引设计

系统表索引

-- 用户表核心索引
CREATE INDEX idx_system_users_username ON system_users(username);
CREATE INDEX idx_system_users_dept_tenant ON system_users(dept_id, tenant_id);
CREATE INDEX idx_system_users_status_tenant ON system_users(status, tenant_id);

-- 部门表索引
CREATE INDEX idx_system_dept_parent_tenant ON system_dept(parent_id, tenant_id);
CREATE INDEX idx_system_dept_code ON system_dept(code);

-- 角色权限索引
CREATE INDEX idx_system_user_role_user_tenant ON system_user_role(user_id, tenant_id);
CREATE INDEX idx_system_role_menu_role_id ON system_role_menu(role_id);

-- 日志表索引(支持时间范围查询)
CREATE INDEX idx_system_login_log_user_time ON system_login_log(user_id, create_time);
CREATE INDEX idx_system_login_log_ip_time ON system_login_log(user_ip, create_time);

业务表索引

-- 客户主数据索引
CREATE INDEX idx_biz_cust_code ON biz_cust(code);
CREATE INDEX idx_biz_cust_mobile ON biz_cust(mobile);
CREATE INDEX idx_biz_account_cust_status ON biz_account(cust_id, account_status);

-- 水表与抄表索引
CREATE INDEX idx_biz_meter_code ON biz_meter(code);
CREATE INDEX idx_biz_meter_book_dept_status ON biz_meter_book(dept_code, status);
CREATE INDEX idx_biz_meter_read_book_period ON biz_meter_read(book_id, read_period);
CREATE INDEX idx_biz_reading_data_read_time ON biz_reading_data(meter_read_id, read_time);

-- 开账收费索引
CREATE INDEX idx_biz_charge_cust_period ON biz_charge(cust_id, bill_period);
CREATE INDEX idx_biz_charge_status_due ON biz_charge(charge_status, due_date);
CREATE INDEX idx_biz_charge_detail_charge_cost ON biz_charge_detail(charge_id, cost_component_code);

-- 价格体系索引
CREATE INDEX idx_biz_price_category_code ON biz_price_category(code);
CREATE INDEX idx_biz_price_template_category ON biz_price_template(price_category_code, adjustment_snap_code);
CREATE INDEX idx_biz_price_cost_adj_category_cost ON biz_price_cost_adjustment(price_category_code, cost_component_code);
CREATE INDEX idx_biz_price_tier_adj_cost_tier ON biz_price_tier_adjustment(cost_component_code, tier_level);

-- 银行代收与对账索引
CREATE INDEX idx_bk_transaction_trade_no ON bk_transaction(trade_no);
CREATE INDEX idx_bk_transaction_biz_order ON bk_transaction(biz_order_no, trade_status);
CREATE INDEX idx_bk_withholding_batch_date ON bk_withholding_batch(batch_date, batch_status);
CREATE INDEX idx_bk_reconcile_batch_bill_date ON bk_reconcile_batch(bill_date, reconcile_status);

分区表设计

日志表分区策略

-- 登录日志按月分区
CREATE TABLE system_login_log_partition (
    LIKE system_login_log INCLUDING ALL
) PARTITION BY RANGE (create_time);

-- 创建月度分区
CREATE TABLE system_login_log_y2024m01 PARTITION OF system_login_log_partition
    FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');
    
CREATE TABLE system_login_log_y2024m02 PARTITION OF system_login_log_partition
    FOR VALUES FROM ('2024-02-01') TO ('2024-03-01');

历史数据分区策略

-- 价格调整历史按年分区
CREATE TABLE biz_price_adjustment_history_partition (
    LIKE biz_price_adjustment_history INCLUDING ALL
) PARTITION BY RANGE (create_time);

-- 按年度分区
CREATE TABLE biz_price_adjustment_history_y2024 PARTITION OF biz_price_adjustment_history_partition
    FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');

查询优化建议

多租户查询优化

-- 建议查询模式始终带上租户ID
SELECT * FROM system_users 
WHERE tenant_id = ? AND status = 0 AND dept_id = ?;

-- 使用覆盖索引减少回表
CREATE INDEX idx_system_users_cover ON system_users(tenant_id, status, dept_id)
INCLUDE (username, nickname, email);

层级查询优化

-- 使用递归CTE查询部门层级
WITH RECURSIVE dept_tree AS (
    SELECT id, name, parent_id, 1 as level
    FROM system_dept 
    WHERE id = ? AND tenant_id = ?
    
    UNION ALL
    
    SELECT d.id, d.name, d.parent_id, dt.level + 1
    FROM system_dept d
    INNER JOIN dept_tree dt ON d.parent_id = dt.id
    WHERE d.tenant_id = ? AND dt.level < 10  -- 防止无限递归
)
SELECT * FROM dept_tree;

数据归档策略

日志数据归档

  • 保留策略: 在线保留3个月历史数据转移到归档表
  • 归档周期: 每月执行一次归档作业
  • 存储方式: 使用列式存储优化查询性能

历史数据处理

-- 创建归档表
CREATE TABLE system_login_log_archive (
    LIKE system_login_log INCLUDING ALL
);

-- 归档脚本示例
INSERT INTO system_login_log_archive 
SELECT * FROM system_login_log 
WHERE create_time < CURRENT_DATE - INTERVAL '3 months';

DELETE FROM system_login_log 
WHERE create_time < CURRENT_DATE - INTERVAL '3 months';

安全保密设计

  • 用户认证: 所有数据库连接均需通过应用层的身份认证,禁止数据库密码在配置文件中明文存储。
  • 权限控制: 数据库用户权限遵循最小权限原则。应用层根据用户角色RBAC动态构建SQL并通过行级安全RLS策略限制数据访问范围。
  • 数据加密: 对数据库中的密码、密钥等敏感信息采用BCrypt或SM3等算法进行加密存储。
  • 审计日志: 启用数据库审计功能记录所有DDL和DML操作特别是对敏感数据的访问和修改。