新增福建水务营收系统GEMINI文档框架,实现OAuth2.0单点登录支持。新增GEMINI.md文档框架说明,包含项目目录结构和文档导出指南。新增5个OAuth2.0相关表SQL定义(system_oauth2_client/access_token/refresh_token/code/approve),完善单点登录设计。同步更新三个设计文档版本至V1.5,确保文档与实际SQL结构一致,符合国产化替代要求和甲方A级交付标准。

This commit is contained in:
tangweijie 2025-08-06 17:35:18 +08:00
parent 4f74256989
commit 9c668da475
14 changed files with 3745 additions and 977 deletions

41
GEMINI.md Normal file
View File

@ -0,0 +1,41 @@
# GEMINI.md - Fujian Water Revenue System Documentation
## Directory Overview
This directory contains the comprehensive design documentation for the Fujian Water Revenue System. The project is a non-code project, focusing on the detailed documentation of a software system. The documentation is written in Markdown and can be exported to various formats like Word, PDF, and HTML using the provided `Makefile`.
The system is designed as a modern, microservices-based application for managing a water utility's revenue operations. It utilizes a tech stack centered around Java (RuoYi-Vue-Pro framework) and Vue.js for the frontend, with a notable use of the OpenGauss database, a domestic Chinese database solution.
## Key Files
* `README.md`: Provides a high-level overview of the project, its status, and key deliverables.
* `Makefile`: Contains a set of commands for managing the documentation, including validation, exporting to different formats, and other maintenance tasks.
* `water_biz_system_architecture.md`: Describes the overall system architecture, including the technology stack, deployment model, and security considerations.
* `water_biz_module_design.md`: Details the design of each module in the system, including business logic, user interfaces, and API specifications.
* `water_biz_database_design.md`: Provides a complete data model for the system, including table structures, relationships, and strategies for performance optimization and security.
* `new_doc/`: This directory contains the final, polished versions of the design documents in `.docx` format.
* `ori_doc/`: This directory contains the original source documents and requirements that the design is based on.
* `output/`: This directory contains the exported versions of the documentation in various formats (Word, PDF, HTML).
* `scripts/`: This directory contains various scripts used by the `Makefile` to manage and process the documentation.
## Usage
The primary purpose of this directory is to house the design documentation for the Fujian Water Revenue System. The `Makefile` provides a convenient way to manage and export the documentation.
**Common `make` commands:**
* `make help`: Displays a list of all available commands.
* `make validate`: Validates all the documentation files.
* `make export-word`: Exports the documentation to Microsoft Word format.
* `make export-pdf`: Exports the documentation to PDF format.
* `make export-html`: Exports the documentation to HTML format.
* `make unified-export`: A recommended command to export the documentation to all formats, ensuring consistency.
* `make quick-export`: A faster export option that doesn't process diagrams.
To use these commands, simply run them from the root of the project directory in your terminal. For example:
```bash
make unified-export
```
This will generate the complete documentation set in the `output/` directory.

View File

