# 福建水务营收系统数据库设计说明书
| 文件状态: | 文档密级: | 公开 |
| :--- | :--- | :--- |
| 【 】草稿 | | |
| 【 】修改稿 | | |
| 【√】正式发布 | | |
| | **当前版本:** | **V1.5** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **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相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。 |
# 目录
- [1. 前言](#1-前言)
- [2. 外部设计](#2-外部设计)
- [3. 数据库设计说明](#3-数据库设计说明)
- [4. 表结构设计](#4-表结构设计)
- [4.1. 数据表总体概览](#41-数据表总体概览)
- [4.2. 系统公共表 (system_*)](#42-系统公共表-system_)
- [4.3. 子系统1: 统一平台数据表](#43-子系统1-统一平台数据表)
- [4.4. 子系统2: 营收系统数据表](#44-子系统2-营收系统数据表)
- [4.5. 子系统3: 表务系统数据表](#45-子系统3-表务系统数据表)
- [4.6. 子系统4: 报装系统数据表](#46-子系统4-报装系统数据表)
- [4.7. 子系统5: 客户服务数据表](#47-子系统5-客户服务数据表)
- [4.8. 子系统6: 手机抄表APP数据表](#48-子系统6-手机抄表app数据表)
- [5. 移动端表设计优化说明](#5-移动端表设计优化说明)
- [6. 视图的设计](#6-视图的设计)
- [7. 安全保密设计](#7-安全保密设计)
# 前言
本文档详细描述了福建水务营收系统的数据库设计,包括总体架构、E-R图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。
# 外部设计
- **数据库系统**: 主力采用国产数据库 **达梦数据库 8.0+**。系统设计上兼容 **MySQL 8.x** 或 **MariaDB 10.x**。
- **数据库工具**: 使用 Navicat, DBeaver, DataGrip 等主流数据库管理工具。
- **约定**:
- **表名**: 全部小写,单词间使用下划线 `_` 分隔。业务表以 `biz_` 开头,系统管理表以 `system_` 开头。
- **字段名**: 全部小写,驼峰式命名(如 `userId`),与Java实体类属性保持一致。
- **主键**: 统一命名为 `id`,类型为 `bigint`,自增。
- **通用字段**: 所有表必须包含 `id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id` 字段。
- **字符集**: 统一使用 `utf8mb4` 字符集。
# 数据库设计说明
数据库设计遵循第三范式(3NF),并采用基于`tenant_id`字段隔离的SaaS多租户架构。
# 表结构设计
## 数据表总体概览
| 模块 | 表前缀 | 主要功能 | 表数量 |
| :--- | :--- | :--- | :--- |
| 系统公共 | `system_` | 负责用户、角色、权限、部门、租户、字典、日志等基础功能 | 30个 |
| 基础配置 | `biz_community`, `biz_company_*`, `biz_meter_*`, `biz_price_*` | 小区管理、水司账户、水表参数、价格体系等基础配置 | 19个 |
| 客户管理 | `customer_*` | 客户档案管理、变更记录、账户信息等 | 3个 |
| 水表管理 | `meter_*` | 水表信息、仓库管理、领用管理等 | 4个 |
| 抄表管理 | `reading_*` | 抄表册本、抄表记录、价格政策、异常处理等 | 4个 |
| 账务管理 | `billing_*`, `payment_*`, `prepay_*` | 开账记录、缴费记录、预付款账户、收费项目明细、票据信息、收费员会话等 | 6个 |
| 账务调整 | `account_adjustment_*`, `split_*`, `refund_*`, `bad_debt_*` | 账务调整、分账、退款、呆坏账处理等 | 14个 |
| 工单管理 | `workorder_*`, `business_*`, `report_*`, `audit_*` | 业务工单、上报工单、稽查工单、表务工单、工单日志、工单附件等 | 6个 |
| 报装管理 | `installation_*` | 报装申请、报装流程等 | 2个 |
| 银行接口 | `bank_*` | 银行交易记录等 | 1个 |
| 第三方支付 | `thirdpay_*` | 第三方绑定、支付交易等 | 2个 |
| 用户配置 | `infra_*` | 用户表单字段配置等 | 1个 |
| 客户服务 | `service_*` | 投诉建议、报修工单等 | 2个 |
| 发票管理 | `invoice_*` | 发票信息、发票明细、查询日志、开票请求、税控接口、错误日志等 | 6个 |
| 营业网点 | `outlet_*` | 营业网点信息等 | 1个 |
| 消息通知 | `message_*` | 消息模板、发送日志等 | 2个 |
| 报表管理 | `report_*` | 报表模板、配置、生成日志、导出日志等 | 4个 |
| 催缴管理 | `reminder_*`, `sms_*` | 催缴任务、记录、结果、短信发送等 | 4个 |
| 统计分析 | `statistics_*` | 缴费统计、收费员绩效、欠费记录、风险等级等 | 5个 |
| 表务管理 | `meter_work_*` | 表务工单、维修记录、更换日志、工单用料等 | 4个 |
| 代收业务 | `realtime_payment_*` | 实时收费、接口日志、错误日志等 | 3个 |
| 报装工程 | `construction_*` | 现场踏勘、施工方案、合同、施工进度等 | 4个 |
| 移动端 | `mobile_*` | 移动端用户会话、缓存、登录日志、抄表任务、问题上报等 | 11个 |
| **总计** | | **涵盖水务营收系统全业务流程** | **147个** |
## 系统公共表 (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 |
## 客户管理表 (customer_*)
### customer_info (客户信息表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_no | varchar(32) | N | | 客户编号,系统自动生成 |
| customer_name | varchar(100) | N | | 客户名称 |
| customer_type | varchar(20) | N | | 客户类型:个人、单位 |
| identity_type | varchar(20) | Y | | 证件类型:身份证、营业执照等 |
| identity_no | varchar(50) | Y | | 证件号码 |
| address | varchar(500) | Y | | 详细地址 |
| contact_name | varchar(100) | Y | | 联系人姓名 |
| contact_phone | varchar(20) | Y | | 联系电话 |
| contact_mobile | varchar(20) | Y | | 手机号码 |
| email | varchar(100) | Y | | 电子邮箱 |
| community_id | int8 | Y | | 所属小区ID |
| dept_code | varchar(50) | N | | 所属部门代码 |
| customer_status | int2 | N | 0 | 客户状态:0-正常,1-停用,2-注销 |
| 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 |
### customer_change_log (客户变更日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| change_type | varchar(20) | N | | 变更类型:更名、过户、注销等 |
| change_reason | varchar(100) | Y | | 变更原因 |
| before_value | text | Y | | 变更前数据 |
| after_value | text | Y | | 变更后数据 |
| change_date | timestamp(6) | N | pg_systimestamp() | 变更日期 |
| approver | varchar(100) | Y | | 审批人 |
| approval_date | 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 |
### customer_account (客户账户信息表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| account_balance | numeric(15,4) | Y | 0 | 账户余额 |
| available_balance | numeric(15,4) | Y | 0 | 可用余额 |
| frozen_balance | numeric(15,4) | Y | 0 | 冻结余额 |
| total_arrears | numeric(15,4) | Y | 0 | 累计欠费 |
| total_payment | numeric(15,4) | Y | 0 | 累计缴费 |
| credit_limit | numeric(15,4) | Y | 0 | 信用额度 |
| last_payment_date | timestamp(6) | Y | | 最后缴费日期 |
| last_payment_amount | numeric(15,4) | Y | 0 | 最后缴费金额 |
| account_status | int2 | N | 0 | 账户状态:0-正常,1-冻结,2-停用 |
| 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 |
## 水表管理表 (meter_*)
### meter_info (水表信息表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| meter_no | varchar(32) | N | | 水表编号 |
| meter_code | varchar(100) | N | | 水表钢印号 |
| barcode | varchar(100) | Y | | 条形码 |
| customer_id | int8 | Y | | 客户ID |
| maker_code | varchar(100) | N | | 厂家代码 |
| model_code | varchar(100) | N | | 型号代码 |
| caliber_code | varchar(100) | Y | | 口径代码(与源设计对齐,优先使用) |
| range_code | varchar(100) | Y | | 量程代码(与源设计对齐,优先使用) |
| type | int4 | Y | | 水表分类/类型(见字典) |
| steel_mark | varchar(100) | Y | | 钢印号(源设计字段) |
| seal_number | varchar(100) | Y | | 水表编号(源设计字段) |
| check_code | varchar(100) | Y | | 强检编号(源设计字段) |
| install_date | timestamp(6) | Y | | 安装日期 |
| install_address | varchar(500) | Y | | 安装地址 |
| meter_status | int2 | N | 0 | 水表状态:0-正常,1-故障,2-停用,3-拆除 |
| current_reading | numeric(15,3) | Y | 0 | 当前读数 |
| last_reading | numeric(15,3) | Y | 0 | 上次读数 |
| check_date | timestamp(6) | Y | | 检定日期 |
| expire_date | timestamp(6) | Y | | 到期日期 |
| gpsx | numeric(10,6) | Y | | GPSX坐标 |
| gpsy | numeric(10,6) | Y | | GPSY坐标 |
| latitude | numeric(10,6) | Y | | 纬度 |
| longitude | numeric(10,6) | Y | | 经度 |
| highly | numeric(10,2) | Y | | 高度(米) |
| imei | varchar(100) | Y | | 设备识别码 |
| imsi | varchar(100) | Y | | IMSI |
| module_code | varchar(100) | Y | | 模块号 |
| nfc_code | varchar(100) | Y | | NFC编号 |
| qr_code | varchar(100) | 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 |
### meter_warehouse (水表仓库表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| meter_code | varchar(100) | N | | 水表钢印号 |
| barcode | varchar(100) | Y | | 条形码 |
| maker_code | varchar(100) | N | | 厂家代码 |
| model_code | varchar(100) | N | | 型号代码 |
| caliber_id | int8 | N | | 口径ID |
| range_id | int8 | N | | 量程ID |
| warehouse_status | int2 | N | 0 | 仓库状态:0-在库,1-已领用,2-已出库,3-已退库,4-已报废 |
| storage_date | timestamp(6) | Y | | 入库日期 |
| check_date | timestamp(6) | Y | | 检定日期 |
| checker | varchar(100) | Y | | 检定人 |
| check_result | varchar(20) | Y | | 检定结果:合格、不合格 |
| check_certificate | varchar(100) | Y | | 检定证书编号 |
| box_no | 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 |
### meter_requisition (水表领用单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| requisition_no | varchar(32) | N | | 领用单号 |
| requisition_type | varchar(20) | N | | 领用类型:新装、故障换表、定期换表 |
| dept_code | varchar(50) | N | | 领用部门代码 |
| requisition_user | varchar(100) | N | | 领用人 |
| requisition_date | timestamp(6) | N | pg_systimestamp() | 领用日期 |
| project_no | varchar(50) | Y | | 工程编号(新装时使用) |
| requisition_status | int2 | N | 0 | 领用状态:0-已登记,1-已领用,2-已完成 |
| 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 |
### meter_requisition_detail (水表领用明细表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| requisition_id | int8 | N | | 领用单ID |
| maker_code | varchar(100) | N | | 厂家代码 |
| model_code | varchar(100) | N | | 型号代码 |
| caliber_id | int8 | N | | 口径ID |
| requisition_qty | int4 | N | | 申请数量 |
| actual_qty | 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 |
## 抄表管理表 (reading_*)
### reading_book (抄表册本表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| book_no | varchar(32) | N | | 册本编号 |
| book_name | varchar(100) | N | | 册本名称 |
| dept_code | varchar(50) | N | | 所属部门代码 |
| reader_user | varchar(100) | N | | 抄表员 |
| reading_method | varchar(20) | N | | 抄表方式:手工、PDA、远传、导入 |
| reading_cycle | int4 | N | | 抄表周期(天) |
| start_date | timestamp(6) | Y | | 起抄日期 |
| next_date | timestamp(6) | Y | | 下次抄表日期 |
| book_status | int2 | N | 0 | 册本状态:0-正常,1-停用 |
| is_temp | int2 | N | 0 | 是否临时册本: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 |
### reading_record (抄表记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| book_id | int8 | N | | 册本ID |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | N | | 水表ID |
| reading_date | timestamp(6) | N | pg_systimestamp() | 抄表日期 |
| reading_period | varchar(10) | N | | 抄表期间:YYYY-MM |
| last_reading | numeric(15,3) | Y | 0 | 上次读数 |
| current_reading | numeric(15,3) | Y | 0 | 本次读数 |
| water_usage | numeric(15,3) | Y | 0 | 用水量 |
| reading_status | varchar(20) | N | | 抄表状态:正常、故障、估读、拒抄等 |
| reading_method | varchar(20) | N | | 抄表方式:手工、PDA、远传、导入 |
| reader_user | varchar(100) | N | | 抄表员 |
| is_reviewed | int2 | N | 0 | 是否已复核:0-未复核,1-已复核 |
| reviewer | varchar(100) | Y | | 复核人 |
| review_date | timestamp(6) | Y | | 复核日期 |
| photo_url | varchar(500) | 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 |
### reading_exception (抄表异常表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| reading_id | int8 | N | | 抄表记录ID |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | N | | 水表ID |
| exception_type | varchar(20) | N | | 异常类型:故障、估读、拒抄、无法抄表等 |
| exception_code | varchar(10) | N | | 异常代码 |
| exception_description | varchar(500) | Y | | 异常描述 |
| last_normal_reading | numeric(15,3) | Y | 0 | 上次正常读数 |
| estimated_reading | numeric(15,3) | Y | 0 | 估算读数 |
| estimated_usage | numeric(15,3) | Y | 0 | 估算用量 |
| handler | varchar(100) | Y | | 处理人 |
| handle_time | timestamp(6) | Y | | 处理时间 |
| handle_result | varchar(500) | Y | | 处理结果 |
| exception_status | int2 | N | 0 | 异常状态:0-未处理,1-已处理,2-已忽略 |
| photo_url | varchar(500) | 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 |
### price_policy (价格政策表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| policy_name | varchar(100) | N | | 政策名称 |
| policy_code | varchar(50) | N | | 政策代码 |
| policy_type | varchar(20) | N | | 政策类型:阶梯价格、固定价格、优惠政策 |
| customer_type | varchar(20) | N | | 适用客户类型:居民、商业、工业等 |
| effective_date | timestamp(6) | N | | 生效日期 |
| expire_date | timestamp(6) | Y | | 失效日期 |
| base_price | numeric(10,4) | Y | 0 | 基础价格 |
| tier_count | int4 | Y | 0 | 阶梯数量 |
| calculation_method | varchar(20) | Y | | 计算方式:累进、分档 |
| policy_description | varchar(1000) | Y | | 政策描述 |
| policy_status | int2 | N | 0 | 政策状态:0-草稿,1-生效,2-失效 |
| approval_user | varchar(100) | Y | | 审批人 |
| approval_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 |
## 账务管理表 (billing_*)
### billing_record (开账记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| bill_no | varchar(32) | N | | 账单编号 |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | N | | 水表ID |
| reading_id | int8 | N | | 抄表记录ID |
| bill_period | varchar(10) | N | | 账单期间:YYYY-MM |
| price_category_code | varchar(100) | N | | 价格归属代码 |
| water_usage | numeric(15,3) | Y | 0 | 用水量 |
| total_amount | numeric(15,4) | Y | 0 | 总金额 |
| water_fee | numeric(15,4) | Y | 0 | 水费 |
| sewage_fee | numeric(15,4) | Y | 0 | 污水费 |
| garbage_fee | numeric(15,4) | Y | 0 | 垃圾费 |
| penalty_fee | numeric(15,4) | Y | 0 | 违约金 |
| bill_date | timestamp(6) | N | pg_systimestamp() | 开账日期 |
| due_date | timestamp(6) | Y | | 应缴日期 |
| bill_status | int2 | N | 0 | 账单状态:0-未缴费,1-已缴费,2-已调整,3-已撤销 |
| payment_date | timestamp(6) | Y | | 缴费日期 |
| payment_method | varchar(20) | Y | | 缴费方式:现金、POS、微信、支付宝等 |
| 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 |
### payment_record (缴费记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| payment_no | varchar(32) | N | | 缴费流水号 |
| customer_id | int8 | N | | 客户ID |
| payment_date | timestamp(6) | N | pg_systimestamp() | 缴费日期 |
| payment_method | varchar(20) | N | | 缴费方式:现金、POS、微信、支付宝等 |
| payment_channel | varchar(20) | N | | 缴费渠道:柜台、微信、支付宝、银行等 |
| total_amount | numeric(15,4) | N | 0 | 缴费总金额 |
| bill_amount | numeric(15,4) | Y | 0 | 账单金额 |
| prepay_amount | numeric(15,4) | Y | 0 | 预存金额 |
| cashier | varchar(100) | Y | | 收费员 |
| payment_status | int2 | N | 0 | 缴费状态:0-正常,1-已冲正 |
| reverse_date | timestamp(6) | Y | | 冲正日期 |
| reverse_reason | varchar(200) | Y | | 冲正原因 |
| third_party_no | varchar(100) | 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 |
### prepay_account (预付款账户表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| account_balance | numeric(15,4) | Y | 0 | 账户余额 |
| total_deposit | numeric(15,4) | Y | 0 | 累计充值 |
| total_consume | numeric(15,4) | Y | 0 | 累计消费 |
| last_transaction_date | timestamp(6) | Y | | 最后交易日期 |
| account_status | int2 | N | 0 | 账户状态: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 |
### payment_item (收费项目明细表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| payment_id | int8 | N | | 缴费记录ID |
| item_type | varchar(20) | N | | 项目类型:水费、污水费、垃圾费、滞纳金 |
| item_name | varchar(100) | N | | 项目名称 |
| item_code | varchar(50) | N | | 项目代码 |
| unit_price | numeric(10,4) | Y | 0 | 单价 |
| quantity | numeric(15,3) | Y | 0 | 数量 |
| amount | numeric(15,4) | N | 0 | 金额 |
| discount_amount | numeric(15,4) | Y | 0 | 优惠金额 |
| actual_amount | numeric(15,4) | N | 0 | 实收金额 |
| tax_rate | numeric(5,4) | Y | 0 | 税率 |
| tax_amount | numeric(15,4) | Y | 0 | 税额 |
| bill_period | varchar(10) | 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 |
### receipt_info (票据信息表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| receipt_no | varchar(32) | N | | 票据编号 |
| receipt_type | varchar(20) | N | | 票据类型:收费收据、发票、收款凭证 |
| payment_id | int8 | N | | 缴费记录ID |
| customer_id | int8 | N | | 客户ID |
| receipt_amount | numeric(15,4) | N | 0 | 票据金额 |
| receipt_date | timestamp(6) | N | pg_systimestamp() | 开具日期 |
| receipt_status | int2 | N | 0 | 票据状态:0-正常,1-已作废,2-已退回 |
| cashier | varchar(100) | Y | | 收费员 |
| print_times | int4 | Y | 0 | 打印次数 |
| void_reason | varchar(200) | Y | | 作废原因 |
| void_time | timestamp(6) | Y | | 作废时间 |
| file_path | varchar(500) | 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 |
### cashier_session (收费员工作会话表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| session_no | varchar(32) | N | | 会话编号 |
| cashier_id | int8 | N | | 收费员ID |
| cashier_name | varchar(100) | N | | 收费员姓名 |
| workstation | varchar(50) | Y | | 工作站点 |
| checkin_time | timestamp(6) | N | pg_systimestamp() | 签到时间 |
| checkout_time | timestamp(6) | Y | | 签退时间 |
| initial_cash | numeric(15,4) | Y | 0 | 期初现金 |
| final_cash | numeric(15,4) | Y | 0 | 期末现金 |
| total_collected | numeric(15,4) | Y | 0 | 收费总额 |
| cash_collected | numeric(15,4) | Y | 0 | 现金收费 |
| pos_collected | numeric(15,4) | Y | 0 | POS收费 |
| online_collected | numeric(15,4) | Y | 0 | 线上收费 |
| transaction_count | int4 | Y | 0 | 交易笔数 |
| session_status | int2 | N | 0 | 会话状态: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 |
## 账务调整表 (account_adjustment_*)
### account_adjustment (账务调整表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| adjustment_no | varchar(32) | N | | 调整编号 |
| customer_id | int8 | N | | 客户ID |
| bill_id | int8 | N | | 账单ID |
| adjustment_type | varchar(20) | N | | 调整类型:增量调整、减量调整、金额调整 |
| adjustment_reason | varchar(100) | N | | 调整原因 |
| original_amount | numeric(15,4) | N | 0 | 原始金额 |
| adjustment_amount | numeric(15,4) | N | 0 | 调整金额 |
| final_amount | numeric(15,4) | N | 0 | 最终金额 |
| adjustment_date | timestamp(6) | N | pg_systimestamp() | 调整日期 |
| applicant | varchar(100) | N | | 申请人 |
| adjustment_status | int2 | N | 0 | 调整状态:0-待审批,1-已审批,2-已执行,3-已拒绝 |
| approval_level | int2 | N | 1 | 审批级别:1-一级审批,2-二级审批,3-三级审批 |
| 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 |
### adjustment_approval (调整审批表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| adjustment_id | int8 | N | | 调整ID |
| approval_level | int2 | N | | 审批级别 |
| approver | varchar(100) | N | | 审批人 |
| approval_result | int2 | N | | 审批结果:0-待审批,1-同意,2-拒绝 |
| approval_opinion | varchar(500) | Y | | 审批意见 |
| approval_time | timestamp(6) | Y | | 审批时间 |
| next_approver | varchar(100) | 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 |
### adjustment_detail (调整明细表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| adjustment_id | int8 | N | | 调整ID |
| item_type | varchar(20) | N | | 项目类型:水费、污水费、垃圾费、滞纳金 |
| original_amount | numeric(15,4) | N | 0 | 原始金额 |
| adjustment_amount | numeric(15,4) | N | 0 | 调整金额 |
| final_amount | numeric(15,4) | N | 0 | 最终金额 |
| adjustment_reason | varchar(200) | 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 |
### adjustment_attachment (调整附件表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| adjustment_id | int8 | N | | 调整ID |
| attachment_name | varchar(200) | N | | 附件名称 |
| attachment_type | varchar(20) | N | | 附件类型:照片、文档、证明 |
| file_path | varchar(500) | N | | 文件路径 |
| file_size | int8 | Y | 0 | 文件大小(字节) |
| upload_time | timestamp(6) | N | pg_systimestamp() | 上传时间 |
| 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 |
### account_split (分账记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| split_no | varchar(32) | N | | 分账编号 |
| original_bill_id | int8 | N | | 原始账单ID |
| customer_id | int8 | N | | 客户ID |
| split_type | varchar(20) | N | | 分账类型:按人员、按用途、按时间 |
| split_reason | varchar(100) | N | | 分账原因 |
| original_amount | numeric(15,4) | N | 0 | 原始金额 |
| split_count | int4 | N | 1 | 分账数量 |
| split_date | timestamp(6) | N | pg_systimestamp() | 分账日期 |
| applicant | varchar(100) | N | | 申请人 |
| split_status | int2 | N | 0 | 分账状态:0-待审批,1-已审批,2-已执行,3-已拒绝 |
| 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 |
### split_detail (分账明细表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| split_id | int8 | N | | 分账ID |
| split_sequence | int4 | N | | 分账序号 |
| split_amount | numeric(15,4) | N | 0 | 分账金额 |
| split_proportion | numeric(5,4) | Y | 0 | 分账比例 |
| split_description | varchar(200) | Y | | 分账说明 |
| new_bill_id | int8 | 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 |
### split_approval (分账审批表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| split_id | int8 | N | | 分账ID |
| approver | varchar(100) | N | | 审批人 |
| approval_result | int2 | N | | 审批结果:0-待审批,1-同意,2-拒绝 |
| approval_opinion | varchar(500) | Y | | 审批意见 |
| approval_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 |
### prepayment_refund (预付款退款表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| refund_no | varchar(32) | N | | 退款编号 |
| customer_id | int8 | N | | 客户ID |
| refund_type | varchar(20) | N | | 退款类型:账户余额退款、预付款退款、押金退款 |
| refund_amount | numeric(15,4) | N | 0 | 退款金额 |
| refund_reason | varchar(200) | N | | 退款原因 |
| refund_method | varchar(20) | N | | 退款方式:现金、转账、支票 |
| bank_account | varchar(100) | Y | | 银行账户 |
| bank_name | varchar(100) | Y | | 开户行 |
| account_holder | varchar(100) | Y | | 账户持有人 |
| refund_date | timestamp(6) | N | pg_systimestamp() | 退款日期 |
| applicant | varchar(100) | N | | 申请人 |
| refund_status | int2 | N | 0 | 退款状态:0-待审批,1-已审批,2-已退款,3-已拒绝 |
| 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 |
### refund_approval (退款审批表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| refund_id | int8 | N | | 退款ID |
| approver | varchar(100) | N | | 审批人 |
| approval_result | int2 | N | | 审批结果:0-待审批,1-同意,2-拒绝 |
| approval_opinion | varchar(500) | Y | | 审批意见 |
| approval_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 |
### refund_voucher (退款凭证表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| voucher_no | varchar(32) | N | | 凭证编号 |
| refund_id | int8 | N | | 退款ID |
| voucher_type | varchar(20) | N | | 凭证类型:退款单、银行凭证、转账凭证 |
| voucher_amount | numeric(15,4) | N | 0 | 凭证金额 |
| voucher_date | timestamp(6) | N | pg_systimestamp() | 凭证日期 |
| issuer | varchar(100) | Y | | 开具人 |
| recipient | varchar(100) | Y | | 收款人 |
| voucher_status | int2 | N | 0 | 凭证状态:0-正常,1-已作废 |
| file_path | varchar(500) | 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 |
### bad_debt_application (呆坏账申请表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_no | varchar(32) | N | | 申请编号 |
| customer_id | int8 | N | | 客户ID |
| bill_id | int8 | N | | 账单ID |
| debt_amount | numeric(15,4) | N | 0 | 呆坏账金额 |
| debt_type | varchar(20) | N | | 债务类型:呆账、坏账、死账 |
| debt_reason | varchar(200) | N | | 产生原因 |
| overdue_months | int4 | Y | 0 | 逾期月数 |
| application_date | timestamp(6) | N | pg_systimestamp() | 申请日期 |
| applicant | varchar(100) | N | | 申请人 |
| application_status | int2 | N | 0 | 申请状态:0-待审批,1-已审批,2-已核销,3-已拒绝 |
| evidence_description | varchar(1000) | 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 |
### bad_debt_approval (呆坏账审批表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_id | int8 | N | | 申请ID |
| approval_level | int2 | N | | 审批级别 |
| approver | varchar(100) | N | | 审批人 |
| approval_result | int2 | N | | 审批结果:0-待审批,1-同意,2-拒绝 |
| approval_opinion | varchar(500) | Y | | 审批意见 |
| approval_time | timestamp(6) | Y | | 审批时间 |
| next_approver | varchar(100) | 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 |
### bad_debt_writeoff (呆坏账核销表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| writeoff_no | varchar(32) | N | | 核销编号 |
| application_id | int8 | N | | 申请ID |
| writeoff_amount | numeric(15,4) | N | 0 | 核销金额 |
| writeoff_date | timestamp(6) | N | pg_systimestamp() | 核销日期 |
| writeoff_method | varchar(20) | N | | 核销方式:全额核销、部分核销 |
| executor | varchar(100) | N | | 执行人 |
| writeoff_status | int2 | N | 0 | 核销状态:0-已核销,1-已撤销 |
| accounting_voucher | varchar(100) | 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 |
### bad_debt_document (呆坏账证明材料表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_id | int8 | N | | 申请ID |
| document_type | varchar(20) | N | | 材料类型:法院判决书、工商注销证明、死亡证明等 |
| document_name | varchar(200) | N | | 材料名称 |
| file_path | varchar(500) | N | | 文件路径 |
| file_size | int8 | Y | 0 | 文件大小(字节) |
| upload_time | timestamp(6) | N | pg_systimestamp() | 上传时间 |
| uploader | varchar(100) | Y | | 上传人 |
| document_status | int2 | N | 0 | 材料状态:0-待审核,1-已审核,2-已退回 |
| 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 |
## 工单管理表 (workorder_*)
### business_work_order (业务工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| order_no | varchar(32) | N | | 工单编号 |
| order_type | varchar(20) | N | | 工单类型:客户服务、账务处理、投诉建议、故障报修 |
| title | varchar(100) | N | | 工单标题 |
| description | varchar(500) | Y | | 工单描述 |
| priority | varchar(10) | N | 中 | 优先级:紧急、高、中、低 |
| customer_id | int8 | Y | | 客户ID |
| contact_phone | varchar(20) | Y | | 联系电话 |
| assign_user | varchar(100) | Y | | 指派人员 |
| order_status | int2 | N | 0 | 工单状态:0-待处理,1-处理中,2-已完成,3-已关闭 |
| expected_time | timestamp(6) | Y | | 预期完成时间 |
| actual_time | timestamp(6) | Y | | 实际完成时间 |
| process_note | text | 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 |
### work_order_log (工单处理日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_id | int8 | N | | 工单ID |
| operation_type | varchar(20) | N | | 操作类型:创建、派发、处理、完成、关闭 |
| operation_user | varchar(100) | N | | 操作人员 |
| operation_content | varchar(500) | Y | | 操作内容 |
| operation_time | timestamp(6) | N | pg_systimestamp() | 操作时间 |
| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 |
| creator | varchar(100) | Y | | 创建人id |
| tenant_id | int8 | N | 0 | 租户id |
### work_order_attachment (工单附件表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_id | int8 | N | | 工单ID |
| file_name | varchar(200) | N | | 文件名称 |
| file_path | varchar(500) | N | | 文件路径 |
| file_size | int8 | Y | | 文件大小 |
| file_type | varchar(50) | Y | | 文件类型 |
| upload_time | timestamp(6) | N | pg_systimestamp() | 上传时间 |
| upload_user | varchar(100) | Y | | 上传人员 |
| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 |
| creator | varchar(100) | Y | | 创建人id |
| tenant_id | int8 | N | 0 | 租户id |
### report_work_order (上报工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| report_no | varchar(32) | N | | 上报编号 |
| report_type | varchar(20) | N | | 上报类型:水表故障、管道问题、水质问题、其他问题 |
| report_title | varchar(100) | N | | 上报标题 |
| report_content | text | Y | | 上报内容 |
| report_location | varchar(200) | Y | | 上报地点 |
| longitude | numeric(15,6) | Y | | 经度 |
| latitude | numeric(15,6) | Y | | 纬度 |
| report_user | varchar(100) | N | | 上报人员 |
| report_time | timestamp(6) | N | pg_systimestamp() | 上报时间 |
| handle_status | int2 | N | 0 | 处理状态:0-待处理,1-处理中,2-已完成 |
| handle_user | varchar(100) | Y | | 处理人员 |
| handle_result | text | 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 |
### audit_work_order (稽查工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| audit_no | varchar(32) | N | | 稽查编号 |
| audit_type | varchar(20) | N | | 稽查类型:抄表稽查、水价稽查 |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | Y | | 水表ID |
| audit_user | varchar(100) | N | | 稽查人员 |
| audit_time | timestamp(6) | N | | 稽查时间 |
| audit_result | varchar(20) | N | | 稽查结果:合格、不合格 |
| audit_note | text | Y | | 稽查备注 |
| evidence_files | text | Y | | 证据文件路径(JSON格式) |
| 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 |
### workorder_info (表务工单信息表)
**说明**: 此表主要用于表务系统的换表、移表等工单管理,业务工单使用business_work_order表。
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| workorder_no | varchar(32) | N | | 工单编号 |
| workorder_type | varchar(20) | N | | 工单类型:换表、移表、拆表、复装、校表 |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | N | | 水表ID |
| fault_type | varchar(20) | Y | | 故障类型 |
| plan_date | timestamp(6) | Y | | 计划处理日期 |
| assign_user | varchar(100) | Y | | 指派人员 |
| workorder_status | int2 | N | 0 | 工单状态:0-待处理,1-处理中,2-已完成,3-已撤销 |
| is_urgent | int2 | N | 0 | 是否紧急:0-否,1-是 |
| contact_phone | 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 |
### workorder_feedback (工单回执表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| workorder_id | int8 | N | | 工单ID |
| execute_date | timestamp(6) | Y | | 执行日期 |
| execute_user | varchar(100) | Y | | 执行人员 |
| is_completed | int2 | N | 0 | 是否完成:0-否,1-是 |
| old_meter_reading | numeric(15,3) | Y | | 旧表读数 |
| new_meter_code | varchar(100) | Y | | 新表钢印号 |
| new_meter_reading | numeric(15,3) | Y | | 新表底数 |
| new_meter_barcode | varchar(100) | Y | | 新表条形码 |
| feedback_content | text | Y | | 回执内容 |
| attachment_url | varchar(500) | 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 |
## 报装管理表 (installation_*)
### installation_application (报装申请表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_no | varchar(32) | N | | 受理编号 |
| application_type | varchar(20) | N | | 申请类型:单位、个人 |
| project_name | varchar(200) | N | | 工程名称 |
| project_address | varchar(500) | N | | 工程地址 |
| applicant_name | varchar(100) | N | | 申请人姓名 |
| applicant_phone | varchar(20) | Y | | 申请人电话 |
| identity_type | varchar(20) | Y | | 证件类型 |
| identity_no | varchar(50) | Y | | 证件号码 |
| water_usage_type | varchar(20) | Y | | 用水性质 |
| meter_caliber | varchar(20) | Y | | 水表口径 |
| meter_count | int4 | Y | 1 | 水表数量 |
| estimated_cost | numeric(15,4) | Y | 0 | 预算总价 |
| current_step | varchar(20) | N | | 当前环节 |
| application_status | int2 | N | 0 | 申请状态:0-受理中,1-已完成,2-已撤销 |
| 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 |
### installation_process (报装流程表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_id | int8 | N | | 申请ID |
| process_step | varchar(20) | N | | 流程步骤:受理、踏勘、审批、缴费、施工、验收等 |
| process_status | int2 | N | 0 | 步骤状态:0-待处理,1-处理中,2-已完成,3-已驳回 |
| process_user | varchar(100) | Y | | 处理人员 |
| process_date | timestamp(6) | Y | | 处理日期 |
| process_result | varchar(20) | Y | | 处理结果:通过、驳回 |
| process_opinion | varchar(500) | Y | | 处理意见 |
| attachment_url | varchar(500) | 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 |
## 银行接口表 (bank_*)
### bank_transaction (银行交易记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| transaction_no | varchar(32) | N | | 交易流水号 |
| bank_code | varchar(20) | N | | 银行代码 |
| transaction_type | varchar(20) | N | | 交易类型:查询、收费、冲正、对账、托收、代扣 |
| customer_id | int8 | Y | | 客户ID |
| customer_no | varchar(32) | Y | | 客户编号 |
| transaction_amount | numeric(15,4) | Y | 0 | 交易金额 |
| transaction_date | timestamp(6) | N | pg_systimestamp() | 交易日期 |
| transaction_status | int2 | N | 0 | 交易状态:0-成功,1-失败,2-已冲正 |
| bank_serial_no | varchar(100) | Y | | 银行流水号 |
| error_code | varchar(20) | Y | | 错误代码 |
| error_message | varchar(500) | 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 |
## 第三方支付表 (thirdpay_*)
### thirdpay_binding (第三方绑定表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| platform_type | varchar(20) | N | | 平台类型:微信、支付宝 |
| platform_user_id | varchar(100) | N | | 平台用户ID |
| mobile_phone | varchar(20) | Y | | 手机号码 |
| binding_date | timestamp(6) | N | pg_systimestamp() | 绑定日期 |
| binding_status | int2 | N | 0 | 绑定状态:0-已绑定,1-已解绑 |
| unbinding_date | 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 |
### thirdpay_transaction (第三方支付交易表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| transaction_no | varchar(32) | N | | 系统交易号 |
| platform_type | varchar(20) | N | | 平台类型:微信、支付宝 |
| platform_trade_no | varchar(100) | N | | 平台交易号 |
| customer_id | int8 | N | | 客户ID |
| payment_amount | numeric(15,4) | N | 0 | 支付金额 |
| transaction_date | timestamp(6) | N | pg_systimestamp() | 交易日期 |
| transaction_status | int2 | N | 0 | 交易状态:0-成功,1-失败,2-已退款 |
| callback_data | text | Y | | 回调数据 |
| refund_amount | numeric(15,4) | Y | 0 | 退款金额 |
| refund_date | 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 |
## 用户配置表 (infra_*)
### infra_user_form_config (用户表单字段配置表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键ID |
| user_id | int8 | Y | | 用户ID,个人配置时使用 |
| role_id | int8 | Y | | 角色ID,角色配置时使用 |
| config_type | int2 | N | | 配置类型:1-个人配置,2-角色配置 |
| menu_id | varchar(100) | N | | 表格标识,关联system_menu |
| column_key | varchar(100) | N | | 列字段标识 |
| column_title | varchar(100) | Y | | 自定义列标题 |
| column_width | int4 | Y | | 列宽度 |
| is_visible | int2 | N | 1 | 是否显示:0-隐藏,1-显示 |
| is_printable | int2 | N | 0 | 是否可打印:0-否,1-是 |
| sort_order | int4 | N | 0 | 排序序号 |
| 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 |
## 客户服务表 (service_*)
### service_complaint (投诉建议表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| complaint_no | varchar(32) | N | | 投诉编号 |
| customer_id | int8 | Y | | 客户ID |
| complaint_type | varchar(20) | N | | 投诉类型:服务投诉、计费投诉、设施投诉等 |
| complaint_content | text | N | | 投诉内容 |
| contact_name | varchar(100) | N | | 联系人姓名 |
| contact_phone | varchar(20) | Y | | 联系电话 |
| complaint_date | timestamp(6) | N | pg_systimestamp() | 投诉日期 |
| handle_user | varchar(100) | Y | | 处理人员 |
| handle_result | text | Y | | 处理结果 |
| handle_date | timestamp(6) | Y | | 处理日期 |
| complaint_status | int2 | N | 0 | 投诉状态:0-待处理,1-处理中,2-已处理,3-已关闭 |
| satisfaction | int2 | Y | | 满意度:1-很不满意,2-不满意,3-一般,4-满意,5-很满意 |
| 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 |
### service_repair (报修工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| repair_no | varchar(32) | N | | 报修编号 |
| customer_id | int8 | Y | | 客户ID |
| repair_type | varchar(20) | N | | 报修类型:水表故障、管道漏水、水质问题等 |
| repair_description | text | N | | 故障描述 |
| contact_name | varchar(100) | N | | 联系人姓名 |
| contact_phone | varchar(20) | Y | | 联系电话 |
| repair_address | varchar(500) | Y | | 报修地址 |
| repair_date | timestamp(6) | N | pg_systimestamp() | 报修日期 |
| assign_user | varchar(100) | Y | | 指派人员 |
| repair_result | text | Y | | 维修结果 |
| completion_date | timestamp(6) | Y | | 完成日期 |
| repair_status | int2 | N | 0 | 报修状态:0-待派工,1-已派工,2-维修中,3-已完成 |
| urgency_level | int2 | N | 2 | 紧急程度:1-紧急,2-一般,3-不紧急 |
| 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 |
## 发票管理表 (invoice_*)
### invoice_info (发票信息表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| invoice_no | varchar(32) | N | | 发票号码 |
| invoice_code | varchar(32) | N | | 发票代码 |
| customer_id | int8 | N | | 客户ID |
| payment_id | int8 | Y | | 缴费记录ID |
| invoice_type | varchar(20) | N | | 发票类型:电子发票、纸质发票 |
| invoice_title | varchar(200) | N | | 发票抬头 |
| tax_number | varchar(50) | Y | | 纳税人识别号 |
| invoice_amount | numeric(15,4) | N | 0 | 发票金额 |
| tax_amount | numeric(15,4) | Y | 0 | 税额 |
| invoice_date | timestamp(6) | N | pg_systimestamp() | 开票日期 |
| invoice_status | int2 | N | 0 | 发票状态:0-正常,1-已冲红,2-已作废 |
| file_url | varchar(500) | 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 |
### invoice_detail (发票明细表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| invoice_id | int8 | N | | 发票ID |
| item_name | varchar(200) | N | | 项目名称 |
| item_code | varchar(50) | Y | | 项目代码 |
| unit | varchar(20) | Y | | 单位 |
| quantity | numeric(15,3) | Y | 0 | 数量 |
| unit_price | numeric(15,4) | Y | 0 | 单价 |
| amount | numeric(15,4) | N | 0 | 金额 |
| tax_rate | numeric(5,4) | Y | 0 | 税率 |
| tax_amount | numeric(15,4) | Y | 0 | 税额 |
| total_amount | numeric(15,4) | N | 0 | 价税合计 |
| specification | varchar(200) | Y | | 规格型号 |
| discount_amount | numeric(15,4) | 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 |
### invoice_query_log (发票查询日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| query_user | varchar(100) | N | | 查询用户 |
| query_type | varchar(20) | N | | 查询类型:按客户、按发票号、按日期 |
| query_condition | varchar(500) | Y | | 查询条件 |
| query_result_count | int4 | Y | 0 | 查询结果数量 |
| query_time | timestamp(6) | N | pg_systimestamp() | 查询时间 |
| query_duration | int4 | Y | 0 | 查询耗时(毫秒) |
| user_ip | varchar(50) | Y | | 用户IP |
| user_agent | varchar(500) | Y | | 用户代理 |
| query_status | int2 | N | 0 | 查询状态:0-成功,1-失败 |
| error_message | varchar(500) | 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 |
### invoice_request (开票请求表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| request_no | varchar(32) | N | | 请求编号 |
| customer_id | int8 | N | | 客户ID |
| payment_id | int8 | Y | | 缴费记录ID |
| invoice_type | varchar(20) | N | | 发票类型:增值税普通发票、增值税专用发票 |
| invoice_title | varchar(200) | N | | 发票抬头 |
| tax_number | varchar(50) | Y | | 纳税人识别号 |
| invoice_amount | numeric(15,4) | N | 0 | 开票金额 |
| request_time | timestamp(6) | N | pg_systimestamp() | 请求时间 |
| request_user | varchar(100) | N | | 请求人 |
| request_status | int2 | N | 0 | 请求状态:0-待处理,1-已开票,2-已拒绝,3-已作废 |
| invoice_id | int8 | Y | | 发票ID |
| process_time | timestamp(6) | Y | | 处理时间 |
| process_user | varchar(100) | Y | | 处理人 |
| reject_reason | varchar(500) | 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 |
### invoice_tax_control (税控接口记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| request_id | int8 | N | | 开票请求ID |
| interface_type | varchar(20) | N | | 接口类型:开票、作废、红冲、查询 |
| request_data | text | Y | | 请求数据 |
| response_data | text | Y | | 响应数据 |
| request_time | timestamp(6) | N | pg_systimestamp() | 请求时间 |
| response_time | timestamp(6) | Y | | 响应时间 |
| response_status | int2 | N | 0 | 响应状态:0-成功,1-失败 |
| error_code | varchar(20) | Y | | 错误代码 |
| error_message | varchar(500) | Y | | 错误信息 |
| tax_control_no | varchar(100) | Y | | 税控系统流水号 |
| retry_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 |
### invoice_error_log (开票错误日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| request_id | int8 | N | | 开票请求ID |
| error_type | varchar(20) | N | | 错误类型:系统错误、参数错误、业务错误 |
| error_code | varchar(20) | N | | 错误代码 |
| error_message | varchar(500) | N | | 错误信息 |
| error_detail | text | Y | | 错误详情 |
| error_time | timestamp(6) | N | pg_systimestamp() | 错误时间 |
| error_stack | text | Y | | 错误堆栈 |
| request_data | text | Y | | 请求数据 |
| user_id | int8 | Y | | 用户ID |
| user_ip | varchar(50) | Y | | 用户IP |
| is_resolved | int2 | N | 0 | 是否已解决:0-未解决,1-已解决 |
| resolve_time | timestamp(6) | Y | | 解决时间 |
| resolve_user | varchar(100) | Y | | 解决人 |
| resolve_note | varchar(500) | 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 |
## 营业网点表 (outlet_*)
### outlet_info (营业网点表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| outlet_code | varchar(32) | N | | 网点编码 |
| outlet_name | varchar(100) | N | | 网点名称 |
| outlet_type | varchar(20) | N | | 网点类型:营业厅、缴费点、自助终端 |
| address | varchar(500) | Y | | 详细地址 |
| contact_phone | varchar(20) | Y | | 联系电话 |
| business_hours | varchar(100) | Y | | 营业时间 |
| service_scope | varchar(500) | Y | | 服务范围 |
| longitude | numeric(10,6) | Y | | 经度 |
| latitude | numeric(10,6) | Y | | 纬度 |
| outlet_status | int2 | N | 1 | 网点状态:0-停用,1-正常 |
| dept_code | varchar(50) | N | | 所属部门代码 |
| 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 |
## 消息通知表 (message_*)
### message_template (消息模板表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| template_code | varchar(32) | N | | 模板编码 |
| template_name | varchar(100) | N | | 模板名称 |
| template_type | varchar(20) | N | | 模板类型:短信、邮件、微信 |
| template_content | text | N | | 模板内容 |
| template_params | varchar(500) | Y | | 模板参数 |
| template_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 |
### message_send_log (消息发送日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| template_id | int8 | N | | 模板ID |
| customer_id | int8 | Y | | 客户ID |
| receiver | varchar(100) | N | | 接收人 |
| message_type | varchar(20) | N | | 消息类型:短信、邮件、微信 |
| message_content | text | N | | 消息内容 |
| send_status | int2 | N | 0 | 发送状态:0-待发送,1-发送成功,2-发送失败 |
| send_time | timestamp(6) | Y | | 发送时间 |
| error_message | varchar(500) | Y | | 错误信息 |
| external_msg_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 |
## 报表管理表 (report_*)
### report_template (报表模板表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| template_name | varchar(100) | N | | 模板名称 |
| template_code | varchar(50) | N | | 模板代码 |
| template_type | varchar(20) | N | | 模板类型:报表、统计、分析 |
| template_category | varchar(20) | N | | 模板分类:营收、财务、运营 |
| template_description | varchar(500) | Y | | 模板描述 |
| data_source | varchar(100) | Y | | 数据源 |
| sql_template | text | Y | | SQL模板 |
| parameter_config | text | Y | | 参数配置 |
| output_format | varchar(20) | N | | 输出格式:Excel、PDF、HTML |
| template_status | int2 | N | 1 | 模板状态:0-停用,1-启用 |
| sort_order | 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 |
### report_config (报表配置表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| template_id | int8 | N | | 模板ID |
| config_name | varchar(100) | N | | 配置名称 |
| config_key | varchar(50) | N | | 配置键 |
| config_value | text | Y | | 配置值 |
| config_type | varchar(20) | N | | 配置类型:参数、样式、格式 |
| config_description | varchar(500) | Y | | 配置描述 |
| is_required | int2 | N | 0 | 是否必填:0-否,1-是 |
| default_value | varchar(500) | Y | | 默认值 |
| validation_rule | varchar(500) | 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 |
### report_generate_log (报表生成日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| log_no | varchar(32) | N | | 日志编号 |
| template_id | int8 | N | | 模板ID |
| generate_user | varchar(100) | N | | 生成用户 |
| generate_time | timestamp(6) | N | pg_systimestamp() | 生成时间 |
| generate_parameters | text | Y | | 生成参数 |
| data_count | int4 | Y | 0 | 数据条数 |
| generate_duration | int4 | Y | 0 | 生成耗时(毫秒) |
| file_path | varchar(500) | Y | | 文件路径 |
| file_size | int8 | Y | 0 | 文件大小(字节) |
| generate_status | int2 | N | 0 | 生成状态:0-成功,1-失败 |
| error_message | varchar(500) | Y | | 错误信息 |
| user_ip | varchar(50) | Y | | 用户IP |
| 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 |
### report_export_log (报表导出日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| generate_log_id | int8 | N | | 生成日志ID |
| export_user | varchar(100) | N | | 导出用户 |
| export_time | timestamp(6) | N | pg_systimestamp() | 导出时间 |
| export_format | varchar(20) | N | | 导出格式:Excel、PDF、CSV |
| export_range | varchar(20) | N | | 导出范围:全部、当前页、选中 |
| export_file_path | varchar(500) | Y | | 导出文件路径 |
| export_file_size | int8 | Y | 0 | 导出文件大小(字节) |
| export_status | int2 | N | 0 | 导出状态:0-成功,1-失败 |
| error_message | varchar(500) | Y | | 错误信息 |
| download_count | int4 | Y | 0 | 下载次数 |
| last_download_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 |
## 催缴管理表 (reminder_*)
### reminder_task (催缴任务表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| task_no | varchar(32) | N | | 任务编号 |
| task_name | varchar(100) | N | | 任务名称 |
| task_type | varchar(20) | N | | 任务类型:短信催缴、电话催缴、上门催缴 |
| target_customers | text | Y | | 目标客户(JSON格式) |
| customer_count | int4 | Y | 0 | 客户数量 |
| task_content | text | Y | | 催缴内容 |
| scheduled_time | timestamp(6) | N | | 计划执行时间 |
| actual_start_time | timestamp(6) | Y | | 实际开始时间 |
| actual_end_time | timestamp(6) | Y | | 实际结束时间 |
| task_status | int2 | N | 0 | 任务状态:0-待执行,1-执行中,2-已完成,3-已取消 |
| success_count | int4 | Y | 0 | 成功数量 |
| fail_count | int4 | Y | 0 | 失败数量 |
| creator_user | varchar(100) | N | | 创建人 |
| executor_user | varchar(100) | 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 |
### reminder_record (催缴记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| task_id | int8 | N | | 任务ID |
| customer_id | int8 | N | | 客户ID |
| reminder_type | varchar(20) | N | | 催缴方式:短信、电话、上门 |
| reminder_content | text | Y | | 催缴内容 |
| reminder_time | timestamp(6) | N | pg_systimestamp() | 催缴时间 |
| reminder_user | varchar(100) | N | | 催缴人 |
| contact_phone | varchar(20) | Y | | 联系电话 |
| contact_result | varchar(20) | Y | | 联系结果:已联系、未联系、拒接 |
| customer_response | varchar(500) | Y | | 客户回复 |
| follow_up_required | int2 | N | 0 | 是否需要跟进:0-否,1-是 |
| next_reminder_time | timestamp(6) | Y | | 下次催缴时间 |
| reminder_status | int2 | N | 0 | 催缴状态: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 |
### reminder_result (催缴结果表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| record_id | int8 | N | | 催缴记录ID |
| result_type | varchar(20) | N | | 结果类型:已缴费、承诺缴费、拒绝缴费、无法联系 |
| result_description | varchar(500) | Y | | 结果描述 |
| payment_promise_date | timestamp(6) | Y | | 承诺缴费日期 |
| payment_amount | numeric(15,4) | Y | 0 | 缴费金额 |
| payment_date | timestamp(6) | Y | | 实际缴费日期 |
| is_fulfilled | int2 | N | 0 | 是否履行承诺:0-未履行,1-已履行 |
| follow_up_action | varchar(100) | Y | | 后续行动 |
| recorder | varchar(100) | N | | 记录人 |
| record_time | timestamp(6) | N | pg_systimestamp() | 记录时间 |
| 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 |
### sms_send_log (短信发送日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| sms_no | varchar(32) | N | | 短信编号 |
| task_id | int8 | Y | | 任务ID |
| template_id | int8 | Y | | 模板ID |
| phone_number | varchar(20) | N | | 手机号码 |
| sms_content | text | N | | 短信内容 |
| sms_type | varchar(20) | N | | 短信类型:催缴、通知、验证码 |
| send_time | timestamp(6) | N | pg_systimestamp() | 发送时间 |
| send_status | int2 | N | 0 | 发送状态:0-成功,1-失败 |
| delivery_status | int2 | Y | 0 | 投递状态:0-未知,1-已投递,2-投递失败 |
| delivery_time | timestamp(6) | Y | | 投递时间 |
| sms_provider | varchar(20) | Y | | 短信服务商 |
| provider_msg_id | varchar(100) | Y | | 服务商消息ID |
| cost | numeric(8,4) | Y | 0 | 费用 |
| error_code | varchar(20) | Y | | 错误代码 |
| error_message | varchar(500) | Y | | 错误信息 |
| customer_id | int8 | Y | | 客户ID |
| user_id | int8 | 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 |
## 统计分析表 (statistics_*)
### payment_statistics (缴费统计表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| stat_date | date | N | | 统计日期 |
| stat_period | varchar(10) | N | | 统计周期:日、周、月、年 |
| dept_code | varchar(50) | Y | | 部门代码 |
| total_amount | numeric(15,4) | Y | 0 | 总金额 |
| cash_amount | numeric(15,4) | Y | 0 | 现金金额 |
| pos_amount | numeric(15,4) | Y | 0 | POS金额 |
| online_amount | numeric(15,4) | Y | 0 | 线上金额 |
| bank_amount | numeric(15,4) | Y | 0 | 银行代收金额 |
| transaction_count | int4 | Y | 0 | 交易笔数 |
| customer_count | int4 | Y | 0 | 客户数量 |
| avg_amount | numeric(15,4) | Y | 0 | 平均金额 |
| water_fee | numeric(15,4) | Y | 0 | 水费 |
| sewage_fee | numeric(15,4) | Y | 0 | 污水费 |
| other_fee | numeric(15,4) | 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 |
### cashier_performance (收费员绩效表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| cashier_id | int8 | N | | 收费员ID |
| cashier_name | varchar(100) | N | | 收费员姓名 |
| performance_date | date | N | | 绩效日期 |
| performance_period | varchar(10) | N | | 绩效周期:日、周、月、年 |
| work_hours | numeric(8,2) | Y | 0 | 工作时长(小时) |
| total_collected | numeric(15,4) | Y | 0 | 收费总额 |
| transaction_count | int4 | Y | 0 | 交易笔数 |
| customer_count | int4 | Y | 0 | 服务客户数 |
| avg_transaction_amount | numeric(15,4) | Y | 0 | 平均交易金额 |
| avg_service_time | numeric(8,2) | Y | 0 | 平均服务时间(分钟) |
| error_count | int4 | Y | 0 | 错误次数 |
| complaint_count | int4 | Y | 0 | 投诉次数 |
| performance_score | numeric(5,2) | Y | 0 | 绩效评分 |
| performance_rank | int4 | Y | 0 | 绩效排名 |
| bonus_amount | numeric(15,4) | 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 |
### arrears_record (欠费记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| bill_id | int8 | N | | 账单ID |
| arrears_amount | numeric(15,4) | N | 0 | 欠费金额 |
| original_amount | numeric(15,4) | N | 0 | 原始金额 |
| paid_amount | numeric(15,4) | Y | 0 | 已付金额 |
| arrears_start_date | date | N | | 欠费开始日期 |
| arrears_days | int4 | Y | 0 | 欠费天数 |
| arrears_type | varchar(20) | N | | 欠费类型:短期、长期、死账 |
| arrears_reason | varchar(200) | Y | | 欠费原因 |
| last_reminder_date | date | Y | | 最后催缴日期 |
| reminder_count | int4 | Y | 0 | 催缴次数 |
| is_blacklist | int2 | N | 0 | 是否黑名单:0-否,1-是 |
| recovery_difficulty | varchar(20) | Y | | 回收难度:容易、中等、困难 |
| handler | varchar(100) | Y | | 处理人 |
| arrears_status | int2 | N | 0 | 欠费状态:0-欠费中,1-已回收,2-已核销 |
| 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 |
### arrears_analysis (欠费分析表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| analysis_date | date | N | | 分析日期 |
| analysis_type | varchar(20) | N | | 分析类型:按时间、按金额、按客户类型 |
| customer_type | varchar(20) | Y | | 客户类型 |
| dept_code | varchar(50) | Y | | 部门代码 |
| total_arrears_amount | numeric(15,4) | Y | 0 | 总欠费金额 |
| total_arrears_count | int4 | Y | 0 | 总欠费笔数 |
| avg_arrears_amount | numeric(15,4) | Y | 0 | 平均欠费金额 |
| short_term_amount | numeric(15,4) | Y | 0 | 短期欠费金额 |
| long_term_amount | numeric(15,4) | Y | 0 | 长期欠费金额 |
| recovery_rate | numeric(5,4) | Y | 0 | 回收率 |
| aging_30_days | numeric(15,4) | Y | 0 | 30天内欠费 |
| aging_60_days | numeric(15,4) | Y | 0 | 60天内欠费 |
| aging_90_days | numeric(15,4) | Y | 0 | 90天内欠费 |
| aging_over_90_days | numeric(15,4) | Y | 0 | 90天以上欠费 |
| risk_assessment | 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 |
### customer_risk_level (客户风险等级表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| customer_id | int8 | N | | 客户ID |
| risk_level | varchar(20) | N | | 风险等级:低、中、高、极高 |
| risk_score | numeric(5,2) | Y | 0 | 风险得分 |
| assessment_date | date | N | | 评估日期 |
| assessment_factors | text | Y | | 评估因素 |
| payment_history_score | numeric(5,2) | Y | 0 | 付款历史得分 |
| arrears_frequency_score | numeric(5,2) | Y | 0 | 欠费频率得分 |
| arrears_amount_score | numeric(5,2) | Y | 0 | 欠费金额得分 |
| contact_difficulty_score | numeric(5,2) | Y | 0 | 联系难度得分 |
| recovery_success_rate | numeric(5,4) | Y | 0 | 回收成功率 |
| last_payment_date | date | Y | | 最后付款日期 |
| credit_limit | numeric(15,4) | Y | 0 | 信用额度 |
| monitoring_level | varchar(20) | Y | | 监控级别:正常、关注、重点、黑名单 |
| risk_status | int2 | N | 0 | 风险状态:0-正常,1-预警,2-高风险 |
| assessor | varchar(100) | Y | | 评估人 |
| next_assessment_date | date | 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 |
## 子系统3: 表务系统数据表
表务系统负责水表的全生命周期管理,包括表务工单管理、表务仓库管理、表务基础管理等功能。
点击展开/折叠表务系统表详情
### 表务管理表 (meter_work_*)
### meter_work_order (表务工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_no | varchar(32) | N | | 工单编号 |
| customer_id | int8 | N | | 客户ID |
| meter_id | int8 | N | | 水表ID |
| work_order_type | varchar(20) | N | | 工单类型:维修、更换、校验、拆除 |
| fault_description | varchar(500) | Y | | 故障描述 |
| urgency_level | varchar(20) | N | | 紧急程度:普通、紧急、特急 |
| scheduled_date | date | Y | | 预约日期 |
| assigned_user | varchar(100) | Y | | 指派人员 |
| assignment_date | timestamp(6) | Y | | 指派时间 |
| work_status | int2 | N | 0 | 工单状态:0-待指派,1-已指派,2-处理中,3-已完成,4-已取消 |
| start_time | timestamp(6) | Y | | 开始时间 |
| end_time | timestamp(6) | Y | | 结束时间 |
| work_duration | int4 | Y | 0 | 工作时长(分钟) |
| completion_note | varchar(1000) | Y | | 完成说明 |
| customer_satisfaction | int2 | Y | | 客户满意度:1-很不满意,2-不满意,3-一般,4-满意,5-很满意 |
| 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 |
### meter_repair_record (水表维修记录表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_id | int8 | N | | 工单ID |
| repair_type | varchar(20) | N | | 维修类型:故障维修、预防性维修、定期维护 |
| fault_type | varchar(20) | N | | 故障类型:不走字、倒走、漏水、损坏 |
| fault_cause | varchar(200) | Y | | 故障原因 |
| repair_method | varchar(200) | Y | | 维修方法 |
| parts_replaced | varchar(500) | Y | | 更换部件 |
| repair_cost | numeric(15,4) | Y | 0 | 维修费用 |
| labor_cost | numeric(15,4) | Y | 0 | 人工费用 |
| material_cost | numeric(15,4) | Y | 0 | 材料费用 |
| before_repair_reading | numeric(15,3) | Y | 0 | 维修前读数 |
| after_repair_reading | numeric(15,3) | Y | 0 | 维修后读数 |
| repair_result | varchar(20) | N | | 维修结果:成功、失败、需要更换 |
| quality_check | varchar(20) | Y | | 质量检查:合格、不合格 |
| warranty_period | int4 | Y | 0 | 保修期(天) |
| repairer | varchar(100) | N | | 维修人员 |
| repair_date | timestamp(6) | N | pg_systimestamp() | 维修日期 |
| 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 |
### meter_replacement_log (水表更换日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_id | int8 | N | | 工单ID |
| customer_id | int8 | N | | 客户ID |
| old_meter_id | int8 | N | | 旧水表ID |
| new_meter_id | int8 | N | | 新水表ID |
| replacement_type | varchar(20) | N | | 更换类型:故障更换、到期更换、升级更换 |
| replacement_reason | varchar(200) | Y | | 更换原因 |
| old_meter_reading | numeric(15,3) | Y | 0 | 旧表读数 |
| new_meter_reading | numeric(15,3) | Y | 0 | 新表底数 |
| old_meter_condition | varchar(100) | Y | | 旧表状况 |
| installation_position | varchar(200) | Y | | 安装位置 |
| replacement_date | timestamp(6) | N | pg_systimestamp() | 更换日期 |
| replacer | varchar(100) | N | | 更换人员 |
| quality_inspector | varchar(100) | Y | | 质量检查员 |
| inspection_result | varchar(20) | Y | | 检查结果:合格、不合格 |
| old_meter_disposal | varchar(20) | Y | | 旧表处理:回收、报废、维修 |
| replacement_cost | numeric(15,4) | Y | 0 | 更换费用 |
| warranty_start_date | date | Y | | 保修开始日期 |
| warranty_end_date | date | Y | | 保修结束日期 |
| photo_before | varchar(500) | Y | | 更换前照片 |
| photo_after | varchar(500) | 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 |
### work_order_material (工单用料表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| work_order_id | int8 | N | | 工单ID |
| material_type | varchar(20) | N | | 材料类型:水表、配件、工具、耗材 |
| material_name | varchar(100) | N | | 材料名称 |
| material_model | varchar(100) | Y | | 材料型号 |
| material_spec | varchar(200) | Y | | 材料规格 |
| unit | varchar(20) | Y | | 单位 |
| quantity | numeric(15,3) | N | 0 | 数量 |
| unit_price | numeric(15,4) | Y | 0 | 单价 |
| total_amount | numeric(15,4) | Y | 0 | 总金额 |
| supplier | varchar(100) | Y | | 供应商 |
| warehouse_location | varchar(100) | Y | | 仓库位置 |
| material_status | varchar(20) | Y | | 材料状态:正常、损坏、过期 |
| use_date | timestamp(6) | Y | | 使用日期 |
| operator | varchar(100) | 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 |
## 代收业务表 (realtime_payment_*)
### realtime_payment (实时收费表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| payment_no | varchar(32) | N | | 收费编号 |
| customer_id | int8 | N | | 客户ID |
| payment_channel | varchar(20) | N | | 支付渠道:微信、支付宝、银行卡、现金 |
| payment_method | varchar(20) | N | | 支付方式:扫码、刷卡、现金、转账 |
| total_amount | numeric(15,4) | N | 0 | 总金额 |
| payment_time | timestamp(6) | N | pg_systimestamp() | 支付时间 |
| payment_status | int2 | N | 0 | 支付状态:0-处理中,1-成功,2-失败 |
| transaction_id | varchar(100) | Y | | 交易流水号 |
| external_transaction_id | varchar(100) | Y | | 外部交易号 |
| merchant_id | varchar(100) | Y | | 商户号 |
| terminal_id | varchar(100) | Y | | 终端号 |
| operator | varchar(100) | Y | | 操作员 |
| callback_status | int2 | Y | 0 | 回调状态:0-未回调,1-已回调 |
| callback_time | timestamp(6) | Y | | 回调时间 |
| refund_amount | numeric(15,4) | Y | 0 | 退款金额 |
| refund_time | timestamp(6) | Y | | 退款时间 |
| error_code | varchar(20) | Y | | 错误代码 |
| error_message | varchar(500) | 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 |
### payment_interface_log (收费接口日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| payment_id | int8 | N | | 收费ID |
| interface_type | varchar(20) | N | | 接口类型:支付、查询、退款、对账 |
| interface_method | varchar(20) | N | | 接口方法:POST、GET、PUT |
| interface_url | varchar(500) | N | | 接口地址 |
| request_headers | text | Y | | 请求头 |
| request_body | text | Y | | 请求体 |
| response_headers | text | Y | | 响应头 |
| response_body | text | Y | | 响应体 |
| request_time | timestamp(6) | N | pg_systimestamp() | 请求时间 |
| response_time | timestamp(6) | Y | | 响应时间 |
| response_duration | int4 | Y | 0 | 响应时长(毫秒) |
| http_status_code | int4 | Y | 0 | HTTP状态码 |
| interface_status | int2 | N | 0 | 接口状态:0-成功,1-失败 |
| error_code | varchar(20) | Y | | 错误代码 |
| error_message | varchar(500) | Y | | 错误信息 |
| retry_count | int4 | Y | 0 | 重试次数 |
| client_ip | varchar(50) | Y | | 客户端IP |
| user_agent | varchar(500) | 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 |
### payment_error_log (收费错误日志表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| payment_id | int8 | Y | | 收费ID |
| error_type | varchar(20) | N | | 错误类型:系统错误、网络错误、业务错误 |
| error_level | varchar(20) | N | | 错误级别:信息、警告、错误、严重 |
| error_code | varchar(20) | N | | 错误代码 |
| error_message | varchar(500) | N | | 错误信息 |
| error_detail | text | Y | | 错误详情 |
| error_stack | text | Y | | 错误堆栈 |
| error_time | timestamp(6) | N | pg_systimestamp() | 错误时间 |
| user_id | int8 | Y | | 用户ID |
| customer_id | int8 | Y | | 客户ID |
| payment_channel | varchar(20) | Y | | 支付渠道 |
| payment_amount | numeric(15,4) | Y | 0 | 支付金额 |
| request_data | text | Y | | 请求数据 |
| response_data | text | Y | | 响应数据 |
| client_ip | varchar(50) | Y | | 客户端IP |
| user_agent | varchar(500) | Y | | 用户代理 |
| is_resolved | int2 | N | 0 | 是否已解决:0-未解决,1-已解决 |
| resolve_time | timestamp(6) | Y | | 解决时间 |
| resolve_user | varchar(100) | Y | | 解决人 |
| resolve_note | varchar(500) | 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 |
## 子系统4: 报装系统数据表
报装系统负责用户报装申请的全流程管理,包括报装申请管理、现场踏勘管理、档案管理等功能。
点击展开/折叠报装系统表详情
### 报装工程表 (construction_*)
### site_survey (现场踏勘表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_id | int8 | N | | 报装申请ID |
| survey_no | varchar(32) | N | | 踏勘编号 |
| survey_date | timestamp(6) | N | pg_systimestamp() | 踏勘日期 |
| surveyor | varchar(100) | N | | 踏勘人员 |
| survey_result | varchar(20) | N | | 踏勘结果:可行、不可行、需调整 |
| water_source_condition | varchar(200) | Y | | 水源条件 |
| pipe_condition | varchar(200) | Y | | 管道条件 |
| terrain_condition | varchar(200) | Y | | 地形条件 |
| construction_difficulty | varchar(20) | Y | | 施工难度:简单、中等、复杂 |
| estimated_cost | numeric(15,4) | Y | 0 | 预估费用 |
| estimated_duration | int4 | Y | 0 | 预估工期(天) |
| material_requirements | text | Y | | 材料需求 |
| equipment_requirements | text | Y | | 设备需求 |
| special_requirements | text | Y | | 特殊要求 |
| risk_assessment | text | Y | | 风险评估 |
| survey_photos | text | Y | | 踏勘照片 |
| survey_drawings | text | Y | | 踏勘图纸 |
| approval_status | int2 | N | 0 | 审批状态:0-待审批,1-已审批,2-已拒绝 |
| approver | varchar(100) | Y | | 审批人 |
| approval_time | timestamp(6) | Y | | 审批时间 |
| approval_opinion | varchar(500) | 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 |
### construction_plan (施工方案表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| survey_id | int8 | N | | 踏勘ID |
| plan_no | varchar(32) | N | | 方案编号 |
| plan_name | varchar(200) | N | | 方案名称 |
| plan_type | varchar(20) | N | | 方案类型:标准方案、定制方案 |
| construction_method | varchar(100) | Y | | 施工方法 |
| construction_sequence | text | Y | | 施工顺序 |
| construction_duration | int4 | Y | 0 | 施工工期(天) |
| start_date | date | Y | | 开工日期 |
| end_date | date | Y | | 竣工日期 |
| construction_team | varchar(200) | Y | | 施工队伍 |
| team_leader | varchar(100) | Y | | 队长 |
| safety_measures | text | Y | | 安全措施 |
| quality_standards | text | Y | | 质量标准 |
| material_list | text | Y | | 材料清单 |
| equipment_list | text | Y | | 设备清单 |
| total_cost | numeric(15,4) | Y | 0 | 总费用 |
| labor_cost | numeric(15,4) | Y | 0 | 人工费用 |
| material_cost | numeric(15,4) | Y | 0 | 材料费用 |
| equipment_cost | numeric(15,4) | Y | 0 | 设备费用 |
| plan_status | int2 | N | 0 | 方案状态:0-草稿,1-已审批,2-执行中,3-已完成 |
| designer | varchar(100) | Y | | 设计人 |
| reviewer | varchar(100) | Y | | 审核人 |
| review_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 |
### installation_contract (报装合同表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| application_id | int8 | N | | 报装申请ID |
| contract_no | varchar(32) | N | | 合同编号 |
| contract_name | varchar(200) | N | | 合同名称 |
| contract_type | varchar(20) | N | | 合同类型:标准合同、定制合同 |
| party_a | varchar(200) | N | | 甲方(水司) |
| party_b | varchar(200) | N | | 乙方(客户) |
| contract_amount | numeric(15,4) | N | 0 | 合同金额 |
| deposit_amount | numeric(15,4) | Y | 0 | 定金金额 |
| payment_method | varchar(20) | Y | | 付款方式 |
| contract_content | text | Y | | 合同内容 |
| technical_requirements | text | Y | | 技术要求 |
| quality_standards | text | Y | | 质量标准 |
| delivery_requirements | text | Y | | 交付要求 |
| warranty_period | int4 | Y | 0 | 保修期(月) |
| penalty_terms | text | Y | | 违约条款 |
| contract_start_date | date | Y | | 合同开始日期 |
| contract_end_date | date | Y | | 合同结束日期 |
| signing_date | timestamp(6) | Y | | 签订日期 |
| contract_status | int2 | N | 0 | 合同状态:0-草稿,1-已签订,2-执行中,3-已完成,4-已终止 |
| party_a_signer | varchar(100) | Y | | 甲方签约人 |
| party_b_signer | varchar(100) | Y | | 乙方签约人 |
| contract_file_path | varchar(500) | 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 |
### construction_progress (施工进度表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| plan_id | int8 | N | | 施工方案ID |
| progress_date | date | N | | 进度日期 |
| progress_description | varchar(500) | N | | 进度描述 |
| completion_percentage | numeric(5,2) | Y | 0 | 完成百分比 |
| current_phase | varchar(100) | Y | | 当前阶段 |
| completed_tasks | text | Y | | 已完成任务 |
| ongoing_tasks | text | Y | | 进行中任务 |
| pending_tasks | text | Y | | 待办任务 |
| material_usage | text | Y | | 材料使用情况 |
| equipment_usage | text | Y | | 设备使用情况 |
| personnel_arrangement | text | Y | | 人员安排 |
| quality_inspection | varchar(20) | Y | | 质量检查:合格、不合格、待检 |
| safety_inspection | varchar(20) | Y | | 安全检查:合格、不合格、待检 |
| encountered_problems | text | Y | | 遇到问题 |
| problem_solutions | text | Y | | 问题解决方案 |
| next_plan | text | Y | | 下一步计划 |
| progress_photos | text | Y | | 进度照片 |
| reporter | varchar(100) | N | | 汇报人 |
| report_time | timestamp(6) | N | pg_systimestamp() | 汇报时间 |
| reviewer | varchar(100) | Y | | 审核人 |
| review_time | timestamp(6) | Y | | 审核时间 |
| review_opinion | varchar(500) | 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: 客户服务数据表
客户服务系统负责为客户提供便民服务,包括账户绑定管理、信息查询服务、在线缴费服务、电子发票服务等功能。
点击展开/折叠客户服务系统表详情
### 客户服务相关表
客户服务系统主要复用营收系统的核心表,包括:
- `customer_info`:客户基本信息表
- `customer_account`:客户账户信息表
- `billing_record`:开账记录表
- `payment_record`:缴费记录表
- `invoice_info`:发票信息表
- `thirdpay_binding`:第三方绑定表
- `thirdpay_transaction`:第三方支付交易表
## 子系统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,关联reading_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,关联meter_work_order.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` | 登录日志表 | 扩展设备类型字段记录移动端登录 |
| `customer_info` | 客户基本信息表 | 复用Web端客户档案 |
| `meter_info` | 水表信息表 | 复用Web端水表档案 |
| `reading_book` | 抄表册本表 | 复用Web端抄表任务 |
| `reading_record` | 抄表记录表 | 复用Web端抄表数据 |
| `meter_work_order` | 表务工单表 | 复用Web端工单管理 |
| `meter_replacement_log` | 水表更换日志表 | 复用Web端换表记录 |
| `work_order_material` | 工单用料表 | 复用Web端物料管理 |
| `customer_account` | 客户账户信息表 | 复用Web端账务信息 |
### 移动端特有表(5个)
仅保留移动端特有的功能表:
| 表名 | 用途说明 | 特有原因 |
|------|----------|----------|
| `mobile_user_cache` | 移动端用户缓存表 | 用于离线缓存,移动端特有需求 |
| `mobile_search_history` | 移动端搜索历史表 | 移动端搜索记录管理 |
| `mobile_task_sync` | 移动端任务同步表 | 离线任务管理,移动端特有 |
| `mobile_work_attachment` | 移动端工单附件表 | 现场附件管理,移动端特有 |
| `mobile_app_config` | 移动端应用配置表 | 个性化设置,移动端特有 |
## 优化效果
1. **减少冗余**:避免了15+个重复表的创建
2. **提升一致性**:移动端和Web端共享核心业务数据
3. **降低维护成本**:统一的数据模型减少维护复杂度
4. **符合架构原则**:遵循DRY(Don't Repeat Yourself)原则
## 数据同步策略
- **实时同步**:共用表自然保证数据一致性
- **离线缓存**:移动端特有表支持离线操作
- **冲突处理**:通过时间戳和版本控制处理数据冲突
# 视图的设计
## 数据库ER图设计
### 系统核心表关系图
```mermaid
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
}
```
### 业务核心表关系图
```mermaid
erDiagram
biz_community ||--o{ biz_community : "小区层级"
biz_company_account ||--o{ biz_dept_account_rel : "账户关系"
system_dept ||--o{ biz_dept_account_rel : "部门关系"
biz_meter_maker ||--o{ biz_meter_model : "厂家型号"
biz_meter_caliber ||--o{ biz_meter_model : "口径型号"
biz_price_category ||--o{ biz_price_category : "价格层级"
biz_price_category ||--o{ biz_price_cost_adjustment : "价格调整"
biz_cost_component ||--o{ biz_price_cost_adjustment : "费用调整"
biz_cost_component ||--o{ biz_price_discount_cost : "折扣费用"
biz_price_discount_scheme ||--o{ biz_price_discount_cost : "折扣方案"
biz_price_discount_scheme ||--o{ biz_price_discount_tier : "折扣阶梯"
biz_community {
int8 id PK
varchar name
varchar code
varchar dept_code FK
int8 parent_id FK
int8 tenant_id FK
}
biz_company_account {
int8 id PK
varchar account_name
varchar bank_name
varchar bank_account
int8 tenant_id FK
}
biz_meter_maker {
int8 id PK
varchar name
varchar code
varchar recharge_type
int8 tenant_id FK
}
biz_price_category {
int8 id PK
varchar name
varchar code
int8 parent_id FK
int8 tenant_id FK
}
```
## 业务视图设计
为简化复杂查询和报表统计,设计以下视图:
### v_price_info (价格信息视图)
综合展示价格体系信息,包含价格归属、费用组成、调整历史等。
```sql
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 (水表信息视图)
整合水表厂家、型号、口径等基础信息。
```sql
CREATE VIEW v_meter_info AS
SELECT
mm.id as maker_id,
mm.name as maker_name,
mm.code as maker_code,
model.name as model_name,
model.code as model_code,
model.caliber_range,
mc.name as caliber_name,
mc.value as caliber_value,
mc.check_period,
mc.replace_period
FROM biz_meter_maker mm
LEFT JOIN biz_meter_model model ON mm.code = model.maker_code
LEFT JOIN biz_meter_caliber mc ON model.caliber_range LIKE CONCAT('%', mc.name, '%')
WHERE mm.deleted = 0 AND model.deleted = 0 AND mc.deleted = 0;
```
### v_dept_hierarchy (部门层级视图)
展示完整的组织架构层级关系。
```sql
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 (租户汇总视图)
按租户维度统计各类数据。
```sql
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;
```
# 索引设计与性能优化
## 核心索引设计
### 系统表索引
```sql
-- 用户表核心索引
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);
```
### 业务表索引
```sql
-- 小区表索引
CREATE INDEX idx_biz_community_dept_code ON biz_community(dept_code);
CREATE INDEX idx_biz_community_parent_tenant ON biz_community(parent_id, tenant_id);
-- 水表相关索引
CREATE INDEX idx_biz_meter_maker_code ON biz_meter_maker(code);
CREATE INDEX idx_biz_meter_model_maker_code ON biz_meter_model(maker_code);
-- 价格体系索引
CREATE INDEX idx_biz_price_category_code ON biz_price_category(code);
CREATE INDEX idx_biz_price_category_parent_tenant ON biz_price_category(parent_id, tenant_id);
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_cost_adj_effective ON biz_price_cost_adjustment(effective_date, expire_date);
-- 折扣方案索引
CREATE INDEX idx_biz_price_discount_scheme_category ON biz_price_discount_scheme(price_category_code);
CREATE INDEX idx_biz_price_discount_tier_scheme ON biz_price_discount_tier(scheme_id);
```
## 分区表设计
### 日志表分区策略
```sql
-- 登录日志按月分区
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');
```
### 历史数据分区策略
```sql
-- 价格调整历史按年分区
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');
```
## 查询优化建议
### 多租户查询优化
```sql
-- 建议查询模式:始终带上租户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);
```
### 层级查询优化
```sql
-- 使用递归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个月,历史数据转移到归档表
- **归档周期**: 每月执行一次归档作业
- **存储方式**: 使用列式存储优化查询性能
### 历史数据处理
```sql
-- 创建归档表
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操作,特别是对敏感数据的访问和修改。