fujian_water_biz_doc/output/新-数据库设计说明书_processed.md

3538 lines
169 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "新-数据库设计说明书"
author: "系统设计团队"
date: "2024年12月19日"
documentclass: article
geometry: margin=1in
fontsize: 11pt
mainfont: "PingFang SC"
CJKmainfont: "PingFang SC"
---
# 福建水务数智营收管理系统数据库设计说明书
| 文件状态: | 文档密级: | 公开 |
| :--- | :--- | :--- |
| 【 】草稿 | | |
| 【 】修改稿 | | |
| 【√】正式发布 | | |
| | **当前版本:** | **V1.5** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **2025-08-01** |
## 版本历史
| **日期** | **版本号** | **作者** | **备注** |
| :--- | :--- | :--- | :--- |
| 2025-07-17 | V1.0 | 唐伟杰 | 初稿 |
| 2025-07-17 | V1.1 | 唐伟杰 | 根据用户要求严格对齐SQL文件确保所有表和字段的完整性。 |
| 2025-08-01 | V1.2 | 唐伟杰 | 1. 根据详细设计说明书调整目录结构按6个子系统重新组织表结构。<br>2. 补充移动端表设计优化说明明确移动端与Web端表复用策略。<br>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`)
<details>
<summary>点击展开/折叠系统表详情</summary>
### 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 | 租户编号 |
</details>
## 子系统1: 统一平台数据表
统一平台主要负责系统基础功能包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。
### OAuth2.0单点登录相关表
为支持OAuth2.0协议的单点登录功能系统新增以下OAuth2.0相关数据表:
<details>
<summary>点击展开/折叠OAuth2.0表详情</summary>
### 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 | 租户编号 |
</details>
## 子系统2: 营收系统数据表
营收系统是核心业务系统,包括客户管理、抄表管理、账务管理、发票管理等核心业务功能。
<details>
<summary>点击展开/折叠营收系统表详情</summary>
### 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 |
</details>
## 子系统3: 表务系统数据表
表务系统负责水表的全生命周期管理,包括表务工单管理、表务仓库管理、表务基础管理等功能。
<details>
<summary>点击展开/折叠表务系统表详情</summary>
### 表务管理表 (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 |
</details>
## 子系统4: 报装系统数据表
报装系统负责用户报装申请的全流程管理,包括报装申请管理、现场踏勘管理、档案管理等功能。
<details>
<summary>点击展开/折叠报装系统表详情</summary>
### 报装工程表 (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 |
</details>
## 子系统5: 客户服务数据表
客户服务系统负责为客户提供便民服务,包括账户绑定管理、信息查询服务、在线缴费服务、电子发票服务等功能。
<details>
<summary>点击展开/折叠客户服务系统表详情</summary>
### 客户服务相关表
客户服务系统主要复用营收系统的核心表,包括:
- `customer_info`:客户基本信息表
- `customer_account`:客户账户信息表
- `billing_record`:开账记录表
- `payment_record`:缴费记录表
- `invoice_info`:发票信息表
- `thirdpay_binding`:第三方绑定表
- `thirdpay_transaction`:第三方支付交易表
</details>
## 子系统6: 手机抄表APP数据表
手机抄表APP为抄表员和外勤人员提供移动作业工具支持离线操作提升现场工作效率。
<details>
<summary>点击展开/折叠手机抄表APP表详情</summary>
### 移动端表 (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 |
</details>
# 移动端表设计优化说明
## 设计原则
根据系统架构设计原则移动端优先使用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. **符合架构原则**遵循DRYDon't Repeat Yourself原则
## 数据同步策略
- **实时同步**:共用表自然保证数据一致性
- **离线缓存**:移动端特有表支持离线操作
- **冲突处理**:通过时间戳和版本控制处理数据冲突
# 视图的设计
## 数据库ER图设计
### 系统核心表关系图
**图表 1**
![图表 1](temp_mermaid_新-数据库设计说明书_1151/diagram_1.png)
### 业务核心表关系图
**图表 2**
![图表 2](temp_mermaid_新-数据库设计说明书_1151/diagram_2.png)
## 业务视图设计
为简化复杂查询和报表统计,设计以下视图:
### 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等算法进行加密存储。