@ -16,16 +16,19 @@ CJKmainfont: "PingFang SC"
| 【 】草稿 | | |
| 【 】修改稿 | | |
| 【√】正式发布 | | |
| | **当前版本:** | **V1.1** |
| | **作者:** | **Gemini** |
| | **完成日期:** | **2025-07-17** |
| | **当前版本:** | **V1.5** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **2025-08-01** |
## 版本历史
| **日期** | **版本号** | **作者** | **备注** |
| :--- | :--- | :--- | :--- |
| 2025-07-17 | V1.0 | Gemini | 初稿 |
| 2025-07-17 | V1.1 | Gemini | 根据用户要求严格对齐SQL文件确保所有表和字段的完整性。 |
| 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相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。 |
# 目录
@ -35,16 +38,22 @@ CJKmainfont: "PingFang SC"
- [4. 表结构设计](#4-表结构设计)
- [4.1. 数据表总体概览](#41-数据表总体概览)
- [4.2. 系统公共表 (system_*)](#42-系统公共表-system_)
- [4.3. 业务核心表 (biz_*)](#43-业务核心表-biz_)
- [5. 视图的设计](#5-视图的设计)
- [6. 安全保密设计](#6-安全保密设计)
- [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图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。
# 外部设计
- **数据库系统**: 主力采用 **MySQL 8.x****MariaDB 10.x**系统设计上兼容国产数据库 **OpenGauss**
- **数据库系统**: 主力采用国产数据库 **达梦数据库 8.0+**。系统设计上兼容 **MySQL 8.x****MariaDB 10.x**
- **数据库工具**: 使用 Navicat, DBeaver, DataGrip 等主流数据库管理工具。
- **约定**:
- **表名**: 全部小写,单词间使用下划线 `_` 分隔。业务表以 `biz_` 开头,系统管理表以 `system_` 开头。
@ -362,11 +371,122 @@ CJKmainfont: "PingFang SC"
</details>
## 业务核心表 (biz_*)
(基于 `sw_biz_table.sql`)
## 子系统1: 统一平台数据表
统一平台主要负责系统基础功能包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。
### OAuth2.0单点登录相关表
为支持OAuth2.0协议的单点登录功能系统新增以下OAuth2.0相关数据表:
<details>
<summary>点击展开/折叠业务表详情</summary>
<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 (所属小区表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2258,7 +2378,17 @@ CJKmainfont: "PingFang SC"
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 表务管理表 (meter_work_*)
</details>
## 子系统3: 表务系统数据表
表务系统负责水表的全生命周期管理,包括表务工单管理、表务仓库管理、表务基础管理等功能。
<details>
<summary>点击展开/折叠表务系统表详情</summary>
### 表务管理表 (meter_work_*)
### meter_work_order (表务工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2467,7 +2597,16 @@ CJKmainfont: "PingFang SC"
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 报装工程表 (construction_*)
</details>
## 子系统4: 报装系统数据表
报装系统负责用户报装申请的全流程管理,包括报装申请管理、现场踏勘管理、档案管理等功能。
<details>
<summary>点击展开/折叠报装系统表详情</summary>
### 报装工程表 (construction_*)
### site_survey (现场踏勘表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2605,7 +2744,36 @@ CJKmainfont: "PingFang SC"
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 移动端表 (mobile_*)
</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 (移动端用户会话表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2851,32 +3019,156 @@ CJKmainfont: "PingFang SC"
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
### mobile_problem_photo (移动端问题照片表)
### 移动端特有表(优化后)
根据移动端表设计优化原则以下为移动端特有的5个表
### mobile_user_cache (移动端用户缓存表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| report_id | int8 | N | | 上报ID |
| photo_type | varchar(20) | N | | 照片类型:现场照片、问题照片、完成照片 |
| photo_path | varchar(500) | N | | 照片路径 |
| photo_size | int4 | Y | 0 | 照片大小(字节) |
| photo_time | timestamp(6) | N | pg_systimestamp() | 拍照时间 |
| gps_longitude | numeric(10,6) | Y | | GPS经度 |
| gps_latitude | numeric(10,6) | Y | | GPS纬度 |
| upload_status | int2 | N | 0 | 上传状态0-未上传1-已上传 |
| upload_time | timestamp(6) | Y | | 上传时间 |
| compress_ratio | numeric(5,2) | Y | 0 | 压缩比例 |
| original_size | int4 | Y | 0 | 原始大小 |
| 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 |
| 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 |
| 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图设计
@ -2885,14 +3177,14 @@ CJKmainfont: "PingFang SC"
**图表 1**
![图表 1](temp_mermaid_新-数据库设计说明书_5356/diagram_1.png)
![图表 1](temp_mermaid_新-数据库设计说明书_43770/diagram_1.png)
### 业务核心表关系图
**图表 2**
![图表 2](temp_mermaid_新-数据库设计说明书_5356/diagram_2.png)
![图表 2](temp_mermaid_新-数据库设计说明书_43770/diagram_2.png)
## 业务视图设计

View File

@ -16,18 +16,19 @@ CJKmainfont: "PingFang SC"
| 【√】草稿 | | |
| 【】修改稿 | | |
| 【】正式发布 | | |
| | **当前版本:** | **V1.0** |
| | **当前版本:** | **V1.4** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **2025-07-01** |
| | **完成日期:** | **2025-08-01** |
## 版本历史
| 日期 | 版本号 | 作者 | 备注 |
| :--- | :--- | :--- | :--- |
| 2025-07-01 | V1.0 | 唐伟杰 | 初版 |
| **修改内容** | 根据水务营收系统需求规格说明书编写完整的概要设计文档 | | |
| **增加内容** | 补充了系统总体设计、逻辑架构、物理架构、子系统设计等核心内容 | | |
| **删除内容** | | | |
| 2025-07-17 | V1.1 | 唐伟杰 | 1. 同步详细设计中的模块,补充缺失模块。<br>2. 调整子系统划分与编号,确保逻辑清晰、编号连续。<br>3. 重构表务、报装、客户服务子系统,优化模块设计。<br>4. 统一概要设计与详细设计的结构,提升一致性。 |
| 2025-08-01 | V1.2 | 唐伟杰 | 完善 APP相关的模块设计 |
| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统变更将OpenGauss替换为达梦数据库 8.0+,更新所有相关架构图和技术描述。 |
| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用OAuth2.0协议更新单点登录模块描述强调基于OAuth2.0协议实现。 |
# 目录
@ -48,7 +49,7 @@ CJKmainfont: "PingFang SC"
- [物理部署图](#物理部署图)
- [网络连接](#网络连接)
- [硬件配置规格](#硬件配置规格)
- [OpenGauss分布式架构](#opengauss分布式架构)
- [达梦数据库分布式架构](#达梦数据库分布式架构)
- [容器化部署架构](#容器化部署架构)
- [对外接口](#对外接口)
- [子系统列表](#子系统列表)
@ -79,20 +80,49 @@ CJKmainfont: "PingFang SC"
- [模块1: 客户资料管理](#模块1-客户资料管理)
- [模块2: 抄表开账](#模块2-抄表开账)
- [模块3: 营业收费](#模块3-营业收费)
- [模块4: 账务处理](#模块4-账务处理)
- [模块5: 发票管理](#模块5-发票管理)
- [模块6: 催缴管理](#模块6-催缴管理)
- [模块7: 统计分析](#模块7-统计分析)
- [模块8: 代收业务](#模块8-代收业务)
- [中间件和其他设计](#中间件和其他设计-1)
- [对外接口](#对外接口-2)
- [子系统2设计: 表务系统](#子系统2设计-表务系统)
- [子系统3设计: 表务系统](#子系统3设计-表务系统)
- [功能与界面](#功能与界面-2)
- [模块列表](#模块列表-2)
- [模块设计](#模块设计-2)
- [模块1: 表务工单](#模块1-表务工单)
- [模块2: 表务仓库](#模块2-表务仓库)
- [子系统3设计: 报装系统](#子系统3设计-报装系统)
- [模块1: 表务基础管理](#模块1-表务基础管理)
- [模块2: 表务工单管理](#模块2-表务工单管理)
- [模块3: 仓库与库存管理](#模块3-仓库与库存管理)
- [模块4: 设备档案管理](#模块4-设备档案管理)
- [子系统4设计: 报装系统](#子系统4设计-报装系统)
- [功能与界面](#功能与界面-3)
- [模块设计](#模块设计-3)
- [模块1: 报装流程](#模块1-报装流程)
- [子系统4设计: 客户服务](#子系统4设计-客户服务)
- [模块1: 报装流程管理](#模块1-报装流程管理)
- [模块2: 工程管理](#模块2-工程管理)
- [模块3: 档案管理](#模块3-档案管理)
- [子系统5设计: 客户服务](#子系统5设计-客户服务)
- [功能与界面](#功能与界面-4)
- [模块列表](#模块列表-3)
- [模块设计](#模块设计-4)
- [模块1: 账户绑定管理](#模块1-账户绑定管理)
- [模块2: 信息查询服务](#模块2-信息查询服务)
- [模块3: 在线缴费服务](#模块3-在线缴费服务)
- [模块4: 电子发票服务](#模块4-电子发票服务)
- [子系统6设计: 手机抄表APP](#子系统6设计-手机抄表app)
- [功能与界面](#功能与界面-5)
- [模块列表](#模块列表-4)
- [模块设计](#模块设计-5)
- [模块1: 登录模块](#模块1-登录模块)
- [模块2: 首页搜索模块](#模块2-首页搜索模块)
- [模块3: 采集任务管理模块](#模块3-采集任务管理模块)
- [模块4: 换表工单模块](#模块4-换表工单模块)
- [模块5: 其他工单模块](#模块5-其他工单模块)
- [模块6: 个人信息与系统设置模块](#模块6-个人信息与系统设置模块)
- [关键技术特性](#关键技术特性)
- [离线作业能力](#离线作业能力)
- [数据安全保障](#数据安全保障)
- [用户体验优化](#用户体验优化)
- [非功能性需求的设计](#非功能性需求的设计)
- [性能的考虑](#性能的考虑)
- [兼容性的考虑](#兼容性的考虑)
@ -192,7 +222,7 @@ CJKmainfont: "PingFang SC"
**图表 1**
![图表 1](temp_mermaid_新-概要设计说明书_5356/diagram_1.png)
![图表 1](temp_mermaid_新-概要设计说明书_43770/diagram_1.png)
### 层级说明
@ -227,7 +257,7 @@ CJKmainfont: "PingFang SC"
**图表 2**
![图表 2](temp_mermaid_新-概要设计说明书_5356/diagram_2.png)
![图表 2](temp_mermaid_新-概要设计说明书_43770/diagram_2.png)
## 物理架构
@ -239,13 +269,13 @@ CJKmainfont: "PingFang SC"
**图表 3**
![图表 3](temp_mermaid_新-概要设计说明书_5356/diagram_3.png)
![图表 3](temp_mermaid_新-概要设计说明书_43770/diagram_3.png)
### 网络连接
**图表 4**
![图表 4](temp_mermaid_新-概要设计说明书_5356/diagram_4.png)
![图表 4](temp_mermaid_新-概要设计说明书_43770/diagram_4.png)
### 硬件配置规格
@ -282,14 +312,14 @@ CJKmainfont: "PingFang SC"
| 跳板服务器 | 4核8G500GB SSD | 1台 | 运维管理 |
| 日志服务器 | 16核32G5TB SSD | 1台 | 日志收集分析 |
### OpenGauss分布式架构
### 达梦数据库分布式架构
系统采用OpenGauss分布式数据库架构,支持高性能、高可用、高扩展性的数据存储服务。
系统采用达梦数据库分布式架构,支持高性能、高可用、高扩展性的数据存储服务。
**图表 5**
![图表 5](temp_mermaid_新-概要设计说明书_5356/diagram_5.png)
![图表 5](temp_mermaid_新-概要设计说明书_43770/diagram_5.png)
### 容器化部署架构
@ -299,7 +329,7 @@ CJKmainfont: "PingFang SC"
**图表 6**
![图表 6](temp_mermaid_新-概要设计说明书_5356/diagram_6.png)
![图表 6](temp_mermaid_新-概要设计说明书_43770/diagram_6.png)
## 对外接口
@ -323,6 +353,7 @@ CJKmainfont: "PingFang SC"
| SYS-003 | 表务系统 | 表务工单、表务仓库、水表全生命周期管理 | 自行开发 |
| SYS-004 | 报装系统 | 报装流程管理、现场踏勘、合同签订、施工验收 | 自行开发 |
| SYS-005 | 客户服务 | 微信小程序、支付宝小程序、客户自助服务 | 自行开发 |
| SYS-006 | 手机抄表APP | 移动端抄表、工单处理、数据同步 | 自行开发 |
## 子系统相互关系与接口
@ -331,7 +362,7 @@ CJKmainfont: "PingFang SC"
**图表 7**
![图表 7](temp_mermaid_新-概要设计说明书_5356/diagram_7.png)
![图表 7](temp_mermaid_新-概要设计说明书_43770/diagram_7.png)
### 主要接口定义
@ -352,6 +383,8 @@ CJKmainfont: "PingFang SC"
| 账单查询接口 | 查询客户账单信息 | 客户服务 | HTTP/REST |
| 缴费处理接口 | 处理在线缴费 | 客户服务 | HTTP/REST |
| 立户接口 | 新客户立户 | 报装系统 | HTTP/REST |
| 抄表任务接口 | 下发抄表任务和客户信息 | 手机抄表APP | HTTP/REST |
| 抄表数据上传接口 | 上传抄表数据 | 手机抄表APP | HTTP/REST |
**表务系统对外接口**
@ -359,6 +392,8 @@ CJKmainfont: "PingFang SC"
|---------|----------|--------|----------|
| 水表库存查询接口 | 查询水表库存信息 | 营收系统 | HTTP/REST |
| 换表通知接口 | 换表完成通知 | 营收系统 | HTTP/REST |
| 工单查询接口 | 查询待办工单 | 手机抄表APP | HTTP/REST |
| 工单回填接口 | 回填工单处理结果 | 手机抄表APP | HTTP/REST |
# 子系统1设计: 统一平台
@ -395,7 +430,7 @@ CJKmainfont: "PingFang SC"
**图表 8**
![图表 8](temp_mermaid_新-概要设计说明书_5356/diagram_8.png)
![图表 8](temp_mermaid_新-概要设计说明书_43770/diagram_8.png)
**功能群说明:**
@ -412,7 +447,7 @@ CJKmainfont: "PingFang SC"
**图表 9**
![图表 9](temp_mermaid_新-概要设计说明书_5356/diagram_9.png)
![图表 9](temp_mermaid_新-概要设计说明书_43770/diagram_9.png)
## 模块设计
@ -421,14 +456,14 @@ CJKmainfont: "PingFang SC"
**功能描述:**
单点登录模块提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。
单点登录模块基于OAuth2.0协议实现,提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。
**主要功能:**
1. **用户名密码登录**:传统的用户名密码认证方式
2. **手机号短信登录**:基于短信验证码的快速登录
3. **第三方登录**:支持微信、支付宝等第三方平台登录
4. **单点登录**:一次登录,多系统访问
4. **OAuth2.0单点登录**基于OAuth2.0协议,一次登录,多系统访问
5. **自动登录**:支持"记住我"功能
6. **安全控制**:密码策略、登录限制、验证码等
@ -515,6 +550,8 @@ CJKmainfont: "PingFang SC"
**核心业务流程:**
客户建档 → 抄表录入 → 复核开账 → 营业收费 → 账务处理 → 发票管理 → 催缴管理
**主要功能模块:**
- **客户资料管理**:客户档案建立、信息维护、分组管理
@ -536,6 +573,8 @@ CJKmainfont: "PingFang SC"
| REV-004 | 账务处理 | 账务调整、退款处理、坏账管理 | 自行开发 |
| REV-005 | 发票管理 | 发票开具、查询管理、电子发票 | 自行开发 |
| REV-006 | 催缴管理 | 欠费催缴、短信通知、停水管理 | 自行开发 |
| REV-007 | 统计分析 | 提供多维度的数据统计和报表分析功能 | 自行开发 |
| REV-008 | 代收业务 | 集成银行、第三方支付等代收渠道 | 自行开发 |
## 模块间关系
@ -546,7 +585,7 @@ CJKmainfont: "PingFang SC"
**图表 10**
![图表 10](temp_mermaid_新-概要设计说明书_5356/diagram_10.png)
![图表 10](temp_mermaid_新-概要设计说明书_43770/diagram_10.png)
### 客户服务业务群
@ -556,7 +595,7 @@ CJKmainfont: "PingFang SC"
**图表 11**
![图表 11](temp_mermaid_新-概要设计说明书_5356/diagram_11.png)
![图表 11](temp_mermaid_新-概要设计说明书_43770/diagram_11.png)
## 模块设计
@ -624,7 +663,7 @@ CJKmainfont: "PingFang SC"
**图表 12**
![图表 12](temp_mermaid_新-概要设计说明书_5356/diagram_12.png)
![图表 12](temp_mermaid_新-概要设计说明书_43770/diagram_12.png)
**业务规则:**
@ -665,7 +704,7 @@ CJKmainfont: "PingFang SC"
**图表 13**
![图表 13](temp_mermaid_新-概要设计说明书_5356/diagram_13.png)
![图表 13](temp_mermaid_新-概要设计说明书_43770/diagram_13.png)
**业务规则:**
@ -676,6 +715,68 @@ CJKmainfont: "PingFang SC"
4. 在线支付需要实时确认支付结果
5. 银行代扣需要客户事先签约授权
### 模块4: 账务处理
**功能概述:**
负责处理各类复杂的账务调整、退款、坏账等业务,确保账务的准确性和合规性。
**核心功能:**
- **未销账调整**: 对未支付账单进行调整。
- **分账调整**: 将一笔总账单拆分为多笔子账单。
- **预付款退款**: 处理客户预付款的退还流程。
- **呆坏账处理**: 对长期无法收回的欠款进行核销。
### 模块5: 发票管理
**功能概述:**
提供全面的发票管理功能,支持电子发票和纸质发票的开具、查询、作废等操作。
**核心功能:**
- **发票开具**: 根据缴费记录为客户开具发票。
- **发票查询与管理**: 查询发票历史,处理红冲、作废等请求。
- **电子发票集成**: 对接第三方电子发票平台,实现自动开具和推送。
### 模块6: 催缴管理
**功能概述:**
对逾期未缴费的客户进行有效的催缴管理,提高水费回收率。
**核心功能:**
- **欠费分析**: 统计和分析欠费客户数据。
- **催缴通知**: 通过短信、电话、通知单等多种方式进行催缴。
- **停复水管理**: 对恶意欠费用户执行停水,缴清后进行复水操作。
### 模块7: 统计分析
**功能概述:**
提供多维度的数据统计和报表分析功能,为管理决策提供数据支持。
**核心功能:**
- **售水统计**: 按日、月、年统计售水量、售水收入等。
- **收费统计**: 统计不同收费渠道、方式的收费情况。
- **欠费分析**: 多维度分析欠费构成和趋势。
- **自定义报表**: 提供灵活的报表自定义工具。
### 模块8: 代收业务
**功能概述:**
集成银行、第三方支付等代收渠道,方便客户缴费。
**核心功能:**
- **银行代扣**: 与银行签订协议,实现自动批量扣费。
- **第三方支付**: 集成微信、支付宝等支付网关。
- **对账管理**: 定期与各渠道进行账务核对。
## 中间件和其他设计
**缓存设计:**
@ -703,69 +804,53 @@ CJKmainfont: "PingFang SC"
| REST API | 缴费处理接口 | 处理在线缴费业务 | HTTP/REST | 供客户服务系统调用 |
| REST API | 立户接口 | 新客户立户 | HTTP/REST | 供报装系统调用 |
# 子系统2设计: 表务系统
# 子系统3设计: 表务系统
## 功能与界面
表务系统负责水表全生命周期管理,从采购入库到报废退库的完整管理流程。
表务系统负责水表全生命周期管理,从采购入库到报废退库的完整管理流程。其核心是确保水表资产的准确、高效流转,并为营收计量提供可靠的设备保障。
**主要功能:**
## 模块列表
- **表务工单**:换表工单、修表工单、检表工单管理
- **表务仓库**:水表入库、出库、盘点、调拨管理
- **设备档案**:水表档案、检定记录、维修历史
- **库存管理**:库存统计、预警提醒、采购建议
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| METER-001 | 表务基础管理 | 管理水表相关的基础参数 | 自行开发 |
| METER-002 | 表务工单管理 | 处理换表、修表、检表等日常业务 | 自行开发 |
| METER-003 | 仓库与库存管理 | 管理水表的入库、出库、盘点和调拨 | 自行开发 |
| METER-004 | 设备档案管理 | 管理每一块水表的唯一电子档案 | 自行开发 |
## 模块设计
### 模块1: 表务工单
### 模块1: 表务基础管理
- **功能描述**: 定义和维护表务管理所需的基础数据和配置参数。
- **核心功能**:
- **水表厂家管理**: 维护水表供应商信息。
- **水表口径管理**: 管理不同口径水表的规格、检定周期等。
- **水表型号管理**: 根据厂家和口径,管理具体的水表型号。
- **水表量程管理**: 定义水表的计量范围。
**功能概述:**
### 模块2: 表务工单管理
- **功能描述**: 聚焦于业务流程驱动,管理所有与水表相关的现场作业任务。
- **核心功能**:
- **工单创建**: 可由系统(如到期提醒)、其他子系统(如营收系统上报故障)或人工创建换表、维修、巡检等工单。
- **工单流转**: 实现工单的派发、接收、处理、回填、审核的全流程闭环管理。
- **领料与退料**: 工单处理过程中,涉及水表更换时,触发向仓库的领料申请;旧表则触发退料入库流程。
表务工单模块管理因故障、到期等原因需要更换水表的业务流程,实现工单的全生命周期管理。
### 模块3: 仓库与库存管理
- **功能描述**: 负责水表的实物管理,与工单流程解耦,作为一个独立的资源中心。
- **核心功能**:
- **入库管理**: 包括新表采购入库、旧表回收(维修或报废)入库。
- **出库管理**: 根据工单领料申请,发放新水表。
- **库存管理**: 提供库存查询、盘点、调拨、库存预警等功能。
**核心功能:**
### 模块4: 设备档案管理
- **功能描述**: 作为表务系统的核心,统一管理所有水表的基础信息和生命周期状态。
- **核心功能**:
- **水表信息登录**: 记录新购水表的型号、规格、供应商、批次等信息。
- **水表档案建立**: 为每一块入库的水表建立唯一的、全生命周期跟踪的电子档案。
- **状态管理**: 实时更新水表的状态(如:在库、在用、待检、报废等)。
1. **工单创建**
- 抄表故障上报
- 客户自报故障
- 定期换表计划
- 水表到期提醒
2. **工单派发**
- 工单指派
- 人员调度
- 时间安排
- 资源配置
3. **工单回填**
- 现场处理
- 结果记录
- 照片上传
- 完成确认
**换表工单业务流程图:**
**图表 14**
![图表 14](temp_mermaid_新-概要设计说明书_5356/diagram_14.png)
### 模块2: 表务仓库
**功能概述:**
表务仓库模块管理水表的入库、检定、领用、出库、退库、报废等全生命周期流程。
**核心功能:**
- 水表入库管理:新表入库、批次管理、质量检验
- 水表检定管理:检定计划、检定记录、证书管理
- 水表领用管理:领用申请、审批流程、出库登记
- 库存管理:库存统计、预警提醒、盘点管理
# 子系统3设计: 报装系统
# 子系统4设计: 报装系统
## 功能与界面
@ -773,52 +858,38 @@ CJKmainfont: "PingFang SC"
**主要功能:**
- **报装申请**:用户申请、资料审核、受理登记
- **现场踏勘**:现场勘查、设计方案、工程预算
- **合同签订**:合同制作、签订确认、费用收取
- **施工管理**:施工派工、进度跟踪、质量监督
- **验收通水**:竣工验收、资料归档、立户通水
- **报装流程管理**:管理从申请、踏勘到合同签订的完整流程。
- **工程管理**:负责施工、验收和通水环节。
- **档案管理**:对报装过程中的所有文档进行归档和管理。
## 模块设计
### 模块1: 报装流程
### 模块1: 报装流程管理
- **功能描述**: 统一管理新用户报装的核心流程,确保各环节顺畅衔接。
- **核心功能**:
- **报装申请**: 用户资料收集、申请材料审核、受理登记。
- **现场踏勘**: 安排并记录现场勘查、制定初步设计方案、进行工程预算。
- **合同管理**: 根据方案制作、签订供水合同,并收取相关费用。
**功能概述:**
### 模块2: 工程管理
- **功能描述**: 聚焦于报装工程的现场实施与交付。
- **核心功能**:
- **施工管理**: 施工派工、进度监控、质量检查与整改。
- **竣工验收**: 组织相关部门进行联合验收,确保工程质量达标。
- **立户通水**: 验收通过后,同步信息至营收系统进行客户立户,并最终开通供水。
报装流程模块管理新用户从申请到通水的全过程业务流程,实现报装业务的标准化管理。
**核心功能:**
1. **报装申请**
- 用户资料收集
- 申请材料审核
- 受理登记
- 编号分配
2. **现场踏勘**
- 现场勘查
- 工程设计
- 方案制定
- 费用预算
3. **合同管理**
- 合同制作
- 合同签订
- 费用收取
- 档案归档
4. **施工管理**
- 施工派工
- 进度监控
- 质量验收
- 竣工确认
### 模块3: 档案管理
- **功能描述**: 负责报装全流程的资料归档和查询。
- **核心功能**:
- **资料归档**: 对报装申请、踏勘记录、合同、施工图纸等所有文档进行电子化归档。
- **档案查询**: 提供便捷的查询功能,可按客户名称、报装编号等多种条件检索历史档案。
**新用户报装业务流程图:**
**图表 15**
**图表 14**
![图表 15](temp_mermaid_新-概要设计说明书_5356/diagram_15.png)
![图表 14](temp_mermaid_新-概要设计说明书_43770/diagram_14.png)
**业务规则:**
@ -830,27 +901,146 @@ CJKmainfont: "PingFang SC"
5. **验收规则**:施工完成后由工程部门、质检部门联合验收
6. **归档规则**:验收合格后所有资料必须完整归档并同步系统信息
# 子系统4设计: 客户服务
# 子系统5设计: 客户服务
## 功能与界面
客户服务系统为用水客户提供多渠道的线上服务。
客户服务系统为用水客户提供多渠道、便捷的线上自助服务,主要通过微信和支付宝小程序实现
**服务渠道:**
## 模块列表
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| SERVICE-001 | 账户绑定管理 | 客户账户绑定和管理 | 自行开发 |
| SERVICE-002 | 信息查询服务 | 各类信息查询服务 | 自行开发 |
| SERVICE-003 | 在线缴费服务 | 多渠道在线缴费服务 | 自行开发 |
| SERVICE-004 | 电子发票服务 | 电子发票管理服务 | 自行开发 |
- **微信小程序**:账户绑定、账单查询、在线缴费
- **支付宝小程序**:生活缴费、电子发票、服务咨询
- **手机APP**:完整的移动端服务
- **客服热线**:电话客服、在线客服
## 模块设计
**主要功能模块:**
客户服务系统围绕功能维度进行组织,渠道作为功能的实现方式。
- **账户绑定**:手机号绑定、实名认证、多户绑定
- **信息查询**:账单查询、用水历史、缴费记录
- **在线缴费**:微信支付、支付宝支付、银联支付
- **电子发票**:发票申请、下载查看、重新发送
### 模块1: 账户绑定管理
- **功能描述**: 提供客户账户的绑定、解绑及多户管理功能。
- **核心功能**:
- **账户绑定**: 客户通过客户编号、手机号、身份证等信息绑定水务账户。
- **绑定验证**: 通过短信验证码等方式确保绑定安全。
- **多账户管理**: 一个微信/支付宝账户可以绑定多个水务账户。
- **账户管理**: 支持启用、停用绑定关系,处理账户异常情况。
### 模块2: 信息查询服务
- **功能描述**: 提供全面的用水信息查询服务。
- **核心功能**:
- **账单查询**: 查询当期账单、历史账单、欠费信息等。
- **用水历史**: 以图表形式展示历史用水量趋势。
- **缴费记录**: 查询历史缴费记录详情。
- **停水公告**: 查看所在区域的计划性或临时性停水通知。
### 模块3: 在线缴费服务
- **功能描述**: 提供多种在线支付方式,为客户提供便捷的缴费服务。
- **核心功能**:
- **多渠道支付**: 支持微信支付、支付宝支付、银行卡支付等多种支付方式。
- **支付限额**: 单次支付金额不超过5000元确保资金安全。
- **支付确认**: 支付完成后实时更新账户状态,推送缴费成功通知。
- **退款处理**: 支持支付失败和错误支付的退款处理。
### 模块4: 电子发票服务
- **功能描述**: 提供电子发票申请、查询、下载等服务。
- **核心功能**:
- **发票申请**: 客户可为已缴费项目申请电子发票,支持个人和企业发票。
- **发票管理**: 查看已开具的电子发票列表和详情。
- **发票下载**: 下载PDF格式的电子发票文件。
- **发票推送**: 发票开具成功后自动推送给客户。
# 子系统6设计: 手机抄表APP
## 功能与界面
为抄表员、外勤人员提供移动作业工具,支持离线操作,提升现场工作效率。
**核心业务流程:**
任务下载 → 现场抄表 → 问题上报 → 工单处理 → 数据上传 → 结果同步
**主要功能特点:**
- **多维度搜索**:支持户号、户名、地址、钢印号、手机号等多种搜索方式
- **离线作业**:支持无网络环境下的现场抄表和工单处理
- **智能采集**提供定位、NFC、扫码三种数据采集方式
- **工单闭环**:从问题上报到工单完成的完整处理流程
- **数据同步**:网络恢复后自动同步本地数据到服务器
## 模块列表
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| MOBILE-001 | 登录模块 | 机构编号、用户名密码认证、自动登录 | 自行开发 |
| MOBILE-002 | 首页搜索模块 | 多维度搜索、最近搜索记录、抄表任务 | 自行开发 |
| MOBILE-003 | 采集任务管理模块 | 任务列表管理、批量下载、单户采集 | 自行开发 |
| MOBILE-004 | 换表工单模块 | 换表工单处理、设备信息录入 | 自行开发 |
| MOBILE-005 | 其他工单模块 | 复水、稽查、问题上报等工单处理 | 自行开发 |
| MOBILE-006 | 个人信息与系统设置模块 | 个人信息管理、系统设置维护 | 自行开发 |
## 模块设计
### 模块1: 登录模块
- **功能描述**: 提供移动端用户登录认证功能,支持机构编号、用户名、密码三要素登录。
- **核心功能**:
- **核心登录功能**: 机构编号、用户名、密码三要素认证,支持自动登录选项
- **登录辅助功能**: 登录问题支持、版权标识展示
- **安全控制**: 密码自动掩码显示、登录状态保持
### 模块2: 首页搜索模块
- **功能描述**: 提供多维度客户搜索功能,实现快速定位客户信息。
- **核心功能**:
- **搜索框功能**: 支持户号、户名、地址、钢印号、手机号等多维度搜索
- **最近搜索记录**: 自动保存搜索历史,支持去重和快速访问
- **抄表任务列表**: 展示当前抄表员的任务列表,支持直接跳转
### 模块3: 采集任务管理模块
- **功能描述**: 管理抄表员的采集任务,包括任务下载、现场采集等功能。
- **核心功能**:
- **任务列表管理**: 数据统计面板、任务筛选分类、批量下载操作
- **单户采集详情**: 住户档案展示、多种采集方式定位、NFC、扫码
- **户间导航**: 支持按任务列表顺序进行上一户/下一户切换
### 模块4: 换表工单模块
- **功能描述**: 处理换表工单的完整流程,从工单接收到完成提交。
- **核心功能**:
- **换表工单处理**: 待办工单列表、工单信息填写、设备信息录入
- **附件管理**: 支持图片和视频上传,作为现场证据
- **工单操作**: 支持工单完成提交和退单处理
### 模块5: 其他工单模块
- **功能描述**: 处理除换表外的其他类型工单,实现外勤业务闭环。
- **核心功能**:
- **复水工单**: 欠费状态校验、二次确认操作
- **稽查任务**: 双模式入口、实时进度显示
- **抄表稽查**: 用户档案核对、稽查结论填写、过程存证
- **问题上报**: 问题类型选择、处理时效设置、溯源证据上传
### 模块6: 个人信息与系统设置模块
- **功能描述**: 管理个人信息和系统设置,提供系统维护功能。
- **核心功能**:
- **个人信息管理**: 姓名修改、手机号设置、信息查看
- **账户安全配置**: 密码修改、退出登录
- **系统维护选项**: 日志上传、缓存清理、数据备份、版本信息
## 关键技术特性
### 离线作业能力
- **离线操作**: 已下载任务支持无网络环境操作
- **数据缓存**: 本地缓存用户档案、抄表记录、工单信息
- **自动同步**: 网络恢复后自动同步本地数据到服务器
### 数据安全保障
- **数据校验**: 必填字段验证、格式校验、数值合理性检查
- **状态一致性**: 任务状态管理、工单状态流转控制
- **防误操作**: 二次确认机制、数据完整性保护
### 用户体验优化
- **界面友好**: 清晰的界面布局、直观的操作流程
- **智能搜索**: 实时搜索、关键词高亮、历史记录
- **便捷导航**: 户间切换、快速定位、批量操作
# 非功能性需求的设计
@ -866,7 +1056,7 @@ CJKmainfont: "PingFang SC"
**设计措施:**
1. **数据库优化**
- 采用OpenGauss主从架构,读写分离
- 采用达梦数据库主从架构,读写分离
- 对核心业务表建立合适索引
- 大表分区存储,历史数据归档
- 连接池配置优化
@ -894,7 +1084,7 @@ CJKmainfont: "PingFang SC"
**数据库兼容性:**
- 主要支持:OpenGauss 5.0+
- 主要支持:达梦数据库 8.0+
- 备选方案PostgreSQL 12+
- 预留接口MySQL 8.0+
@ -907,6 +1097,7 @@ CJKmainfont: "PingFang SC"
**身份认证:**
- 基于OAuth2.0协议的单点登录
- 基于JWT的无状态认证
- 支持多因子认证MFA
- OAuth2第三方登录集成

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
### 一、登录模块功能逻辑
#### 1. 核心登录功能
- **欢迎语**:顶部显示应用名称及欢迎信息(如“您好!欢迎使用「手机抄表」功能”),明确应用用途。
- **登录表单输入域**
- **机构编号输入框**标签为“机构编号”提供占位提示如“请输入机构ID”支持文本输入唯一机构标识码。
- **用户名输入框**:标签为“用户名”,占位提示“输入账号”,支持个人登录账号输入。
- **密码输入框**:标签为“密码”,占位提示“输入密码”,输入内容自动掩码(如显示圆点),保护隐私。
- **自动登录选项**:复选框标签为“自动登录”,默认未勾选;勾选后下次打开应用自动提交历史凭证登录。
- **核心操作按钮****登录按钮**:标签清晰标注“登录”,点击后提交机构编号、用户名、密码进行身份验证(主操作按钮)。
#### 2. 辅助功能
- **登录问题支持**:界面底部提示“登录遇到问题联系客服”,提供异常情况(如忘记密码)的求助途径。
- **版权归属标识**:底部标注应用开发单位(如“福建水投集团”),增强信任感。
### 二、首页搜索模块功能逻辑
#### 1. 搜索框区域
- **占位提示**:输入框提示“户号/户名/地址/钢印号/手机号”,支持多维度搜索条件。
- **取消按钮**:位于输入框右侧,点击后清空内容并退出搜索状态。
#### 2. 搜索结果相关模块
- **最近搜索记录**
- **展示逻辑**:搜索框下方显示“最近搜索”标签(非搜索状态时可见),条目包含户号、户名、地址末段等关键信息;业务层需去重重复条目。
- **交互功能**:点击任一条目跳转至对应用户详情页。
- **抄表任务列表**
- **展示逻辑**:“最近搜索”下方显示“抄表任务”标签(未主动搜索时默认展示),每户显示户号、户名、完整地址;相同户号的多条记录合并显示(需优化重复问题)。
- **交互功能**:点击任务条目跳转至详情页执行抄表或收费操作。
- **搜索结果列表**
- **触发逻辑**:输入关键词后实时展示匹配结果,条目显示户号、户名、地址核心片段;支持对关键词高亮显示(建议功能)。
- **交互功能**:点击结果跳转至详情页。
- **异常状态处理**:无匹配数据时显示“未找到相关用户”提示;过滤特殊字符或超长输入。
#### 3. 功能联动
- **搜索→详情页**:跳转时自动携带户号等信息,详情页基于户号动态加载用户档案、水表数据、欠费账单。
- **详情页→收费操作**:欠费账单页提供“去收费”按钮,关联支付模块并继承用户信息(户名、欠费金额),支持“上一户/下一户”快速切换。
### 三、采集任务管理模块功能逻辑
#### 1. 任务列表页
- **用户身份标识**:顶部标注当前操作员姓名(如“张三”)。
- **全局搜索**:提供按“户号/户名/地址/钢印”多维度检索的输入框。
- **数据统计面板**分栏显示“应采集X已采集Y已上传Z”实时反映任务进度。
- **任务筛选与状态分类**:通过标签页导航按“全部/未采集/采集”分类查看任务。
- **任务列表结构**
- **单条任务项**显示册本编号如“0015”、备注如“每月抄”、状态标签“未下载”或“已下载”
- **状态标识规则**:未下载(需联网下载数据)、已下载(支持离线操作)。
- **选择控制**:左侧提供单选按钮勾选任务项。
- **批量操作区**
- **全选功能**:底部“全选”按钮勾选所有任务,动态显示“已选册本(N)”计数。
- **核心操作**:蓝色“下载”按钮将选中任务的户数据包下载至本地。
#### 2. 单户采集详情页
- **住户档案展示**:显示户号、户名、完整地址、表钢印号、水表编号、安装位置等物理标识;右上角显示状态标签(如“正常”“欠费”)。
- **采集方式选择**并列提供“定位获取GPS坐标/NFC读取电子标签/扫码(识别二维码/条形码)”三种数据采集入口。
- **户间导航**:底部“上一户/下一户”按钮按任务列表顺序切换。
### 四、换表工单模块功能逻辑
#### 1. 处理流程
待办工单列表 → 选择换表工单 → 填写换表信息 → 设备信息录入 → 附件上传 →
提交/退单
#### 2. 核心功能模块
- **待办工单列表**
- **筛选功能**:支持按“用户名/开始时间/工单类型/抄表员”多维度组合筛选时间选择器支持跨年度日期选择如2023 -
2025年
- **工单展示**显示关键信息如工单编号HB000007、户主姓名、地址、联系方式、水表定位描述、创建时间
- **工单信息填写**
- **基础信息**:户号、户名、地址、联系电话(自动带出,不可编辑)。
- **表具数据**:旧表底码(必填,手动录入)、新表底码(必填,手动录入)、表钢印号/水表编号/条形码(扫码或手动录入)。
- **技术参数**新表口径下拉选择如DN80/DN100、新表量程默认值可修改、新表厂家/型号(级联选择)。
- **设备与备注**
- **设备标识**IMEI设备唯一识别码强制录入、IMSISIM卡识别码、通讯模块号硬件编号
- **备注框**:支持长文本输入;附件上传支持图片(拍照/相册)、视频(现场录制)。
- **操作控制**:底部蓝色“完成”按钮提交工单,红色“退单”按钮终止并说明原因。
### 五、其他工单功能模块逻辑(复水/稽查/问题上报)
#### 1. 复水工单
- **流程节点**:选择日期 → 展示用户信息(姓名、地址、欠费结清状态)→
二次确认(蓝色“确认开水”按钮)。
- **安全机制**校验欠费结清状态如“已于2024 - 12 -
30结清欠费”二次弹窗确认操作。
#### 2. 稽查任务
- **双模式入口**待办列表总任务数统计、采集任务管理通过搜索定位用户、数据看板实时进度如应查46/已查5/已上传5
- **操作逻辑**:勾选册本批量下载离线数据。
#### 3. 抄表稽查
- **信息结构**:用户档案(编号/姓名/地址/钢印号)、抄表数据(上期读数→本期读数,数值型关键证据)、稽查结论(“合格”单选按钮,强制选择)、过程存证(图片+视频附件上传,必传)。
- **闭环操作**:填写完整后点击蓝色“保存”按钮。
#### 4. 问题上报
- **核心字段**上报类型固定为“换表申请”、处理时效精确到小时如2025 -
06 - 06至2025 - 06 - 06、溯源证据强制上传图片/视频)。
- **操作逻辑**:保存提交后触发后台工单派发。
### 六、个人信息与系统设置模块功能逻辑
#### 1. 个人信息管理
- **查看信息**:主界面显示固定信息(姓名、账号、手机号码状态)。
- **编辑功能**
- **修改姓名**:进入子页面输入新姓名,点击“完成”提交更新。
- **设置手机号码**:未设置时填写有效号码,点击“完成”保存。
#### 2. 账户安全配置
- **密码修改**:输入新密码及确认密码,点击“完成”提交(需校验一致性)。
- **退出登录**:底部点击清除本地会话。
#### 3. 系统维护选项
- **日志上传**:点击后弹出确认框,选择后发送日志至服务器。
- **清理缓存**:弹出提示确认后清空本地记录(含缓存、日志)。
- **抄表设置**:启用“异常水量预警”开关(预警功能)。
- **备份数据库**:保存本地数据。
- **版本信息**显示当前应用版本如V1.0.3)。
### 七、关键业务规则与注意事项
- **数据校验**:必填字段(标\*)需完整填写(如换表工单的旧表底码、新表底码);手机号格式、日期范围(不超过当前日)等需符合规则。
- **状态一致性**:未下载任务不可直接采集;相同户号在列表中合并显示避免重复。
- **离线能力**:已下载任务支持无网环境操作,网络恢复后自动同步数据。
- **防误操作**:重要操作(如退单、清理缓存)需二次确认;附件上传需清晰可辨(如安装位置照片)。

View File

@ -147,6 +147,15 @@
| 2024-12-19 | 数据库设计表补完 | 对比lhc_数据库设计.md、新-详细设计说明书.md和营收数据字典补完新-数据库设计说明书.md中缺失的业务表新增20个重要业务表总表数量从54个增加到74个 | 用户要求检查并补完数据库设计中遗漏的表 | 正面影响,数据库设计更加完整,覆盖了水价调整快照、优惠方案、阶梯调整、客户服务、发票管理、营业网点、消息通知等重要业务功能 |
| 2024-12-19 | 文档工程目录移除 | 根据用户要求"不要有工程目录",移除新-详细设计说明书.md和新-概要设计说明书.md中的工程目录章节调整相关章节编号 | 用户明确要求移除工程目录相关内容 | 正面影响,文档更符合用户要求,去除了过于具体的实现细节,保持概要设计的抽象层次 |
| 2024-12-19 | 详细设计说明书内容全面补充 | 根据需求规格说明书对比补充详细设计说明书中的7个重要模块设计包括手机抄表APP子系统、统计分析模块、代收业务模块、催缴管理模块、账务处理模块、发票管理模块、接口需求等 | 用户要求对比需求规格说明书补足遗漏内容 | 正面影响详细设计说明书内容完整性大幅提升从5个子系统扩展到6个子系统模块功能设计更加详细完整包含完整的业务流程、数据设计、方法说明等 |
| 2024-12-19 | 三个子系统核心模块设计逻辑重构 | 1. 表务系统解决工单管理中包含仓库管理的矛盾重新划分为表务工单管理、表务仓库管理、表务基础管理三个独立模块。2. 报装系统将工程管理重新定义为现场踏勘管理明确功能边界。3. 客户服务系统按功能维度重新组织为账户绑定管理、信息查询服务、在线缴费服务、电子发票服务四个模块统一编号为SERVICE-001到SERVICE-004 | 用户要求对三个子系统进行逻辑重构,确保模块划分清晰、符合业务流程、名称与内容匹配、避免重复或归属错误 | 正面影响,子系统模块设计更加清晰合理,功能边界明确,避免了模块功能重复和归属混乱,提升了系统架构的专业性和可实施性 |
| 2024-12-19 | 概要设计与详细设计一致性修正 | 同步更新概要设计说明书中客户服务系统的模块编号和功能描述确保与详细设计说明书保持高度一致统一使用SERVICE-001到SERVICE-004编号体系 | 用户要求确保概要设计与详细设计的模块结构和功能描述高度一致 | 正面影响,两个设计文档的一致性得到保证,避免了开发过程中的混乱,提升了文档体系的完整性和专业性 |
| 2024-12-19 | 手机抄表APP子系统设计全面重构 | 根据抄表APP详细设计.md文档完全重构手机抄表APP子系统设计包括6个核心模块登录模块、首页搜索模块、采集任务管理模块、换表工单模块、其他工单模块、个人信息与系统设置模块新增详细的界面设计要点、业务流程图、数据设计、方法说明等 | 用户要求采用抄表APP详细设计文档的设计方案 | 正面影响手机抄表APP设计更加详细和实用包含完整的用户界面设计、业务流程、数据校验规则、离线能力支持、防误操作机制等符合实际移动端应用开发需求大幅提升设计文档的实用性和可实施性 |
| 2024-12-19 | 概要设计说明书手机抄表APP部分同步更新 | 同步更新概要设计说明书中的手机抄表APP子系统设计保持与详细设计的一致性统一模块编号为MOBILE-001到MOBILE-006补充核心业务流程、主要功能特点、关键技术特性等内容 | 用户要求同时更新概要设计相关内容 | 正面影响,确保概要设计与详细设计的高度一致性,避免开发过程中的混乱,提升文档体系的完整性和专业性,形成从概要到详细的完整设计链条 |
| 2024-12-19 | 手机抄表APP数据表设计优化 | 优化手机抄表APP的数据表设计明确区分移动端特有表和Web端公用表避免重复建表。移动端优先使用Web端已有表system_users、customer_info、meter_info、reading_record、meter_work_order等仅保留移动端特有表mobile_user_cache、mobile_search_history、mobile_task_sync、mobile_work_attachment、mobile_app_config | 用户要求移动端优先采用Web端的表不要重复建表 | 正面影响避免了数据表的重复定义减少了数据库设计复杂度提高了数据一致性降低了系统维护成本。明确了移动端与Web端的数据共享策略符合系统架构设计原则 |
| 2024-12-19 | 数据库设计说明书结构调整与内容补充 | 根据详细设计说明书的6个子系统重新调整数据库设计说明书的目录结构按子系统组织表结构设计。补充移动端表设计优化说明新增5个移动端特有表的详细设计mobile_user_cache、mobile_search_history、mobile_task_sync、mobile_work_attachment、mobile_app_config明确移动端与Web端表复用策略 | 用户要求根据详细设计说明书调整数据库设计说明书目录结构,同时补充缺失的表设计 | 正面影响数据库设计说明书与详细设计说明书的结构保持一致便于开发人员理解和使用。移动端表设计优化说明为开发提供了明确的指导原则5个新增表设计完善了移动端功能支持整体提升了数据库设计文档的完整性和实用性 |
| 2024-12-19 | 数据库系统变更为达梦数据库 | 将三个设计文档中的数据库从OpenGauss 5.0+替换为达梦数据库 8.0+包括1. 详细设计说明书中的13处架构图和技术描述更新2. 概要设计说明书中的13处分布式架构和容器配置更新3. 数据库设计说明书中的数据库系统描述更新。同时更新所有文档版本至V1.3,完善版本历史记录 | 用户要求采用达梦数据库而不是OpenGauss | 正面影响采用国产达梦数据库作为主力数据库方案符合国产化替代要求。达梦数据库8.0+具有良好的性能和稳定性,支持主从架构和分布式部署,满足水务营收系统的高可用性和扩展性需求。文档的一致性得到保证,为后续的数据库选型和部署提供了明确指导 |
| 2024-12-19 | 单点登录采用OAuth2.0协议 | 在三个设计文档中完善单点登录设计明确采用OAuth2.0协议实现。包括1. 详细设计说明书中新增OAuth2.0授权码模式流程、6个OAuth2.0接口设计、4个相关数据表2. 概要设计说明书中更新单点登录模块描述强调基于OAuth2.0协议3. 数据库设计说明书中新增OAuth2.0客户端信息表、访问令牌表、刷新令牌表、授权码表。所有文档版本更新至V1.4 | 用户要求单点登录采用OAuth2.0协议 | 正面影响OAuth2.0是业界标准的开放授权协议,具有良好的安全性和扩展性。支持授权码模式和客户端凭证模式,满足不同应用场景需求。完善的数据表设计支持令牌管理、客户端管理等功能,为系统的安全认证和第三方集成提供了标准化的技术基础 |
| 2024-12-19 | OAuth2.0表设计修正 | 根据实际SQL文件(oauth_table.sql)修正OAuth2.0表设计确保文档与实际表结构保持一致。包括1. 数据库设计说明书中更新5个OAuth2.0表的详细字段定义system_oauth2_client、system_oauth2_access_token、system_oauth2_refresh_token、system_oauth2_code、system_oauth2_approve2. 详细设计说明书中更新OAuth2.0数据表引用修正表名为system_oauth2_*系列3. 文档版本更新至V1.5 | 用户提供实际的OAuth2.0表SQL文件 | 正面影响确保设计文档与实际SQL表结构完全一致避免开发过程中的混乱。实际的表结构更加完善包含了OAuth2.0批准表(system_oauth2_approve)支持用户授权记录管理字段设计更加规范符合PostgreSQL数据库特性为OAuth2.0功能的实现提供了准确的数据模型指导 |
## 项目完成总结

256
sql/oauth_table.sql Normal file
View File

@ -0,0 +1,256 @@
/*
Navicat Premium Data Transfer
Source Server : sw-system
Source Server Type : PostgreSQL
Source Server Version : 90204 (90204)
Source Host : 192.168.10.130:5432
Source Catalog : sw_system
Source Schema : public
Target Server Type : PostgreSQL
Target Server Version : 90204 (90204)
File Encoding : 65001
Date: 06/08/2025 16:30:40
*/
-- ----------------------------
-- Table structure for system_oauth2_access_token
-- ----------------------------
DROP TABLE IF EXISTS "public"."system_oauth2_access_token";
CREATE TABLE "public"."system_oauth2_access_token" (
"id" int8 NOT NULL,
"user_id" int8 NOT NULL,
"user_type" int2 NOT NULL,
"user_info" varchar(512) COLLATE "pg_catalog"."default" NOT NULL,
"access_token" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"refresh_token" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"expires_time" timestamp(6) NOT NULL,
"creator" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"create_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"updater" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"update_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"deleted" int2 NOT NULL DEFAULT 0,
"tenant_id" int8 NOT NULL DEFAULT 0
)
;
ALTER TABLE "public"."system_oauth2_access_token" OWNER TO "sw_system";
COMMENT ON COLUMN "public"."system_oauth2_access_token"."id" IS '编号';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."user_id" IS '用户编号';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."user_type" IS '用户类型';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."user_info" IS '用户信息';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."access_token" IS '访问令牌';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."refresh_token" IS '刷新令牌';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."client_id" IS '客户端编号';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."scopes" IS '授权范围';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."expires_time" IS '过期时间';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."creator" IS '创建者';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."updater" IS '更新者';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."update_time" IS '更新时间';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."system_oauth2_access_token"."tenant_id" IS '租户编号';
COMMENT ON TABLE "public"."system_oauth2_access_token" IS 'OAuth2 访问令牌';
-- ----------------------------
-- Table structure for system_oauth2_approve
-- ----------------------------
DROP TABLE IF EXISTS "public"."system_oauth2_approve";
CREATE TABLE "public"."system_oauth2_approve" (
"id" int8 NOT NULL,
"user_id" int8 NOT NULL,
"user_type" int2 NOT NULL,
"client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"scope" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"approved" bool NOT NULL DEFAULT false,
"expires_time" timestamp(6) NOT NULL,
"creator" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"create_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"updater" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"update_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"deleted" int2 NOT NULL DEFAULT 0,
"tenant_id" int8 NOT NULL DEFAULT 0
)
;
ALTER TABLE "public"."system_oauth2_approve" OWNER TO "sw_system";
COMMENT ON COLUMN "public"."system_oauth2_approve"."id" IS '编号';
COMMENT ON COLUMN "public"."system_oauth2_approve"."user_id" IS '用户编号';
COMMENT ON COLUMN "public"."system_oauth2_approve"."user_type" IS '用户类型';
COMMENT ON COLUMN "public"."system_oauth2_approve"."client_id" IS '客户端编号';
COMMENT ON COLUMN "public"."system_oauth2_approve"."scope" IS '授权范围';
COMMENT ON COLUMN "public"."system_oauth2_approve"."approved" IS '是否接受';
COMMENT ON COLUMN "public"."system_oauth2_approve"."expires_time" IS '过期时间';
COMMENT ON COLUMN "public"."system_oauth2_approve"."creator" IS '创建者';
COMMENT ON COLUMN "public"."system_oauth2_approve"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."system_oauth2_approve"."updater" IS '更新者';
COMMENT ON COLUMN "public"."system_oauth2_approve"."update_time" IS '更新时间';
COMMENT ON COLUMN "public"."system_oauth2_approve"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."system_oauth2_approve"."tenant_id" IS '租户编号';
COMMENT ON TABLE "public"."system_oauth2_approve" IS 'OAuth2 批准表';
-- ----------------------------
-- Table structure for system_oauth2_client
-- ----------------------------
DROP TABLE IF EXISTS "public"."system_oauth2_client";
CREATE TABLE "public"."system_oauth2_client" (
"id" int8 NOT NULL,
"client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"secret" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"logo" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"description" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"status" int2 NOT NULL,
"access_token_validity_seconds" int4 NOT NULL,
"refresh_token_validity_seconds" int4 NOT NULL,
"redirect_uris" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"authorized_grant_types" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"auto_approve_scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"authorities" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"resource_ids" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"additional_information" varchar(4096) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"creator" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"create_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"updater" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"update_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"deleted" int2 NOT NULL DEFAULT 0
)
;
ALTER TABLE "public"."system_oauth2_client" OWNER TO "sw_system";
COMMENT ON COLUMN "public"."system_oauth2_client"."id" IS '编号';
COMMENT ON COLUMN "public"."system_oauth2_client"."client_id" IS '客户端编号';
COMMENT ON COLUMN "public"."system_oauth2_client"."secret" IS '客户端密钥';
COMMENT ON COLUMN "public"."system_oauth2_client"."name" IS '应用名';
COMMENT ON COLUMN "public"."system_oauth2_client"."logo" IS '应用图标';
COMMENT ON COLUMN "public"."system_oauth2_client"."description" IS '应用描述';
COMMENT ON COLUMN "public"."system_oauth2_client"."status" IS '状态';
COMMENT ON COLUMN "public"."system_oauth2_client"."access_token_validity_seconds" IS '访问令牌的有效期';
COMMENT ON COLUMN "public"."system_oauth2_client"."refresh_token_validity_seconds" IS '刷新令牌的有效期';
COMMENT ON COLUMN "public"."system_oauth2_client"."redirect_uris" IS '可重定向的 URI 地址';
COMMENT ON COLUMN "public"."system_oauth2_client"."authorized_grant_types" IS '授权类型';
COMMENT ON COLUMN "public"."system_oauth2_client"."scopes" IS '授权范围';
COMMENT ON COLUMN "public"."system_oauth2_client"."auto_approve_scopes" IS '自动通过的授权范围';
COMMENT ON COLUMN "public"."system_oauth2_client"."authorities" IS '权限';
COMMENT ON COLUMN "public"."system_oauth2_client"."resource_ids" IS '资源';
COMMENT ON COLUMN "public"."system_oauth2_client"."additional_information" IS '附加信息';
COMMENT ON COLUMN "public"."system_oauth2_client"."creator" IS '创建者';
COMMENT ON COLUMN "public"."system_oauth2_client"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."system_oauth2_client"."updater" IS '更新者';
COMMENT ON COLUMN "public"."system_oauth2_client"."update_time" IS '更新时间';
COMMENT ON COLUMN "public"."system_oauth2_client"."deleted" IS '是否删除';
COMMENT ON TABLE "public"."system_oauth2_client" IS 'OAuth2 客户端表';
-- ----------------------------
-- Table structure for system_oauth2_code
-- ----------------------------
DROP TABLE IF EXISTS "public"."system_oauth2_code";
CREATE TABLE "public"."system_oauth2_code" (
"id" int8 NOT NULL,
"user_id" int8 NOT NULL,
"user_type" int2 NOT NULL,
"code" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"expires_time" timestamp(6) NOT NULL,
"redirect_uri" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"state" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"creator" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"create_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"updater" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"update_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"deleted" int2 NOT NULL DEFAULT 0,
"tenant_id" int8 NOT NULL DEFAULT 0
)
;
ALTER TABLE "public"."system_oauth2_code" OWNER TO "sw_system";
COMMENT ON COLUMN "public"."system_oauth2_code"."id" IS '编号';
COMMENT ON COLUMN "public"."system_oauth2_code"."user_id" IS '用户编号';
COMMENT ON COLUMN "public"."system_oauth2_code"."user_type" IS '用户类型';
COMMENT ON COLUMN "public"."system_oauth2_code"."code" IS '授权码';
COMMENT ON COLUMN "public"."system_oauth2_code"."client_id" IS '客户端编号';
COMMENT ON COLUMN "public"."system_oauth2_code"."scopes" IS '授权范围';
COMMENT ON COLUMN "public"."system_oauth2_code"."expires_time" IS '过期时间';
COMMENT ON COLUMN "public"."system_oauth2_code"."redirect_uri" IS '可重定向的 URI 地址';
COMMENT ON COLUMN "public"."system_oauth2_code"."state" IS '状态';
COMMENT ON COLUMN "public"."system_oauth2_code"."creator" IS '创建者';
COMMENT ON COLUMN "public"."system_oauth2_code"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."system_oauth2_code"."updater" IS '更新者';
COMMENT ON COLUMN "public"."system_oauth2_code"."update_time" IS '更新时间';
COMMENT ON COLUMN "public"."system_oauth2_code"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."system_oauth2_code"."tenant_id" IS '租户编号';
COMMENT ON TABLE "public"."system_oauth2_code" IS 'OAuth2 授权码表';
-- ----------------------------
-- Table structure for system_oauth2_refresh_token
-- ----------------------------
DROP TABLE IF EXISTS "public"."system_oauth2_refresh_token";
CREATE TABLE "public"."system_oauth2_refresh_token" (
"id" int8 NOT NULL,
"user_id" int8 NOT NULL,
"refresh_token" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"user_type" int2 NOT NULL,
"client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"expires_time" timestamp(6) NOT NULL,
"creator" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"create_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"updater" varchar(64) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"update_time" timestamp(6) NOT NULL DEFAULT pg_systimestamp(),
"deleted" int2 NOT NULL DEFAULT 0,
"tenant_id" int8 NOT NULL DEFAULT 0
)
;
ALTER TABLE "public"."system_oauth2_refresh_token" OWNER TO "sw_system";
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."id" IS '编号';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."user_id" IS '用户编号';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."refresh_token" IS '刷新令牌';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."user_type" IS '用户类型';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."client_id" IS '客户端编号';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."scopes" IS '授权范围';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."expires_time" IS '过期时间';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."creator" IS '创建者';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."updater" IS '更新者';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."update_time" IS '更新时间';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."system_oauth2_refresh_token"."tenant_id" IS '租户编号';
COMMENT ON TABLE "public"."system_oauth2_refresh_token" IS 'OAuth2 刷新令牌';
-- ----------------------------
-- Indexes structure for table system_oauth2_access_token
-- ----------------------------
CREATE INDEX "idx_system_oauth2_access_token_01" ON "public"."system_oauth2_access_token" USING btree (
"access_token" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_system_oauth2_access_token_02" ON "public"."system_oauth2_access_token" USING btree (
"refresh_token" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
-- ----------------------------
-- Primary Key structure for table system_oauth2_access_token
-- ----------------------------
ALTER TABLE "public"."system_oauth2_access_token" ADD CONSTRAINT "pk_system_oauth2_access_token" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table system_oauth2_approve
-- ----------------------------
ALTER TABLE "public"."system_oauth2_approve" ADD CONSTRAINT "pk_system_oauth2_approve" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table system_oauth2_client
-- ----------------------------
ALTER TABLE "public"."system_oauth2_client" ADD CONSTRAINT "pk_system_oauth2_client" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table system_oauth2_code
-- ----------------------------
ALTER TABLE "public"."system_oauth2_code" ADD CONSTRAINT "pk_system_oauth2_code" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table system_oauth2_refresh_token
-- ----------------------------
ALTER TABLE "public"."system_oauth2_refresh_token" ADD CONSTRAINT "pk_system_oauth2_refresh_token" PRIMARY KEY ("id");

View File

@ -5,16 +5,19 @@
| 【 】草稿 | | |
| 【 】修改稿 | | |
| 【√】正式发布 | | |
| | **当前版本:** | **V1.1** |
| | **作者:** | **Gemini** |
| | **完成日期:** | **2025-07-17** |
| | **当前版本:** | **V1.5** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **2025-08-01** |
## 版本历史
| **日期** | **版本号** | **作者** | **备注** |
| :--- | :--- | :--- | :--- |
| 2025-07-17 | V1.0 | Gemini | 初稿 |
| 2025-07-17 | V1.1 | Gemini | 根据用户要求严格对齐SQL文件确保所有表和字段的完整性。 |
| 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相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。 |
# 目录
@ -24,16 +27,22 @@
- [4. 表结构设计](#4-表结构设计)
- [4.1. 数据表总体概览](#41-数据表总体概览)
- [4.2. 系统公共表 (system_*)](#42-系统公共表-system_)
- [4.3. 业务核心表 (biz_*)](#43-业务核心表-biz_)
- [5. 视图的设计](#5-视图的设计)
- [6. 安全保密设计](#6-安全保密设计)
- [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图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。
# 外部设计
- **数据库系统**: 主力采用 **MySQL 8.x****MariaDB 10.x**系统设计上兼容国产数据库 **OpenGauss**
- **数据库系统**: 主力采用国产数据库 **达梦数据库 8.0+**。系统设计上兼容 **MySQL 8.x****MariaDB 10.x**
- **数据库工具**: 使用 Navicat, DBeaver, DataGrip 等主流数据库管理工具。
- **约定**:
- **表名**: 全部小写,单词间使用下划线 `_` 分隔。业务表以 `biz_` 开头,系统管理表以 `system_` 开头。
@ -351,11 +360,122 @@
</details>
## 业务核心表 (biz_*)
(基于 `sw_biz_table.sql`)
## 子系统1: 统一平台数据表
统一平台主要负责系统基础功能包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。
### OAuth2.0单点登录相关表
为支持OAuth2.0协议的单点登录功能系统新增以下OAuth2.0相关数据表:
<details>
<summary>点击展开/折叠业务表详情</summary>
<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 (所属小区表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2247,7 +2367,17 @@
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 表务管理表 (meter_work_*)
</details>
## 子系统3: 表务系统数据表
表务系统负责水表的全生命周期管理,包括表务工单管理、表务仓库管理、表务基础管理等功能。
<details>
<summary>点击展开/折叠表务系统表详情</summary>
### 表务管理表 (meter_work_*)
### meter_work_order (表务工单表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2456,7 +2586,16 @@
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 报装工程表 (construction_*)
</details>
## 子系统4: 报装系统数据表
报装系统负责用户报装申请的全流程管理,包括报装申请管理、现场踏勘管理、档案管理等功能。
<details>
<summary>点击展开/折叠报装系统表详情</summary>
### 报装工程表 (construction_*)
### site_survey (现场踏勘表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2594,7 +2733,36 @@
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
## 移动端表 (mobile_*)
</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 (移动端用户会话表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
@ -2840,32 +3008,156 @@
| deleted | int2 | N | 0 | 是否删除 |
| tenant_id | int8 | N | 0 | 租户id |
### mobile_problem_photo (移动端问题照片表)
### 移动端特有表(优化后)
根据移动端表设计优化原则以下为移动端特有的5个表
### mobile_user_cache (移动端用户缓存表)
| 字段名 | 类型 | 是否可空 | 默认值 | 注释 |
| :--- | :--- | :--- | :--- | :--- |
| id | int8 | N | nextval() | 主键 |
| report_id | int8 | N | | 上报ID |
| photo_type | varchar(20) | N | | 照片类型:现场照片、问题照片、完成照片 |
| photo_path | varchar(500) | N | | 照片路径 |
| photo_size | int4 | Y | 0 | 照片大小(字节) |
| photo_time | timestamp(6) | N | pg_systimestamp() | 拍照时间 |
| gps_longitude | numeric(10,6) | Y | | GPS经度 |
| gps_latitude | numeric(10,6) | Y | | GPS纬度 |
| upload_status | int2 | N | 0 | 上传状态0-未上传1-已上传 |
| upload_time | timestamp(6) | Y | | 上传时间 |
| compress_ratio | numeric(5,2) | Y | 0 | 压缩比例 |
| original_size | int4 | Y | 0 | 原始大小 |
| 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 |
| 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 |
| 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图设计

View File

@ -5,16 +5,19 @@
| 【√】草稿 | | |
| 【】修改稿 | | |
| 【】正式发布 | | |
| | **当前版本:** | **V1.2** |
| | **作者:** | **Gemini** |
| | **完成日期:** | **2025-08-06** |
| | **当前版本:** | **V1.4** |
| | **作者:** | **唐伟杰** |
| | **完成日期:** | **2025-08-01** |
## 版本历史
| 日期 | 版本号 | 作者 | 备注 |
| :--- | :--- | :--- | :--- |
| 2025-07-01 | V1.0 | 唐伟杰 | 初版 |
| 2025-08-06 | V1.2 | Gemini | 1. 同步详细设计中的模块,补充缺失模块。<br>2. 调整子系统划分与编号,确保逻辑清晰、编号连续。<br>3. 重构表务、报装、客户服务子系统,优化模块设计。<br>4. 统一概要设计与详细设计的结构,提升一致性。 |
| 2025-07-17 | V1.1 | 唐伟杰 | 1. 同步详细设计中的模块,补充缺失模块。<br>2. 调整子系统划分与编号,确保逻辑清晰、编号连续。<br>3. 重构表务、报装、客户服务子系统,优化模块设计。<br>4. 统一概要设计与详细设计的结构,提升一致性。 |
| 2025-08-01 | V1.2 | 唐伟杰 | 完善 APP相关的模块设计 |
| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统变更将OpenGauss替换为达梦数据库 8.0+,更新所有相关架构图和技术描述。 |
| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用OAuth2.0协议更新单点登录模块描述强调基于OAuth2.0协议实现。 |
# 目录
@ -35,7 +38,7 @@
- [物理部署图](#物理部署图)
- [网络连接](#网络连接)
- [硬件配置规格](#硬件配置规格)
- [OpenGauss分布式架构](#opengauss分布式架构)
- [达梦数据库分布式架构](#达梦数据库分布式架构)
- [容器化部署架构](#容器化部署架构)
- [对外接口](#对外接口)
- [子系统列表](#子系统列表)
@ -75,16 +78,40 @@
- [对外接口](#对外接口-2)
- [子系统3设计: 表务系统](#子系统3设计-表务系统)
- [功能与界面](#功能与界面-2)
- [模块列表](#模块列表-2)
- [模块设计](#模块设计-2)
- [模块1: 表务基础管理](#模块1-表务基础管理)
- [模块2: 表务工单管理](#模块2-表务工单管理)
- [模块3: 仓库与库存管理](#模块3-仓库与库存管理)
- [模块4: 设备档案管理](#模块4-设备档案管理)
- [子系统4设计: 报装系统](#子系统4设计-报装系统)
- [功能与界面](#功能与界面-3)
- [模块设计](#模块设计-3)
- [模块1: 报装流程管理](#模块1-报装流程管理)
- [模块2: 工程管理](#模块2-工程管理)
- [模块3: 档案管理](#模块3-档案管理)
- [子系统5设计: 客户服务](#子系统5设计-客户服务)
- [功能与界面](#功能与界面-4)
- [模块列表](#模块列表-3)
- [模块设计](#模块设计-4)
- [模块1: 账户绑定管理](#模块1-账户绑定管理)
- [模块2: 信息查询服务](#模块2-信息查询服务)
- [模块3: 在线缴费服务](#模块3-在线缴费服务)
- [模块4: 电子发票服务](#模块4-电子发票服务)
- [子系统6设计: 手机抄表APP](#子系统6设计-手机抄表app)
- [功能与界面](#功能与界面-5)
- [模块列表](#模块列表-4)
- [模块设计](#模块设计-5)
- [模块1: 登录模块](#模块1-登录模块)
- [模块2: 首页搜索模块](#模块2-首页搜索模块)
- [模块3: 采集任务管理模块](#模块3-采集任务管理模块)
- [模块4: 换表工单模块](#模块4-换表工单模块)
- [模块5: 其他工单模块](#模块5-其他工单模块)
- [模块6: 个人信息与系统设置模块](#模块6-个人信息与系统设置模块)
- [关键技术特性](#关键技术特性)
- [离线作业能力](#离线作业能力)
- [数据安全保障](#数据安全保障)
- [用户体验优化](#用户体验优化)
- [非功能性需求的设计](#非功能性需求的设计)
- [性能的考虑](#性能的考虑)
- [兼容性的考虑](#兼容性的考虑)
@ -213,7 +240,7 @@ graph TB
end
subgraph "数据层"
E1[(OpenGauss 5.0+<br/>主从架构)]
E1[(达梦数据库 8.0+<br/>主从架构)]
E2[(Redis 6.0+<br/>分布式缓存)]
E3[MinIO<br/>分布式文件存储]
end
@ -300,8 +327,8 @@ flowchart TD
end
subgraph "数据存储层"
D1[(OpenGauss主库<br/>核心业务数据)]
D2[(OpenGauss从库<br/>查询数据)]
D1[(达梦数据库主库<br/>核心业务数据)]
D2[(达梦数据库从库<br/>查询数据)]
D3[(Redis缓存<br/>热点数据)]
D4[文件存储<br/>附件图片]
D5[(备份库<br/>历史数据)]
@ -392,9 +419,9 @@ graph TB
subgraph "数据服务区"
subgraph "数据库集群"
DB1[OpenGauss主库<br/>32核128G]
DB2[OpenGauss从库<br/>32核128G]
DB3[OpenGauss备库<br/>32核128G]
DB1[达梦数据库主库<br/>32核128G]
DB2[达梦数据库从库<br/>32核128G]
DB3[达梦数据库备库<br/>32核128G]
end
subgraph "缓存集群"
@ -464,13 +491,13 @@ graph TB
| 跳板服务器 | 4核8G500GB SSD | 1台 | 运维管理 |
| 日志服务器 | 16核32G5TB SSD | 1台 | 日志收集分析 |
### OpenGauss分布式架构
### 达梦数据库分布式架构
系统采用OpenGauss分布式数据库架构,支持高性能、高可用、高扩展性的数据存储服务。
系统采用达梦数据库分布式架构,支持高性能、高可用、高扩展性的数据存储服务。
```mermaid
graph TB
subgraph "OpenGauss分布式架构"
subgraph "达梦数据库分布式架构"
subgraph "协调节点"
CN1[协调节点1<br/>Coordinator Node]
CN2[协调节点2<br/>Coordinator Node]
@ -520,7 +547,7 @@ graph TB
end
subgraph "数据存储层"
DB_CONTAINER[数据库容器<br/>OpenGauss]
DB_CONTAINER[数据库容器<br/>达梦数据库]
CACHE_CONTAINER[缓存容器<br/>Redis]
FILE_CONTAINER[文件存储容器<br/>MinIO]
end
@ -732,14 +759,14 @@ graph TB
**功能描述:**
单点登录模块提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。
单点登录模块基于OAuth2.0协议实现,提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。
**主要功能:**
1. **用户名密码登录**:传统的用户名密码认证方式
2. **手机号短信登录**:基于短信验证码的快速登录
3. **第三方登录**:支持微信、支付宝等第三方平台登录
4. **单点登录**:一次登录,多系统访问
4. **OAuth2.0单点登录**基于OAuth2.0协议,一次登录,多系统访问
5. **自动登录**:支持"记住我"功能
6. **安全控制**:密码策略、登录限制、验证码等
@ -1158,30 +1185,41 @@ flowchart TD
表务系统负责水表全生命周期管理,从采购入库到报废退库的完整管理流程。其核心是确保水表资产的准确、高效流转,并为营收计量提供可靠的设备保障。
**主要功能:**
## 模块列表
- **表务工单管理**:处理换表、修表、检表等日常业务,驱动水表状态的流转。
- **仓库管理**:管理水表的入库、出库、盘点和调拨,确保库存准确。
- **设备档案管理**:管理水表的基础信息、型号、供应商等,是整个表务系统的基石。
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| METER-001 | 表务基础管理 | 管理水表相关的基础参数 | 自行开发 |
| METER-002 | 表务工单管理 | 处理换表、修表、检表等日常业务 | 自行开发 |
| METER-003 | 仓库与库存管理 | 管理水表的入库、出库、盘点和调拨 | 自行开发 |
| METER-004 | 设备档案管理 | 管理每一块水表的唯一电子档案 | 自行开发 |
## 模块设计
### 模块1: 表务工单管理
- **功能描述**: 解决“工单管理”中包含“仓库管理”的逻辑矛盾,将工单聚焦于业务流程驱动,而仓库仅作为资源(水表)的提供方。
### 模块1: 表务基础管理
- **功能描述**: 定义和维护表务管理所需的基础数据和配置参数。
- **核心功能**:
- **水表厂家管理**: 维护水表供应商信息。
- **水表口径管理**: 管理不同口径水表的规格、检定周期等。
- **水表型号管理**: 根据厂家和口径,管理具体的水表型号。
- **水表量程管理**: 定义水表的计量范围。
### 模块2: 表务工单管理
- **功能描述**: 聚焦于业务流程驱动,管理所有与水表相关的现场作业任务。
- **核心功能**:
- **工单创建**: 可由系统(如到期提醒)、其他子系统(如营收系统上报故障)或人工创建换表、维修、巡检等工单。
- **工单流转**: 实现工单的派发、接收、处理、回填、审核的全流程闭环管理。
- **领料与退料**: 工单处理过程中,涉及水表更换时,触发向仓库的领料申请;旧表则触发退料入库流程。
### 模块2: 仓库管理
### 模块3: 仓库与库存管理
- **功能描述**: 负责水表的实物管理,与工单流程解耦,作为一个独立的资源中心。
- **核心功能**:
- **入库管理**: 包括新表采购入库、旧表回收(维修或报废)入库。
- **出库管理**: 根据工单领料申请,发放新水表。
- **库存管理**: 提供库存查询、盘点、调拨、库存预警等功能。
### 模块3: 设备档案管理
- **功能描述**: 作为表务系统的基础,统一管理所有水表的基础信息和生命周期状态。
### 模块4: 设备档案管理
- **功能描述**: 作为表务系统的核心,统一管理所有水表的基础信息和生命周期状态。
- **核心功能**:
- **水表信息登录**: 记录新购水表的型号、规格、供应商、批次等信息。
- **水表档案建立**: 为每一块入库的水表建立唯一的、全生命周期跟踪的电子档案。
@ -1195,26 +1233,25 @@ flowchart TD
**主要功能:**
- **报装申请**:用户申请、资料审核、受理登记
- **现场踏勘**:现场勘查、设计方案、工程预算
- **合同签订**:合同制作、签订确认、费用收取
- **工程管理**:施工管理、竣工验收、资料归档
- **立户通水**:信息同步、立户建档、开通供水
- **报装流程管理**:管理从申请、踏勘到合同签订的完整流程。
- **工程管理**:负责施工、验收和通水环节。
- **档案管理**:对报装过程中的所有文档进行归档和管理。
## 模块设计
### 模块1: 报装流程管理
- **功能描述**: 报装流程模块管理新用户从申请到通水的全过程业务流程,实现报装业务的标准化管理
- **功能描述**: 统一管理新用户报装的核心流程,确保各环节顺畅衔接
- **核心功能**:
- **报装申请**: 用户资料收集、申请材料审核、受理登记、编号分配
- **现场踏勘**: 现场勘查、工程设计、方案制定、费用预算。
- **合同管理**: 合同制作、合同签订、费用收取、档案归档
- **报装申请**: 用户资料收集、申请材料审核、受理登记。
- **现场踏勘**: 安排并记录现场勘查、制定初步设计方案、进行工程预算。
- **合同管理**: 根据方案制作、签订供水合同,并收取相关费用
### 模块2: 工程管理
- **功能描述**: 工程管理作为报装流程的关键环节,涵盖了从设计、预算到施工、验收的全过程
- **功能描述**: 聚焦于报装工程的现场实施与交付
- **核心功能**:
- **施工管理**: 施工派工、进度监控、质量验收、竣工确认。
- **验收通水**: 竣工验收、资料归档、立户通水。
- **施工管理**: 施工派工、进度监控、质量检查与整改。
- **竣工验收**: 组织相关部门进行联合验收,确保工程质量达标。
- **立户通水**: 验收通过后,同步信息至营收系统进行客户立户,并最终开通供水。
### 模块3: 档案管理
- **功能描述**: 负责报装全流程的资料归档和查询。
@ -1280,23 +1317,53 @@ flowchart TD
## 功能与界面
客户服务系统为用水客户提供多渠道、便捷的线上自助服务。
客户服务系统为用水客户提供多渠道、便捷的线上自助服务,主要通过微信和支付宝小程序实现
**服务渠道:**
## 模块列表
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| SERVICE-001 | 账户绑定管理 | 客户账户绑定和管理 | 自行开发 |
| SERVICE-002 | 信息查询服务 | 各类信息查询服务 | 自行开发 |
| SERVICE-003 | 在线缴费服务 | 多渠道在线缴费服务 | 自行开发 |
| SERVICE-004 | 电子发票服务 | 电子发票管理服务 | 自行开发 |
- **微信小程序**
- **支付宝小程序**
## 模块设计
客户服务系统围绕功能维度进行组织,渠道作为功能的实现方式。
### 模块1: 微信支付宝服务窗
### 模块1: 账户绑定管理
- **功能描述**: 提供客户账户的绑定、解绑及多户管理功能。
- **核心功能**:
- **户号绑定**: 客户通过手机号、身份证等信息绑定用水户号。
- **实名认证**: 与第三方认证服务对接,完成用户实名认证。
- **多户管理**: 允许一个账号绑定和管理多个用水户号。
- **账户绑定**: 客户通过客户编号、手机号、身份证等信息绑定水务账户。
- **绑定验证**: 通过短信验证码等方式确保绑定安全。
- **多账户管理**: 一个微信/支付宝账户可以绑定多个水务账户。
- **账户管理**: 支持启用、停用绑定关系,处理账户异常情况。
### 模块2: 信息查询服务
- **功能描述**: 提供全面的用水信息查询服务。
- **核心功能**:
- **账单查询**: 查询当期账单、历史账单、欠费信息等。
- **用水历史**: 以图表形式展示历史用水量趋势。
- **缴费记录**: 查询历史缴费记录详情。
- **停水公告**: 查看所在区域的计划性或临时性停水通知。
### 模块3: 在线缴费服务
- **功能描述**: 提供多种在线支付方式,为客户提供便捷的缴费服务。
- **核心功能**:
- **多渠道支付**: 支持微信支付、支付宝支付、银行卡支付等多种支付方式。
- **支付限额**: 单次支付金额不超过5000元确保资金安全。
- **支付确认**: 支付完成后实时更新账户状态,推送缴费成功通知。
- **退款处理**: 支持支付失败和错误支付的退款处理。
### 模块4: 电子发票服务
- **功能描述**: 提供电子发票申请、查询、下载等服务。
- **核心功能**:
- **发票申请**: 客户可为已缴费项目申请电子发票,支持个人和企业发票。
- **发票管理**: 查看已开具的电子发票列表和详情。
- **发票下载**: 下载PDF格式的电子发票文件。
- **发票推送**: 发票开具成功后自动推送给客户。
# 子系统6设计: 手机抄表APP
@ -1304,44 +1371,88 @@ flowchart TD
为抄表员、外勤人员提供移动作业工具,支持离线操作,提升现场工作效率。
**核心业务流程:**
任务下载 → 现场抄表 → 问题上报 → 工单处理 → 数据上传 → 结果同步
**主要功能特点:**
- **多维度搜索**:支持户号、户名、地址、钢印号、手机号等多种搜索方式
- **离线作业**:支持无网络环境下的现场抄表和工单处理
- **智能采集**提供定位、NFC、扫码三种数据采集方式
- **工单闭环**:从问题上报到工单完成的完整处理流程
- **数据同步**:网络恢复后自动同步本地数据到服务器
## 模块列表
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| APP-001 | 用户认证模块 | 移动端登录、个人信息管理 | 自行开发 |
| APP-002 | 抄表任务模块 | 抄表任务管理、现场抄表 | 自行开发 |
| APP-003 | 工单管理模块 | 问题上报、待办工单处理 | 自行开发 |
| APP-004 | 数据同步模块 | 离线存储、在线同步 | 自行开发 |
| MOBILE-001 | 登录模块 | 机构编号、用户名密码认证、自动登录 | 自行开发 |
| MOBILE-002 | 首页搜索模块 | 多维度搜索、最近搜索记录、抄表任务 | 自行开发 |
| MOBILE-003 | 采集任务管理模块 | 任务列表管理、批量下载、单户采集 | 自行开发 |
| MOBILE-004 | 换表工单模块 | 换表工单处理、设备信息录入 | 自行开发 |
| MOBILE-005 | 其他工单模块 | 复水、稽查、问题上报等工单处理 | 自行开发 |
| MOBILE-006 | 个人信息与系统设置模块 | 个人信息管理、系统设置维护 | 自行开发 |
## 模块设计
### 模块1: 用户认证模块
- **功能描述**: 提供安全可靠的移动端登录和个人信息管理
### 模块1: 登录模块
- **功能描述**: 提供移动端用户登录认证功能,支持机构编号、用户名、密码三要素登录
- **核心功能**:
- **移动端登录**: 支持账号密码、指纹、面容等多种登录方式。
- **个人信息管理**: 查看和修改个人基本信息,修改登录密码。
- **核心登录功能**: 机构编号、用户名、密码三要素认证,支持自动登录选项
- **登录辅助功能**: 登录问题支持、版权标识展示
- **安全控制**: 密码自动掩码显示、登录状态保持
### 模块2: 抄表任务模块
- **功能描述**: 核心抄表业务的移动化实现
### 模块2: 首页搜索模块
- **功能描述**: 提供多维度客户搜索功能,实现快速定位客户信息
- **核心功能**:
- **抄表任务管理**: 从服务端下载抄表任务,并进行本地管理。
- **现场抄表**: 支持录入表数、选择表状态、拍照记录等。
- **欠费查询**: 现场查询用户历史欠费信息。
- **搜索框功能**: 支持户号、户名、地址、钢印号、手机号等多维度搜索
- **最近搜索记录**: 自动保存搜索历史,支持去重和快速访问
- **抄表任务列表**: 展示当前抄表员的任务列表,支持直接跳转
### 模块3: 工单管理模块
- **功能描述**: 移动端工单处理,实现外勤业务闭环
### 模块3: 采集任务管理模块
- **功能描述**: 管理抄表员的采集任务,包括任务下载、现场采集等功能
- **核心功能**:
- **问题上报**: 现场发现问题(如水表损坏、漏水)可立即上报生成工单。
- **待办工单**: 接收、处理、流转各类工单(换表、维修、停复水等)。
- **停水复水工单**: 移动端处理停水和复水工单。
- **稽查工单**: 移动端处理稽查工单。
- **任务列表管理**: 数据统计面板、任务筛选分类、批量下载操作
- **单户采集详情**: 住户档案展示、多种采集方式定位、NFC、扫码
- **户间导航**: 支持按任务列表顺序进行上一户/下一户切换
### 模块4: 数据同步模块
- **功能描述**: 保证移动端与服务端数据的一致性
### 模块4: 换表工单模块
- **功能描述**: 处理换表工单的完整流程,从工单接收到完成提交
- **核心功能**:
- **离线存储**: 在网络不佳时,将业务数据暂存本地。
- **在线同步**: 网络恢复后,自动或手动将本地数据同步至服务器。
- **冲突处理**: 提供简单有效的数据冲突解决方案。
- **换表工单处理**: 待办工单列表、工单信息填写、设备信息录入
- **附件管理**: 支持图片和视频上传,作为现场证据
- **工单操作**: 支持工单完成提交和退单处理
### 模块5: 其他工单模块
- **功能描述**: 处理除换表外的其他类型工单,实现外勤业务闭环。
- **核心功能**:
- **复水工单**: 欠费状态校验、二次确认操作
- **稽查任务**: 双模式入口、实时进度显示
- **抄表稽查**: 用户档案核对、稽查结论填写、过程存证
- **问题上报**: 问题类型选择、处理时效设置、溯源证据上传
### 模块6: 个人信息与系统设置模块
- **功能描述**: 管理个人信息和系统设置,提供系统维护功能。
- **核心功能**:
- **个人信息管理**: 姓名修改、手机号设置、信息查看
- **账户安全配置**: 密码修改、退出登录
- **系统维护选项**: 日志上传、缓存清理、数据备份、版本信息
## 关键技术特性
### 离线作业能力
- **离线操作**: 已下载任务支持无网络环境操作
- **数据缓存**: 本地缓存用户档案、抄表记录、工单信息
- **自动同步**: 网络恢复后自动同步本地数据到服务器
### 数据安全保障
- **数据校验**: 必填字段验证、格式校验、数值合理性检查
- **状态一致性**: 任务状态管理、工单状态流转控制
- **防误操作**: 二次确认机制、数据完整性保护
### 用户体验优化
- **界面友好**: 清晰的界面布局、直观的操作流程
- **智能搜索**: 实时搜索、关键词高亮、历史记录
- **便捷导航**: 户间切换、快速定位、批量操作
# 非功能性需求的设计
@ -1357,7 +1468,7 @@ flowchart TD
**设计措施:**
1. **数据库优化**
- 采用OpenGauss主从架构,读写分离
- 采用达梦数据库主从架构,读写分离
- 对核心业务表建立合适索引
- 大表分区存储,历史数据归档
- 连接池配置优化
@ -1385,7 +1496,7 @@ flowchart TD
**数据库兼容性:**
- 主要支持:OpenGauss 5.0+
- 主要支持:达梦数据库 8.0+
- 备选方案PostgreSQL 12+
- 预留接口MySQL 8.0+
@ -1398,6 +1509,7 @@ flowchart TD
**身份认证:**
- 基于OAuth2.0协议的单点登录
- 基于JWT的无状态认证
- 支持多因子认证MFA
- OAuth2第三方登录集成

File diff suppressed because it is too large Load Diff