diff --git a/01_High_Level/03_Summary_Design.md b/01_High_Level/03_Summary_Design.md index 62655a9..110e5cb 100644 --- a/01_High_Level/03_Summary_Design.md +++ b/01_High_Level/03_Summary_Design.md @@ -1056,12 +1056,20 @@ graph TB | 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | |---|---|---|---|---|---|---| -| IF-REV-001 | 客户信息查询接口 | 查询客户基本信息和账户状态 | 手机抄表APP/微网厅 | HTTP/REST | 客户编号、姓名、手机号 | 客户详细信息、账户状态、绑定关系 | -| IF-REV-002 | 账单查询接口 | 查询客户账单和欠费信息 | 手机抄表APP/微网厅 | HTTP/REST | 客户编号、账期范围 | 账单详情、欠费金额、缴费历史 | -| IF-REV-003 | 缴费处理接口 | 处理在线缴费业务请求 | 微网厅/客服系统 | HTTP/REST | 订单信息、支付方式、客户信息 | 缴费结果、支付状态、发票信息 | -| IF-REV-004 | 立户接口 | 新客户立户开通服务 | 报装业务系统 | HTTP/REST | 客户资料、水表信息、开户信息 | 立户结果、客户编号、服务状态 | -| IF-REV-005 | 抄表任务接口 | 下发抄表任务和客户信息 | 手机抄表APP | HTTP/REST | 抄表员ID、任务范围、时间计划 | 任务详情、客户清单、抄表要求 | -| IF-REV-006 | 抄表数据上传接口 | 上传抄表数据和现场证据 | 手机抄表APP | HTTP/REST | 抄表数据、图片证据、GPS位置 | 上传结果、数据校验状态、异常处理 | +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | 客户ID、客户编号、手机号、查询类型 | 客户档案、账户信息、联系人列表、水表绑定关系 | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 手机抄表APP/集抄系统 | HTTPS REST | 抄表任务ID、水表ID、读数、图片证据、GPS位置 | 上传结果、校验状态、异常标记 | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务/批量任务 | HTTPS REST | 抄表批次、账期、客户范围、应收日期 | 账单结果、失败清单、生成汇总 | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | 客户ID、账单ID列表、支付方式、实收金额 | 收费结果、核销状态、交易流水 | +| IF-REV-008 | 发票申请接口 | 发起电子发票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | 客户ID、账单ID列表、开票抬头、税号、邮箱 | 发票申请结果、票据状态、下载地址 | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | 批次号、渠道编码、账期、账单明细 | 批次状态、回盘结果、对账差异、结算结果 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | 参数分类、模板编码、站点范围 | 参数明细、模板信息、更新结果 | +| IF-CS-001 | 账户绑定接口 | 绑定、解绑、切换默认客户 | 微信/支付宝/微网厅 | HTTPS REST | 渠道用户标识、客户编号、身份校验信息 | 绑定结果、默认客户信息、绑定关系 | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水历史、缴费记录 | 客户端 | HTTPS REST | 客户ID、账期范围、查询类型 | 账单列表、欠费金额、用水趋势、缴费记录 | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝线上支付订单 | 客户端 | HTTPS REST | 客户ID、账单ID列表、支付渠道、支付金额 | 订单号、支付二维码/预支付信息、订单状态 | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请、查询发票状态 | 客户端 | HTTPS REST | 缴费订单号、发票抬头、邮箱/手机号 | 发票状态、发票链接、申请结果 | +| IF-CS-005 | 网点与业务办理接口 | 查询营业网点、预约信息、可办事项 | 客户端 | HTTPS REST | 行政区划、关键字、业务类型 | 网点列表、营业时间、可办业务、预约信息 | +| IF-CS-006 | 业务办理进度接口 | 提交业务申请、查询办理进度与附件 | 客户端 | HTTPS REST | 申请类型、客户资料、附件清单、申请单号 | 受理结果、流程状态、进度轨迹、补件要求 | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | 柜台编号、账单ID列表、订单金额、支付渠道 | 订单号、支付状态、回写结果 | **手机抄表APP对外接口** @@ -1970,12 +1978,20 @@ graph TD | 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | |---|---|---|---|---|---|---| -| IF-REV-001 | 客户信息查询接口 | 查询客户基本信息和账户状态 | 手机抄表APP/微网厅/工单系统 | HTTP/REST | 客户编号、姓名、手机号、查询类型 | 客户详细信息、账户状态、绑定关系 | -| IF-REV-002 | 账单查询接口 | 查询客户账单和欠费信息 | 手机抄表APP/微网厅/客服系统 | HTTP/REST | 客户编号、账期范围、查询条件 | 账单详情、欠费金额、缴费历史 | -| IF-REV-003 | 缴费处理接口 | 处理在线缴费业务请求 | 微网厅/客服系统/支付系统 | HTTP/REST | 订单信息、支付方式、客户信息 | 缴费结果、支付状态、发票信息 | -| IF-REV-004 | 立户接口 | 新客户立户开通服务 | 报装业务系统 | HTTP/REST | 客户资料、水表信息、报装单号 | 立户结果、客户编号、开户状态 | -| IF-REV-005 | 抄表任务接口 | 下发抄表任务与客户信息 | 手机抄表APP | HTTP/REST | 抄表员ID、任务范围、抄表周期 | 任务详情、客户信息、水表信息 | -| IF-REV-006 | 抄表数据上传接口 | 接收抄表数据和现场证据 | 手机抄表APP | HTTP/REST | 抄表数据、图片证据、GPS位置 | 上传结果、数据校验、异常处理 | +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | 客户ID、客户编号、手机号、查询类型 | 客户档案、账户信息、联系人列表、水表绑定关系 | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 手机抄表APP/集抄系统 | HTTPS REST | 抄表任务ID、水表ID、读数、图片证据、GPS位置 | 上传结果、校验状态、异常标记 | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务/批量任务 | HTTPS REST | 抄表批次、账期、客户范围、应收日期 | 账单结果、失败清单、生成汇总 | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | 客户ID、账单ID列表、支付方式、实收金额 | 收费结果、核销状态、交易流水 | +| IF-REV-008 | 发票申请接口 | 发起电子发票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | 客户ID、账单ID列表、开票抬头、税号、邮箱 | 发票申请结果、票据状态、下载地址 | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | 批次号、渠道编码、账期、账单明细 | 批次状态、回盘结果、对账差异、结算结果 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | 参数分类、模板编码、站点范围 | 参数明细、模板信息、更新结果 | +| IF-CS-001 | 账户绑定接口 | 绑定、解绑、切换默认客户 | 微信/支付宝/微网厅 | HTTPS REST | 渠道用户标识、客户编号、身份校验信息 | 绑定结果、默认客户信息、绑定关系 | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水历史、缴费记录 | 客户端 | HTTPS REST | 客户ID、账期范围、查询类型 | 账单列表、欠费金额、用水趋势、缴费记录 | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝线上支付订单 | 客户端 | HTTPS REST | 客户ID、账单ID列表、支付渠道、支付金额 | 订单号、支付二维码/预支付信息、订单状态 | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请、查询发票状态 | 客户端 | HTTPS REST | 缴费订单号、发票抬头、邮箱/手机号 | 发票状态、发票链接、申请结果 | +| IF-CS-005 | 网点与业务办理接口 | 查询营业网点、预约信息、可办事项 | 客户端 | HTTPS REST | 行政区划、关键字、业务类型 | 网点列表、营业时间、可办业务、预约信息 | +| IF-CS-006 | 业务办理进度接口 | 提交业务申请、查询办理进度与附件 | 客户端 | HTTPS REST | 申请类型、客户资料、附件清单、申请单号 | 受理结果、流程状态、进度轨迹、补件要求 | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | 柜台编号、账单ID列表、订单金额、支付渠道 | 订单号、支付状态、回写结果 | ### 设计方案概述 @@ -2129,7 +2145,7 @@ graph TB #### 营收核心模块群 -  核心营收业务模块,实现从客户管理到收费账务的完整业务链条: +  营收核心业务模块,实现从客户管理到收费账务的完整业务链条,并通过 SYS-008 发票服务、SYS-009 支付与银行结算、SYS-010 消息服务形成跨子系统协同闭环: | 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | |---|---|---|---| @@ -2147,7 +2163,7 @@ graph TB   为外部渠道(微网厅、第三方平台)和内部渠道(客服前台)提供服务接入能力: -- 账户绑定管理、信息查询服务、在线缴费服务、电子发票服务、营业网点服务、业务办理服务 +- 账户绑定管理、信息查询服务、在线缴费服务、电子发票服务、营业网点服务、业务办理服务、柜面扫码支付 | 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | |---|---|---|---| diff --git a/02_Detailed/01_Detailed_Design.md b/02_Detailed/01_Detailed_Design.md index 70b7a2d..69b6a7e 100644 --- a/02_Detailed/01_Detailed_Design.md +++ b/02_Detailed/01_Detailed_Design.md @@ -5,9 +5,9 @@ | 【】草稿 | | | | 【√】修改稿 | | | | 【】正式发布 | | | -| | **当前版本:** | **V1.5** | +| | **当前版本:** | **V1.6** | | | **作者:** | **唐伟杰** | -| | **完成日期:** | **2025-08-01** | +| | **完成日期:** | **2026-03-10** | ## 版本历史 @@ -15,10 +15,10 @@ | :--- | :--- | :--- | :--- | | 2025-07-01 | V1.0 | 唐伟杰 | 初版 | | 2025-07-17 | V1.1 | 唐伟杰 | 补充详细设计内容 | -| 2025-08-01 | V1.2 | 唐伟杰 | 1. 同步更新概要设计中的子系统和模块结构。
2. 重构表务、报装、客户服务子系统,确保逻辑清晰。
3. 补充和完善数据库设计章节,解决缺失和不明确的问题。
4. 全面审查并修正文档,提升整体质量和一致性。 | -| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统变更:将OpenGauss替换为达梦数据库 8.0+,更新所有相关架构图和技术描述。 | -| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用OAuth2.0协议:完善单点登录模块设计,新增OAuth2.0授权流程、接口设计和相关数据表。 | - +| 2025-08-01 | V1.2 | 唐伟杰 | 同步更新概要设计中的子系统和模块结构,补充数据库设计章节并统一主要模块逻辑。 | +| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统口径统一为达梦数据库 8.0+。 | +| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用 OAuth2.0 协议,补充统一认证相关设计。 | +| 2026-03-10 | V1.6 | 唐伟杰 | 将分散的模块设计、数据库设计、接口设计、安全设计、部署设计与报装电子签章设计整合为统一主详设,统一系统名称、章节体系、模块/接口编号及数据库口径,清理重复内容与部署脏片段。 | # 目录 @@ -27,4711 +27,1280 @@ - [目录](#目录) - [前言](#前言) - [编写目的](#编写目的) - - [背景与任务](#背景与任务) - - [建设背景](#建设背景) - - [主要任务](#主要任务) + - [建设背景](#建设背景) + - [设计范围](#设计范围) - [术语与缩略语](#术语与缩略语) - [参考资料](#参考资料) - [系统总体设计](#系统总体设计) - - [逻辑架构](#逻辑架构) - - [整体架构图](#整体架构图) - - [系统数据流向图](#系统数据流向图) - - [表现层](#表现层) - - [网关层](#网关层) - - [业务服务层](#业务服务层) - - [数据层](#数据层) - - [物理架构](#物理架构) - - [物理部署图](#物理部署图) - - [容器化部署架构](#容器化部署架构) - - [硬件配置规格表](#硬件配置规格表) - - [DMZ区域](#dmz区域) - - [应用服务区](#应用服务区) - - [数据服务区](#数据服务区) - - [管理服务区](#管理服务区) - - [对外接口](#对外接口) - - [子系统列表](#子系统列表) - - [子系统相互关系与接口](#子系统相互关系与接口) -- [子系统1设计: 统一平台](#子系统1设计-统一平台) - - [功能与界面](#功能与界面) - - [模块列表](#模块列表) - - [模块间关系](#模块间关系) - - [权限管理功能群](#权限管理功能群) - - [系统监控功能群](#系统监控功能群) - - [模块设计](#模块设计) - - [模块1: 单点登录](#模块1-单点登录) - - [功能](#功能) - - [功能1: 用户登录认证](#功能1-用户登录认证) - - [设计图](#设计图) - - [功能描述](#功能描述) - - [输入输出数据](#输入输出数据) - - [业务规则](#业务规则) - - [业务流程](#业务流程) - - [数据设计](#数据设计) - - [方法说明](#方法说明) - - [其他说明](#其他说明) - - [功能2: 第三方登录](#功能2-第三方登录) - - [功能描述](#功能描述-1) - - [业务规则](#业务规则-1) - - [接口](#接口) - - [接口1: 用户登录接口](#接口1-用户登录接口) - - [模块2: 系统管理](#模块2-系统管理) - - [功能](#功能-1) - - [功能1: 用户管理](#功能1-用户管理) - - [设计图](#设计图-1) - - [功能描述](#功能描述-2) - - [输入输出数据](#输入输出数据-1) - - [业务规则](#业务规则-2) - - [业务流程](#业务流程-1) - - [数据设计](#数据设计-1) - - [方法说明](#方法说明-1) - - [功能2: 角色管理](#功能2-角色管理) - - [功能描述](#功能描述-3) - - [接口](#接口-1) - - [接口1: 用户管理接口](#接口1-用户管理接口) -- [子系统2设计: 营收系统](#子系统2设计-营收系统) - - [功能与界面](#功能与界面-1) - - [模块列表](#模块列表-1) - - [模块间关系](#模块间关系-1) - - [营收核心业务群](#营收核心业务群) - - [客户服务业务群](#客户服务业务群) - - [模块设计](#模块设计-1) - - [模块1: 客户资料管理](#模块1-客户资料管理) - - [功能](#功能-2) - - [功能1: 客户信息管理](#功能1-客户信息管理) - - [设计图](#设计图-2) - - [功能描述](#功能描述-4) - - [输入输出数据](#输入输出数据-2) - - [业务规则](#业务规则-3) - - [业务流程](#业务流程-2) - - [数据设计](#数据设计-2) - - [方法说明](#方法说明-2) - - [其他说明](#其他说明-1) - - [功能2: 抄表数据录入](#功能2-抄表数据录入) - - [功能描述](#功能描述-5) - - [抄表开账业务流程图](#抄表开账业务流程图) - - [业务规则](#业务规则-4) - - [数据设计](#数据设计-3) - - [方法说明](#方法说明-3) - - [接口](#接口-2) - - [接口1: 客户信息查询接口](#接口1-客户信息查询接口) - - [模块2: 抄表开账](#模块2-抄表开账) - - [功能](#功能-3) - - [功能1: 抄表录入](#功能1-抄表录入) - - [设计图](#设计图-3) - - [功能描述](#功能描述-6) - - [输入输出数据](#输入输出数据-3) - - [业务规则](#业务规则-5) - - [业务流程](#业务流程-3) - - [数据设计](#数据设计-4) - - [方法说明](#方法说明-4) - - [其他说明](#其他说明-2) - - [功能2: 复核开账](#功能2-复核开账) - - [功能描述](#功能描述-7) - - [业务规则](#业务规则-6) - - [接口](#接口-3) - - [接口1: 抄表数据提交接口](#接口1-抄表数据提交接口) - - [模块3: 营业收费](#模块3-营业收费) - - [功能](#功能-4) - - [功能1: 柜台收费](#功能1-柜台收费) - - [功能描述](#功能描述-8) - - [业务规则](#业务规则-7) - - [设计图](#设计图-4) - - [功能描述](#功能描述-9) - - [柜台收费业务流程图](#柜台收费业务流程图) - - [输入输出数据](#输入输出数据-4) - - [业务规则](#业务规则-8) - - [数据设计](#数据设计-5) - - [方法说明](#方法说明-5) - - [其他说明](#其他说明-3) - - [模块4: 账务处理](#模块4-账务处理) - - [功能](#功能-5) - - [功能1: 未销账调整](#功能1-未销账调整) - - [功能描述](#功能描述-10) - - [业务规则](#业务规则-9) - - [业务流程](#业务流程-4) - - [数据设计](#数据设计-6) - - [方法说明](#方法说明-6) - - [功能2: 分账调整](#功能2-分账调整) - - [功能描述](#功能描述-11) - - [业务规则](#业务规则-10) - - [业务流程](#业务流程-5) - - [数据设计](#数据设计-7) - - [方法说明](#方法说明-7) - - [功能3: 预付款退款](#功能3-预付款退款) - - [功能描述](#功能描述-12) - - [业务规则](#业务规则-11) - - [业务流程](#业务流程-6) - - [数据设计](#数据设计-8) - - [方法说明](#方法说明-8) - - [功能4: 呆坏账申请](#功能4-呆坏账申请) - - [功能描述](#功能描述-13) - - [业务规则](#业务规则-12) - - [业务流程](#业务流程-7) - - [数据设计](#数据设计-9) - - [方法说明](#方法说明-9) - - [模块5: 发票管理](#模块5-发票管理) - - [功能](#功能-6) - - [功能1: 发票查询](#功能1-发票查询) - - [功能描述](#功能描述-14) - - [业务规则](#业务规则-13) - - [业务流程](#业务流程-8) - - [数据设计](#数据设计-10) - - [方法说明](#方法说明-10) - - [功能2: 发票开具](#功能2-发票开具) - - [功能描述](#功能描述-15) - - [业务规则](#业务规则-14) - - [业务流程](#业务流程-9) - - [数据设计](#数据设计-11) - - [方法说明](#方法说明-11) - - [功能3: 电子发票管理](#功能3-电子发票管理) - - [功能描述](#功能描述-16) - - [业务规则](#业务规则-15) - - [模块6: 催缴管理](#模块6-催缴管理) - - [功能](#功能-7) - - [功能1: 欠费催缴](#功能1-欠费催缴) - - [功能描述](#功能描述-17) - - [业务规则](#业务规则-16) - - [业务流程](#业务流程-10) - - [数据设计](#数据设计-12) - - [方法说明](#方法说明-12) - - [功能2: 催缴记录管理](#功能2-催缴记录管理) - - [功能描述](#功能描述-18) - - [业务规则](#业务规则-17) - - [模块7: 统计分析](#模块7-统计分析) - - [功能](#功能-8) - - [功能1: 报表查询](#功能1-报表查询) - - [功能描述](#功能描述-19) - - [业务规则](#业务规则-18) - - [业务流程](#业务流程-11) - - [数据设计](#数据设计-13) - - [方法说明](#方法说明-13) - - [功能2: 缴费记录查询](#功能2-缴费记录查询) - - [功能描述](#功能描述-20) - - [业务规则](#业务规则-19) - - [数据设计](#数据设计-14) - - [方法说明](#方法说明-14) - - [功能3: 欠费查询分析](#功能3-欠费查询分析) - - [功能描述](#功能描述-21) - - [业务规则](#业务规则-20) - - [数据设计](#数据设计-15) - - [方法说明](#方法说明-15) - - [模块8: 代收业务](#模块8-代收业务) - - [功能](#功能-9) - - [功能1: 实时收费](#功能1-实时收费) - - [功能描述](#功能描述-22) - - [业务规则](#业务规则-21) - - [业务流程](#业务流程-12) - - [数据设计](#数据设计-16) - - [方法说明](#方法说明-16) - - [功能2: 银行代扣](#功能2-银行代扣) - - [功能描述](#功能描述-23) - - [功能3: 银行托收](#功能3-银行托收) - - [功能描述](#功能描述-24) - - [模块9: 业务工单](#模块9-业务工单) - - [功能](#功能-10) - - [功能1: 业务清单管理](#功能1-业务清单管理) - - [功能描述](#功能描述-25) - - [业务工单流程图](#业务工单流程图) - - [业务规则](#业务规则-22) - - [数据设计](#数据设计-17) - - [方法说明](#方法说明-17) - - [功能2: 上报清单管理](#功能2-上报清单管理) - - [功能描述](#功能描述-26) - - [上报工单处理流程图](#上报工单处理流程图) - - [业务规则](#业务规则-23) - - [数据设计](#数据设计-18) - - [功能3: 稽查工单管理](#功能3-稽查工单管理) - - [功能描述](#功能描述-27) - - [稽查工单流程图](#稽查工单流程图) - - [业务规则](#业务规则-24) - - [数据设计](#数据设计-19) - - [功能4: 换表工单管理](#功能4-换表工单管理) - - [功能描述](#功能描述-28) - - [换表工单业务流程图](#换表工单业务流程图) - - [业务规则](#业务规则-25) - - [数据设计](#数据设计-20) - - [方法说明](#方法说明-18) - - [接口](#接口-4) - - [接口1: 创建业务工单接口](#接口1-创建业务工单接口) - - [接口2: 工单处理接口](#接口2-工单处理接口) -- [子系统3设计: 表务系统](#子系统3设计-表务系统) - - [功能与界面](#功能与界面-2) - - [模块列表](#模块列表-2) - - [模块设计](#模块设计-2) - - [模块1: 表务仓库管理](#模块1-表务仓库管理) - - [功能](#功能-11) - - [功能1: 水表库存管理](#功能1-水表库存管理) - - [功能描述](#功能描述-29) - - [业务规则](#业务规则-26) - - [数据设计](#数据设计-21) - - [方法说明](#方法说明-19) - - [功能2: 物料管理](#功能2-物料管理) - - [功能描述](#功能描述-30) - - [业务规则](#业务规则-27) - - [模块2: 表务基础管理](#模块2-表务基础管理) - - [功能](#功能-12) - - [功能1: 水表档案管理](#功能1-水表档案管理) - - [功能描述](#功能描述-31) - - [业务规则](#业务规则-28) - - [数据设计](#数据设计-22) - - [方法说明](#方法说明-20) -- [子系统4设计: 报装系统](#子系统4设计-报装系统) - - [功能与界面](#功能与界面-3) - - [模块列表](#模块列表-3) - - [模块设计](#模块设计-3) - - [模块1: 报装流程管理](#模块1-报装流程管理) - - [功能](#功能-13) - - [功能1: 报装流程](#功能1-报装流程) - - [功能描述](#功能描述-32) - - [新用户报装业务流程图](#新用户报装业务流程图) - - [业务规则](#业务规则-29) - - [数据设计](#数据设计-23) - - [方法说明](#方法说明-21) - - [模块2: 现场踏勘管理](#模块2-现场踏勘管理) - - [功能](#功能-14) - - [功能1: 现场勘查](#功能1-现场勘查) - - [功能描述](#功能描述-33) - - [业务规则](#业务规则-30) - - [数据设计](#数据设计-24) - - [方法说明](#方法说明-22) - - [功能2: 技术方案设计](#功能2-技术方案设计) - - [功能描述](#功能描述-34) - - [业务规则](#业务规则-31) - - [模块3: 报装档案管理](#模块3-报装档案管理) - - [功能](#功能-15) - - [功能1: 报装档案管理](#功能1-报装档案管理) - - [功能描述](#功能描述-35) - - [业务规则](#业务规则-32) - - [数据设计](#数据设计-25) - - [方法说明](#方法说明-23) -- [子系统5设计: 客户服务](#子系统5设计-客户服务) - - [功能与界面](#功能与界面-4) - - [模块列表](#模块列表-4) - - [模块设计](#模块设计-4) - - [模块1: 账户绑定管理](#模块1-账户绑定管理) - - [功能](#功能-16) - - [功能1: 账户绑定](#功能1-账户绑定) - - [功能描述](#功能描述-36) - - [业务规则](#业务规则-33) - - [数据设计](#数据设计-26) - - [方法说明](#方法说明-24) - - [功能2: 账户管理](#功能2-账户管理) - - [功能描述](#功能描述-37) - - [业务规则](#业务规则-34) - - [模块2: 信息查询服务](#模块2-信息查询服务) - - [功能](#功能-17) - - [功能1: 账单查询](#功能1-账单查询) - - [功能描述](#功能描述-38) - - [业务规则](#业务规则-35) - - [数据设计](#数据设计-27) - - [方法说明](#方法说明-25) - - [模块3: 在线缴费服务](#模块3-在线缴费服务) - - [功能](#功能-18) - - [功能1: 多渠道支付](#功能1-多渠道支付) - - [功能描述](#功能描述-39) - - [业务规则](#业务规则-36) - - [数据设计](#数据设计-28) - - [方法说明](#方法说明-26) - - [模块4: 电子发票服务](#模块4-电子发票服务) - - [功能](#功能-19) - - [功能1: 发票管理](#功能1-发票管理) - - [功能描述](#功能描述-40) - - [业务规则](#业务规则-37) - - [数据设计](#数据设计-29) - - [方法说明](#方法说明-27) -- [子系统6设计: 手机抄表APP](#子系统6设计-手机抄表app) - - [功能与界面](#功能与界面-5) - - [模块列表](#模块列表-5) - - [模块设计](#模块设计-5) - - [模块1: 登录模块](#模块1-登录模块) - - [功能](#功能-20) - - [功能1: 核心登录功能](#功能1-核心登录功能) - - [功能描述](#功能描述-41) - - [业务规则](#业务规则-38) - - [业务流程](#业务流程-13) - - [界面设计要点](#界面设计要点) - - [数据设计](#数据设计-30) - - [方法说明](#方法说明-28) - - [模块2: 首页搜索模块](#模块2-首页搜索模块) - - [功能](#功能-21) - - [功能1: 搜索框功能](#功能1-搜索框功能) - - [功能描述](#功能描述-42) - - [业务规则](#业务规则-39) - - [业务流程](#业务流程-14) - - [界面设计要点](#界面设计要点-1) - - [数据设计](#数据设计-31) - - [方法说明](#方法说明-29) - - [模块3: 采集任务管理模块](#模块3-采集任务管理模块) - - [功能](#功能-22) - - [功能1: 任务列表管理](#功能1-任务列表管理) - - [功能描述](#功能描述-43) - - [业务规则](#业务规则-40) - - [业务流程](#业务流程-15) - - [界面设计要点](#界面设计要点-2) - - [数据设计](#数据设计-32) - - [方法说明](#方法说明-30) - - [功能2: 单户采集详情](#功能2-单户采集详情) - - [功能描述](#功能描述-44) - - [业务规则](#业务规则-41) - - [界面设计要点](#界面设计要点-3) - - [模块4: 换表工单模块](#模块4-换表工单模块) - - [功能](#功能-23) - - [功能1: 换表工单处理流程](#功能1-换表工单处理流程) - - [功能描述](#功能描述-45) - - [业务规则](#业务规则-42) - - [业务流程](#业务流程-16) - - [界面设计要点](#界面设计要点-4) - - [数据设计](#数据设计-33) - - [方法说明](#方法说明-31) - - [模块5: 其他工单模块](#模块5-其他工单模块) - - [功能](#功能-24) - - [功能1: 复水工单](#功能1-复水工单) - - [功能描述](#功能描述-46) - - [业务流程](#业务流程-17) - - [功能2: 稽查任务](#功能2-稽查任务) - - [功能描述](#功能描述-47) - - [功能3: 抄表稽查](#功能3-抄表稽查) - - [功能描述](#功能描述-48) - - [界面设计要点](#界面设计要点-5) - - [功能4: 问题上报](#功能4-问题上报) - - [功能描述](#功能描述-49) - - [界面设计要点](#界面设计要点-6) - - [数据设计](#数据设计-34) - - [模块6: 个人信息与系统设置模块](#模块6-个人信息与系统设置模块) - - [功能](#功能-25) - - [功能1: 个人信息管理](#功能1-个人信息管理) - - [功能描述](#功能描述-50) - - [界面设计要点](#界面设计要点-7) - - [功能2: 账户安全配置](#功能2-账户安全配置) - - [功能描述](#功能描述-51) - - [功能3: 系统维护选项](#功能3-系统维护选项) - - [功能描述](#功能描述-52) - - [界面设计要点](#界面设计要点-8) - - [数据设计](#数据设计-35) - - [关键业务规则与注意事项](#关键业务规则与注意事项) - - [数据校验规则](#数据校验规则) - - [状态一致性规则](#状态一致性规则) - - [离线能力支持](#离线能力支持) - - [防误操作机制](#防误操作机制) -- [中间件和其他设计](#中间件和其他设计) - - [缓存设计](#缓存设计) - - [Redis](#redis) - - [消息队列设计](#消息队列设计) - - [RabbitMQ](#rabbitmq) - - [定时任务设计](#定时任务设计) - - [数据库设计](#数据库设计) - - [数据字典设计](#数据字典设计) -- [对外接口](#对外接口-1) - - [金融支付接口](#金融支付接口) - - [银行接口](#银行接口) - - [银行代扣接口详细设计](#银行代扣接口详细设计) - - [第三方支付接口](#第三方支付接口) - - [微信支付接口](#微信支付接口) - - [支付宝接口](#支付宝接口) - - [通信接口](#通信接口) - - [短信平台接口](#短信平台接口) - - [短信发送接口详细设计](#短信发送接口详细设计) - - [邮件接口](#邮件接口) - - [税务接口](#税务接口) - - [开票接口](#开票接口) - - [电子发票开具接口详细设计](#电子发票开具接口详细设计) - - [物联网接口](#物联网接口) - - [集抄系统接口](#集抄系统接口) - - [水表数据采集接口详细设计](#水表数据采集接口详细设计) - - [政务系统接口](#政务系统接口) - - [政务平台对接](#政务平台对接) - - [其他系统接口](#其他系统接口) - - [环卫系统接口](#环卫系统接口) - - [客服系统接口](#客服系统接口) - - [消火栓系统接口](#消火栓系统接口) - - [接口安全设计](#接口安全设计) - - [认证机制](#认证机制) - - [加密机制](#加密机制) - - [限流机制](#限流机制) - - [接口监控](#接口监控) - - [性能监控](#性能监控) - - [错误监控](#错误监控) - - [业务监控](#业务监控) -- [非功能性需求的设计](#非功能性需求的设计) - - [性能的考虑](#性能的考虑) - - [兼容性的考虑](#兼容性的考虑) - - [安全的考虑](#安全的考虑) - - [可移植性的考虑](#可移植性的考虑) - - [集成与测试的考虑](#集成与测试的考虑) - - [可扩展性的考虑](#可扩展性的考虑) - - [可靠性的考虑](#可靠性的考虑) - - [可维护性的考虑](#可维护性的考虑) + - [总体目标](#总体目标) + - [逻辑架构设计](#逻辑架构设计) + - [部署分区设计](#部署分区设计) + - [子系统与模块划分](#子系统与模块划分) +- [统一平台详细设计](#统一平台详细设计) + - [UP-001 统一认证与单点登录](#up-001-统一认证与单点登录) + - [UP-002 组织用户与权限管理](#up-002-组织用户与权限管理) + - [UP-003 参数字典与基础配置](#up-003-参数字典与基础配置) + - [UP-004 审计监控与运维支撑](#up-004-审计监控与运维支撑) +- [营收业务详细设计](#营收业务详细设计) + - [REV-001 客户资料管理](#rev-001-客户资料管理) + - [REV-002 抄表开账](#rev-002-抄表开账) + - [REV-003 营业收费](#rev-003-营业收费) + - [REV-004 账务处理](#rev-004-账务处理) + - [REV-005 发票与税务处理](#rev-005-发票与税务处理) + - [REV-006 催缴与通知](#rev-006-催缴与通知) + - [REV-007 统计分析](#rev-007-统计分析) + - [REV-008 代收与银行业务](#rev-008-代收与银行业务) + - [REV-009 业务参数配置](#rev-009-业务参数配置) +- [表务详细设计](#表务详细设计) + - [METER-001 表务基础管理](#meter-001-表务基础管理) + - [METER-002 表务工单管理](#meter-002-表务工单管理) + - [METER-003 仓储与生命周期管理](#meter-003-仓储与生命周期管理) + - [METER-004 物联网接入与数据同步](#meter-004-物联网接入与数据同步) +- [报装与签章详细设计](#报装与签章详细设计) + - [INST-001 报装申请与受理](#inst-001-报装申请与受理) + - [INST-002 现场踏勘与方案设计](#inst-002-现场踏勘与方案设计) + - [INST-003 施工验收与立户通水](#inst-003-施工验收与立户通水) + - [INST-004 合同签署与电子签章](#inst-004-合同签署与电子签章) + - [INST-005 档案归档与过程留痕](#inst-005-档案归档与过程留痕) +- [客户服务模块详细设计](#客户服务模块详细设计) + - [CS-001 账户绑定管理](#cs-001-账户绑定管理) + - [CS-002 信息查询服务](#cs-002-信息查询服务) + - [CS-003 在线缴费服务](#cs-003-在线缴费服务) + - [CS-004 电子发票服务](#cs-004-电子发票服务) + - [CS-005 营业网点服务](#cs-005-营业网点服务) + - [CS-006 业务办理服务](#cs-006-业务办理服务) + - [CS-007 柜面扫码支付](#cs-007-柜面扫码支付) +- [数据库详细设计](#数据库详细设计) + - [数据库选型与原则](#数据库选型与原则) + - [数据库逻辑架构](#数据库逻辑架构) + - [核心数据模型](#核心数据模型) + - [核心数据表设计](#核心数据表设计) + - [索引与性能设计](#索引与性能设计) +- [接口详细设计](#接口详细设计) + - [接口设计原则](#接口设计原则) + - [统一平台接口](#统一平台接口) + - [营收业务接口](#营收业务接口) + - [表务与物联网接口](#表务与物联网接口) + - [报装与签章接口](#报装与签章接口) + - [客户渠道接口](#客户渠道接口) + - [外部系统接口](#外部系统接口) +- [安全详细设计](#安全详细设计) + - [安全目标与分层防护](#安全目标与分层防护) + - [身份认证与访问控制](#身份认证与访问控制) + - [数据安全与隐私保护](#数据安全与隐私保护) + - [接口安全与审计追踪](#接口安全与审计追踪) + - [安全运营与应急响应](#安全运营与应急响应) +- [部署与运维设计](#部署与运维设计) + - [部署总体方案](#部署总体方案) + - [环境规划](#环境规划) + - [网络与分区设计](#网络与分区设计) + - [监控告警与日志](#监控告警与日志) + - [备份恢复与发布管理](#备份恢复与发布管理) +- [附录](#附录) + - [附录A 模块编号说明](#附录a-模块编号说明) + - [附录B 接口编号说明](#附录b-接口编号说明) + - [附录C 设计约束与统一口径](#附录c-设计约束与统一口径) # 前言 ## 编写目的 -本文档在《概要设计说明书》的基础上,对福建水务营收系统的各核心子系统及模块进行详细的功能设计、流程设计和技术实现说明。 +本文档用于指导福建水务营收系统的详细设计、开发实现、联调测试、部署上线及后续运维,是本项目详细设计阶段的统一主说明书。本文档以 `02_Detailed/01_Detailed_Design.md` 作为唯一主详设文件,吸收模块设计、数据库设计、接口设计、安全设计、部署设计以及报装电子签章专项设计中的可复用内容,形成可直接交付和实施使用的统一版本。 -本文档主要用途: -- 为开发团队提供详细的技术实现指导 -- 为测试团队提供功能测试依据 -- 为运维团队提供系统部署和维护参考 -- 为项目管理提供开发进度跟踪依据 +## 建设背景 -本文档的预期读者包括: -- 系统架构师和开发人员 -- 测试工程师 -- 运维工程师 -- 项目经理和技术负责人 +福建水务营收系统面向集团化、多组织、多渠道的营收业务场景,覆盖客户资料、抄表开账、营业收费、账务处理、表务管理、报装立户、电子签章、客户服务、移动作业、外部支付与政务对接等核心业务。系统建设目标是形成统一平台、统一数据、统一接口、统一安全管控的营收业务支撑体系,满足集团及下属单位的标准化与可扩展管理要求。 -## 背景与任务 +## 设计范围 -福建水务营收系统是为满足福建省水投数字科技有限公司客户服务管理领域的业务需求而建设的综合管理平台。系统以客户关系数据库为核心和基础,实现客户全生命周期管理。 +本文档覆盖以下设计内容: -### 建设背景 - -福建水投集团注册资本46亿元,在全省40多个县市区投资重大水利项目超过450亿元,拥有全级次子公司超过67家,职工人数超3500人。当前,集团正紧紧抓住城乡供水一体化建设的机遇,需要构建以客户为中心的客户服务平台。 - -### 主要任务 - -通过系统的建设,实现: -1. 客户服务管理领域的业务流程梳理再造 -2. 组织架构的优化和管理制度的建设 -3. 绩效考核标准的建设 -4. 构建以客户为中心的客户服务平台 -5. 提高客户服务的质量和客户满意度 +1. 系统总体架构与部署架构设计。 +2. 统一平台、营收业务、表务、报装与签章、客户服务渠道等业务模块详细设计。 +3. 达梦数据库 8.0+ 口径下的核心数据模型、核心表结构、索引与性能设计。 +4. 内部接口、外部接口、安全控制、部署与运维方案。 +5. 关键业务流程、模块关系、接口交互与审计留痕要求。 ## 术语与缩略语 -| **术语、缩写** | **解释** | +| 术语/缩略语 | 说明 | |---|---| -| SaaS | Software as a Service,软件即服务 | -| RBAC | Role-Based Access Control,基于角色的访问控制 | -| JWT | JSON Web Token,基于JSON的Web令牌 | -| OAuth2 | 开放授权标准 | -| RESTful | Representational State Transfer,表现层状态转化 | -| OpenAPI | 开放应用程序接口规范 | -| DDL | Data Definition Language,数据定义语言 | -| DML | Data Manipulation Language,数据操作语言 | -| 站点 | 用于划分用户所属管辖区域,站点可以进行多级管理 | -| 册本 | 又称抄表本或抄表簿,根据抄表线路规划,按排相邻的一些水表给某一个抄表员进行抄表 | -| 用户编号 | 为签定了供用水合同的正式用户分配的唯一识别号 | -| 售水量 | 抄收水量+查处水量±调整水量 | -| 当期应收水费 | 当期售水量乘以不同类别的水价(到户价)所得的金额 | -| 水表抄见率 | (当期应抄用户数-当期估表用户数)/当期应抄用户数×100% | +| SSO | 单点登录 | +| OAuth2.0 | 统一认证授权协议 | +| RBAC | 基于角色的访问控制模型 | +| DM8 | 达梦数据库 8.0+ | +| API | 应用程序接口 | +| CA | 电子认证与电子签章能力 | +| MFA | 多因素认证 | +| ETL | 数据抽取、转换、加载 | ## 参考资料 -- 《福建水务营收系统需求规格说明书》 -- 《福建水务营收系统概要设计说明书》 -- 《福建水务营收系统数据库设计说明书》 -- 《福建水务营收系统接口设计说明书》 -- GB/T 8556-2007 信息技术软件生存周期过程 -- GB/T 9385-2008 计算机软件需求规格说明规范 -- GB/T 8567-2006 计算机软件文档编制规范 +1. 《福建水务营收系统概要设计相关文档》 +2. `02_Detailed/02_Module_Design.md` +3. `02_Detailed/03_CA_Installation_Design.md` +4. `03_Technical/01_Database_Design.md` +5. `03_Technical/02_Table_Specs.md` +6. `03_Technical/03_Interface_Design.md` +7. `03_Technical/04_Security_Design.md` +8. `03_Technical/05_Deployment_Design.md` +9. 福建水投相关业务操作手册及需求说明资料 # 系统总体设计 -## 逻辑架构 +## 总体目标 -系统采用现代化的多层分布式架构,基于微服务设计思想,实现松耦合、高内聚的系统架构。 +福建水务营收系统总体设计遵循“统一平台、业务协同、数据集中、接口标准、安全可控”的原则,实现以下目标: -### 整体架构图 +- 建立统一认证、统一组织、统一权限、统一参数、统一审计基础能力。 +- 构建覆盖营收、表务、报装、客户服务的完整业务闭环。 +- 形成达梦数据库 8.0+ 为核心的数据架构,支撑集团化数据管理与查询分析。 +- 通过标准化接口接入银行、第三方支付、短信、税控、物联网、政务、CA 签章等外部系统。 +- 满足生产部署、容灾备份、日志审计与安全监管要求。 + +## 逻辑架构设计 ```mermaid graph TB - subgraph "表现层" - A1[Web管理端
Vue3 + Element Plus] - A2[移动抄表端
uni-app] - A3[客户微信小程序] - A4[客户支付宝小程序] + U1[柜台/客服/管理人员] --> A1[PC管理端] + U2[抄表员/表务人员] --> A2[移动作业端] + U3[客户用户] --> A3[微信/支付宝/微服务窗] + U4[第三方系统] --> A4[外部系统接口] + + subgraph G[接入与网关层] + G1[统一门户] + G2[API网关] + G3[统一认证中心] end - - subgraph "网关层" - B1[API网关
Spring Cloud Gateway] - B2[负载均衡
Nginx] - B3[认证授权
Spring Security + JWT] + + subgraph B[业务服务层] + B1[统一平台服务] + B2[营收业务服务] + B3[表务管理服务] + B4[报装与签章服务] + B5[客户服务渠道服务] + B6[消息通知与任务调度] end - - subgraph "业务服务层" - C1[统一平台服务
用户权限管理] - C2[营收管理服务
抄表收费核心业务] - C3[表务管理服务
水表全生命周期] - C4[报装管理服务
报装流程管理] - C5[客户服务
线上服务渠道] + + subgraph D[数据与支撑层] + D1[(达梦数据库 8.0+)] + D2[(Redis缓存)] + D3[对象存储/文件服务] + D4[消息队列] + D5[日志审计与监控] end - - subgraph "基础服务层" - D1[权限服务
RBAC权限控制] - D2[工作流服务
Flowable引擎] - D3[消息服务
异步消息处理] - D4[文件服务
文档附件管理] - D5[支付服务
第三方支付集成] - end - - subgraph "数据层" - E1[(达梦数据库 8.0+
主从架构)] - E2[(Redis 6.0+
分布式缓存)] - E3[MinIO
分布式文件存储] - end - - %% 层级间调用关系 - A1 --> B1 - A2 --> B1 - A3 --> B1 - A4 --> B1 - - B1 --> B3 - B2 --> B1 - B3 --> C1 - B3 --> C2 - B3 --> C3 - B3 --> C4 - B3 --> C5 - - C1 --> D1 - C2 --> D2 - C2 --> D3 - C3 --> D4 - C4 --> D2 - C5 --> D5 - - D1 --> E1 - D2 --> E1 - D3 --> E2 - D4 --> E3 - D5 --> E1 + + A1 --> G1 + A2 --> G1 + A3 --> G1 + A4 --> G2 + G1 --> G2 --> G3 + G2 --> B1 + G2 --> B2 + G2 --> B3 + G2 --> B4 + G2 --> B5 + B1 --> D1 + B2 --> D1 + B3 --> D1 + B4 --> D1 + B5 --> D1 + B2 --> D2 + B3 --> D2 + B4 --> D3 + B5 --> D4 + B1 --> D5 + B2 --> D5 + B3 --> D5 + B4 --> D5 + B5 --> D5 ``` -### 系统数据流向图 +### 设计说明 -```mermaid -flowchart TD - subgraph "数据采集层" - A1[移动抄表APP
数据采集] - A2[智能水表
远程数据] - A3[Web管理端
业务录入] - A4[客户端小程序
用户数据] - A5[外部系统
接口数据] - end - - subgraph "数据接入层" - B1[API网关
数据验证] - B2[数据清洗
格式转换] - B3[消息队列
异步处理] - B4[数据缓存
临时存储] - end - - subgraph "业务处理层" - C1[统一平台服务
用户权限] - C2[营收管理服务
核心业务] - C3[表务管理服务
设备管理] - C4[报装管理服务
流程管理] - C5[客户服务
对外服务] - end - - subgraph "数据存储层" - D1[(达梦数据库主库
核心业务数据)] - D2[(达梦数据库从库
查询数据)] - D3[(Redis缓存
热点数据)] - D4[文件存储
附件图片] - D5[(备份库
历史数据)] - end - - subgraph "数据服务层" - E1[查询服务
数据检索] - E2[报表服务
统计分析] - E3[接口服务
对外开放] - E4[推送服务
消息通知] - end - - subgraph "数据展现层" - F1[管理后台
业务操作] - F2[统计大屏
可视化展示] - F3[移动端
现场作业] - F4[客户端
自助服务] - F5[第三方系统
数据集成] - end - - %% 数据流向关系 - A1 -.->|数据采集
格式验证| B1 - A2 -.->|数据采集
格式验证| B1 - A3 -.->|数据采集
格式验证| B1 - A4 -.->|数据采集
格式验证| B1 - A5 -.->|数据采集
格式验证| B1 - - B1 -.->|数据接入
清洗转换| B2 - B2 -.->|数据接入
清洗转换| B3 - B3 -.->|数据接入
清洗转换| B4 - - B4 -.->|业务处理
数据持久化| C1 - B4 -.->|业务处理
数据持久化| C2 - B4 -.->|业务处理
数据持久化| C3 - B4 -.->|业务处理
数据持久化| C4 - B4 -.->|业务处理
数据持久化| C5 - - C1 -.->|数据存储| D1 - C2 -.->|数据存储| D1 - C3 -.->|数据存储| D1 - C4 -.->|数据存储| D1 - C5 -.->|数据存储| D1 - - D1 -.->|数据查询
统计分析| E1 - D2 -.->|数据查询
统计分析| E2 - D3 -.->|数据查询
统计分析| E3 - D4 -.->|数据查询
统计分析| E4 - - E1 -.->|数据服务
接口调用| F1 - E2 -.->|数据服务
接口调用| F2 - E3 -.->|数据服务
接口调用| F3 - E4 -.->|数据服务
接口调用| F4 - E1 -.->|数据服务
接口调用| F5 -``` +1. 统一平台服务提供认证、组织、权限、参数、审计等公共能力。 +2. 营收业务服务承担客户、抄表、开账、收费、账务、发票、催缴、统计与业务工单等核心处理。 +3. 表务管理服务承担设备档案、表务工单、仓储、物联网集抄对接等处理。 +4. 报装与签章服务承担申请受理、现场踏勘、施工验收、合同签署与资料归档。 +5. 客户服务渠道服务面向微信、支付宝、微服务窗等客户侧渠道提供查询、缴费、电子发票与业务办理。 -### 表现层 -- PC端管理后台:基于yudao-ui-admin-vue3框架,提供完整的业务管理功能 -- 移动端抄表APP:基于uni-app框架,支持现场抄表作业 -- 客户端小程序:微信、支付宝小程序,提供客户自助服务 - -### 网关层 -- API网关:基于Spring Cloud Gateway,实现统一的接口管理 -- 负载均衡:Nginx集群,实现高可用的请求分发 -- 认证授权:Spring Security + JWT,提供安全的访问控制 - -### 业务服务层 -- 统一平台服务:用户管理、权限管理、组织管理等基础服务 -- 营收管理服务:抄表、收费、账务等核心业务服务 -- 表务管理服务:水表仓库、工单管理等设备管理服务 -- 报装管理服务:报装流程管理服务 -- 客户服务:微信、支付宝等客户服务渠道 - -### 数据层 -- 主数据库:达梦数据库 8.0+,采用主从架构,保证数据的高可用性 -- 缓存:Redis 6.0+,分布式缓存集群,提升系统性能 -- 文件存储:MinIO分布式文件存储,处理系统文件和附件 - -## 物理架构 - -系统采用分布式部署架构,通过多个服务器集群实现高可用和高性能。 - -### 物理部署图 +## 部署分区设计 ```mermaid graph TB - subgraph "DMZ区域" - subgraph "负载均衡集群" - LB1[Nginx 主
8核16G] - LB2[Nginx 备
8核16G] - WAF[Web应用防火墙] - end + INTERNET[互联网/政务外网/合作机构] --> DMZ[DMZ接入区] + DMZ --> APP[应用服务区] + APP --> DATA[数据服务区] + APP --> OPS[管理运维区] + + subgraph DMZ[DMZ接入区] + LB[负载均衡/Nginx] + WAF[WAF与边界防护] + GW[API网关] end - - subgraph "应用服务区" - subgraph "Web服务集群" - WEB1[Web服务器1
8核32G] - WEB2[Web服务器2
8核32G] - end - - subgraph "应用服务集群" - APP1[应用服务器1
16核64G] - APP2[应用服务器2
16核64G] - end - - subgraph "中间件集群" - MQ1[消息队列1
8核16G] - MQ2[消息队列2
8核16G] - end + + subgraph APP[应用服务区] + APP1[统一平台服务] + APP2[营收业务服务] + APP3[表务服务] + APP4[报装签章服务] + APP5[客户渠道服务] end - - subgraph "数据服务区" - subgraph "数据库集群" - DB1[达梦数据库主库
32核128G] - DB2[达梦数据库从库
32核128G] - DB3[达梦数据库备库
32核128G] - end - - subgraph "缓存集群" - REDIS1[Redis主节点
16核32G] - REDIS2[Redis从节点
16核32G] - REDIS3[Redis哨兵
8核16G] - end - - subgraph "文件存储集群" - FILE1[MinIO节点1
8核32G 10TB] - FILE2[MinIO节点2
8核32G 10TB] - FILE3[MinIO节点3
8核32G 10TB] - end + + subgraph DATA[数据服务区] + DBM[(达梦主库)] + DBS[(达梦备库/从库)] + REDIS[(Redis)] + FILE[文件存储] end - - subgraph "管理服务区" - MONITOR[监控服务器
Prometheus + Grafana
8核16G] - BACKUP[备份服务器
8核32G 20TB] - JUMP[跳板服务器
4核8G] - LOG[日志服务器
ELK Stack
16核32G] - end - - %% 网络连接关系 - Internet --> WAF - WAF --> LB1 - WAF --> LB2 - LB1 --> WEB1 - LB1 --> WEB2 - LB2 --> WEB1 - LB2 --> WEB2 - - WEB1 --> APP1 - WEB1 --> APP2 - WEB2 --> APP1 - WEB2 --> APP2 - - APP1 --> DB1 - APP1 --> REDIS1 - APP1 --> FILE1 - APP2 --> DB1 - APP2 --> REDIS1 - APP2 --> FILE1 - - DB1 -.->|主从同步| DB2 - DB1 -.->|主备同步| DB3 - REDIS1 -.->|主从同步| REDIS2 -``` -### 容器化部署架构 - -```mermaid -graph TB - subgraph "容器化部署架构" - subgraph "前端容器" - WEB_C1[Web前端容器1
nginx:alpine
2核4G] - WEB_C2[Web前端容器2
nginx:alpine
2核4G] - end - - subgraph "后端应用容器" - APP_C1[应用容器1
openjdk:17-jre
4核8G] - APP_C2[应用容器2
openjdk:17-jre
4核8G] - APP_C3[应用容器3
openjdk:17-jre
4核8G] - end - - subgraph "数据存储容器" - DB_C1[达梦数据库主容器
dm:8.0
8核16G] - DB_C2[达梦数据库从容器
dm:8.0
8核16G] - REDIS_C[Redis容器
redis:7-alpine
2核4G] - MINIO_C[MinIO容器
minio/minio
2核4G] - end - - subgraph "监控服务容器" - MONITOR_C[监控容器
prom/prometheus
2核4G] - GRAFANA_C[图表容器
grafana/grafana
1核2G] - ELK_C[日志容器
elastic/elasticsearch
4核8G] - end - end - - subgraph "容器编排" - DOCKER[Docker Engine] - COMPOSE[Docker Compose] - SWARM[Docker Swarm
可选] - end - - %% 容器间调用关系 - WEB_C1 --> APP_C1 - WEB_C1 --> APP_C2 - WEB_C2 --> APP_C2 - WEB_C2 --> APP_C3 - - APP_C1 --> DB_C1 - APP_C1 --> REDIS_C - APP_C1 --> MINIO_C - APP_C2 --> DB_C1 - APP_C2 --> REDIS_C - APP_C3 --> DB_C1 - APP_C3 --> REDIS_C - - DB_C1 -.->|主从同步| DB_C2 - - MONITOR_C -.->|监控| APP_C1 - MONITOR_C -.->|监控| APP_C2 - MONITOR_C -.->|监控| APP_C3 - GRAFANA_C --> MONITOR_C - ELK_C -.->|日志收集| APP_C1 - ELK_C -.->|日志收集| APP_C2 - ELK_C -.->|日志收集| APP_C3 -``` - -### 硬件配置规格表 - -**DMZ区域配置** - -| 设备类型 | 配置规格 | 数量 | 主要作用 | 备注 | -|---------|---------|------|----------|------| -| 负载均衡器 | 8核16G,双网卡,1TB SSD | 2台 | 负载均衡、高可用 | 主备模式 | -| Web应用防火墙 | 硬件WAF设备或软件WAF | 1台 | 安全防护、入侵检测 | 可选硬件或软件方案 | - -**应用服务区配置** - -| 设备类型 | 配置规格 | 数量 | 主要作用 | 备注 | -|---------|---------|------|----------|------| -| Web服务器 | 8核32G,1TB SSD,千兆网卡 | 2台 | 前端应用部署 | 负载均衡集群 | -| 应用服务器 | 16核64G,2TB SSD,万兆网卡 | 2台 | 后端服务部署 | 支持水平扩展 | -| 消息队列服务器 | 8核16G,1TB SSD,千兆网卡 | 2台 | 异步消息处理 | Redis/RabbitMQ集群 | - -**数据服务区配置** - -| 设备类型 | 配置规格 | 数量 | 主要作用 | 备注 | -|---------|---------|------|----------|------| -| 数据库服务器 | 32核128G,10TB SSD,万兆网卡 | 3台 | 主从备数据库 | 达梦数据库分布式架构 | -| 缓存服务器 | 16核32G,1TB SSD,万兆网卡 | 3台 | Redis集群 | 主从哨兵模式 | -| 文件存储服务器 | 8核32G,10TB HDD,千兆网卡 | 3台 | 分布式文件存储 | MinIO集群模式 | - -**管理服务区配置** - -| 设备类型 | 配置规格 | 数量 | 主要作用 | 备注 | -|---------|---------|------|----------|------| -| 监控服务器 | 8核16G,1TB SSD,千兆网卡 | 1台 | 系统监控告警 | Prometheus + Grafana | -| 备份服务器 | 8核32G,20TB HDD,千兆网卡 | 1台 | 数据备份恢复 | 定时备份策略 | -| 跳板服务器 | 4核8G,500GB SSD,千兆网卡 | 1台 | 运维管理 | 堡垒机功能 | -| 日志服务器 | 16核32G,5TB SSD,万兆网卡 | 1台 | 日志收集分析 | ELK Stack | - -### DMZ区域 -- 负载均衡器:Nginx集群,实现请求分发和故障转移 -- Web应用防火墙:WAF防护,防止Web攻击和恶意访问 - -### 应用服务区 -- Web服务集群:2台服务器,8核32G,部署前端应用和静态资源 -- 应用服务集群:2台服务器,16核64G,部署后端微服务应用 - -### 数据服务区 -- 数据库集群:达梦数据库主从架构,32核128G,保证数据高可用 -- 缓存集群:Redis集群,16核32G,提升系统响应性能 -- 文件存储:分布式文件存储,8核32G 10TB,处理业务文件 - -### 管理服务区 -- 监控服务器:系统监控,8核16G,实时监控系统状态 -- 备份服务器:数据备份,8核32G 20TB,保证数据安全 -- 跳板服务器:运维管理,4核8G,安全的运维入口 - -## 对外接口 - -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-001 | 银行代扣接口 | 银行托收代扣缴费 | HTTPS | 用户信息、缴费金额 | 扣款结果 | -| EXT-002 | 微信支付接口 | 微信在线支付 | HTTPS | 订单信息、金额 | 支付结果 | -| EXT-003 | 支付宝支付接口 | 支付宝在线支付 | HTTPS | 订单信息、金额 | 支付结果 | -| EXT-004 | 短信平台接口 | 短信通知发送 | HTTPS | 手机号、短信内容 | 发送结果 | -| EXT-005 | 集抄系统接口 | 智能水表数据采集 | TCP/HTTPS | 水表编号 | 抄表数据 | - -## 子系统列表 - -| 子系统编号 | 子系统名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| SYS-001 | 统一平台 | 单点登录、系统管理、权限管理 | 自行开发 | -| SYS-002 | 营收系统 | 抄表开账、收费管理、账务处理 | 自行开发 | -| SYS-003 | 表务系统 | 表务工单、表务仓库管理 | 自行开发 | -| SYS-004 | 报装系统 | 报装流程管理 | 自行开发 | -| SYS-005 | 客户服务 | 微信、支付宝服务窗 | 自行开发 | - -## 子系统相互关系与接口 - -各子系统之间的主要调用关系如下: - -1. **统一平台 → 营收系统**:提供用户认证、权限控制、组织机构信息 -2. **营收系统 → 表务系统**:提供客户信息、水表信息,接收换表工单 -3. **营收系统 → 报装系统**:接收新用户立户信息 -4. **营收系统 → 客户服务**:提供账单信息、缴费接口 -5. **表务系统 → 营收系统**:提供水表库存信息、换表完成通知 - -# 子系统1设计: 统一平台 - -## 功能与界面 - -统一平台是整个系统的基础支撑平台,提供统一的用户认证、权限管理、组织管理等功能。主要功能包括: - -- 单点登录:统一认证入口,支持多种登录方式 -- 系统管理:组织机构、员工管理、角色权限管理 -- 菜单配置:系统菜单和功能模块配置 -- 数据字典:系统基础代码数据管理 -- 系统监控:在线用户、系统性能监控 - -### 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| UP-001 | 单点登录模块 | 用户认证、授权管理 | 自行开发 | -| UP-002 | 系统管理模块 | 组织、用户、角色管理 | 自行开发 | -| UP-003 | 权限控制模块 | 菜单权限、数据权限 | 自行开发 | -| UP-004 | 监控管理模块 | 系统监控、日志管理 | 自行开发 | - -### 模块间关系 - -#### 权限管理功能群 - -统一平台的权限管理功能群包括用户管理、角色管理、菜单管理等模块,它们之间的关系如下: - -- 用户管理模块:管理系统用户基本信息 -- 角色管理模块:定义系统角色和权限 -- 菜单管理模块:配置系统菜单和功能权限 -- 部门管理模块:管理组织架构信息 - -#### 系统监控功能群 - -系统监控功能群包括在线用户监控、系统性能监控、操作日志等模块。 - -### 模块设计 - -#### 模块1: 单点登录 - -##### 功能 - -##### 功能1: 用户登录认证 - -###### 设计图 - -用户登录界面,包含用户名、密码输入框,以及验证码输入。 - -###### 功能描述 - -1. **功能概述** - - 提供统一的用户登录认证功能,基于OAuth2.0协议实现单点登录,支持用户名密码登录、手机号短信验证码登录等多种认证方式。登录成功后生成JWT令牌,用于后续请求的身份验证。 - -2. **操作权限** - - 所有系统用户均可访问登录功能,无需特殊权限。 - -3. **功能约束** - - - 密码错误超过5次将锁定账户30分钟 - - 验证码有效期为5分钟 - - JWT令牌有效期为2小时,支持自动刷新 - -###### 输入输出数据 - -1. **输入数据** - - - 用户名:长度3-30位,支持字母、数字、下划线 - - 密码:长度6-20位,必须包含字母和数字 - - 验证码:4位数字或字母组合 - - 记住我:布尔值,可选 - -2. **输出数据** - - - 登录成功:返回用户信息、权限信息、JWT令牌 - - 登录失败:返回错误信息和错误码 - -###### 业务规则 - -1. **密码规则**:密码必须包含字母和数字,长度6-20位 -2. **验证码规则**:验证码区分大小写,有效期5分钟 -3. **账户锁定规则**:连续5次密码错误将锁定账户30分钟 -4. **OAuth2.0协议支持**:支持授权码模式(Authorization Code)和客户端凭证模式(Client Credentials) -5. **令牌管理规则**:JWT令牌有效期2小时,支持自动刷新,OAuth2.0访问令牌有效期4小时 - -###### 业务流程 - -**标准登录流程:** -1. 用户访问登录页面 -2. 输入用户名、密码、验证码 -3. 系统验证输入参数的有效性 -4. 系统验证用户账户状态(是否锁定、是否禁用) -5. 系统验证密码是否正确 -6. 验证成功后生成JWT令牌 -7. 返回用户信息和令牌给前端 -8. 前端保存令牌并跳转到首页 - -**OAuth2.0授权码模式流程:** -1. 客户端应用重定向用户到授权服务器(/oauth/authorize) -2. 用户在授权服务器进行身份认证 -3. 用户授权后,授权服务器重定向回客户端并携带授权码 -4. 客户端使用授权码向授权服务器请求访问令牌(/oauth/token) -5. 授权服务器验证授权码并返回访问令牌和刷新令牌 -6. 客户端使用访问令牌访问受保护的资源 - -###### 数据设计 - -涉及的主要数据表: -- `system_users`:用户基本信息表 -- `system_login_log`:登录日志表 -- `system_user_session`:用户会话表 -- `system_oauth2_client`:OAuth2客户端表 -- `system_oauth2_access_token`:OAuth2访问令牌表 -- `system_oauth2_refresh_token`:OAuth2刷新令牌表 -- `system_oauth2_code`:OAuth2授权码表 -- `system_oauth2_approve`:OAuth2批准表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| login | 用户登录 | username:用户名(必填)
password:密码(必填)
captcha:验证码(必填) | 登录结果、用户信息、JWT令牌 | -| logout | 用户登出 | token:JWT令牌(必填) | 登出结果 | -| refreshToken | 刷新令牌 | refreshToken:刷新令牌(必填) | 新的JWT令牌 | -| oauthAuthorize | OAuth2.0授权 | client_id:客户端ID(必填)
response_type:响应类型(必填)
redirect_uri:重定向URI(必填)
scope:权限范围(可选) | 授权页面或授权码 | -| oauthToken | OAuth2.0获取令牌 | grant_type:授权类型(必填)
code:授权码(必填)
client_id:客户端ID(必填)
client_secret:客户端密钥(必填) | 访问令牌、刷新令牌、令牌类型 | -| oauthRefresh | OAuth2.0刷新令牌 | grant_type:授权类型(必填)
refresh_token:刷新令牌(必填)
client_id:客户端ID(必填) | 新的访问令牌、刷新令牌 | - -###### 其他说明 - -支持多租户登录,根据租户配置显示不同的登录界面风格和Logo。 - -##### 功能2: 第三方登录 - -###### 功能描述 - -支持通过微信、支付宝等第三方平台进行登录认证。 - -###### 业务规则 - -1. 第三方登录需要先绑定系统账户 -2. 支持手机号一键绑定 -3. 首次登录需要完善用户信息 - -#### 接口 - -##### 接口1: 用户登录接口 - -a、**接口名称** - -| 用户登录接口 | -|---| - -b、**接口描述** - -| 1. 用户身份认证登录
2. 支持用户名密码登录
3. 支持手机号短信验证码登录 | -|---| - -c、**请求地址** - -| /admin-api/system/auth/login | -|---| - -d、**请求方式** - -| POST | -|---| - -e、**请求参数** - -1) Header参数 - -| 参数名 | 必选 | 类型/参数值 | 说明 | -|---|---|---|---| -| Content-Type | 是 | application/json | 请求参数类型 | - -2) Body参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| username | 是 | string | 3 < length < 30 | 用户账号 | | -| password | 是 | string | 6 < length < 20 | 密码 | | -| captchaVerification | 是 | string | length = 4 | 验证码 | | - -3) 请求实例 - -```json -{ - "username": "admin", - "password": "123456", - "captchaVerification": "1234" -} -``` - -f、**响应参数** - -1) 返回参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| accessToken | 是 | string | | 访问令牌 | | -| refreshToken | 是 | string | | 刷新令牌 | | -| expiresTime | 是 | number | | 过期时间 | | - -2) 返回示例 - -```json -{ - "code": 0, - "msg": "成功", - "data": { - "accessToken": "eyJhbGciOiJIUzI1NiJ9...", - "refreshToken": "eyJhbGciOiJIUzI1NiJ9...", - "expiresTime": 1640995200000 - } -} -``` - -g、**备注** - -登录成功后需要将accessToken存储到本地,用于后续API调用的身份验证。 - -h、**错误响应码** - -| 错误码 | 错误描述 | 原因 | 解决方案 | 示例值 | -|---|---|---|---|---| -| 1002000000 | 用户账号或密码不正确 | 用户名或密码错误 | 检查用户名和密码 | 001 | -| 1002000002 | 验证码不存在 | 验证码已过期或不存在 | 重新获取验证码 | 002 | - -#### 模块2: 系统管理 - -##### 功能 - -##### 功能1: 用户管理 - -###### 设计图 - -用户管理界面,包含用户列表、新增/编辑用户对话框、用户详情页等。 - -###### 功能描述 - -1. **功能概述** - - 对系统用户进行统一管理,包括用户的新增、修改、删除、查询等操作。支持用户角色分配、部门归属设置、用户状态管理等功能。 - -2. **操作权限** - - 需要具有用户管理权限的管理员才能执行用户管理操作。 - -3. **功能约束** - - - 用户名不能重复 - - 手机号不能重复 - - 超级管理员不能被删除 - - 不能删除当前登录用户 - -###### 输入输出数据 - -1. **输入数据** - - - 用户基本信息:用户名、昵称、邮箱、手机号 - - 组织信息:所属部门、岗位 - - 权限信息:角色分配 - - 状态信息:启用/禁用状态 - -2. **输出数据** - - - 用户列表:分页展示用户信息 - - 用户详情:完整的用户信息 - -###### 业务规则 - -1. **用户名规则**:用户名为系统唯一标识,不可重复,长度3-30位 -2. **手机号规则**:手机号必须为11位数字,不可重复 -3. **密码规则**:初始密码由系统自动生成,用户首次登录需修改 -4. **部门规则**:用户必须归属于某个部门 - -###### 业务流程 - -1. **新增用户流程**: - - 填写用户基本信息 - - 选择所属部门和岗位 - - 分配用户角色 - - 设置用户状态 - - 保存用户信息 - - 发送初始密码通知 - -2. **修改用户流程**: - - 查询用户信息 - - 修改用户信息 - - 更新用户权限 - - 保存修改结果 - -###### 数据设计 - -主要涉及的数据表: -- `system_users`:用户基本信息 -- `system_user_role`:用户角色关联 -- `system_dept`:部门信息 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createUser | 创建用户 | 用户信息对象(必填) | 创建结果 | -| updateUser | 更新用户 | 用户ID(必填)、用户信息对象(必填) | 更新结果 | -| deleteUser | 删除用户 | 用户ID(必填) | 删除结果 | -| getUserPage | 分页查询用户 | 查询条件(可选)、分页参数(必填) | 用户列表 | - -##### 功能2: 角色管理 - -###### 功能描述 - -管理系统角色和权限,支持角色的增删改查、权限分配等功能。 - -#### 接口 - -##### 接口1: 用户管理接口 - -参考上述用户管理接口规范。 - -# 子系统2设计: 营收系统 - -## 功能与界面 - -营收系统是水务业务的核心系统,主要负责客户资料管理、抄表开账、营业收费、账务处理、发票管理等核心业务功能。 - - -## 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| REV-001 | 客户资料管理 | 客户信息管理、分组管理 | 自行开发 | -| REV-002 | 抄表开账 | 抄表录入、复核开账 | 自行开发 | -| REV-003 | 营业收费 | 柜台收费、缴费管理 | 自行开发 | -| REV-004 | 账务处理 | 账务调整、退款处理 | 自行开发 | -| REV-005 | 发票管理 | 发票开具、查询管理 | 自行开发 | -| REV-006 | 催缴管理 | 欠费催缴、短信通知 | 自行开发 | - -## 模块间关系 - -### 营收核心业务群 - -营收系统的核心业务流程:客户资料管理 → 抄表开账 → 营业收费 → 账务处理 → 发票管理 - -### 客户服务业务群 - -围绕客户服务的业务流程:客户资料管理 → 催缴管理 → 客户服务 - -## 模块设计 - -### 模块1: 客户资料管理 - -#### 功能 - -##### 功能1: 客户信息管理 - -###### 设计图 - -客户信息管理界面包含客户列表、查询条件、新增/编辑表单等功能区域。 - -###### 功能描述 - -1. **功能概述** - - 客户信息管理功能提供完整的客户档案管理,包括客户基本信息、用水信息、联系方式等的增删改查操作。支持客户分组管理、批量导入导出等功能。 - -2. **操作权限** - - - 营收管理员:完整的客户信息管理权限 - - 营收操作员:客户信息查询和基本维护权限 - - 抄表员:客户信息查询权限 - -3. **功能约束** - - - 客户编号必须唯一,系统自动生成 - - 必须填写客户姓名、联系电话等必要信息 - - 客户信息变更需要保留变更历史记录 - -###### 输入输出数据 - -1. **输入数据** - - - 客户基本信息:姓名、证件号码、联系电话、地址等 - - 用水信息:水表编号、用水性质、收费方式等 - - 分组信息:客户分组、抄表册本、抄表员等 - -2. **输出数据** - - - 客户档案信息:完整的客户档案数据 - - 客户列表:支持分页查询的客户列表 - - 导出文件:Excel格式的客户信息文件 - -###### 业务规则 - -1. 客户编号自动生成,格式为:地区代码+顺序号(6位数字) -2. 同一地址下可以有多个客户,但水表编号不能重复 -3. 客户信息变更时,需要记录变更人、变更时间和变更原因 -4. 客户销户时,需要确认无欠费且水表已拆除 - -###### 业务流程 - -```mermaid -flowchart TD - Start([开始客户建档]) --> CheckInput[验证客户信息] - CheckInput --> ValidInput{信息是否完整?} - ValidInput -->|否| InputError[提示缺失信息] - InputError --> CheckInput - ValidInput -->|是| CheckDuplicate[检查重复客户] - CheckDuplicate --> IsDuplicate{是否存在重复?} - IsDuplicate -->|是| DuplicateError[提示重复客户] - DuplicateError --> CheckInput - IsDuplicate -->|否| GenerateCode[生成客户编号] - GenerateCode --> SaveCustomer[保存客户信息] - SaveCustomer --> CreateAccount[创建客户账户] - CreateAccount --> AssignMeter[分配水表] - AssignMeter --> SetBook[设置抄表册本] - SetBook --> NotifySuccess[建档成功通知] - NotifySuccess --> End([完成建档]) -``` - -###### 数据设计 - -主要涉及以下数据表: -- `customer_info`:客户基本信息表 -- `customer_change_log`:客户变更日志表 -- `customer_account`:客户账户信息表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createCustomer | 创建新客户 | customerInfo:客户信息(必填) | Customer对象 | -| updateCustomer | 更新客户信息 | id:客户ID(必填),customerInfo:客户信息(必填) | Boolean类型:true/false | -| deleteCustomer | 删除客户 | id:客户ID(必填) | Boolean类型:true/false | -| getCustomerById | 根据ID获取客户 | id:客户ID(必填) | Customer对象 | -| getCustomerList | 获取客户列表 | pageNum:页码(选填),pageSize:页面大小(选填) | PageInfo | - -###### 其他说明 - -客户信息管理模块与抄表开账、营业收费等模块紧密关联,客户信息的准确性直接影响到后续的业务处理。 - -##### 功能2: 抄表数据录入 - -###### 功能描述 - -抄表数据录入功能支持多种抄表方式,包括现场抄表、远程抄表、客户自报等,提供数据校验和异常处理功能。 - -###### 抄表开账业务流程图 - -```mermaid -flowchart TD - A[开始抄表] --> B{选择抄表方式} - B -->|手工抄表| C[手工录入抄表数据] - B -->|PDA抄表| D[PDA现场抄表] - B -->|远传抄表| E[自动采集抄表数据] - B -->|批量导入| F[Excel批量导入] - - C --> G[系统数据验证] - D --> H[PDA数据上传] - E --> I[远传数据同步] - F --> J[批量数据校验] - - H --> G - I --> G - J --> G - - G --> K{数据是否有效?} - K -->|否| L[数据修正] - L --> G - K -->|是| M[抄表数据复核] - - M --> N{复核是否通过?} - N -->|否| O[标记异常数据] - O --> P[人工处理异常] - P --> M - N -->|是| Q[计算用水量] - - Q --> R[计算水费金额] - R --> S[生成账单] - S --> T[账单审核] - T --> U{审核是否通过?} - U -->|否| V[退回修改] - V --> R - U -->|是| W[确认开账] - W --> X[发送缴费通知] - X --> Y([完成抄表开账]) -``` - -###### 业务规则 - -1. **抄表数据验证规则**: - - 本期抄数不能小于上期抄数 - - 月用水量不能超过设定的最大用水量限制 - - 连续几个月用水量为0需要人工确认 - -2. **异常数据处理规则**: - - 抄表数据异常自动标记,需要人工复核 - - 超出正常用水量范围的数据需要现场核实 - - 连续估抄超过3个月需要强制抄表 - -3. **开账计算规则**: - - 按照阶梯水价计算水费 - - 污水费按照用水量的一定比例计算 - - 其他费用根据客户类型和政策文件计算 - -###### 数据设计 - -主要涉及以下数据表: -- `reading_record`:抄表记录表 -- `billing_record`:开账记录表 -- `meter_info`:水表信息表 -- `price_policy`:价格政策表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| submitReading | 提交抄表数据 | meterCode:水表编号(必填),reading:抄表数据(必填) | Boolean类型:true/false | -| validateReading | 验证抄表数据 | readingData:抄表数据(必填) | ValidationResult对象 | -| calculateBill | 计算水费账单 | customerId:客户ID(必填),usage:用水量(必填) | BillInfo对象 | -| approveReading | 审核抄表数据 | readingId:抄表记录ID(必填),approveResult:审核结果(必填) | Boolean类型:true/false | - -#### 接口 - -##### 接口1: 客户信息查询接口 - -a、**接口名称** - -| 客户信息查询接口 | -|---| - -b、**接口描述** - -| 1. 查询客户基本信息
2. 支持多条件组合查询
3. 支持分页查询和排序 | -|---| - -c、**请求地址** - -| /admin-api/revenue/customer/page | -|---| - -d、**请求方式** - -| GET | -|---| - -e、**请求参数** - -1) Query参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| pageNo | 否 | number | > 0 | 页码 | 默认为1 | -| pageSize | 否 | number | 1-100 | 每页大小 | 默认为10 | -| customerNo | 否 | string | | 客户编号 | 支持模糊查询 | -| customerName | 否 | string | | 客户名称 | 支持模糊查询 | -| status | 否 | number | 0,1,2 | 客户状态 | 0正常1停用2注销 | - -f、**响应参数** - -1) 返回参数 - -| 参数名 | 必选 | 类型 | 说明 | 备注 | -|---|---|---|---|---| -| list | 是 | array | 客户列表 | | -| total | 是 | number | 总记录数 | | - -2) 返回示例 - -```json -{ - "code": 0, - "msg": "成功", - "data": { - "list": [ - { - "id": 1, - "customerNo": "001202400001", - "customerName": "张三", - "customerType": "个人", - "phone": "13800138000", - "address": "福州市鼓楼区某小区1号楼101室", - "status": 0 - } - ], - "total": 1 - } -} -``` - -### 模块2: 抄表开账 - -#### 功能 - -##### 功能1: 抄表录入 - -###### 设计图 - -抄表录入界面,包含册本选择、抄表数据录入、异常处理等功能。 - -###### 功能描述 - -1. **功能概述** - - 支持手工、PDA、远传导入、Excel导入等多种抄表方式。录入时系统自动计算水量,并与历史平均值比较,对"量高"、"量低"情况进行提示。 - -2. **操作权限** - - 抄表员、抄表管理员具有抄表录入权限。 - -3. **功能约束** - - - 抄表员只能操作自己负责的册本 - - 已复核的数据不能再次修改 - - 估抄连续超过3次需要现场核实 - -###### 输入输出数据 - -1. **输入数据** - - - 册本信息:册本编号、抄表周期、抄表员 - - 抄表数据:水表编号、本期抄数、抄表日期、抄表状态 - - 异常信息:异常类型、异常说明、处理方式 - -2. **输出数据** - - - 抄表记录:完整的抄表数据记录 - - 异常统计:异常数据统计报表 - - 抄表进度:册本抄表完成进度 - -###### 业务规则 - -1. **抄表数据验证**: - - 本期抄数必须大于等于上期抄数 - - 用水量异常(超出正常范围)需要标记 - - 连续0用水量需要人工确认 - -2. **估抄处理规则**: - - 允许临时估抄,但需要标记估抄状态 - - 估抄连续超过3次强制要求实抄 - - 估抄用水量按历史平均值计算 - -3. **异常处理规则**: - - 系统自动识别异常数据并标记 - - 异常数据需要抄表员确认或重新抄表 - - 特殊异常需要管理员审核 - -###### 业务流程 - -```mermaid -flowchart TD - Start([开始抄表流程]) --> SelectBook[选择抄表册本] - SelectBook --> LoadCustomers[加载册本客户] - LoadCustomers --> SelectMethod{选择抄表方式} - - SelectMethod -->|手工录入| ManualInput[手工录入抄表数据] - SelectMethod -->|PDA抄表| PDAInput[PDA设备录入] - SelectMethod -->|远传采集| RemoteCollect[自动采集远传数据] - SelectMethod -->|Excel导入| ExcelImport[Excel批量导入] - - ManualInput --> ValidateData[数据验证] - PDAInput --> SyncPDA[PDA数据同步] - RemoteCollect --> ValidateRemote[远传数据验证] - ExcelImport --> ValidateExcel[Excel数据验证] - - SyncPDA --> ValidateData - ValidateRemote --> ValidateData - ValidateExcel --> ValidateData - - ValidateData --> CheckException{检查异常} - CheckException -->|有异常| MarkException[标记异常数据] - CheckException -->|无异常| SaveReading[保存抄表数据] - - MarkException --> HandleException{异常处理方式} - HandleException -->|估抄| EstimateReading[按历史均值估抄] - HandleException -->|重抄| ReturnToInput[返回重新录入] - HandleException -->|确认| ConfirmException[确认异常数据] - - EstimateReading --> SaveReading - ReturnToInput --> ManualInput - ConfirmException --> SaveReading - - SaveReading --> CheckProgress{检查抄表进度} - CheckProgress -->|未完成| LoadCustomers - CheckProgress -->|已完成| CompleteReading[完成抄表] - CompleteReading --> End([结束抄表流程]) -``` - -###### 数据设计 - -主要涉及以下数据表: -- `reading_book`:抄表册本表 -- `reading_record`:抄表记录表 -- `meter_info`:水表信息表 -- `customer_info`:客户信息表 -- `reading_exception`:抄表异常表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| loadReadingBook | 加载抄表册本 | bookId:册本ID(必填) | ReadingBook对象 | -| submitReadingData | 提交抄表数据 | readingData:抄表数据(必填) | SubmitResult对象 | -| validateReading | 验证抄表数据 | meterCode:水表编号(必填),currentReading:本期抄数(必填) | ValidationResult对象 | -| markException | 标记异常数据 | readingId:抄表记录ID(必填),exceptionType:异常类型(必填) | Boolean类型:true/false | -| getReadingProgress | 获取抄表进度 | bookId:册本ID(必填) | ProgressInfo对象 | - -###### 其他说明 - -抄表录入是营收系统的起始环节,数据质量直接影响后续的开账和收费环节。系统提供多种抄表方式以适应不同的业务场景。 - -##### 功能2: 复核开账 - -###### 功能描述 - -内勤人员对抄表数据进行审核,审核通过后生成账单。 - -###### 业务规则 - -1. 复核人员不能复核自己录入的抄表数据 -2. 异常抄表数据必须提供处理说明 -3. 复核通过的数据才能进入开账流程 - -#### 接口 - -##### 接口1: 抄表数据提交接口 - -a、**接口名称** - -| 抄表数据提交接口 | -|---| - -b、**接口描述** - -| 1. 提交单条或批量抄表数据
2. 自动计算用水量
3. 检测异常用水情况 | -|---| - -c、**请求地址** - -| /admin-api/revenue/reading/submit | -|---| - -d、**请求方式** - -| POST | -|---| - -e、**请求参数** - -2) Body参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| bookId | 是 | number | > 0 | 册本ID | | -| meterId | 是 | number | > 0 | 水表ID | | -| currentReading | 是 | number | ≥ 0 | 本期读数 | | -| readingStatus | 是 | string | | 抄表状态 | 正常/故障/估读等 | -| remark | 否 | string | | 备注 | | - -f、**响应参数** - -2) 返回示例 - -```json -{ - "code": 0, - "msg": "成功", - "data": { - "readingId": 1001, - "waterUsage": 25.5, - "isAbnormal": false, - "abnormalType": null - } -} -``` - -### 模块3: 营业收费 - -#### 功能 - -##### 功能1: 柜台收费 - -###### 功能描述 - -营业厅核心功能,支持通过客户编号、姓名、地址等多种方式快速定位客户欠费信息,支持多种支付方式。 - -###### 业务规则 - -1. 收费员每日下班前必须进行"柜台结账" -2. 结账前,收错的账款可以执行"红冲"操作 -3. 支持现金、POS机、微信、支付宝等多种支付方式 - -###### 设计图 - -柜台收费界面,包含客户查询、账单显示、收费录入、票据打印等功能区域。 - -###### 功能描述 - -1. **功能概述** - - 提供营业厅柜台现金收费、银行卡收费等服务,支持实时收费、预存款充值、欠费缴纳等多种收费场景。 - -2. **操作权限** - - - 收费员:柜台收费操作权限 - - 收费主管:收费审核和退款权限 - - 系统管理员:收费参数配置权限 - -3. **功能约束** - - - 收费员每日需要进行开账和结账操作 - - 现金收费金额需要与库存现金核对 - - 大额收费(超过设定金额)需要主管确认 - -###### 柜台收费业务流程图 - -```mermaid -flowchart TD - A[客户到营业厅缴费] --> B[收费员查询客户信息] - B --> C{客户是否存在?} - C -->|否| D[提示客户不存在] - D --> E[核实客户信息] - E --> B - C -->|是| F[显示客户欠费信息] - - F --> G[选择缴费账单] - G --> H[确认缴费金额] - H --> I{选择支付方式} - - I -->|现金支付| J[现金收款] - I -->|银行卡支付| K[POS机刷卡] - I -->|扫码支付| L[扫码收款] - I -->|预存款抵扣| M[预存款扣减] - - J --> N[找零处理] - K --> O[确认支付成功] - L --> P[确认支付成功] - M --> Q[确认余额充足] - - N --> R[生成收费记录] - O --> R - P --> R - Q --> S{余额是否充足?} - - S -->|否| T[提示余额不足] - T --> I - S -->|是| R - - R --> U[打印收费凭证] - U --> V[更新账单状态] - V --> W{是否有其他费用?} - - W -->|是| X[显示其他欠费] - X --> G - W -->|否| Y[完成缴费] - Y --> Z[客户离开] - Z --> AA([结束收费流程]) -``` - -###### 输入输出数据 - -1. **输入数据** - - - 客户信息:客户编号、姓名、联系方式 - - 收费信息:收费金额、收费方式、收费项目 - - 支付信息:支付方式、支付凭证、找零金额 - -2. **输出数据** - - - 收费凭证:收费单据、发票信息 - - 收费记录:完整的收费交易记录 - - 账务更新:客户账户余额、欠费状态更新 - -###### 业务规则 - -1. **收费计算规则**: - - 按照欠费发生时间顺序收费 - - 支持部分缴费,优先缴纳主费用 - - 违约金按日计算,支持减免 - -2. **支付方式规则**: - - 现金支付需要找零处理 - - 银行卡支付需要确认到账 - - 预存款不足时可组合支付 - -3. **票据管理规则**: - - 收费凭证必须连续编号 - - 作废票据需要保留存根 - - 发票开具需要客户提供税号 - -###### 数据设计 - -主要涉及以下数据表: -- `payment_record`:收费记录表 -- `payment_item`:收费项目明细表 -- `customer_account`:客户账户表 -- `receipt_info`:票据信息表 -- `cashier_session`:收费员工作会话表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryCustomerBill | 查询客户账单 | customerCode:客户编号(必填) | List对象 | -| processPayment | 处理收费业务 | paymentData:收费数据(必填) | PaymentResult对象 | -| generateReceipt | 生成收费凭证 | paymentId:收费记录ID(必填) | ReceiptInfo对象 | -| updateAccountBalance | 更新账户余额 | customerId:客户ID(必填),amount:金额(必填) | Boolean类型:true/false | -| cashierCheckIn | 收费员签到 | cashierId:收费员ID(必填) | SessionInfo对象 | - -###### 其他说明 - -柜台收费是客户服务的重要窗口,需要确保操作简便、流程顺畅,提供良好的客户体验。 - -### 模块4: 账务处理 - -#### 功能 - -##### 功能1: 未销账调整 - -###### 功能描述 - -1. **功能概述** - - 对已生成但客户尚未缴纳的账单进行调整,包括按水量调整和按费用组成调整。支持分级审批和完整的调整流程管理。 - -2. **操作权限** - - - 营收员:提交调整申请 - - 营收主管:审批小额调整 - - 财务经理:审批大额调整 - -3. **功能约束** - - - 只能调整未销账的账单 - - 调整金额需要设置上限 - - 调整操作需要保留完整记录 - -###### 业务规则 - -1. **调整条件规则**: - - 只能调整未收费的账单 - - 调整水量不能超过抄见水量 - - 调整金额不能超过原账单金额 - -2. **审批流程规则**: - - 调整金额≤100元:营收主管审批 - - 调整金额>100元:财务经理审批 - - 调整金额>1000元:总经理审批 - -3. **调整方式规则**: - - 按水量调整:重新计算各项费用 - - 按费用组成调整:直接调整费用项 - - 混合调整:同时调整水量和费用 - -###### 业务流程 - -```mermaid -flowchart TD - A[查询未销账账单] --> B[选择调整账单] - B --> C{选择调整方式} - C -->|按水量调整| D[输入调整后水量] - C -->|按费用调整| E[调整费用组成] - - D --> F[系统重新计算费用] - E --> G[确认调整金额] - F --> H[填写调整原因] - G --> H - - H --> I[上传调整附件] - I --> J[提交调整申请] - J --> K[系统分配审批人] - - K --> L[审批人审核] - L --> M{审批结果} - M -->|通过| N[执行账单调整] - M -->|拒绝| O[返回调整申请] - - N --> P[更新账单金额] - P --> Q[生成调整凭证] - Q --> R[通知申请人] - R --> S([调整完成]) - - O --> T[修改调整申请] - T --> J -``` - -###### 数据设计 - -主要涉及以下数据表: -- `account_adjustment`:账务调整表 -- `adjustment_approval`:调整审批表 -- `adjustment_detail`:调整明细表 -- `adjustment_attachment`:调整附件表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryUnsettledBills | 查询未销账账单 | customerId:客户ID(必填) | List对象 | -| submitAdjustment | 提交调整申请 | adjustmentData:调整数据(必填) | AdjustmentResult对象 | -| approveAdjustment | 审批调整申请 | adjustmentId:调整ID(必填)
approvalResult:审批结果(必填) | Boolean类型:true/false | -| executeAdjustment | 执行账单调整 | adjustmentId:调整ID(必填) | Boolean类型:true/false | - -##### 功能2: 分账调整 - -###### 功能描述 - -1. **功能概述** - - 将一笔账单分成多笔独立的账单,支持按水量和按费用组成两种分账方式。适用于混合用水、分期缴费等业务场景。 - -2. **操作权限** - - - 营收员:提交分账申请 - - 营收主管:审批分账申请 - - 系统管理员:分账规则配置 - -3. **功能约束** - - - 只能对未收费账单进行分账 - - 分账后的总金额必须等于原账单金额 - - 分账操作不可逆,需要谨慎处理 - -###### 业务规则 - -1. **分账条件规则**: - - 原账单必须是未收费状态 - - 分账金额总和必须等于原账单金额 - - 分账后的每笔账单都必须大于0 - -2. **分账方式规则**: - - 按水量分账:按比例分配各项费用 - - 按费用组成分账:直接分配费用项 - - 按客户分账:多客户共用一个账单 - -3. **分账审批规则**: - - 分账金额≤500元:营收主管审批 - - 分账金额>500元:财务经理审批 - -###### 业务流程 - -```mermaid -flowchart TD - A[查询可分账账单] --> B[选择分账账单] - B --> C{选择分账方式} - C -->|按水量分账| D[设置水量分配比例] - C -->|按费用分账| E[设置费用分配方案] - - D --> F[系统计算分账金额] - E --> F - F --> G[验证分账合理性] - G --> H{验证是否通过} - H -->|否| I[提示分账错误] - H -->|是| J[填写分账原因] - - I --> C - J --> K[提交分账申请] - K --> L[系统分配审批人] - L --> M[审批人审核] - - M --> N{审批结果} - N -->|通过| O[执行分账操作] - N -->|拒绝| P[返回分账申请] - - O --> Q[生成多个子账单] - Q --> R[更新原账单状态] - R --> S[生成分账凭证] - S --> T([分账完成]) - - P --> U[修改分账申请] - U --> K -``` - -###### 数据设计 - -主要涉及以下数据表: -- `account_split`:分账记录表 -- `split_detail`:分账明细表 -- `split_approval`:分账审批表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| querySplittableBills | 查询可分账账单 | queryCondition:查询条件(必填) | List对象 | -| submitSplitApplication | 提交分账申请 | splitData:分账数据(必填) | SplitResult对象 | -| approveSplitApplication | 审批分账申请 | splitId:分账ID(必填)
approvalResult:审批结果(必填) | Boolean类型:true/false | -| executeSplitOperation | 执行分账操作 | splitId:分账ID(必填) | Boolean类型:true/false | - -##### 功能3: 预付款退款 - -###### 功能描述 - -1. **功能概述** - - 对客户的预付款进行退款处理,包括退款申请、审批、退款执行等完整流程。支持全额退款和部分退款。 - -2. **操作权限** - - - 营收员:提交退款申请 - - 营收主管:审批退款申请 - - 财务人员:执行退款操作 - -3. **功能约束** - - - 只能退还客户预付款余额 - - 退款金额不能超过预付款余额 - - 退款操作需要财务确认 - -###### 业务规则 - -1. **退款条件规则**: - - 客户预付款余额大于0 - - 客户无欠费记录 - - 退款原因合理 - -2. **退款审批规则**: - - 退款金额≤200元:营收主管审批 - - 退款金额>200元:财务经理审批 - - 退款金额>1000元:总经理审批 - -3. **退款方式规则**: - - 现金退款:直接现金退还 - - 转账退款:转账到客户指定账户 - - 抵扣退款:抵扣其他费用 - -###### 业务流程 - -```mermaid -flowchart TD - A[查询客户预付款] --> B[验证退款条件] - B --> C{是否满足退款条件} - C -->|否| D[提示不满足条件] - C -->|是| E[填写退款申请] - - E --> F[输入退款金额] - F --> G[选择退款方式] - G --> H[填写退款原因] - H --> I[上传相关证明] - I --> J[提交退款申请] - - J --> K[系统分配审批人] - K --> L[审批人审核] - L --> M{审批结果} - M -->|通过| N[财务确认退款] - M -->|拒绝| O[返回退款申请] - - N --> P[执行退款操作] - P --> Q[更新预付款余额] - Q --> R[生成退款凭证] - R --> S[通知客户] - S --> T([退款完成]) - - O --> U[修改退款申请] - U --> J - D --> V([退款申请失败]) -``` - -###### 数据设计 - -主要涉及以下数据表: -- `prepayment_refund`:预付款退款表 -- `refund_approval`:退款审批表 -- `refund_voucher`:退款凭证表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryPrepaymentBalance | 查询预付款余额 | customerId:客户ID(必填) | PrepaymentBalance对象 | -| submitRefundApplication | 提交退款申请 | refundData:退款数据(必填) | RefundResult对象 | -| approveRefundApplication | 审批退款申请 | refundId:退款ID(必填)
approvalResult:审批结果(必填) | Boolean类型:true/false | -| executeRefundOperation | 执行退款操作 | refundId:退款ID(必填) | Boolean类型:true/false | -##### 功能4: 呆坏账申请 - -###### 功能描述 - -1. **功能概述** - - 对长期无法收回的欠费进行呆坏账处理,包括呆坏账申请、审批、核销等完整流程。用于处理确实无法收回的欠费。 - -2. **操作权限** - - - 催缴专员:提交呆坏账申请 - - 财务经理:审批呆坏账申请 - - 总经理:核销呆坏账 - -3. **功能约束** - - - 只能对长期欠费进行呆坏账申请 - - 必须提供完整的催缴证明材料 - - 呆坏账处理需要严格审批 - -###### 业务规则 - -1. **呆坏账条件规则**: - - 欠费时间超过3年 - - 经过多次催缴无果 - - 客户失联或破产 - -2. **申请材料规则**: - - 完整的催缴记录 - - 客户失联证明 - - 法律咨询意见 - -3. **审批流程规则**: - - 财务经理初审 - - 总经理终审 - - 董事会特别审批(大额) - -###### 业务流程 - -```mermaid -flowchart TD - A[筛选长期欠费] --> B[准备申请材料] - B --> C[填写呆坏账申请] - C --> D[上传催缴证明] - D --> E[提交呆坏账申请] - - E --> F[财务经理初审] - F --> G{初审结果} - G -->|通过| H[总经理终审] - G -->|拒绝| I[返回补充材料] - - H --> J{终审结果} - J -->|通过| K[执行呆坏账核销] - J -->|拒绝| L[申请被拒绝] - - K --> M[更新账单状态] - M --> N[生成核销凭证] - N --> O[财务账务处理] - O --> P[归档处理记录] - P --> Q([呆坏账处理完成]) - - I --> R[补充完善材料] - R --> E - L --> S([申请失败]) -``` - -###### 数据设计 - -主要涉及以下数据表: -- `bad_debt_application`:呆坏账申请表 -- `bad_debt_approval`:呆坏账审批表 -- `bad_debt_writeoff`:呆坏账核销表 -- `bad_debt_document`:呆坏账证明材料表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryLongTermArrears | 查询长期欠费 | queryCondition:查询条件(必填) | List对象 | -| submitBadDebtApplication | 提交呆坏账申请 | applicationData:申请数据(必填) | BadDebtResult对象 | -| approveBadDebtApplication | 审批呆坏账申请 | applicationId:申请ID(必填)
approvalResult:审批结果(必填) | Boolean类型:true/false | -| executeBadDebtWriteoff | 执行呆坏账核销 | applicationId:申请ID(必填) | Boolean类型:true/false | - -### 模块5: 发票管理 - -#### 功能 - -##### 功能1: 发票查询 - -###### 功能描述 - -1. **功能概述** - - 提供发票查询功能,支持多种查询条件和查询方式。用户可以查询发票开具情况、发票状态、发票内容等信息。 - -2. **操作权限** - - - 营收员:查询发票基本信息 - - 财务人员:查询发票详细信息 - - 系统管理员:查询所有发票信息 - -3. **功能约束** - - - 支持多种查询条件组合 - - 查询结果支持导出 - - 敏感信息需要权限控制 - -###### 业务规则 - -1. **查询条件规则**: - - 支持按客户、时间、金额等条件查询 - - 支持按发票状态筛选 - - 支持按发票类型分类查询 - -2. **权限控制规则**: - - 按组织架构控制查询范围 - - 按时间范围限制查询跨度 - - 按发票类型控制查看权限 - -###### 业务流程 - -```mermaid -flowchart TD - A[用户登录] --> B[选择查询条件] - B --> C[输入查询参数] - C --> D[权限验证] - D --> E{权限是否通过} - E -->|否| F[提示权限不足] - E -->|是| G[执行查询] - - G --> H[显示查询结果] - H --> I[选择操作] - I --> J{选择操作类型} - J -->|查看详情| K[显示发票详情] - J -->|导出数据| L[导出发票列表] - J -->|打印发票| M[打印发票] - - K --> N[返回查询结果] - L --> O[生成导出文件] - M --> P[发送打印任务] - - N --> Q([查询完成]) - O --> Q - P --> Q - F --> B -``` - -###### 数据设计 - -主要涉及以下数据表: -- `invoice_info`:发票信息表 -- `invoice_detail`:发票明细表 -- `invoice_query_log`:发票查询日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryInvoiceList | 查询发票列表 | queryCondition:查询条件(必填) | PageResult对象 | -| getInvoiceDetail | 获取发票详情 | invoiceId:发票ID(必填) | InvoiceDetail对象 | -| exportInvoiceData | 导出发票数据 | exportCondition:导出条件(必填) | ExportResult对象 | -| printInvoice | 打印发票 | invoiceId:发票ID(必填) | PrintResult对象 | - -##### 功能2: 发票开具 - -###### 功能描述 - -1. **功能概述** - - 对接第三方税控平台,支持电子发票和纸质发票的开具和管理。提供发票开具、发票作废、发票红冲等完整功能。 - -2. **操作权限** - - - 开票员:开具发票权限 - - 财务主管:发票审核权限 - - 系统管理员:发票系统配置权限 - -3. **功能约束** - - - 发票开具需要税控设备支持 - - 发票内容需要符合税务要求 - - 发票操作需要完整记录 - -###### 业务规则 - -1. **开票条件规则**: - - 客户已完成缴费 - - 发票信息准确完整 - - 税控设备正常工作 - -2. **发票类型规则**: - - 电子发票:自动开具 - - 纸质发票:手工开具 - - 专用发票:需要资质验证 - -3. **发票管理规则**: - - 发票号码连续管理 - - 发票作废需要审批 - - 发票红冲需要原因 - -###### 业务流程 - -```mermaid -flowchart TD - A[客户缴费完成] --> B[选择开票方式] - B --> C{开票方式} - C -->|自动开票| D[系统自动开具] - C -->|手工开票| E[手工开具发票] - - D --> F[生成发票数据] - E --> G[填写发票信息] - G --> H[验证发票信息] - H --> I{信息是否正确} - I -->|否| J[修改发票信息] - I -->|是| F - - F --> K[调用税控接口] - K --> L[税控系统处理] - L --> M{开票是否成功} - M -->|否| N[开票失败处理] - M -->|是| O[保存发票信息] - - O --> P[生成发票文件] - P --> Q[发送给客户] - Q --> R[更新发票状态] - R --> S([开票完成]) - - N --> T[记录失败原因] - T --> U[重新开具] - U --> F - - J --> G -``` - -###### 数据设计 - -主要涉及以下数据表: -- `invoice_request`:开票请求表 -- `invoice_tax_control`:税控接口记录表 -- `invoice_error_log`:开票错误日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createInvoice | 开具发票 | invoiceData:发票数据(必填) | InvoiceResult对象 | -| cancelInvoice | 作废发票 | invoiceId:发票ID(必填)
reason:作废原因(必填) | Boolean类型:true/false | -| redInvoice | 红冲发票 | invoiceId:发票ID(必填)
reason:红冲原因(必填) | InvoiceResult对象 | -| sendInvoiceToCustomer | 发送发票给客户 | invoiceId:发票ID(必填)
customerContact:客户联系方式(必填) | Boolean类型:true/false | - -##### 功能3: 电子发票管理 - -###### 功能描述 - -专门管理电子发票的功能,包括电子发票的生成、发送、查验等功能。支持多种电子发票格式和发送方式。 - -###### 业务规则 - -1. **电子发票规则**:符合国家电子发票标准 -2. **发送方式规则**:支持邮箱、短信、微信等多种发送方式 -3. **查验规则**:支持二维码和发票代码查验 - -### 模块6: 催缴管理 - -#### 功能 - -##### 功能1: 欠费催缴 - -###### 功能描述 - -1. **功能概述** - - 查询欠费用户信息,生成催缴任务,支持打印催缴单和批量发送短信。系统支持多种催缴方式,包括短信催缴、电话催缴、上门催缴等。 - -2. **操作权限** - - - 催缴专员:催缴任务执行权限 - - 催缴主管:催缴任务分配和监督权限 - - 收费员:催缴结果录入权限 - -3. **功能约束** - - - 催缴任务需要按照欠费金额和时间优先级排序 - - 短信催缴需要控制发送频率,避免过度骚扰 - - 催缴结果需要及时反馈和记录 - -###### 业务规则 - -1. **催缴条件规则**: - - 欠费超过30天自动生成催缴任务 - - 欠费金额超过设定标准优先催缴 - - 连续欠费客户重点关注 - -2. **催缴方式规则**: - - 首次催缴:短信通知 - - 二次催缴:电话催缴 - - 三次催缴:上门催缴 - - 特殊情况:停水催缴 - -3. **催缴频率规则**: - - 同一客户一天内最多催缴3次 - - 短信催缴间隔不少于2小时 - - 电话催缴间隔不少于1天 - -###### 业务流程 - -```mermaid -flowchart TD - A[系统自动扫描欠费] --> B[筛选催缴条件] - B --> C[生成催缴任务] - C --> D[任务分配] - D --> E[催缴专员接收] - - E --> F{选择催缴方式} - F -->|短信催缴| G[编辑短信内容] - F -->|电话催缴| H[拨打客户电话] - F -->|上门催缴| I[安排上门时间] - - G --> J[批量发送短信] - H --> K[电话沟通记录] - I --> L[上门催缴记录] - - J --> M[记录催缴结果] - K --> M - L --> M - - M --> N{客户是否缴费} - N -->|是| O[更新缴费状态] - N -->|否| P[升级催缴方式] - - O --> Q[催缴任务完成] - P --> R{是否达到停水条件} - R -->|是| S[生成停水工单] - R -->|否| T[安排下次催缴] - - S --> U[执行停水操作] - T --> V[等待催缴时间] - V --> F - - Q --> W([催缴流程结束]) - U --> W -``` - -###### 数据设计 - -主要涉及以下数据表: -- `reminder_task`:催缴任务表 -- `reminder_record`:催缴记录表 -- `reminder_result`:催缴结果表 -- `sms_send_log`:短信发送日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| generateReminderTask | 生成催缴任务 | customerFilter:客户筛选条件(必填) | List对象 | -| sendSmsReminder | 发送短信催缴 | taskId:任务ID(必填)
smsContent:短信内容(必填) | SendResult对象 | -| recordReminderResult | 记录催缴结果 | taskId:任务ID(必填)
result:催缴结果(必填) | Boolean类型:true/false | -| getReminderStatistics | 获取催缴统计 | dateRange:日期范围(必填) | StatisticsResult对象 | - -##### 功能2: 催缴记录管理 - -###### 功能描述 - -管理催缴记录,包括催缴历史查询、催缴效果统计、催缴人员绩效分析等功能。 - -###### 业务规则 - -1. **记录管理规则**:所有催缴活动都需要详细记录 -2. **统计分析规则**:按时间、人员、方式统计催缴效果 -3. **绩效考核规则**:根据催缴成功率进行绩效评估 - -### 模块7: 统计分析 - -#### 功能 - -##### 功能1: 报表查询 - -###### 功能描述 - -1. **功能概述** - - 提供各类业务报表的查询和生成功能,包括收费报表、抄表报表、欠费报表等。支持自定义查询条件和报表格式,满足不同层级管理人员的数据需求。 - -2. **操作权限** - - - 统计员:基础报表查询权限 - - 部门经理:部门级报表查询权限 - - 公司领导:全公司报表查询权限 - -3. **功能约束** - - - 报表数据需要实时更新 - - 大数据量报表需要异步处理 - - 敏感报表需要审批才能查看 - -###### 业务规则 - -1. **报表分类规则**: - - 经营报表:收费、欠费、回收率等 - - 业务报表:抄表、开账、销账等 - - 管理报表:人员绩效、工作量等 - -2. **查询权限规则**: - - 按组织架构控制数据范围 - - 按时间范围限制查询跨度 - - 按报表类型控制查看权限 - -3. **数据更新规则**: - - 实时报表立即更新 - - 汇总报表定时更新 - - 历史报表按月归档 - -###### 业务流程 - -```mermaid -flowchart TD - A[用户登录] --> B[选择报表类型] - B --> C[设置查询条件] - C --> D[权限验证] - D --> E{权限是否通过} - E -->|否| F[提示权限不足] - E -->|是| G[查询数据] - - G --> H{数据量大小} - H -->|小数据量| I[实时生成报表] - H -->|大数据量| J[异步处理] - - I --> K[展示报表结果] - J --> L[后台生成报表] - L --> M[通知用户完成] - M --> N[下载报表文件] - - K --> O[导出报表] - N --> O - O --> P[打印报表] - P --> Q([报表查询完成]) - - F --> C -``` - -###### 数据设计 - -主要涉及以下数据表: -- `report_template`:报表模板表 -- `report_config`:报表配置表 -- `report_generate_log`:报表生成日志表 -- `report_export_log`:报表导出日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| generateReport | 生成报表 | reportType:报表类型(必填)
queryCondition:查询条件(必填) | ReportResult对象 | -| exportReport | 导出报表 | reportId:报表ID(必填)
exportFormat:导出格式(必填) | ExportResult对象 | -| getReportList | 获取报表列表 | userId:用户ID(必填) | List对象 | -| saveReportTemplate | 保存报表模板 | templateData:模板数据(必填) | Boolean类型:true/false | - -##### 功能2: 缴费记录查询 - -###### 功能描述 - -1. **功能概述** - - 查询和统计客户的缴费记录,包括缴费时间、缴费金额、缴费方式、收费员等信息。支持多维度查询和统计分析。 - -2. **操作权限** - - - 收费员:查看自己的收费记录 - - 收费主管:查看部门收费记录 - - 财务人员:查看全部收费记录 - -3. **功能约束** - - - 支持按时间范围查询 - - 支持按收费方式分类统计 - - 支持按收费员分组查询 - -###### 业务规则 - -1. **查询条件规则**: - - 时间范围:支持日、月、年查询 - - 金额范围:支持按金额区间筛选 - - 方式筛选:支持按收费方式筛选 - -2. **统计分析规则**: - - 按时间维度统计收费趋势 - - 按方式维度统计收费结构 - - 按人员维度统计收费绩效 - -###### 数据设计 - -主要涉及以下数据表: -- `payment_record`:缴费记录表 -- `payment_statistics`:缴费统计表 -- `cashier_performance`:收费员绩效表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryPaymentRecord | 查询缴费记录 | queryCondition:查询条件(必填) | PageResult对象 | -| getPaymentStatistics | 获取缴费统计 | statisticsType:统计类型(必填)
dateRange:日期范围(必填) | StatisticsResult对象 | -| exportPaymentData | 导出缴费数据 | exportCondition:导出条件(必填) | ExportResult对象 | - -##### 功能3: 欠费查询分析 - -###### 功能描述 - -1. **功能概述** - - 查询和分析客户的欠费情况,包括欠费金额、欠费时间、欠费原因等。支持欠费趋势分析和风险评估。 - -2. **操作权限** - - - 催缴专员:查看催缴范围内的欠费 - - 财务人员:查看全部欠费情况 - - 领导:查看欠费统计分析 - -3. **功能约束** - - - 支持按欠费时长分类查询 - - 支持按欠费金额分级查询 - - 支持按客户类型分组查询 - -###### 业务规则 - -1. **欠费分类规则**: - - 按时长:30天内、30-90天、90天以上 - - 按金额:小额、中额、大额欠费 - - 按类型:居民、商业、工业欠费 - -2. **风险评估规则**: - - 长期欠费客户标记为高风险 - - 大额欠费客户重点关注 - - 频繁欠费客户列入黑名单 - -###### 数据设计 - -主要涉及以下数据表: -- `arrears_record`:欠费记录表 -- `arrears_analysis`:欠费分析表 -- `customer_risk_level`:客户风险等级表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| queryArrearsRecord | 查询欠费记录 | queryCondition:查询条件(必填) | PageResult对象 | -| getArrearsAnalysis | 获取欠费分析 | analysisType:分析类型(必填) | AnalysisResult对象 | -| assessCustomerRisk | 评估客户风险 | customerId:客户ID(必填) | RiskLevel对象 | - -### 模块8: 代收业务 - -#### 功能 - -##### 功能1: 实时收费 - -###### 功能描述 - -1. **功能概述** - - 支持第三方渠道的实时收费业务,包括银行柜台、ATM、网上银行、手机银行等渠道的实时收费接口。 - -2. **操作权限** - - - 系统管理员:接口配置权限 - - 财务人员:收费监控权限 - - 技术人员:接口维护权限 - -3. **功能约束** - - - 实时收费需要保证接口稳定性 - - 收费失败需要自动重试机制 - - 收费记录需要完整保存 - -###### 业务规则 - -1. **收费验证规则**: - - 客户信息验证 - - 欠费金额验证 - - 支付能力验证 - -2. **收费处理规则**: - - 实时扣款处理 - - 账单状态更新 - - 收费凭证生成 - -###### 业务流程 - -```mermaid -flowchart TD - A[第三方发起收费] --> B[接收收费请求] - B --> C[验证客户信息] - C --> D{客户信息是否正确} - D -->|否| E[返回错误信息] - D -->|是| F[查询欠费信息] - - F --> G[计算收费金额] - G --> H[执行收费处理] - H --> I{收费是否成功} - I -->|否| J[返回收费失败] - I -->|是| K[更新账单状态] - - K --> L[生成收费凭证] - L --> M[返回收费成功] - M --> N[记录收费日志] - N --> O([实时收费完成]) - - E --> P[记录错误日志] - J --> P - P --> Q([收费流程结束]) -``` - -###### 数据设计 - -主要涉及以下数据表: -- `realtime_payment`:实时收费表 -- `payment_interface_log`:收费接口日志表 -- `payment_error_log`:收费错误日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| processRealtimePayment | 处理实时收费 | paymentRequest:收费请求(必填) | PaymentResponse对象 | -| queryCustomerBills | 查询客户账单 | customerId:客户ID(必填) | List对象 | -| updateBillStatus | 更新账单状态 | billId:账单ID(必填)
status:状态(必填) | Boolean类型:true/false | - -##### 功能2: 银行代扣 - -###### 功能描述 - -与银行系统对接,支持银行代扣业务,包括代扣文件生成、代扣结果处理、代扣对账等功能。 - -##### 功能3: 银行托收 - -###### 功能描述 - -与银行系统对接,支持银行托收业务,包括托收文件生成、托收结果处理、托收对账等功能。 - -### 模块9: 业务工单 - -#### 功能 - -业务工单模块负责管理水务系统中的各类业务工单,包括客户服务工单、维修工单、稽查工单等,实现工单的全生命周期管理。 - -##### 功能1: 业务清单管理 - -###### 功能描述 - -业务清单管理用于查询和管理通过系统办理的日常业务工单及其进度信息,包括客户工单和账务处理工单。 - -###### 业务工单流程图 - -```mermaid -flowchart TD - A[工单来源] --> B{工单类型} - B -->|客户服务| C[客户服务工单] - B -->|账务处理| D[账务处理工单] - B -->|投诉建议| E[投诉建议工单] - B -->|故障报修| F[故障报修工单] - - C --> G[工单创建] - D --> G - E --> G - F --> G - - G --> H[工单分类] - H --> I[工单派发] - I --> J[工单处理] - J --> K{处理结果} - - K -->|完成| L[工单完成] - K -->|需要协调| M[工单转派] - K -->|需要升级| N[工单升级] - - M --> J - N --> O[上级处理] - O --> P[处理完成] - L --> Q[工单归档] - P --> Q - Q --> R([工单结束]) -``` - -###### 业务规则 - -1. **工单创建规则**: - - 工单编号系统自动生成,格式:BW+年月日+4位流水号 - - 紧急工单需要在1小时内响应 - - 普通工单需要在8小时内派发 - -2. **工单分类规则**: - - 客户服务类:开户、过户、更名、停用等 - - 账务处理类:调账、退款、销账等 - - 投诉建议类:服务投诉、建议反馈等 - - 故障报修类:设施故障、管道漏水等 - -3. **工单处理规则**: - - 工单必须在规定时间内处理完成 - - 处理过程需要详细记录操作日志 - - 重要工单需要上级审核确认 - -###### 数据设计 - -主要涉及以下数据表: -- `business_work_order`:业务工单表 -- `work_order_log`:工单处理日志表 -- `work_order_attachment`:工单附件表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createBusinessWorkOrder | 创建业务工单 | workOrderInfo:工单信息(必填) | WorkOrder对象 | -| queryWorkOrderList | 查询工单列表 | queryCondition:查询条件(选填) | PageInfo | -| processWorkOrder | 处理工单 | workOrderId:工单ID(必填),processInfo:处理信息(必填) | Boolean类型:true/false | -| closeWorkOrder | 完成工单 | workOrderId:工单ID(必填),closeInfo:完成信息(必填) | Boolean类型:true/false | - -##### 功能2: 上报清单管理 - -###### 功能描述 - -上报清单管理用于处理通过移动端上报的问题工单,包括抄表员现场发现的问题、客户报告的异常等。 - -###### 上报工单处理流程图 - -```mermaid -flowchart TD - A[移动端上报] --> B[上报清单录入] - B --> C[问题分类] - C --> D{问题类型} - - D -->|水表故障| E[表务工单] - D -->|管道问题| F[维修工单] - D -->|水质问题| G[水质检测工单] - D -->|其他问题| H[一般处理工单] - - E --> I[工单登记] - F --> I - G --> I - H --> I - - I --> J[工单派发] - J --> K[现场处理] - K --> L[工单回填] - L --> M[内勤审核] - M --> N{审核结果} - - N -->|通过| O[工单完成] - N -->|不通过| P[退回重处理] - P --> K - O --> Q([工单结束]) -``` - -###### 业务规则 - -1. **上报规则**: - - 上报必须包含现场照片或视频 - - 上报地点必须准确定位 - - 紧急问题需要标注紧急级别 - -2. **处理规则**: - - 紧急上报1小时内响应 - - 普通上报24小时内处理 - - 处理结果需要现场确认 - -###### 数据设计 - -主要涉及以下数据表: -- `report_work_order`:上报工单表 -- `report_attachment`:上报附件表 -- `report_location`:上报位置表 - -##### 功能3: 稽查工单管理 - -###### 功能描述 - -稽查工单管理用于处理抄表稽查和水价稽查工单,确保抄表数据和水价政策的准确执行。 - -###### 稽查工单流程图 - -```mermaid -flowchart TD - A[稽查任务下达] --> B{稽查类型} - B -->|抄表稽查| C[抄表数据核实] - B -->|水价稽查| D[水价政策核实] - - C --> E[现场抄表核对] - D --> F[价格政策核对] - - E --> G[稽查结果记录] - F --> G - - G --> H{稽查结果} - H -->|合格| I[稽查通过] - H -->|不合格| J[问题处理] - - J --> K[整改要求] - K --> L[重新稽查] - L --> G - - I --> M[稽查报告] - M --> N([稽查完成]) -``` - -###### 业务规则 - -1. **稽查标准**: - - 抄表稽查:核实抄表数据准确性 - - 水价稽查:核实价格政策执行情况 - - 稽查必须有现场证据支持 - -2. **稽查频率**: - - 重点客户每月稽查 - - 普通客户季度抽查 - - 异常客户随时稽查 - -###### 数据设计 - -主要涉及以下数据表: -- `audit_work_order`:稽查工单表 -- `audit_result`:稽查结果表 -- `audit_evidence`:稽查证据表 - -##### 功能4: 换表工单管理 - -###### 功能描述 - -换表工单管理处理因故障、到期、客户申请等原因需要更换水表的业务工单,与表务系统的工单管理功能整合。 - -###### 换表工单业务流程图 - -```mermaid -flowchart TD - A[换表需求] --> B{换表原因} - B -->|故障换表| C[故障登记] - B -->|到期换表| D[到期提醒] - B -->|客户申请| E[申请受理] - - C --> F[创建换表工单] - D --> F - E --> F - - F --> G[工单信息完善] - G --> H[仓库申请水表] - H --> I[工单派发] - I --> J[现场换表] - - J --> K[旧表拆除] - K --> L[新表安装] - L --> M[表码记录] - M --> N[工单回填] - - N --> O[内勤审核] - O --> P{审核结果} - P -->|通过| Q[更新客户档案] - P -->|不通过| R[退回重做] - R --> J - - Q --> S[旧表回库] - S --> T([换表完成]) -``` - -###### 业务规则 - -1. **换表条件**: - - 水表故障无法正常计量 - - 水表到期需要强制更换 - - 客户申请且符合换表条件 - -2. **换表流程**: - - 必须先申请新表再进行换表 - - 换表过程需要拍照记录 - - 新旧表码必须准确记录 - -3. **质量控制**: - - 换表工单必须当日完成 - - 换表质量需要客户签字确认 - - 异常情况需要详细说明 - -###### 数据设计 - -主要涉及以下数据表: -- `meter_work_order`:表务工单表(复用表务系统) -- `meter_replacement_log`:水表更换日志表 -- `work_order_material`:工单用料表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createMeterWorkOrder | 创建换表工单 | workOrderInfo:工单信息(必填) | WorkOrder对象 | -| assignMeterWorkOrder | 派发换表工单 | workOrderId:工单ID(必填),assigneeId:指派人员ID(必填) | Boolean类型:true/false | -| completeMeterReplacement | 完成换表 | workOrderId:工单ID(必填),replacementInfo:换表信息(必填) | Boolean类型:true/false | -| queryMeterWorkOrderList | 查询换表工单列表 | queryCondition:查询条件(选填) | PageInfo | - -#### 接口 - -##### 接口1: 创建业务工单接口 - -a、**接口名称** - -| 创建业务工单接口 | -|---| - -b、**接口描述** - -| 1. 创建各类业务工单
2. 自动分配工单编号
3. 设置工单优先级和处理期限 | -|---| - -c、**请求地址** - -| /admin-api/revenue/work-order/create | -|---| - -d、**请求方式** - -| POST | -|---| - -e、**请求参数** - -2) Body参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| orderType | 是 | string | | 工单类型 | 客户服务/账务处理/投诉建议/故障报修 | -| title | 是 | string | 长度≤100 | 工单标题 | | -| description | 是 | string | 长度≤500 | 工单描述 | | -| priority | 是 | string | | 优先级 | 紧急/高/中/低 | -| customerId | 否 | number | > 0 | 客户ID | 客户相关工单必填 | -| contactPhone | 否 | string | | 联系电话 | | - -f、**响应参数** - -2) 返回示例 - -```json -{ - "code": 0, - "msg": "成功", - "data": { - "workOrderId": 1001, - "orderNo": "BW20241219001", - "status": "待处理", - "expectedTime": "2024-12-20 18:00:00" - } -} -``` - -##### 接口2: 工单处理接口 - -a、**接口名称** - -| 工单处理接口 | -|---| - -b、**接口描述** - -| 1. 处理工单并更新状态
2. 记录处理日志
3. 支持附件上传 | -|---| - -c、**请求地址** - -| /admin-api/revenue/work-order/process | -|---| - -d、**请求方式** - -| POST | -|---| - -e、**请求参数** - -2) Body参数 - -| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 | -|---|---|---|---|---|---| -| workOrderId | 是 | number | > 0 | 工单ID | | -| processResult | 是 | string | | 处理结果 | 完成/转派/升级 | -| processNote | 是 | string | 长度≤500 | 处理说明 | | -| attachments | 否 | array | | 附件列表 | 支持图片、文档 | - -f、**响应参数** - -2) 返回示例 - -```json -{ - "code": 0, - "msg": "成功", - "data": { - "workOrderId": 1001, - "status": "已完成", - "processTime": "2024-12-19 15:30:00" - } -} -``` - -# 子系统3设计: 表务系统 - -## 功能与界面 - -表务系统主要负责水表的全生命周期管理,包括水表安装、维修、更换、报废等业务流程管理。 - -**核心业务流程:** -故障报告 → 工单创建 → 工单派发 → 现场处理 → 工单回填 → 工程验收 → 档案更新 - -**主要功能模块:** - -- **表务仓库管理**:水表库存管理、出入库记录、库存预警、物料管理 -- **表务基础管理**:水表档案、维修记录、使用历史、技术参数管理 - -**注意**:表务工单管理功能已整合到营收系统的业务工单模块中,避免功能重复。 - -## 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| METER-001 | 表务仓库管理 | 水表库存管理和出入库管理 | 自行开发 | -| METER-002 | 表务基础管理 | 水表档案和历史记录管理 | 自行开发 | - -## 模块设计 - -### 模块1: 表务仓库管理 - -#### 功能 - -##### 功能1: 水表库存管理 - -###### 功能描述 - -管理水表库存,包括入库、出库、库存查询、库存预警、物料管理等功能。 - -###### 业务规则 - -1. **入库规则**:新水表采购入库需要验收确认,记录水表型号、规格、生产厂家等信息 -2. **出库规则**:维修工单领取需要审核批准,记录领用人、用途、数量等信息 -3. **库存预警**:库存低于安全库存时自动预警,支持邮件和短信通知 -4. **盘点规则**:定期进行库存盘点,处理盘盈盘亏 - -###### 数据设计 - -主要涉及以下数据表: -- `meter_warehouse`:水表仓库表 -- `meter_stock`:水表库存表 -- `meter_in_out_record`:水表出入库记录表 -- `meter_inventory`:水表盘点表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| meterStockIn | 水表入库 | stockInfo:入库信息(必填) | Boolean类型:true/false | -| meterStockOut | 水表出库 | stockOutInfo:出库信息(必填) | Boolean类型:true/false | -| queryStockList | 查询库存列表 | queryCondition:查询条件(选填) | PageInfo | -| stockWarning | 库存预警 | warehouseId:仓库ID(选填) | List | - -##### 功能2: 物料管理 - -###### 功能描述 - -管理表务相关的物料,包括管材、配件、工具等辅助材料的管理。 - -###### 业务规则 - -1. **物料分类**:按照用途对物料进行分类管理 -2. **领用管理**:工单领用物料需要登记,完工后核销 -3. **采购管理**:根据消耗情况制定采购计划 - -### 模块2: 表务基础管理 - -#### 功能 - -##### 功能1: 水表档案管理 - -###### 功能描述 - -管理水表的基础档案信息,包括水表技术参数、安装记录、维修历史等。 - -###### 业务规则 - -1. **档案建立**:新水表安装时建立档案,记录基本信息 -2. **信息更新**:水表更换、维修时更新档案信息 -3. **历史追踪**:完整记录水表的使用历史和维修记录 - -###### 数据设计 - -主要涉及以下数据表: -- `meter_archive`:水表档案表 -- `meter_maintenance_record`:水表维修记录表 -- `meter_replacement_history`:水表更换历史表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createMeterArchive | 创建水表档案 | meterInfo:水表信息(必填) | MeterArchive对象 | -| updateMeterArchive | 更新水表档案 | archiveId:档案ID(必填),updateInfo:更新信息(必填) | Boolean类型:true/false | -| queryMeterHistory | 查询水表历史 | meterId:水表ID(必填) | List | -| getMeterMaintenanceRecord | 获取维修记录 | meterId:水表ID(必填) | List | - -# 子系统4设计: 报装系统 - -## 功能与界面 - -报装系统负责新用户报装的全流程管理,从用户申请到最终通水的完整业务流程。 - -**核心业务流程:** -报装申请 → 现场踏勘 → 方案设计 → 合同签订 → 施工实施 → 验收通水 → 档案归档 - -**主要功能模块:** - -- **报装流程管理**:申请受理、踏勘设计、合同签订、施工协调、验收通水 -- **现场踏勘管理**:现场勘查、技术方案设计、工程预算、可行性评估 -- **报装档案管理**:报装档案、工程档案、图纸管理、客户资料管理 - -## 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| INSTALL-001 | 报装流程管理 | 新用户报装全流程管理 | 自行开发 | -| INSTALL-002 | 现场踏勘管理 | 现场勘查和技术方案设计 | 自行开发 | -| INSTALL-003 | 报装档案管理 | 报装和工程档案管理 | 自行开发 | - -## 模块设计 - -### 模块1: 报装流程管理 - -#### 功能 - -##### 功能1: 报装流程 - -###### 功能描述 - -报装流程管理新用户从申请到通水的全过程业务流程,实现报装业务的标准化管理。 - -###### 新用户报装业务流程图 - -- 总流程图 - -```mermaid -%%{init: {'themeVariables': {'primaryColor': '#F0F7FF'}}}%% -flowchart TD - classDef stage fill:#4A90E2,stroke:#333,color:#fff,font-weight:bold - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - classDef endpoint fill:#FFF7E6,stroke:#FA8C16 - - subgraph 总流程["水务报装全流程"] - direction TB - A[用户报装申请]:::process --> B[资料收集与审核] - B --> C{材料齐全?}:::decision - C -->|否| D[补充材料] --> B - C -->|是| E[受理登记] --> F[现场勘查设计] - F --> G[方案审批] --> H[签订供水合同] - H --> I[施工实施] --> J[工程验收] --> K[通水调试] - K --> L{客户满意?}:::decision - L -->|否| M[问题整改] --> K - L -->|是| N([报装完成]):::endpoint - end -``` -- 申请受理阶段 - -```mermaid -flowchart LR - classDef header fill:#4A90E2,stroke:#333,color:#fff - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - - subgraph 申请受理[" "] - A[用户提交申请]:::process --> B[资料收集] - B --> C[审核材料清单] - C --> D{材料齐全合规?}:::decision - D -->|否| E[通知补正材料] --> C - D -->|是| F[[受理登记]]:::process + subgraph OPS[管理运维区] + MON[监控平台] + LOG[日志平台] + BAK[备份服务] + JUMP[堡垒机/跳板机] end ``` -- 现场勘查设计阶段 +## 子系统与模块划分 -```mermaid -flowchart LR - classDef header fill:#4A90E2,stroke:#333,color:#fff - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - - subgraph 现场勘查设计[" "] - direction LR - F -.-> G[分配报装编号] - G --> H[安排现场踏勘] - H --> I[现场勘查] - I --> J[工程设计] - J --> K[制定施工方案] - K --> L[费用预算]:::endpoint - end - -- 合同签订阶段 - -```mermaid -flowchart LR - classDef header fill:#4A90E2,stroke:#333,color:#fff - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - - subgraph 合同签订[" "] - direction LR - L -.-> M[方案审批] - M --> N{审批是否通过?}:::decision - N -->|否| O[方案修改] - O --> M - N -->|是| P[制作供水合同] - P --> Q[通知用户签约]:::endpoint - end -``` - -- 工程施工阶段 - -```mermaid -flowchart LR - classDef header fill:#4A90E2,stroke:#333,color:#fff - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - - subgraph 工程施工[" "] - direction LR - Q -.-> R[合同签订] - R --> S[收取相关费用] - S --> T[安排施工] - T --> U[施工队伍派工] - U --> V[现场施工] - V --> W[施工进度监控] - W --> X[工程质量检查]:::endpoint - end -``` - -- 验收移交阶段 - -```mermaid -flowchart LR - classDef header fill:#4A90E2,stroke:#333,color:#fff - classDef process fill:#E6F7FF,stroke:#1890FF - classDef decision fill:#F6FFED,stroke:#52C41A - - subgraph 验收移交[" "] - direction LR - X -.-> Y{质量是否合格?}:::decision - Y -->|否| Z[整改处理] - Z --> V - Y -->|是| AA[工程验收] - AA --> BB[水表安装] - BB --> CC[试压测试] - CC --> DD[通水调试] - DD --> EE[客户验收] - EE --> FF{客户是否满意?}:::decision - FF -->|否| GG[问题整改] - GG --> DD - FF -->|是| HH[工程移交] - HH --> II[档案归档] - II --> JJ[开通营收账户] - JJ --> KK([报装完成]):::endpoint - end -``` - -###### 业务规则 - -1. **申请受理规则**: - - 申请材料必须包含身份证明、产权证明、用水申请 - - 工业用水需要提供用水计划和环评报告 - - 特殊用水性质需要相关部门审批 - -2. **现场踏勘规则**: - - 踏勘需要在受理后3个工作日内完成 - - 踏勘结果需要包含现场照片和测量数据 - - 复杂工程需要多部门联合踏勘 - -3. **施工管理规则**: - - 施工前需要办理相关许可手续 - - 施工过程需要拍照记录关键节点 - - 工程变更需要客户签字确认 - -###### 数据设计 - -主要涉及以下数据表: -- `installation_application`:报装申请表 -- `site_survey`:现场踏勘表 -- `construction_plan`:施工方案表 -- `installation_contract`:报装合同表 -- `construction_progress`:施工进度表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| submitApplication | 提交报装申请 | applicationInfo:申请信息(必填) | Application对象 | -| scheduleSurvey | 安排现场踏勘 | applicationId:申请ID(必填),surveyDate:踏勘日期(必填) | Boolean类型:true/false | -| createConstructionPlan | 制定施工方案 | surveyResult:踏勘结果(必填) | ConstructionPlan对象 | -| signContract | 签订报装合同 | contractInfo:合同信息(必填) | Contract对象 | -| trackProgress | 跟踪施工进度 | contractId:合同ID(必填) | ProgressInfo对象 | - -### 模块2: 现场踏勘管理 - -#### 功能 - -##### 功能1: 现场勘查 - -###### 功能描述 - -负责新用户报装的现场勘查,收集现场信息,为工程设计提供基础数据。 - -###### 业务规则 - -1. **踏勘安排**:根据申请类型和复杂程度安排相应的踏勘人员 -2. **信息收集**:记录现场地理位置、管网分布、施工条件等 -3. **方案建议**:提出初步的工程实施方案和注意事项 - -###### 数据设计 - -主要涉及以下数据表: -- `site_survey`:现场踏勘表 -- `survey_photo`:踏勘照片表 -- `survey_measurement`:踏勘测量数据表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| scheduleSurvey | 安排现场踏勘 | applicationId:申请ID(必填),surveyDate:踏勘日期(必填) | Boolean类型:true/false | -| recordSurveyData | 记录踏勘数据 | surveyData:踏勘数据(必填) | SurveyRecord对象 | -| generateTechPlan | 生成技术方案 | surveyId:踏勘ID(必填) | TechnicalPlan对象 | -| calculateCost | 计算工程造价 | planId:方案ID(必填) | CostEstimate对象 | - -##### 功能2: 技术方案设计 - -###### 功能描述 - -根据现场踏勘结果,设计技术实施方案,包括管线走向、施工方案、材料清单等。 - -###### 业务规则 - -1. **方案设计**:根据踏勘结果制定详细的技术方案 -2. **材料清单**:计算所需材料的种类和数量 -3. **造价预算**:根据方案和材料清单计算工程造价 - -### 模块3: 报装档案管理 - -#### 功能 - -##### 功能1: 报装档案管理 - -###### 功能描述 - -管理报装过程中产生的各类档案资料,包括申请资料、踏勘资料、施工资料、验收资料等。 - -###### 业务规则 - -1. **档案分类**:按照业务类型对档案进行分类管理 -2. **档案归档**:报装完成后及时归档相关资料 -3. **档案查询**:支持多种方式查询档案信息 - -###### 数据设计 - -主要涉及以下数据表: -- `installation_archive`:报装档案表 -- `archive_document`:档案文档表 -- `archive_category`:档案分类表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createArchive | 创建报装档案 | archiveInfo:档案信息(必填) | Archive对象 | -| uploadDocument | 上传档案文档 | archiveId:档案ID(必填),document:文档(必填) | Boolean类型:true/false | -| queryArchive | 查询报装档案 | queryCondition:查询条件(选填) | PageInfo | -| archiveComplete | 档案归档 | archiveId:档案ID(必填) | Boolean类型:true/false | - -# 子系统5设计: 客户服务 - -## 功能与界面 - -客户服务系统为用水客户提供多渠道、便捷的线上自助服务,主要通过微信和支付宝小程序实现。 - -**核心业务流程:** -账户绑定 → 信息查询 → 在线缴费 → 电子发票 → 客户服务 - -**主要功能模块:** - -- **账户绑定管理**:客户账户绑定、解绑、验证、多账户管理 -- **信息查询服务**:账单查询、缴费记录查询、用水量查询、欠费查询 -- **在线缴费服务**:微信支付、支付宝支付、银行卡支付、预存款缴费 -- **电子发票服务**:发票申请、发票查询、发票下载、发票推送 - -## 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| SERVICE-001 | 账户绑定管理 | 客户账户绑定和管理 | 自行开发 | -| SERVICE-002 | 信息查询服务 | 各类信息查询服务 | 自行开发 | -| SERVICE-003 | 在线缴费服务 | 多渠道在线缴费服务 | 自行开发 | -| SERVICE-004 | 电子发票服务 | 电子发票管理服务 | 自行开发 | - -## 模块设计 - -### 模块1: 账户绑定管理 - -#### 功能 - -##### 功能1: 账户绑定 - -###### 功能描述 - -用户通过微信或支付宝绑定水务账户,实现在线查询和缴费功能。支持多种绑定方式和多账户管理。 - -###### 业务规则 - -1. **绑定验证**:通过客户编号、手机号、身份证等信息验证身份 -2. **多账户管理**:一个微信/支付宝账户可以绑定多个水务账户 -3. **安全控制**:绑定和解绑操作需要短信验证码确认 - -###### 数据设计 - -主要涉及以下数据表: -- `customer_binding`:客户绑定关系表 -- `binding_verification`:绑定验证记录表 -- `binding_log`:绑定操作日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| bindAccount | 绑定客户账户 | bindingInfo:绑定信息(必填) | BindingResult对象 | -| unbindAccount | 解绑客户账户 | bindingId:绑定ID(必填) | Boolean类型:true/false | -| verifyBinding | 验证绑定信息 | customerCode:客户编号(必填),verifyInfo:验证信息(必填) | Boolean类型:true/false | -| getBindingList | 获取绑定列表 | openId:微信/支付宝ID(必填) | List | - -##### 功能2: 账户管理 - -###### 功能描述 - -管理已绑定的客户账户,包括账户信息更新、绑定状态管理、账户切换等。 - -###### 业务规则 - -1. **状态管理**:支持启用、停用绑定关系 -2. **信息同步**:定期同步客户基础信息 -3. **异常处理**:处理账户异常情况(如销户、过户等) - -### 模块2: 信息查询服务 - -#### 功能 - -##### 功能1: 账单查询 - -###### 功能描述 - -提供客户账单查询服务,包括当期账单、历史账单、欠费信息等查询功能。 - -###### 业务规则 - -1. **查询权限**:只能查询已绑定账户的信息 -2. **数据范围**:支持查询最近24个月的账单信息 -3. **实时更新**:账单信息实时同步更新 - -###### 数据设计 - -主要涉及以下数据表: -- `billing_record`:开账记录表 -- `payment_record`:缴费记录表 -- `customer_info`:客户信息表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| getBillInfo | 获取账单信息 | customerCode:客户编号(必填),billMonth:账单月份(选填) | BillInfo对象 | -| getPaymentHistory | 获取缴费历史 | customerCode:客户编号(必填),startDate:开始日期(选填),endDate:结束日期(选填) | List | -| getArrearsInfo | 获取欠费信息 | customerCode:客户编号(必填) | ArrearsInfo对象 | -| getUsageHistory | 获取用水历史 | customerCode:客户编号(必填),months:查询月数(选填) | List | - -### 模块3: 在线缴费服务 - -#### 功能 - -##### 功能1: 多渠道支付 - -###### 功能描述 - -支持微信支付、支付宝支付、银行卡支付等多种支付方式,为客户提供便捷的在线缴费服务。 - -###### 业务规则 - -1. **支付限额**:单次支付金额不超过5000元 -2. **支付确认**:支付完成后实时更新账户状态 -3. **退款处理**:支持支付失败和错误支付的退款处理 - -###### 数据设计 - -主要涉及以下数据表: -- `online_payment`:在线支付记录表 -- `payment_channel`:支付渠道表 -- `refund_record`:退款记录表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| createPayment | 创建支付订单 | paymentInfo:支付信息(必填) | PaymentOrder对象 | -| confirmPayment | 确认支付结果 | orderId:订单ID(必填) | PaymentResult对象 | -| processRefund | 处理退款申请 | refundInfo:退款信息(必填) | RefundResult对象 | -| getPaymentStatus | 查询支付状态 | orderId:订单ID(必填) | PaymentStatus对象 | - -### 模块4: 电子发票服务 - -#### 功能 - -##### 功能1: 发票管理 - -###### 功能描述 - -提供电子发票申请、查询、下载等服务,支持个人和企业发票需求。 - -###### 业务规则 - -1. **发票类型**:支持普通发票和专用发票 -2. **开票时限**:缴费后30天内可申请发票 -3. **发票推送**:发票开具成功后自动推送给客户 - -###### 数据设计 - -主要涉及以下数据表: -- `invoice_application`:发票申请表 -- `invoice_info`:发票信息表 -- `invoice_push_log`:发票推送日志表 - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| applyInvoice | 申请电子发票 | invoiceRequest:发票申请(必填) | InvoiceApplication对象 | -| getInvoiceList | 获取发票列表 | customerCode:客户编号(必填) | List | -| downloadInvoice | 下载电子发票 | invoiceId:发票ID(必填) | InvoiceFile对象 | -| pushInvoice | 推送电子发票 | invoiceId:发票ID(必填),pushChannel:推送渠道(必填) | Boolean类型:true/false | - -# 子系统6设计: 手机抄表APP - -## 功能与界面 - -手机抄表APP是为抄表员提供的移动端应用,实现现场抄表、工单处理、数据同步等功能。 - -**核心业务流程:** -任务下载 → 现场抄表 → 问题上报 → 工单处理 → 数据上传 → 结果同步 - -**主要功能模块:** - -- **登录模块**:机构编号、用户名密码认证、自动登录、版权标识 -- **首页搜索**:多维度搜索、最近搜索记录、抄表任务列表 -- **采集任务管理**:任务列表、批量下载、单户采集详情 -- **换表工单**:工单处理流程、设备信息录入、附件上传 -- **其他工单**:复水工单、稽查任务、抄表稽查、问题上报 -- **个人信息与系统设置**:个人信息管理、账户安全、系统维护 - -## 模块列表 - -| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | -|---|---|---|---| -| MOBILE-001 | 登录模块 | 机构编号、用户名密码认证、自动登录 | 自行开发 | -| MOBILE-002 | 首页搜索模块 | 多维度搜索、最近搜索记录、抄表任务 | 自行开发 | -| MOBILE-003 | 采集任务管理模块 | 任务列表管理、批量下载、单户采集 | 自行开发 | -| MOBILE-004 | 换表工单模块 | 换表工单处理、设备信息录入 | 自行开发 | -| MOBILE-005 | 其他工单模块 | 复水、稽查、问题上报等工单处理 | 自行开发 | -| MOBILE-006 | 个人信息与系统设置模块 | 个人信息管理、系统设置维护 | 自行开发 | - -## 模块设计 - -### 模块1: 登录模块 - -#### 功能 - -##### 功能1: 核心登录功能 - -###### 功能描述 - -1. **功能概述** - - 提供移动端用户登录认证功能,支持机构编号、用户名、密码三要素登录,包含自动登录选项和登录问题支持。 - -2. **操作权限** - - - 抄表员:基础抄表功能权限 - - 抄表组长:抄表监督和工单分配权限 - - 表务人员:换表和维修工单权限 - -3. **功能约束** - - - 必须输入机构编号、用户名、密码三要素 - - 支持自动登录功能(默认未勾选) - - 登录失败提供客服支持途径 - -###### 业务规则 - -1. **登录验证规则**:机构编号、用户名、密码三要素缺一不可 -2. **自动登录规则**:勾选后下次打开应用自动提交历史凭证登录 -3. **安全控制规则**:密码输入内容自动掩码显示 - -###### 业务流程 - -```mermaid -flowchart TD - A[启动APP] --> B[显示欢迎语] - B --> C[显示登录表单] - C --> D[输入机构编号] - D --> E[输入用户名] - E --> F[输入密码] - F --> G[选择自动登录] - G --> H[点击登录按钮] - - H --> I[提交身份验证] - I --> J{验证结果} - J -->|成功| K[进入主界面] - J -->|失败| L[显示登录失败] - - L --> M[提示联系客服] - M --> C - - K --> N[保存登录状态] - N --> O([登录完成]) -``` - -###### 界面设计要点 - -1. **欢迎语**:顶部显示"您好!欢迎使用「手机抄表」功能" -2. **登录表单**: - - 机构编号输入框:占位提示"请输入机构ID" - - 用户名输入框:占位提示"输入账号" - - 密码输入框:占位提示"输入密码",内容自动掩码 - - 自动登录复选框:标签为"自动登录",默认未勾选 - - 登录按钮:标签为"登录",主操作按钮 -3. **辅助功能**: - - 底部提示"登录遇到问题联系客服" - - 底部版权标识"福建水投集团" - -###### 数据设计 - -主要涉及以下数据表: -- `system_users`:用户基本信息表(复用Web端) -- `system_login_log`:登录日志表(复用Web端,扩展设备类型字段) -- `mobile_user_cache`:移动端用户缓存表(移动端特有,用于离线缓存) - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| submitLogin | 提交登录验证 | orgCode:机构编号(必填)
username:用户名(必填)
password:密码(必填)
autoLogin:自动登录(可选) | LoginResult对象 | -| checkAutoLogin | 检查自动登录 | deviceId:设备ID(必填) | AutoLoginResult对象 | -| saveLoginCredentials | 保存登录凭证 | credentials:登录凭证(必填) | Boolean类型:true/false | -| clearLoginCache | 清除登录缓存 | userId:用户ID(必填) | Boolean类型:true/false | - -### 模块2: 首页搜索模块 - -#### 功能 - -##### 功能1: 搜索框功能 - -###### 功能描述 - -1. **功能概述** - - 提供多维度客户搜索功能,支持户号、户名、地址、钢印号、手机号等多种搜索条件,实现快速定位客户信息。 - -2. **操作权限** - - - 所有登录用户均可使用搜索功能 - - 搜索结果根据用户权限进行过滤 - -3. **功能约束** - - - 支持实时搜索和关键词高亮 - - 搜索历史自动保存和去重 - - 异常状态需要友好提示 - -###### 业务规则 - -1. **搜索条件规则**:支持户号、户名、地址、钢印号、手机号模糊匹配 -2. **搜索历史规则**:最近搜索记录自动去重,显示关键信息 -3. **结果展示规则**:搜索结果实时显示,支持关键词高亮 - -###### 业务流程 - -```mermaid -flowchart TD - A[进入首页] --> B[显示搜索框] - B --> C[显示最近搜索记录] - C --> D[显示抄表任务列表] - - B --> E[输入搜索关键词] - E --> F[实时搜索匹配] - F --> G{是否有结果} - G -->|有结果| H[显示搜索结果] - G -->|无结果| I[显示"未找到相关用户"] - - H --> J[点击搜索结果] - C --> K[点击最近搜索] - D --> L[点击抄表任务] - - J --> M[跳转用户详情页] - K --> M - L --> M - - M --> N[携带用户信息] - N --> O[加载用户档案] - O --> P[显示水表数据] - P --> Q[显示欠费账单] - Q --> R([完成用户信息加载]) -``` - -###### 界面设计要点 - -1. **搜索框区域**: - - 占位提示:"户号/户名/地址/钢印号/手机号" - - 右侧取消按钮:清空内容并退出搜索状态 -2. **最近搜索记录**: - - 显示"最近搜索"标签 - - 条目包含户号、户名、地址末段 - - 点击条目跳转用户详情页 -3. **抄表任务列表**: - - 显示"抄表任务"标签 - - 每户显示户号、户名、完整地址 - - 相同户号的多条记录合并显示 -4. **搜索结果列表**: - - 实时展示匹配结果 - - 支持关键词高亮显示 - - 无结果时显示友好提示 - -###### 数据设计 - -主要涉及以下数据表: -- `mobile_search_history`:移动端搜索历史表(移动端特有) -- `reading_book`:抄表册本表(复用Web端) -- `customer_info`:客户基本信息表(复用Web端) -- `meter_info`:水表信息表(复用Web端) - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| searchCustomer | 搜索客户信息 | keyword:搜索关键词(必填)
searchType:搜索类型(可选) | List对象 | -| getSearchHistory | 获取搜索历史 | userId:用户ID(必填)
limit:条数限制(可选) | List对象 | -| saveSearchHistory | 保存搜索历史 | userId:用户ID(必填)
keyword:关键词(必填) | Boolean类型:true/false | -| getReadingTaskList | 获取抄表任务列表 | employeeId:抄表员ID(必填) | List对象 | - -### 模块3: 采集任务管理模块 - -#### 功能 - -##### 功能1: 任务列表管理 - -###### 功能描述 - -1. **功能概述** - - 管理抄表员的采集任务,包括任务列表展示、数据统计面板、任务筛选分类、批量下载等功能。 - -2. **操作权限** - - - 抄表员:查看和执行自己的任务 - - 抄表组长:查看所有任务和分配权限 - -3. **功能约束** - - - 任务按册本组织,支持离线操作 - - 未下载任务需要联网下载数据包 - - 支持全选和批量操作 - -###### 业务规则 - -1. **任务状态规则**:未下载(需联网)、已下载(支持离线) -2. **任务筛选规则**:按"全部/未采集/采集"分类查看 -3. **批量操作规则**:支持全选和多选批量下载 - -###### 业务流程 - -```mermaid -flowchart TD - A[进入任务管理] --> B[显示操作员姓名] - B --> C[显示全局搜索框] - C --> D[显示数据统计面板] - D --> E[显示任务筛选标签] - E --> F[显示任务列表] - - F --> G[选择任务项] - G --> H[批量操作] - H --> I[全选功能] - I --> J[点击下载按钮] - - J --> K{网络状态} - K -->|有网络| L[下载任务数据包] - K -->|无网络| M[提示网络异常] - - L --> N[更新任务状态] - N --> O[显示"已下载"] - O --> P[支持离线操作] - P --> Q([任务下载完成]) - - M --> R[等待网络恢复] - R --> J -``` - -###### 界面设计要点 - -1. **页面头部**: - - 显示当前操作员姓名(如"张三") - - 全局搜索框:支持按"户号/户名/地址/钢印"搜索 -2. **数据统计面板**: - - 分栏显示"应采集X|已采集Y|已上传Z" - - 实时反映任务进度 -3. **任务筛选**: - - 标签页导航:"全部/未采集/采集" - - 支持按状态分类查看 -4. **任务列表**: - - 单条任务项:册本编号、备注、状态标签 - - 左侧单选按钮:支持勾选任务项 - - 状态标识:"未下载"或"已下载" -5. **批量操作区**: - - 底部"全选"按钮:勾选所有任务 - - 显示"已选册本(N)"计数 - - 蓝色"下载"按钮:批量下载选中任务 - -###### 数据设计 - -主要涉及以下数据表: -- `reading_book`:抄表册本表(复用Web端) -- `reading_record`:抄表记录表(复用Web端) -- `customer_info`:客户基本信息表(复用Web端) -- `meter_info`:水表信息表(复用Web端) -- `mobile_task_sync`:移动端任务同步表(移动端特有,用于离线任务管理) - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| getTaskList | 获取任务列表 | employeeId:抄表员ID(必填)
status:任务状态(可选) | List对象 | -| downloadTaskData | 下载任务数据包 | taskIds:任务ID列表(必填) | DownloadResult对象 | -| getTaskStatistics | 获取任务统计 | employeeId:抄表员ID(必填) | TaskStatistics对象 | -| updateTaskStatus | 更新任务状态 | taskId:任务ID(必填)
status:状态(必填) | Boolean类型:true/false | - -##### 功能2: 单户采集详情 - -###### 功能描述 - -1. **功能概述** - - 提供单个客户的详细采集功能,包括住户档案展示、多种采集方式选择、户间导航等。 - -2. **功能约束** - - - 显示完整的客户档案信息 - - 支持定位、NFC、扫码三种采集方式 - - 支持按任务列表顺序切换客户 - -###### 业务规则 - -1. **档案展示规则**:显示户号、户名、地址、表钢印号、水表编号、安装位置等 -2. **采集方式规则**:定位(GPS)、NFC(电子标签)、扫码(二维码/条形码) -3. **导航规则**:按任务列表顺序支持上一户/下一户切换 - -###### 界面设计要点 - -1. **住户档案区域**: - - 显示户号、户名、完整地址 - - 显示表钢印号、水表编号、安装位置 - - 右上角显示状态标签(如"正常""欠费") -2. **采集方式选择**: - - 并列提供三种采集入口 - - 定位:获取GPS坐标 - - NFC:读取电子标签 - - 扫码:识别二维码/条形码 -3. **户间导航**: - - 底部"上一户/下一户"按钮 - - 按任务列表顺序切换 - -### 模块4: 换表工单模块 - -#### 功能 - -##### 功能1: 换表工单处理流程 - -###### 功能描述 - -1. **功能概述** - - 处理换表工单的完整流程,从待办工单列表到工单完成,包括工单信息填写、设备信息录入、附件上传等。 - -2. **操作权限** - - - 表务人员:处理换表工单 - - 工单管理员:工单分配和审核 - -3. **功能约束** - - - 必填字段必须完整填写 - - 必须上传现场照片和视频 - - 支持工单退单和说明原因 - -###### 业务规则 - -1. **工单筛选规则**:支持按用户名、时间、工单类型、抄表员多维度筛选 -2. **信息录入规则**:旧表底码、新表底码为必填项 -3. **设备信息规则**:IMEI为强制录入,IMSI和通讯模块号可选 -4. **附件要求规则**:必须上传图片或视频作为现场证据 - -###### 业务流程 - -```mermaid -flowchart TD - A[待办工单列表] --> B[筛选工单] - B --> C[选择换表工单] - C --> D[查看工单详情] - D --> E[填写基础信息] - - E --> F[录入表具数据] - F --> G[填写技术参数] - G --> H[录入设备标识] - H --> I[填写备注信息] - I --> J[上传附件] - - J --> K{信息是否完整} - K -->|否| L[提示必填项] - L --> F - K -->|是| M[选择操作] - - M --> N{完成还是退单} - N -->|完成| O[提交工单] - N -->|退单| P[填写退单原因] - - O --> Q[工单状态更新] - P --> R[工单退回] - - Q --> S[通知相关人员] - R --> T[记录退单日志] - - S --> U([工单处理完成]) - T --> U -``` - -###### 界面设计要点 - -1. **待办工单列表**: - - 筛选功能:用户名、开始时间、工单类型、抄表员 - - 时间选择器:支持跨年度选择(2023-2025年) - - 工单信息:编号、户主姓名、地址、联系方式、创建时间 -2. **工单信息填写**: - - 基础信息:户号、户名、地址、联系电话(自动带出,不可编辑) - - 表具数据:旧表底码(必填)、新表底码(必填)、表钢印号/水表编号/条形码 - - 技术参数:新表口径、新表量程、新表厂家/型号 - - 设备标识:IMEI(强制录入)、IMSI、通讯模块号 - - 备注框:支持长文本输入 -3. **附件上传**: - - 支持图片(拍照/相册) - - 支持视频(现场录制) -4. **操作按钮**: - - 蓝色"完成"按钮:提交工单 - - 红色"退单"按钮:终止并说明原因 - -###### 数据设计 - -主要涉及以下数据表: -- `meter_work_order`:表务工单表(复用Web端) -- `meter_replacement_log`:水表更换日志表(复用Web端) -- `work_order_material`:工单用料表(复用Web端) -- `mobile_work_attachment`:移动端工单附件表(移动端特有,用于现场附件管理) - -###### 方法说明 - -| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 | -|---|---|---|---| -| getWorkOrderList | 获取待办工单列表 | employeeId:抄表员ID(必填)
filter:筛选条件(可选) | List对象 | -| submitMeterChange | 提交换表工单 | workOrderId:工单ID(必填)
meterChangeData:换表数据(必填) | SubmitResult对象 | -| uploadAttachment | 上传附件 | workOrderId:工单ID(必填)
attachmentData:附件数据(必填) | UploadResult对象 | -| rejectWorkOrder | 退单处理 | workOrderId:工单ID(必填)
reason:退单原因(必填) | Boolean类型:true/false | - -### 模块5: 其他工单模块 - -#### 功能 - -##### 功能1: 复水工单 - -###### 功能描述 - -1. **功能概述** - - 处理客户复水工单,包括日期选择、用户信息展示、欠费状态校验、二次确认操作等。 - -2. **业务规则** - - - 必须校验欠费结清状态 - - 需要二次确认操作 - - 记录复水操作时间和操作人 - -###### 业务流程 - -```mermaid -flowchart TD - A[选择复水工单] --> B[选择日期] - B --> C[展示用户信息] - C --> D[显示欠费结清状态] - D --> E{欠费是否结清} - E -->|是| F[显示"确认开水"按钮] - E -->|否| G[提示需要结清欠费] - F --> H[点击确认开水] - H --> I[二次弹窗确认] - I --> J{确认操作} - J -->|是| K[执行复水操作] - J -->|否| L[取消操作] - K --> M[更新客户状态] - M --> N[记录操作日志] - N --> O([复水工单完成]) -``` - -##### 功能2: 稽查任务 - -###### 功能描述 - -1. **功能概述** - - 执行抄表稽查任务,包括待办列表、采集任务管理、数据看板、离线数据下载等。 - -2. **业务规则** - - - 支持双模式入口:待办列表和采集任务管理 - - 实时显示稽查进度 - - 支持册本批量下载 - -##### 功能3: 抄表稽查 - -###### 功能描述 - -1. **功能概述** - - 对抄表数据进行稽查验证,包括用户档案核对、抄表数据对比、稽查结论填写、过程存证等。 - -2. **业务规则** - - - 必须填写稽查结论(合格/不合格) - - 必须上传图片和视频证据 - - 记录上期读数和本期读数 - -###### 界面设计要点 - -1. **信息结构**: - - 用户档案:编号、姓名、地址、钢印号 - - 抄表数据:上期读数→本期读数 - - 稽查结论:"合格"单选按钮(强制选择) - - 过程存证:图片+视频附件上传(必传) -2. **操作按钮**: - - 蓝色"保存"按钮:完成稽查 - -##### 功能4: 问题上报 - -###### 功能描述 - -1. **功能概述** - - 支持现场问题上报,包括问题类型选择、处理时效设置、溯源证据上传等。 - -2. **业务规则** - - - 上报类型固定为"换表申请" - - 处理时效精确到小时 - - 必须上传图片或视频证据 - -###### 界面设计要点 - -1. **核心字段**: - - 上报类型:固定为"换表申请" - - 处理时效:精确到小时(如2025-06-06至2025-06-06) - - 溯源证据:强制上传图片/视频 -2. **操作流程**: - - 保存提交后触发后台工单派发 - -###### 数据设计 - -其他工单模块主要涉及以下数据表: -- `meter_work_order`:表务工单表(复用Web端,包括复水、稽查、维修等工单) -- `customer_info`:客户基本信息表(复用Web端) -- `customer_account`:客户账户信息表(复用Web端,用于欠费状态查询) -- `reading_record`:抄表记录表(复用Web端,用于稽查数据对比) -- `mobile_work_attachment`:移动端工单附件表(移动端特有,用于现场证据存储) - -### 模块6: 个人信息与系统设置模块 - -#### 功能 - -##### 功能1: 个人信息管理 - -###### 功能描述 - -1. **功能概述** - - 管理个人基本信息,包括姓名修改、手机号设置、信息查看等功能。 - -2. **业务规则** - - - 姓名可以修改,需要二次确认 - - 手机号首次设置后可以修改 - - 账号信息不可修改 - -###### 界面设计要点 - -1. **信息展示**: - - 姓名、账号、手机号码状态 -2. **编辑功能**: - - 修改姓名:进入子页面,点击"完成"提交 - - 设置手机号:未设置时填写,点击"完成"保存 - -##### 功能2: 账户安全配置 - -###### 功能描述 - -1. **功能概述** - - 管理账户安全相关设置,包括密码修改、退出登录等。 - -2. **业务规则** - - - 新密码需要符合安全要求 - - 需要输入新密码和确认密码 - - 退出登录清除本地会话 - -##### 功能3: 系统维护选项 - -###### 功能描述 - -1. **功能概述** - - 提供系统维护相关功能,包括日志上传、缓存清理、数据备份、版本信息等。 - -2. **业务规则** - - - 重要操作需要二次确认 - - 支持异常水量预警开关 - - 显示当前应用版本 - -###### 界面设计要点 - -1. **系统维护功能**: - - 日志上传:弹出确认框,发送至服务器 - - 清理缓存:弹出提示确认,清空本地记录 - - 抄表设置:启用"异常水量预警"开关 - - 备份数据库:保存本地数据 - - 版本信息:显示当前版本(如V1.0.3) - -###### 数据设计 - -主要涉及以下数据表: -- `system_users`:用户基本信息表(复用Web端) -- `system_login_log`:登录日志表(复用Web端,记录密码修改等操作) -- `mobile_app_config`:移动端应用配置表(移动端特有,用于个性化设置) - -## 关键业务规则与注意事项 - -### 数据校验规则 - -1. **必填字段验证**: - - 标*字段必须完整填写 - - 换表工单的旧表底码、新表底码为必填 - - IMEI设备识别码为强制录入项 - -2. **格式校验规则**: - - 手机号格式验证 - - 日期范围不超过当前日期 - - 表底码数值合理性检查 - -### 状态一致性规则 - -1. **任务状态管理**: - - 未下载任务不可直接采集 - - 相同户号在列表中合并显示 - - 任务状态实时同步更新 - -2. **工单状态流转**: - - 工单状态按流程严格流转 - - 退单操作需要填写原因 - - 完成工单需要附件证据 - -### 离线能力支持 - -1. **离线操作规则**: - - 已下载任务支持无网环境操作 - - 网络恢复后自动同步数据 - - 本地缓存数据完整性保证 - -2. **数据同步策略**: - - 支持实时上传和批量上传 - - 冲突数据需要人工处理 - - 重要数据多重备份保护 - -### 防误操作机制 - -1. **二次确认操作**: - - 复水操作需要二次确认 - - 退单操作需要填写原因 - - 清理缓存需要确认提示 - -2. **数据完整性保护**: - - 附件上传需要清晰可辨 - - 安装位置照片必须上传 - - 关键操作记录审计日志 - -# 中间件和其他设计 - -## 缓存设计 - -### Redis - - -| 作用 | Key | Value | 过期时间 | -|---|---|---|---| -| 用户会话 | user:session:{userId} | 用户信息JSON | 2小时 | -| 系统配置 | system:config:{configKey} | 配置值 | 24小时 | -| 数据字典 | system:dict:{dictType} | 字典项列表 | 24小时 | -| 验证码 | captcha:{uuid} | 验证码值 | 5分钟 | -| 移动端任务 | mobile:task:{employeeId} | 抄表任务JSON | 12小时 | -| 移动端缓存 | mobile:cache:{deviceId} | 缓存数据JSON | 24小时 | - -## 消息队列设计 - -### RabbitMQ - -| 作用 | Queue | Consumer | +| 子系统 | 说明 | 核心模块 | |---|---|---| -| 短信发送 | sms.send | SmsConsumer | -| 邮件发送 | email.send | EmailConsumer | -| 抄表数据处理 | reading.process | ReadingConsumer | +| 统一平台 | 提供统一认证、组织、权限、参数、审计与监控基础能力 | UP-001 ~ UP-004 | +| 营收业务 | 覆盖客户、抄表、收费、账务、发票、催缴、统计、代收与业务工单 | REV-001 ~ REV-009 | +| 表务管理 | 覆盖水表档案、表务工单、仓储、生命周期与物联网接入 | METER-001 ~ METER-004 | +| 报装与签章 | 覆盖受理、踏勘、施工、签约、电子签章、归档 | INST-001 ~ INST-005 | +| 客户服务模块 | 覆盖账户绑定、信息查询、在线缴费、电子发票、网点服务、业务办理与柜面扫码支付 | CS-001 ~ CS-007 | -## 定时任务设计 +# 统一平台详细设计 -| 使用工具 | 功能描述 | 方法名称 | 调用周期 | -|---|---|---|---| -| Quartz | 自动开账任务 | autoGenerateBills | 每日凌晨2点 | -| Quartz | 欠费统计 | calculateArrears | 每日凌晨3点 | -| Quartz | 数据备份 | backupDatabase | 每日凌晨4点 | -| Quartz | 清理过期日志 | cleanExpiredLogs | 每周日凌晨1点 | +## UP-001 统一认证与单点登录 -## 数据库设计 +### 功能说明 -详见《新-数据库设计说明书.md》。 +UP-001 为全系统提供统一身份认证与单点登录能力,支撑 PC 管理端、移动作业端、客户渠道及外部集成应用的统一接入。 -## 数据字典设计 +### 关键设计 -详见《新-数据库设计说明书.md》中的数据字典部分。 +1. 支持用户名密码登录、短信验证码登录、第三方授权登录。 +2. 采用 OAuth2.0 + JWT 实现访问令牌签发与会话管理。 +3. 对外部系统开放标准认证接口,支持令牌续期与退出失效。 +4. 对高敏感操作支持 MFA 二次校验。 -# 对外接口 +### 业务流程 -系统需要与多个外部系统进行接口对接,实现数据交换和业务协同。以下是主要外部接口的详细设计。 +```mermaid +sequenceDiagram + participant 用户 + participant 接入端 + participant 认证中心 + participant 用户中心 -## 金融支付接口 + 用户->>接入端: 提交登录信息 + 接入端->>认证中心: 发起认证请求 + 认证中心->>用户中心: 校验用户/角色/状态 + 用户中心-->>认证中心: 返回校验结果 + 认证中心-->>接入端: 返回Token/权限上下文 + 接入端-->>用户: 登录成功并进入目标系统 +``` -### 银行接口 +### 核心数据 -银行接口用于实现银行代扣、托收、实时收费等功能。 +- `system_users`:用户基本信息。 +- `system_oauth2_client`:客户端信息。 +- `system_oauth2_access_token`:访问令牌。 +- `system_oauth2_refresh_token`:刷新令牌。 +- `system_login_log`:登录审计日志。 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-001 | 银行代扣接口 | 银行托收代扣缴费 | HTTPS | 用户信息、缴费金额 | 扣款结果 | -| EXT-002 | 银行托收接口 | 银行托收业务 | HTTPS | 托收文件、客户信息 | 托收结果 | -| EXT-003 | 银行实时收费接口 | 银行柜台实时收费 | HTTPS | 客户编号、收费金额 | 收费结果 | -| EXT-004 | 银行对账接口 | 银行交易对账 | HTTPS | 对账文件、交易记录 | 对账结果 | +## UP-002 组织用户与权限管理 -#### 银行代扣接口详细设计 +### 功能说明 -**接口描述:** 与银行系统对接,实现自动代扣客户水费功能。 +UP-002 管理组织机构、岗位、角色、菜单、数据权限和用户授权关系,是业务系统权限控制与数据隔离的基础。 + +### 关键设计 + +1. 支持集团—区域公司—营业所三级及以上组织结构。 +2. 基于 RBAC 实现菜单权限、按钮权限、数据权限。 +3. 支持多租户/多单位数据隔离与用户归属控制。 +4. 敏感操作如账务调整、退款、作废、签章回退必须经过权限校验。 + +### 主要规则 + +- 角色权限与组织权限叠加生效。 +- 业务数据默认按所属单位、片区、岗位范围过滤。 +- 超权限查询、批量导出、敏感字段查看需单独授权。 + +## UP-003 参数字典与基础配置 + +### 功能说明 + +UP-003 用于统一维护业务参数、地址参数、水价规则、短信模板、打印模板、字典数据与定时任务参数。 + +### 关键设计 + +| 配置类别 | 典型内容 | 用途 | +|---|---|---| +| 业务字典 | 客户类型、抄表方式、工单状态 | 统一编码与展示 | +| 地址参数 | 行政区划、片区、册本归属 | 客户与表务归属管理 | +| 价格体系 | 用水性质、阶梯水价、污水费规则 | 开账与账务计算 | +| 渠道参数 | 支付渠道、短信模板、税控配置 | 外部接口集成 | +| 任务参数 | 自动开账、对账、备份周期 | 运维调度 | + +## UP-004 审计监控与运维支撑 + +### 功能说明 + +UP-004 提供操作日志、登录日志、接口日志、异常监控、在线用户、任务监控、性能监控等能力。 + +### 关键设计 + +1. 所有核心业务操作写入统一审计日志。 +2. 接口调用成功率、响应时长、异常码进入监控平台。 +3. 定时任务执行结果、失败重试与人工补偿过程可追踪。 +4. 监控与告警支持短信、邮件、站内信等通知方式。 + +# 营收业务详细设计 + +## REV-001 客户资料管理 + +### 功能说明 + +负责客户主档、账户主档、联系人、客户分组、客户与水表关系、客户开票信息、客户渠道绑定及托收/代扣关系维护,是抄表、收费、发票、代扣等后续业务的主数据基础。 + +### 关键设计 + +1. 客户建档覆盖立户、变更、更名、过户、销户、报停等全生命周期处理。 +2. 客户资料支持按客户类型、用水性质、片区、集团客户、重点客户等维度管理。 +3. 客户与水表、开票主体、托收/代扣签约关系按关联表维护,避免在主表中堆叠多类属性。 +4. 客户编号、集收标记、计划用水方案等规则类数据由统一配置与客户关系表共同支撑。 + +### 核心数据 + +- `biz_cust`:客户主档。 +- `biz_account`:客户账户与账户状态。 +- `biz_cust_contact`:联系人及联系方式。 +- `biz_cust_group`:客户分组。 +- `biz_cust_meter`:客户与水表绑定关系。 +- `biz_cust_invoice`:客户开票信息。 +- `biz_cust_app_binds`:渠道绑定关系。 +- `biz_cust_collection_rel`:客户托收关系。 +- `biz_cust_withholding_rel`:客户代扣关系。 +- `biz_cust_water_use_scheme`、`biz_cust_water_scheme_rel`:客户计划用水方案关系。 +- `biz_cust_no_rule`:客户编号规则。 +- `biz_cust_hub_marks`:集收号/集收标记关系。 + +### 落地边界 + +- **已落地**:客户主档、账户、联系人、分组、绑定、开票、托收/代扣关系。 +- **部分落地**:客户扩展关系、集收与规则类对象已见明确关系表,但具体业务场景仍需结合流程进一步细化。 +- **文档先行**:主副卡、部分复杂客户关系对象在当前 backend 中未见完全独立表族,文档中仅保留业务对象表述。 + +## REV-002 抄表开账 + +### 功能说明 + +负责抄表计划、册本管理、抄表录入、抄表状态跟踪、异常复核、计费计算与账单生成,是营收核心处理链路的起点。 + +### 业务流程 -**业务流程:** ```mermaid flowchart TD - A[生成代扣文件] --> B[上传到银行FTP] - B --> C[银行处理代扣] - C --> D[接收代扣结果] - D --> E[更新客户账单] - E --> F[生成代扣记录] - F --> G[对账处理] - G --> H([代扣完成]) + A[制定抄表计划] --> B[生成抄表册本] + B --> C[分配抄表任务] + C --> D[人工/远传/自报抄表] + D --> E[数据校验] + E --> F{是否异常} + F -->|是| G[异常复核处理] + F -->|否| H[生成开账数据] + G --> H + H --> I[按价格模板与费用组成计费] + I --> J[生成营业账与明细] + J --> K[账单审核确认] + K --> L[进入收费/催缴/开票] ``` -**接口参数:** -- 请求方式:POST -- 数据格式:JSON -- 加密方式:RSA + AES +### 关键规则 -**请求参数:** -```json -{ - "customerCode": "客户编号", - "customerName": "客户姓名", - "bankAccount": "银行账户", - "amount": "代扣金额", - "billInfo": "账单信息", - "deductDate": "代扣日期" -} -``` +1. 抄表数据同时校验本次读数、上次读数、用量波动和抄表状态。 +2. 异常抄表支持估抄、补抄、重录、人工复核。 +3. 开账按价格归属、价格模板、费用组成、阶梯规则、计划用水方案综合计算。 +4. 审核通过后的营业账方可进入收费、催缴和发票流程。 +5. 远传抄表数据可由 `SYS-006` / IoT 能力提供采集支撑,但账单生成仍归属 SYS-002。 -**响应参数:** -```json -{ - "resultCode": "结果码", - "resultMsg": "结果信息", - "transactionId": "交易流水号", - "deductResult": "代扣结果", - "balance": "账户余额" -} -``` +### 核心数据 -### 第三方支付接口 +- `biz_meter_book`:册本与抄表计划。 +- `biz_meter_read`:抄表任务状态/执行状态。 +- `biz_reading_data`:抄表数据。 +- `biz_last_reading`:上次抄表结果。 +- `biz_reading_logs`:抄表日志与过程留痕。 +- `biz_meter`:计量水表主档引用。 +- `biz_charge`:营业账主表。 +- `biz_charge_detail`:营业账明细。 +- `biz_price_category`:价格归属。 +- `biz_price_template`:价格模板。 +- `biz_price_adjustment_snap`:调价快照。 +- `biz_price_tier_adjustment`:阶梯规则。 +- `biz_cost_component`:费用组成。 +- `biz_water_use_scheme`、`biz_water_use_scheme_tier`:计划用水方案与阶梯。 -#### 微信支付接口 +### 落地边界 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-101 | 微信支付统一下单 | 微信支付下单 | HTTPS | 订单信息、金额 | 预支付ID | -| EXT-102 | 微信支付结果查询 | 查询支付结果 | HTTPS | 订单号 | 支付结果 | -| EXT-103 | 微信支付退款 | 微信支付退款 | HTTPS | 订单号、退款金额 | 退款结果 | +- **已落地**:册本、抄表数据、上次抄表、抄表日志、营业账主明细、价格模板与阶梯规则。 +- **部分落地**:部分异常场景对象可能仍通过状态字段和日志表承载,而非全部拆成独立业务表。 +- **文档先行**:个别精细稽查、轨迹、下载同步对象当前未在本轮映射中确认为独立表。 -#### 支付宝接口 +## REV-003 营业收费 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-201 | 支付宝统一收单 | 支付宝收单 | HTTPS | 订单信息、金额 | 支付结果 | -| EXT-202 | 支付宝交易查询 | 查询交易状态 | HTTPS | 交易号 | 交易状态 | -| EXT-203 | 支付宝交易退款 | 支付宝退款 | HTTPS | 交易号、退款金额 | 退款结果 | +### 功能说明 -## 通信接口 +支持柜台收费、预存款/余额抵扣、线上缴费回写、柜面扫码、营业网点收费及收费凭证管理,统一承接营收账单的核销处理。 -### 短信平台接口 +### 业务流程 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-301 | 短信发送接口 | 发送短信通知 | HTTPS | 手机号、短信内容 | 发送结果 | -| EXT-302 | 短信状态查询 | 查询短信状态 | HTTPS | 短信ID | 发送状态 | -| EXT-303 | 短信余额查询 | 查询短信余额 | HTTPS | 账户信息 | 余额信息 | - -#### 短信发送接口详细设计 - -**接口描述:** 与短信平台对接,实现催缴短信、通知短信等功能。 - -**业务流程:** ```mermaid flowchart TD - A[生成短信内容] --> B[调用短信接口] - B --> C[短信平台处理] - C --> D[返回发送结果] - D --> E[记录发送日志] - E --> F[状态回调处理] - F --> G([短信发送完成]) + A[查询客户及待缴账单] --> B[选择账单与核销方式] + B --> C[选择支付渠道] + C --> D{支付方式} + D -->|柜台现金/POS/扫码| E[现场收费] + D -->|微信/支付宝/聚合支付| F[渠道下单] + D -->|预存款/余额抵扣| G[账户余额核销] + E --> H[更新营业账状态] + F --> I[等待异步回调确认] + G --> H + I --> H + H --> J[生成收费记录与凭证] + J --> K[进入发票/对账流程] ``` -**接口参数:** -```json -{ - "mobile": "手机号码", - "content": "短信内容", - "templateId": "模板ID", - "params": "模板参数" -} -``` +### 关键规则 -### 邮件接口 +1. 一次缴费可对应多个账单或账单明细的组合核销。 +2. 收费记录必须保留渠道、流水号、网点、操作员、终端信息。 +3. 线上支付必须以回调或查询确认结果为准,不得以发起状态直接记账。 +4. 支付能力由 `SYS-009` 提供,SYS-002 负责账单核销与业务状态回写。 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-401 | 邮件发送接口 | 发送邮件通知 | HTTPS | 邮箱地址、邮件内容 | 发送结果 | -| EXT-402 | 邮件状态查询 | 查询邮件状态 | HTTPS | 邮件ID | 发送状态 | +### 核心数据 -## 税务接口 +- `biz_charge`、`biz_charge_detail`:待缴与已缴账单主明细。 +- `biz_collection`:托收/代收主表。 +- `biz_withholding`:代扣/托收主表。 +- `bk_transaction`:渠道交易流水。 +- `bk_transaction_callback`:支付回调记录。 +- `bk_transaction_exception`:支付异常记录。 -### 开票接口 +### 落地边界 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-501 | 电子发票开具 | 开具电子发票 | HTTPS | 发票信息、税率 | 发票结果 | -| EXT-502 | 发票状态查询 | 查询发票状态 | HTTPS | 发票代码 | 发票状态 | -| EXT-503 | 发票作废 | 作废发票 | HTTPS | 发票代码、作废原因 | 作废结果 | -| EXT-504 | 发票红冲 | 红冲发票 | HTTPS | 发票代码、红冲原因 | 红冲结果 | +- **已落地**:营业账主明细、交易流水、回调、异常、托收/代扣主对象。 +- **部分落地**:柜台班结、部分收费汇总类对象可能通过业务流程与报表实现,不一定存在独立表。 +- **文档先行**:部分红冲、实时收费汇总类台账暂不表述为已确认独立实体表。 -#### 电子发票开具接口详细设计 +## REV-004 账务处理 -**接口描述:** 与税控平台对接,实现电子发票开具功能。 +### 功能说明 + +承担水量调整、金额调整、违约金减免、退款、冲正、呆坏账申请等账务修正与审批处理能力,保证收费后账务结果可追溯、可审计。 + +### 关键设计 + +1. 调整类操作以营业账主明细为基础,并通过日志与审批留痕记录前后变化。 +2. 水量调整、金额调整、优惠调整等场景可引用价格模板、阶梯与优惠对象重新计算。 +3. 退款、冲正等交易修正需与原支付流水及渠道状态联动校验。 +4. 对于当前未见明确独立实体表的特账、跨周期水量、退款账等对象,文档以“业务处理场景”表述,不强行落为已实现表。 + +### 核心数据 + +- `biz_charge`、`biz_charge_detail`:账务调整的核心对象。 +- 价格调整/优惠相关表:用于重算账单或差额追溯。 +- `biz_operat_log`、`biz_operat_log_detail`:操作与变更留痕。 + +### 主要场景 + +| 场景 | 说明 | 控制要点 | +|---|---|---| +| 水量调整 | 更正异常水量 | 需复核原因、附件和原抄表依据 | +| 金额调整 | 更正账单金额 | 需记录依据、差异金额和审批链路 | +| 退款处理 | 退回客户支付资金或预存款 | 需校验原交易、退款余额与幂等性 | +| 错误缴费冲正 | 修正误收/误核销记录 | 需关联原交易与账单状态 | +| 呆坏账申请 | 对长期欠费进行分类处理 | 需结合账龄、客户状态与审批结果 | + +### 落地边界 + +- **已落地**:营业账主明细、操作日志、价格/方案相关重算支撑。 +- **部分落地**:精细化账务对象更多表现为流程与场景,并未在 backend 中全部体现为独立表族。 +- **文档先行**:特账、退款账、跨周期水量等对象保留业务语义,不宣称为已实现独立表。 + +## REV-005 发票与税务处理 + +### 功能说明 + +负责发票申请、开票校验、开票结果回写、发票查询、作废与红冲处理,作为营收业务对发票服务的业务接入层。 + +### 关键设计 + +1. 发票申请以客户信息、缴费记录、账单信息、税率配置为基础。 +2. 个人与企业开票均通过客户开票信息与税率表完成合法性校验。 +3. 发票开具、作废、红冲由 `SYS-008` 统一承接,SYS-002 负责业务上下文传递与结果落账。 +4. 电子发票可通过客户服务渠道推送或下载。 + +### 核心数据 + +- `biz_invoice`:发票主记录。 +- `biz_invoice_taxrate`:税率配置。 +- `biz_cust_invoice`:客户开票信息。 + +### 落地边界 + +- **已落地**:发票主记录、税率配置、客户开票信息。 +- **部分落地**:发票修改、开票过程留痕在后端中已有相关对象,但整套发票明细/批次类对象尚未全部确认。 +- **文档先行**:发票明细、营业账开票关系等对象仍按设计能力描述,不表述为本轮已确认独立表。 + +## REV-006 催缴与通知 + +### 功能说明 + +针对欠费账单按账龄、金额、客户类别等规则生成催缴任务,通过短信、微信、站内通知等方式触达客户,并回写催缴结果。 + +### 关键设计 + +1. 催缴策略以营业账状态、欠费金额、账龄分布和客户类别为基础。 +2. 自动催缴与人工催缴可并行,支持停复水等后续处置联动。 +3. 触达能力由 `SYS-010` 提供,SYS-002 负责生成待发送业务事件、催缴名单与结果回写。 +4. 当前后端中部分催缴汇总、停水明细对象未确认独立落表,文档中保持保守描述。 + +### 核心数据 + +- `biz_charge`、`biz_charge_detail`:催缴对象来源。 +- 催缴结果与通知日志:通过业务状态与消息结果联动留痕。 + +### 落地边界 + +- **已落地**:以营业账为基础的欠费识别与消息协同前提数据。 +- **部分落地**:催缴登记汇总、停水汇总等对象暂未在 backend 中确认独立表。 +- **文档先行**:复杂催缴台账与停复水统计仅作为业务场景保留。 + +## REV-007 统计分析 + +### 功能说明 + +提供营收、抄表、收费、欠费、渠道、客户、工单等多维度统计分析能力,为经营分析和业务监管提供数据支撑。 + +### 关键设计 + +1. 报表统计基于客户、账单、收费、渠道、时间、片区等维度聚合。 +2. 常用统计口径包括售水量、收费金额、欠费规模、渠道占比、客户类型分布、抄表完成率等。 +3. 导出与查询结果受数据权限控制,重点报表可采用预聚合或物化结果提升查询性能。 + +### 核心数据 + +- 客户维度:`biz_cust`、`biz_account`。 +- 抄表维度:`biz_meter_book`、`biz_reading_data`、`biz_last_reading`。 +- 账务与收费维度:`biz_charge`、`biz_charge_detail`。 +- 渠道维度:`bk_transaction`、`bk_payment_channel`。 + +### 落地边界 + +- **已落地**:主要统计源数据在客户、抄表、收费、渠道等领域均已具备。 +- **部分落地**:部分分析结果更多依赖报表层实现,而非单独分析表。 +- **文档先行**:预测类、专题分析类深度模型暂不写成后端已实现能力。 + +## REV-008 代收与银行业务 + +### 功能说明 + +支持银行代收、银行代扣、实时收费、夜间批量扣款、对账与结算处理,是 SYS-002 面向 `SYS-009` 支付与银行结算能力的业务承接模块。 + +### 关键设计 + +1. 渠道、路由、接口配置、签约、交易、回调、异常、对账、结算形成完整银行业务链条。 +2. 实时收费场景由渠道交易流水驱动账单核销,批量代扣场景由签约关系与批次处理驱动。 +3. 对账结果区分一致、长款、短款、失败待处理等状态,支持差异追踪与人工补偿。 +4. 国密报文、批量文件、标准 API 等技术细节由 `SYS-009` 承载,SYS-002 保留业务规则与状态协同。 + +### 核心数据 + +- `bk_payment_channel`:支付渠道。 +- `bk_channel_api_config`:渠道接口配置。 +- `bk_channel_route_rule`:渠道路由规则。 +- `bk_withholding_agreement`:代扣签约。 +- `bk_withholding_batch`、`bk_withholding_item`:代扣批次与明细。 +- `bk_reconcile_batch`、`bk_reconcile_diff`:对账批次与差异。 +- `bk_settlement_batch`:结算批次。 +- `bk_transaction`、`bk_transaction_callback`、`bk_transaction_exception`:交易、回调、异常。 +- `biz_collection`、`biz_withholding`:代收/代扣业务主对象。 + +### 落地边界 + +- **已落地**:渠道、路由、交易、回调、异常、签约、批次、对账、结算等主链路对象。 +- **部分落地**:部分统计类、汇总类对象可能在渠道报表或外部结算文件层体现。 +- **文档先行**:不将未明确扫描到的扩展银行台账写成已实现独立表。 + +## REV-009 业务参数配置 + +### 功能说明 + +负责营收域的价格参数、客户编号规则、页面配置、打印与渠道相关业务参数配置,为客户、开账、收费、发票、催缴等模块提供统一配置支撑。 + +### 关键设计 + +1. 业务参数按租户、单位、片区、业务类别分层管理。 +2. 价格体系、客户编号规则、页面字段配置、打印与通知参数统一归口维护。 +3. 配置变更应具备版本化、操作留痕与生效范围控制。 + +### 核心数据 + +- `biz_parameter_settings`:业务参数配置。 +- `biz_page_settings`、`biz_page_settings_detail`:页面配置。 +- `biz_price_category`、`biz_price_template`、`biz_template_dept_rel`:价格归属与模板站点关系。 +- `biz_cust_no_rule`:客户编号规则。 + +# 客户服务模块详细设计 + +## CS-001 账户绑定管理 + +### 功能说明 + +面向微信、支付宝、微网厅等渠道实现客户账户绑定、解绑、默认账户设置、多账户切换与身份校验。 + +### 关键规则 + +1. 一个渠道账户可绑定多个用水账户。 +2. 绑定、解绑、默认账户变更等敏感操作需进行身份校验。 +3. 已销户、冻结或限制服务的账户不得新增绑定。 + +### 核心数据 + +- `biz_cust_app_binds` +- `biz_cust` +- `biz_account` + +## CS-002 信息查询服务 + +### 功能说明 + +提供账单查询、缴费记录查询、用水分析、欠费查询、账户流水、历史账单等服务。 + +### 关键设计 + +1. 查询范围严格限制在已绑定客户与账户范围内。 +2. 账单、缴费、发票、办理进度等数据通过 SYS-002 标准接口聚合展示。 +3. 常用历史数据支持按最近周期快速查询。 + +### 核心数据 + +- `biz_cust` +- `biz_account` +- `biz_charge` +- `biz_charge_detail` +- `biz_invoice` + +## CS-003 在线缴费服务 + +### 功能说明 + +提供微信支付、支付宝支付、银行卡支付、预存款支付等在线缴费能力。 + +### 关键规则 + +1. 下单前再次校验账单未缴状态和应缴金额。 +2. 支付结果以 `SYS-009` 回调/查询确认为准。 +3. 对失败订单支持补单、查询与结果回写。 + +### 核心数据 + +- `biz_charge` +- `biz_charge_detail` +- `bk_transaction` +- `bk_transaction_callback` + +## CS-004 电子发票服务 + +### 功能说明 + +在客户渠道中提供电子发票申请、查询、下载以及缴费后发票推送能力。 + +### 关键设计 + +1. 电子发票开具能力经 `SYS-008` 统一提供。 +2. 发票申请与客户开票信息、缴费记录和账单状态联动校验。 +3. 发票结果支持下载、查看和渠道推送。 + +### 核心数据 + +- `biz_invoice` +- `biz_cust_invoice` +- `biz_invoice_taxrate` + +## CS-005 营业网点服务 + +### 功能说明 + +提供营业网点查询、服务范围查看、办事指引与营业时间展示能力。 + +### 关键设计 + +1. 网点信息展示地址、联系电话、营业时间与可办理业务范围。 +2. 网点服务以查询与引导为主,不在本模块中虚构额外业务实体表。 +3. 与 CS-006 业务办理服务协同,支持从网点查询跳转到线上办理。 + +## CS-006 业务办理服务 + +### 功能说明 + +提供更名、过户、联系方式变更、开票方式变更、一户多人口、自主抄表、换表申请等线上业务办理入口。 + +### 关键设计 + +1. 业务办理统一调用工单/流程能力,不与后台流程表重复建模。 +2. 办理结果与客户资料、工单状态、报装或表务流程联动更新。 +3. 触达通知通过 `SYS-010` 完成结果通知。 + +## CS-007 柜面扫码支付 + +### 功能说明 + +支持营业厅柜台二维码收款、票据关联、结果回传,是柜台收费场景对线上支付能力的补充入口。 + +### 关键设计 + +1. 柜面扫码支付与 REV-003 营业收费统一核销口径。 +2. 支付结果与交易流水经 `SYS-009` 回传后更新收费状态。 +3. 支持支付凭证、发票申请与收费记录联动。 + +### 核心数据 + +- `biz_charge` +- `bk_transaction` +- `bk_transaction_callback` + +# 表务详细设计 + +## METER-001 表务基础管理 + +### 功能说明 + +管理水表档案、厂家、型号、口径、量程、检定证书、安装位置、当前状态等基础信息。 + +### 关键设计 + +- 一块水表对应唯一档案主记录。 +- 设备状态覆盖在库、在用、待检、故障、报废等。 +- 与客户、水表工单、抄表记录形成关联闭环。 + +## METER-002 表务工单管理 + +### 功能说明 + +处理换表、移表、拆表、复装、校表、稽查、维修等表务工单。 + +### 关键设计 + +1. 工单类型决定必填字段、处理流程和附件要求。 +2. 换表工单需同时记录旧表拆除信息与新表安装信息。 +3. 表务工单完成后同步更新水表档案与客户绑定关系。 + +## METER-003 仓储与生命周期管理 + +### 功能说明 + +管理新表入库、领用、出库、退库、报废及全生命周期追踪。 + +### 核心数据 + +- `water_meter_stock` +- `water_meter_inventory` +- `water_meter_archive` + +## METER-004 物联网接入与数据同步 + +### 功能说明 + +接入集抄系统、智能表平台及厂家物联网平台,实现远程抄表、状态查询、设备参数同步与异常告警。 + +### 业务流程 -**业务流程:** ```mermaid flowchart TD - A[客户缴费完成] --> B[生成发票数据] - B --> C[调用开票接口] - C --> D[税控平台处理] - D --> E{开票是否成功} - E -->|是| F[返回发票信息] - E -->|否| G[返回错误信息] - F --> H[保存发票记录] - G --> I[记录错误日志] - H --> J[发送发票给客户] - I --> K[重试或人工处理] - J --> L([开票完成]) - K --> C + A[定时采集任务] --> B[发送采集请求] + B --> C[物联网平台返回数据] + C --> D[数据校验] + D --> E{是否有效} + E -->|有效| F[写入抄表记录] + E -->|无效| G[异常标记并告警] + F --> H[参与开账] + G --> I[人工复核处理] ``` -## 物联网接口 +# 报装与签章详细设计 -### 集抄系统接口 +## INST-001 报装申请与受理 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-601 | 水表数据采集 | 远程抄表数据采集 | HTTPS | 水表编号、时间范围 | 抄表数据 | -| EXT-602 | 水表状态查询 | 查询水表在线状态 | HTTPS | 水表编号 | 状态信息 | -| EXT-603 | 水表参数设置 | 设置水表参数 | HTTPS | 水表编号、参数信息 | 设置结果 | -| EXT-604 | 水表控制指令 | 远程控制水表 | HTTPS | 水表编号、控制指令 | 控制结果 | +### 功能说明 -#### 水表数据采集接口详细设计 +支持新装、改造、一户一表等业务的申请受理、资料提交、受理审核与流程发起。 -**接口描述:** 与物联网集抄系统对接,实现远程抄表数据采集。 +### 关键设计 + +- 统一采集申请人、地址、产权、用水性质、附件材料等信息。 +- 支持政务平台、柜台、微网厅等多入口申请。 +- 受理后自动生成报装编号并进入踏勘流程。 + +## INST-002 现场踏勘与方案设计 + +### 功能说明 + +组织现场勘查、工程条件确认、材料测算、施工方案与费用方案编制。 + +### 关键设计 + +1. 踏勘记录包括现场照片、供水接入条件、施工难点、估算费用。 +2. 方案版本化管理,支持设计审核与退回修改。 +3. 勘查结果直接驱动合同金额与施工计划。 + +## INST-003 施工验收与立户通水 + +### 功能说明 + +完成施工派工、安装实施、竣工验收、立户建档和通水确认。 + +### 关键设计 + +- 施工节点按派工、实施、验收、归档逐步留痕。 +- 验收通过后自动触发客户建档、水表绑定和账户初始化。 +- 与表务系统共享水表安装与换表数据。 + +## INST-004 合同签署与电子签章 + +### 功能说明 + +通过集成泛微 CA 电子签章系统,实现报装合同、用水协议等文件的电子签署、时间戳和电子存证。 + +### 集成架构 -**业务流程:** ```mermaid -flowchart TD - A[定时采集任务] --> B[发送采集指令] - B --> C[集抄系统处理] - C --> D[水表数据采集] - D --> E[返回抄表数据] - E --> F[数据验证处理] - F --> G{数据是否有效} - G -->|是| H[保存抄表数据] - G -->|否| I[标记异常数据] - H --> J[更新抄表记录] - I --> K[人工处理] - J --> L([采集完成]) - K --> L +graph TD + subgraph INST[报装业务系统] + A[申请受理] + B[合同管理] + C[电子签章模块] + D[档案归档] + end + + subgraph CA[泛微CA电子签章系统] + E[身份认证服务] + F[电子签章服务] + G[时间戳服务] + H[电子存证服务] + end + + A --> B + B --> C + C --> E + C --> F + C --> G + C --> H + C --> D ``` -## 政务系统接口 +### 合同签署流程 -### 政务平台对接 +```mermaid +sequenceDiagram + participant 客户 + participant 报装系统 + participant 电子签章模块 + participant 泛微CA系统 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | + 客户->>报装系统: 提交签署申请 + 报装系统->>电子签章模块: 生成签署任务 + 电子签章模块->>泛微CA系统: 发起身份认证 + 泛微CA系统-->>电子签章模块: 返回认证结果 + 电子签章模块->>泛微CA系统: 发起电子签章 + 泛微CA系统-->>电子签章模块: 返回签章结果 + 电子签章模块->>泛微CA系统: 申请时间戳与存证 + 泛微CA系统-->>电子签章模块: 返回凭证 + 电子签章模块-->>报装系统: 返回签署结果 + 报装系统-->>客户: 通知合同签署完成 +``` + +### 核心数据 + +| 数据对象 | 说明 | +|---|---| +| `installation_contract` | 报装合同主表 | +| `installation_signature` | 电子签章记录表 | +| `installation_evidence` | 电子存证记录表 | + +### 关键规则 + +1. 合同签署前必须完成身份认证。 +2. 合同正文、签署位置、签署人、签署时间必须完整留痕。 +3. 签署完成文件必须归档并生成可验证凭证。 +4. 外部 CA 接口异常时应支持重试与人工补偿处理。 + +## INST-005 档案归档与过程留痕 + +### 功能说明 + +归集申请材料、设计方案、合同文件、验收资料、签章回执和过程日志,形成完整报装档案。 + +### 关键设计 + +- 档案按申请单维度统一归档。 +- 电子签章合同、验收附件、影像资料统一存储。 +- 档案查询支持按申请编号、客户、地址、时间、状态检索。 + +# 数据库详细设计 + +## 数据库选型与原则 + +系统数据库统一采用达梦数据库 8.0+。数据库设计遵循以下原则: + +1. 统一主数据模型,避免多口径重复建模。 +2. 面向业务闭环设计客户、水表、账单、缴费、工单、报装、签章等核心对象。 +3. 兼顾 OLTP 事务处理与统计查询性能。 +4. 支持多单位、多区域的数据隔离与权限过滤。 +5. 敏感数据字段满足加密、脱敏和审计要求。 + +## 数据库逻辑架构 + +```mermaid +graph TB + APP[业务应用] --> ORM[数据访问层] + APP --> CACHE[Redis缓存] + ORM --> MASTER[(达梦主库)] + MASTER --> SLAVE[(达梦从库/备库)] + MASTER --> FILE[文件与归档索引] +``` + +## 核心数据模型 + +```mermaid +erDiagram + BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 包含 + BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定 + BIZ_CUST ||--|| BIZ_ACCOUNT : 对应 + BIZ_METER ||--o{ BIZ_READING_DATA : 产生 + BIZ_READING_DATA ||--|| BIZ_CHARGE : 生成 + BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 包含 + BIZ_CHARGE ||--o{ BK_TRANSACTION : 核销 + BIZ_CUST ||--o{ BIZ_INVOICE : 开票 + INSTALLATION_APPLY ||--o{ INSTALLATION_CONTRACT : 生成 + INSTALLATION_CONTRACT ||--o{ INSTALLATION_SIGNATURE : 签署 + INSTALLATION_CONTRACT ||--o{ INSTALLATION_EVIDENCE : 存证 +``` + +## 核心数据表设计 + +### 客户与账户类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_cust` | 客户主档表 | code、name、cust_type、id_no、mobile、address、status | +| `biz_account` | 客户账户表 | code、cust_id、balance、arrears_amount、status | +| `biz_cust_contact` | 客户联系人表 | cust_id、name、mobile、contact_type、is_default | +| `biz_cust_app_binds` | 渠道绑定关系表 | cust_id、app_type、app_user_id、status | +| `biz_cust_invoice` | 客户开票信息表 | cust_id、invoice_title、tax_no、email、mobile | + +### 水表与抄表类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_meter` | 水表信息表 | code、meter_no、model_code、caliber_code、status | +| `biz_cust_meter` | 客户与水表关系表 | cust_id、meter_id、bind_status、bind_time | +| `biz_meter_book` | 抄表册本表 | code、name、reader_id、cycle_type、status | +| `biz_reading_data` | 抄表数据表 | meter_id、cust_id、reading_time、current_reading、usage_amount | +| `biz_last_reading` | 上次抄表结果表 | meter_id、last_reading、last_reading_time | +| `biz_meter_read` | 抄表任务状态表 | book_id、meter_id、read_status、reader_id | + +### 账单、收费与发票类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_charge` | 营业账主表 | code、cust_id、record_id、total_amount、charge_status | +| `biz_charge_detail` | 营业账明细表 | charge_id、cost_component_code、usage_amount、detail_amount | +| `biz_collection` | 托收资料表 | cust_id、channel_code、collection_status、apply_time | +| `biz_withholding` | 代扣资料表 | cust_id、agreement_no、withholding_status、sign_time | +| `biz_invoice` | 发票主表 | code、cust_id、invoice_status、invoice_type、issue_time | +| `biz_invoice_taxrate` | 发票税率表 | tax_code、tax_name、tax_rate、status | + +### 银行渠道与交易类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `bk_payment_channel` | 支付渠道表 | channel_code、channel_name、channel_type、status | +| `bk_channel_api_config` | 渠道接口配置表 | channel_code、api_url、sign_type、status | +| `bk_channel_route_rule` | 渠道路由规则表 | business_type、channel_code、priority、status | +| `bk_transaction` | 渠道交易流水表 | trade_no、biz_order_no、channel_code、trade_amount、trade_status | +| `bk_transaction_callback` | 支付回调表 | trade_no、callback_status、callback_time、payload | +| `bk_transaction_exception` | 渠道异常表 | trade_no、exception_type、exception_status、remark | +| `bk_withholding_agreement` | 代扣签约表 | agreement_no、cust_id、bank_code、status | +| `bk_withholding_batch` | 代扣批次表 | batch_no、batch_date、total_count、status | +| `bk_withholding_item` | 代扣明细表 | batch_no、cust_id、charge_id、item_status | +| `bk_reconcile_batch` | 对账批次表 | batch_no、channel_code、reconcile_date、status | +| `bk_reconcile_diff` | 对账差异表 | batch_no、trade_no、diff_type、diff_amount | +| `bk_settlement_batch` | 结算批次表 | batch_no、channel_code、settlement_date、status | + +### 表务与工单类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `water_meter_workorder` | 表务工单表 | workorder_code、workorder_type、workorder_status、meter_id、customer_id | +| `water_meter_stock` | 水表库存表 | stock_code、meter_model、meter_caliber、stock_quantity | +| `water_meter_inventory` | 出入库记录表 | inventory_code、inventory_type、quantity、stock_id | +| `business_work_order` | 业务工单主表 | work_order_code、work_order_type、status、source_channel | + +### 报装与签章类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `installation_apply` | 报装申请表 | apply_code、apply_type、customer_name、address、status | +| `installation_survey` | 现场踏勘表 | survey_code、apply_id、survey_result、estimated_fee | +| `installation_contract` | 报装合同表 | contract_code、installation_id、contract_type、contract_status | +| `installation_signature` | 签章记录表 | signature_code、contract_id、signer_id、signature_time、signature_status | +| `installation_evidence` | 存证记录表 | evidence_code、contract_id、evidence_hash、evidence_status | + +## 索引与性能设计 + +### 主要索引策略 + +1. 唯一索引:客户编号、水表编号、账单编号、缴费编号、合同编号等业务唯一键。 +2. 复合索引: + - 客户查询:`(customer_type, status)` + - 账单查询:`(customer_id, bill_month, bill_status)` + - 抄表查询:`(meter_id, reading_date)` + - 缴费查询:`(customer_id, payment_time)` +3. 时间分区:账单、缴费、日志等大表按月或按年管理归档。 +4. 热点缓存:参数字典、用户会话、移动端任务、发票状态等进入 Redis。 + +# 接口详细设计 + +## 接口设计原则 + +1. 内部接口统一采用 RESTful 风格,JSON 作为主要报文格式。 +2. 外部接口根据对接方规范支持 HTTPS API、SFTP 文件交换等方式。 +3. 接口编号统一采用 `IF-` 或 `EXT-` 前缀,与模块编号区分。 +4. 关键交易接口必须支持幂等控制、签名校验、失败重试与调用日志。 + +## 统一平台接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-UP-001 | 用户登录接口 | 用户登录并获取访问令牌 | PC端/移动端/渠道端 | HTTPS REST | +| IF-UP-002 | 用户信息接口 | 获取当前登录用户上下文 | 各业务系统 | HTTPS REST | +| IF-UP-003 | 权限校验接口 | 校验菜单、按钮和数据权限 | 各业务模块 | HTTPS REST | +| IF-UP-004 | 参数字典接口 | 获取字典与业务参数 | 各业务模块 | HTTPS REST | + +## 营收业务接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 抄表APP/集抄系统 | HTTPS REST | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务 | HTTPS REST | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | +| IF-REV-007 | 账务调整接口 | 发起金额调整、退款、冲正、坏账等业务处理 | 财务/营业人员 | HTTPS REST | +| IF-REV-008 | 发票申请接口 | 发起开票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | +| IF-REV-009 | 催缴任务接口 | 生成催缴名单并提交消息触达请求 | 营收系统/消息服务 | HTTPS REST | +| IF-REV-010 | 统计查询接口 | 查询营收、收费、欠费、渠道、客户统计结果 | 管理后台/统计分析端 | HTTPS REST | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | + +## 表务与物联网接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-METER-001 | 水表档案查询接口 | 查询水表与生命周期信息 | 表务/营收/报装 | HTTPS REST | +| IF-METER-002 | 表务工单处理接口 | 提交换表、移表等结果 | 移动作业端 | HTTPS REST | +| IF-METER-003 | 库存出入库接口 | 处理领用、退库、报废 | 仓储管理端 | HTTPS REST | +| IF-METER-004 | 集抄数据接收接口 | 接收远程抄表数据 | 物联网平台 | HTTPS REST | + +## 报装与签章接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-INST-001 | 报装申请提交接口 | 提交报装申请与附件 | 柜台/微网厅/政务平台 | HTTPS REST | +| IF-INST-002 | 踏勘结果回填接口 | 回填现场踏勘结果 | 报装人员 | HTTPS REST | +| IF-INST-003 | 合同签署发起接口 | 创建签章任务 | 报装系统 | HTTPS REST | +| IF-INST-004 | 签章回执接口 | 回写签章结果和存证信息 | CA系统/报装系统 | HTTPS REST | +| IF-INST-005 | 报装归档接口 | 归档申请、合同和验收资料 | 报装系统 | HTTPS REST | + +## 客户渠道接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-CS-001 | 账户绑定接口 | 绑定或解绑客户账户 | 微信/支付宝/微网厅 | HTTPS REST | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水趋势 | 客户端 | HTTPS REST | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝支付订单 | 客户端 | HTTPS REST | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请 | 客户端 | HTTPS REST | +| IF-CS-005 | 网点与业务办理接口 | 查询网点、提交业务办理 | 客户端 | HTTPS REST | +| IF-CS-006 | 业务办理进度接口 | 查询业务办理和工单进度 | 客户端 | HTTPS REST | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | + +## 外部系统接口 + +### 金融支付接口 + +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | |---|---|---|---|---|---| -| EXT-701 | 数据汇聚接口 | 向政务平台推送数据 | HTTPS | 业务数据、统计数据 | 推送结果 | -| EXT-702 | 报装工单接口 | 政务平台报装工单 | HTTPS | 工单信息 | 处理结果 | -| EXT-703 | 缴费查询接口 | 政务平台缴费查询 | HTTPS | 客户信息 | 缴费信息 | -| EXT-704 | 用户认证接口 | 政务平台用户认证 | HTTPS | 用户凭证 | 认证结果 | +| EXT-001 | 银行代扣接口 | 批量代扣水费 | HTTPS/SFTP | 客户信息、账单金额、代扣日期 | 扣款结果 | +| EXT-101 | 微信支付统一下单 | 创建微信支付订单 | HTTPS | 订单信息、金额 | 预支付信息 | +| EXT-201 | 支付宝统一收单 | 创建支付宝支付订单 | HTTPS | 订单信息、金额 | 支付结果 | -## 其他系统接口 +### 税务与消息接口 -### 环卫系统接口 - -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | |---|---|---|---|---|---| -| EXT-801 | 污水费计算接口 | 计算污水费 | HTTPS | 用水量、费率 | 污水费金额 | -| EXT-802 | 垃圾费计算接口 | 计算垃圾费 | HTTPS | 用水量、费率 | 垃圾费金额 | -| EXT-803 | 环卫收费对接 | 环卫收费数据同步 | HTTPS | 收费数据 | 同步结果 | +| EXT-301 | 短信发送接口 | 发送催缴或通知短信 | HTTPS | 手机号、模板、参数 | 发送结果 | +| EXT-401 | 邮件发送接口 | 发送电子发票或通知邮件 | HTTPS | 邮箱、主题、内容 | 发送结果 | +| EXT-501 | 电子发票开具接口 | 税控平台开票 | HTTPS | 发票信息、税率 | 发票结果 | -### 客服系统接口 +### 物联网、政务与签章接口 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | |---|---|---|---|---|---| -| EXT-901 | 通话记录接口 | 获取通话记录 | HTTPS | 时间范围、客户信息 | 通话记录 | -| EXT-902 | 工单创建接口 | 创建客服工单 | HTTPS | 工单信息 | 工单ID | -| EXT-903 | 客户投诉接口 | 客户投诉处理 | HTTPS | 投诉信息 | 处理结果 | +| EXT-601 | 水表数据采集接口 | 获取远程抄表数据 | HTTPS | 水表编号、时间范围 | 抄表数据 | +| EXT-701 | 政务数据汇聚接口 | 向政务平台推送业务数据 | HTTPS | 业务数据、统计数据 | 推送结果 | +| EXT-801 | 环卫收费对接接口 | 同步污水费/环卫收费数据 | HTTPS | 收费数据 | 同步结果 | +| EXT-901 | 客服工单创建接口 | 与客服系统同步工单 | HTTPS | 工单信息 | 工单编号 | +| EXT-1001 | 消火栓控制接口 | 控制取水权限与设备状态 | HTTPS | 设备信息、控制指令 | 控制结果 | +| EXT-CA-001 | 身份认证接口 | 验证合同签署方身份 | HTTPS REST | 用户信息、认证方式 | 认证结果 | +| EXT-CA-002 | 电子签章接口 | 执行电子签章 | HTTPS REST | 文档内容、签章位置 | 签章结果 | +| EXT-CA-003 | 时间戳接口 | 申请签署时间戳 | HTTPS REST | 文档哈希 | 时间戳凭证 | +| EXT-CA-004 | 电子存证接口 | 存储签署后合同 | HTTPS REST | 签署文档、元数据 | 存证凭证 | -### 消火栓系统接口 +# 安全详细设计 -| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 | -|---|---|---|---|---|---| -| EXT-1001 | 取水权限设置 | 设置取水权限 | HTTPS | 用户信息、权限参数 | 设置结果 | -| EXT-1002 | 取水量监控 | 监控取水量 | HTTPS | 设备编号、时间范围 | 取水记录 | -| EXT-1003 | 设备控制接口 | 控制取水设备 | HTTPS | 设备编号、控制指令 | 控制结果 | +## 安全目标与分层防护 -## 接口安全设计 +系统安全设计遵循机密性、完整性、可用性、可审计性原则,采用边界安全、应用安全、数据安全、运维安全四层防护模式。 -### 认证机制 +```mermaid +graph TB + T[外部威胁] --> N[边界安全] + N --> A[应用安全] + A --> D[数据安全] + D --> O[运维安全] + O --> C[核心业务资产] +``` -1. **API密钥认证**:每个接口调用需要提供有效的API密钥 -2. **数字签名**:关键接口使用RSA数字签名验证 -3. **时间戳验证**:防止重放攻击 -4. **IP白名单**:限制接口调用来源 +## 身份认证与访问控制 -### 加密机制 +1. 采用 OAuth2.0 + JWT 统一认证。 +2. 高风险操作支持 MFA 二次认证。 +3. 基于 RBAC 的菜单、按钮、数据权限控制。 +4. 管理端、移动端、客户端、外部系统按不同安全域实施权限隔离。 -1. **传输加密**:所有接口使用HTTPS加密传输 -2. **数据加密**:敏感数据使用AES加密 -3. **密钥管理**:定期更换加密密钥 +## 数据安全与隐私保护 -### 限流机制 +1. 核心数据库统一为达梦数据库 8.0+,关键数据按要求启用加密存储。 +2. 身份证号、手机号、银行账户等敏感字段按角色脱敏展示。 +3. 文件、合同、签章凭证、验收附件统一归档并控制访问权限。 +4. 备份数据加密存储,支持异地容灾保管。 -1. **接口限流**:每个接口设置调用频率限制 -2. **用户限流**:每个用户设置调用总量限制 -3. **异常检测**:检测异常调用模式 +## 接口安全与审计追踪 -## 接口监控 +- 所有外部接口采用 HTTPS 加密传输。 +- 关键接口支持签名、时间戳、随机数防重放。 +- 支付、退款、签章、账务调整等交易型接口必须具备幂等控制。 +- 统一记录调用时间、调用方、请求摘要、响应结果、异常码与处理人。 -### 性能监控 +## 安全运营与应急响应 -1. **响应时间监控**:监控接口响应时间 -2. **成功率监控**:监控接口调用成功率 -3. **并发量监控**:监控接口并发调用量 +1. 建立暴力破解、异常访问、接口失败、支付异常、签章异常等监控规则。 +2. 按 P0~P3 级别定义安全事件处置流程。 +3. 定期进行漏洞扫描、补丁更新、备份恢复演练和权限审计。 -### 错误监控 +# 部署与运维设计 -1. **错误日志记录**:记录所有接口错误 -2. **告警机制**:异常情况及时告警 -3. **自动重试**:临时性错误自动重试 +## 部署总体方案 -### 业务监控 +系统采用集中部署模式,生产环境分为接入区、应用区、数据区、运维管理区,支持主备容灾与横向扩展。 -1. **交易量监控**:监控各类交易量 -2. **资金监控**:监控资金流水 -3. **业务异常监控**:监控业务异常情况 +```mermaid +graph TB + U[外部访问] --> LB[负载均衡/Nginx] + LB --> APP1[应用节点1] + LB --> APP2[应用节点2] + LB --> APP3[应用节点3] + APP1 --> DB[(达梦主库)] + APP2 --> DB + APP3 --> DB + DB --> DBS[(达梦备库/从库)] + APP1 --> REDIS[(Redis)] + APP1 --> FILE[对象存储] + APP1 --> MON[监控与日志平台] +``` -# 非功能性需求的设计 +## 环境规划 -## 性能的考虑 +| 环境 | 用途 | 说明 | +|---|---|---| +| 开发环境 | 开发联调 | 功能开发、单元验证 | +| 测试环境 | 集成测试 | 接口联调、业务测试、性能测试 | +| 预生产环境 | 上线前验证 | 模拟生产配置,进行发布演练 | +| 生产环境 | 正式运行 | 双机或多节点高可用部署 | -为满足系统性能要求,采取以下设计措施: +## 网络与分区设计 -1. **数据库优化** - - 采用达梦数据库主从架构,读写分离 - - 关键查询建立合适索引 - - 大表分区存储,历史数据归档 +1. DMZ 区部署负载均衡、WAF、网关等对外接入组件。 +2. 应用区部署统一平台、营收、表务、报装、客户渠道等应用节点。 +3. 数据区部署达梦数据库、Redis、对象存储与备份服务。 +4. 管理区部署堡垒机、日志平台、监控平台和运维工具。 -2. **缓存策略** - - Redis缓存热点数据 - - 系统配置、数据字典缓存 - - 用户会话信息缓存 +## 监控告警与日志 -3. **应用优化** - - 接口响应时间控制在3秒内 - - 支持200并发用户访问 - - 批量操作采用异步处理 +### 监控指标 -## 兼容性的考虑 +| 类别 | 监控项 | +|---|---| +| 主机监控 | CPU、内存、磁盘、网络 | +| 应用监控 | QPS、响应时间、错误率、线程池 | +| 数据库监控 | 连接数、慢 SQL、锁等待、主备同步 | +| 业务监控 | 开账量、收费量、退款量、签章成功率 | -1. **数据库兼容性** - - 支持达梦数据库 8.0+ - - 兼容PostgreSQL语法 - - 预留MySQL适配接口 +### 日志分类 -2. **浏览器兼容性** - - 支持Chrome 80+ - - 支持Firefox 75+ - - 支持Safari 13+ +- 操作日志 +- 登录日志 +- 接口调用日志 +- 任务执行日志 +- 安全审计日志 +- 外部系统对接日志 -## 安全的考虑 +## 备份恢复与发布管理 -1. **认证授权** - - 基于OAuth2.0协议的单点登录认证 - - 基于JWT的身份认证 - - RBAC权限控制模型 - - 多租户数据隔离 +1. 数据库执行每日增量、每周全量备份。 +2. 关键文件、合同、电子发票、签章凭证同步纳入备份。 +3. 发布采用版本化管理,执行发布审批、健康检查、回滚预案。 +4. 对支付、签章、银行代扣等关键链路执行灰度验证前置检查,但生产方案不保留脚本碎片或临时配置片段。 -2. **数据安全** - - 敏感数据加密存储 - - SQL注入防护 - - XSS攻击防护 +# 附录 -3. **传输安全** - - HTTPS加密传输 - - API接口签名验证 - - 请求频率限制 +## 附录A 模块编号说明 -## 可移植性的考虑 +| 前缀 | 模块域 | +|---|---| +| UP | 统一平台 | +| REV | 营收业务 | +| METER | 表务管理 | +| INST | 报装与签章 | +| SERVICE | 客户服务与渠道 | -1. **容器化部署** - - 基于Docker容器部署 - - Kubernetes编排管理 - - 支持多云部署 +## 附录B 接口编号说明 -2. **配置外部化** - - 环境配置与代码分离 - - 支持配置中心管理 - - 数据库连接池化 +| 前缀 | 说明 | +|---|---| +| IF | 系统内部标准接口 | +| EXT | 对外系统接口 | +| EXT-CA | 电子签章专项外部接口 | -## 集成与测试的考虑 +## 附录C 设计约束与统一口径 -1. **集成策略** - - 采用自底向上的集成方式 - - 先完成基础服务开发 - - 再进行业务服务集成 - -2. **测试策略** - - 单元测试覆盖率达到80% - - 集成测试覆盖主要业务流程 - - 性能测试验证系统性能指标 - -## 可扩展性的考虑 - -1. **架构扩展** - - 微服务架构支持横向扩展 - - 数据库读写分离支持性能扩展 - - 缓存集群支持容量扩展 - -2. **功能扩展** - - 插件化架构支持功能扩展 - - 开放API支持第三方集成 - - 工作流引擎支持业务流程扩展 - -## 可靠性的考虑 - -1. **故障恢复** - - 数据库主从备份 - - 应用服务集群部署 - - 定时数据备份机制 - -2. **监控告警** - - 系统性能监控 - - 业务异常告警 - - 日志分析和追踪 - -## 可维护性的考虑 - -1. **代码质量** - - 统一编码规范 - - 代码审查机制 - - 自动化测试 - -2. **运维友好** - - 完善的部署文档 - - 运维监控界面 - - 问题定位工具 +1. 系统名称统一为“福建水务营收系统”。 +2. 数据库口径统一为“达梦数据库 8.0+”。 +3. 模块编号统一采用 `UP/REV/METER/INST/CS-001` 风格。 +4. 接口编号统一采用 `IF-XXX-001` 与 `EXT-XXX-001` 风格。 +5. 本文档为唯一主详设文件,其他专项文档作为历史参考与内容来源,不再作为并行主文件使用。 diff --git a/03_Technical/01_Database_Design.md b/03_Technical/01_Database_Design.md index 85c51e2..a7059ae 100644 --- a/03_Technical/01_Database_Design.md +++ b/03_Technical/01_Database_Design.md @@ -31,7 +31,7 @@ - [4.4. 子系统2: 营收系统数据表](#44-子系统2-营收系统数据表) - [4.5. 子系统3: 表务系统数据表](#45-子系统3-表务系统数据表) - [4.6. 子系统4: 报装系统数据表](#46-子系统4-报装系统数据表) - - [4.7. 子系统5: 客户服务数据表](#47-子系统5-客户服务数据表) + - [4.7. 子系统5: 客户服务数据表(复用 SYS-002 主数据)](#47-子系统5-客户服务数据表复用-sys-002-主数据) - [4.8. 子系统6: 手机抄表APP数据表](#48-子系统6-手机抄表app数据表) - [5. 移动端表设计优化说明](#5-移动端表设计优化说明) - [6. 视图的设计](#6-视图的设计) @@ -58,32 +58,19 @@ ## 数据表总体概览 -| 模块 | 表前缀 | 主要功能 | 表数量 | +> 说明:本次重点对齐 `SYS-002` 相关数据库口径。`SYS-002` 的核心表命名已统一收敛为 `biz_*` 与 `bk_*`,并已清理旧稿中分散的历史表模型。对于旧数据字典中仍未在 backend 识别到独立实体表的对象,本文以“业务对象/处理场景”描述,不强行拆分为真实表。 + +| 模块 | 表前缀 | 主要功能 | 当前口径 | | :--- | :--- | :--- | :--- | -| 系统公共 | `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_` | 用户、角色、权限、部门、租户、字典、日志、OAuth2 等统一平台能力 | 保持现稿 | +| SYS-002 基础配置与价格体系 | `biz_community`, `biz_company_*`, `biz_meter_*`, `biz_price_*`, `biz_template_*` | 小区、水司账户、水表参数、价格体系、调价快照、优惠方案、模板关系等 | 已按真实表对齐 | +| SYS-002 客户主数据与账户关系 | `biz_cust*`, `biz_account` | 客户主档、联系人、客户组、水表绑定、开票信息、托收/代扣关系、编号规则等 | 已按真实表对齐 | +| SYS-002 抄表开账与账单 | `biz_meter`, `biz_meter_book`, `biz_meter_read`, `biz_reading_*`, `biz_charge*` | 抄表册本、抄表状态、读数留痕、开账主单与明细 | 已按真实表对齐 | +| SYS-002 收费票据与操作留痕 | `biz_collection`, `biz_withholding`, `biz_invoice*`, `biz_operat_log*` | 收费、托收/代扣、发票、操作留痕与审计支撑 | 已按真实表对齐 | +| SYS-002 业务办理与资料 | `biz_process*`, `biz_business_*`, `biz_content*` | 业务办理流程、流转、装表资料、附件与扩展数据 | 已按真实表对齐 | +| SYS-002 银行代收与结算 | `bk_*` | 渠道路由、交易回调、代扣签约、批次、对账、结算 | 已按真实表对齐 | +| SYS-003 手机抄表 APP | `mobile_*` | 移动作业缓存、登录日志、离线任务与现场上报 | 保持现稿 | +| 其他子系统专题表 | `installation_*` 等 | 报装、专项发票能力、附属专题表等 | 后续按专题继续整编 | ## 系统公共表 (system_*) (基于 `sw_system_publcli.sql`) @@ -916,1974 +903,262 @@ | 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 | - +## SYS-002 客户与账户关系表 (`biz_cust*` / `biz_account`) + +> 说明:以下内容按 `sql/lhc_数据库设计.md`、`docs/guides/BACKEND_TABLE_MAPPING.md` 与当前 backend 真实表名进行整编,字段以“数据库专项设计阶段需重点关注的核心字段”为主,不再延续旧稿中的 `customer_*` 系列表命名。 + +### biz_cust (客户主档表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 客户编号 | +| `name` | 客户名称 | +| `cust_type` | 客户类型 | +| `id_type` / `id_no` | 证件类型 / 证件号码 | +| `mobile` / `address` | 联系电话 / 地址 | +| `dept_code` | 所属营业部门 | +| `status` | 客户状态 | +| `tenant_id` | 租户编号 | + +### biz_account (客户账户表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 账户编号 | +| `cust_id` | 客户主档 ID | +| `balance` | 账户余额 | +| `arrears_amount` | 欠费金额 | +| `account_status` | 账户状态 | +| `tenant_id` | 租户编号 | + +### biz_cust_contact (客户联系人表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `name` | 联系人姓名 | +| `mobile` | 联系电话 | +| `contact_type` | 联系人类型 | +| `is_default` | 是否默认联系人 | + +### biz_cust_group (客户分组表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 分组编码 | +| `name` | 分组名称 | +| `parent_id` | 上级分组 | +| `status` | 状态 | + +### biz_cust_meter (客户与水表关系表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `meter_id` | 水表主档 ID | +| `bind_type` | 绑定类型 | +| `is_main` | 是否主表 | +| `status` | 关系状态 | + +### biz_cust_invoice (客户开票信息表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `invoice_title` | 开票抬头 | +| `tax_no` | 纳税人识别号 | +| `email` | 发票接收邮箱 | +| `mobile` | 联系手机号 | + +### biz_cust_app_binds (客户应用绑定表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `app_type` | 应用类型 | +| `app_user_id` | 外部应用用户标识 | +| `status` | 绑定状态 | + +### biz_cust_collection_rel / biz_cust_withholding_rel (托收/代扣关系表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_collection_rel` | `cust_id`, `collection_id`, `status` | 客户与托收关系 | +| `biz_cust_withholding_rel` | `cust_id`, `withholding_id`, `status` | 客户与代扣关系 | + +### biz_cust_water_use_scheme / biz_cust_water_scheme_rel (用水方案关系表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_water_use_scheme` | `cust_id`, `scheme_code`, `effective_date` | 客户用水方案 | +| `biz_cust_water_scheme_rel` | `cust_id`, `template_code`, `status` | 客户与价格模板关系 | + +### biz_cust_no_rule / biz_cust_hub_marks (客户编号与集抄标识表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_no_rule` | `rule_code`, `prefix`, `dept_code`, `status` | 客户编号规则 | +| `biz_cust_hub_marks` | `cust_id`, `hub_code`, `mark_type` | 集抄/枢纽标识 | + +## SYS-002 抄表、水表与价格支撑表 (`biz_meter*` / `biz_reading_*` / `biz_price_*`) + +### biz_meter (水表主档表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 水表编号 | +| `meter_no` | 出厂表号 | +| `maker_code` / `model_code` | 厂家 / 型号 | +| `caliber_code` / `range_code` | 口径 / 量程 | +| `install_address` | 安装地址 | +| `meter_status` | 水表状态 | +| `tenant_id` | 租户编号 | + +### biz_meter_book (抄表册本表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 册本编号 | +| `name` | 册本名称 | +| `dept_code` | 所属部门 | +| `reader_user` | 抄表员 | +| `reading_cycle` | 抄表周期 | +| `status` | 册本状态 | + +### biz_meter_read (抄表任务/状态表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `book_id` | 册本 ID | +| `cust_id` | 客户 ID | +| `meter_id` | 水表 ID | +| `read_period` | 抄表期间 | +| `read_status` | 抄表状态 | +| `read_type` | 抄表方式 | + +### biz_reading_data (抄表数据表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `meter_read_id` | 抄表任务 ID | +| `last_reading` | 上次读数 | +| `current_reading` | 本次读数 | +| `water_usage` | 用水量 | +| `read_time` | 抄见时间 | +| `photo_url` | 抄表照片 | + +### biz_last_reading / biz_reading_logs (上次读数与抄表日志) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_last_reading` | `meter_id`, `last_reading`, `last_read_time` | 水表最近有效读数 | +| `biz_reading_logs` | `meter_id`, `operate_type`, `operator`, `operate_time` | 抄表处理留痕 | + +### 价格与模板支撑表 +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_price_category` | `code`, `name`, `parent_id` | 水价归属 | +| `biz_price_template` | `code`, `price_category_code`, `adjustment_snap_code` | 水价模板 | +| `biz_price_adjustment_snap` | `code`, `effective_date`, `expiry_date` | 调价快照 | +| `biz_price_cost_adjustment` | `price_category_code`, `cost_component_code`, `price_value` | 费用调价 | +| `biz_price_tier_adjustment` | `cost_component_code`, `tier_level`, `start_volume`, `end_volume`, `price` | 阶梯价格 | +| `biz_cost_component` | `code`, `name`, `penalty_coefficient` | 费用组成 | +| `biz_water_use_scheme` | `code`, `name`, `status` | 用水方案 | +| `biz_water_use_scheme_tier` | `scheme_code`, `tier_level`, `start_volume`, `end_volume` | 用水阶梯 | +| `biz_exceed_water_use_scheme` | `scheme_code`, `exceed_type`, `price_rule` | 超计划规则 | + +## SYS-002 开账、收费与票据表 (`biz_charge*` / `biz_collection` / `biz_withholding` / `biz_invoice*`) + +### biz_charge (营业账主表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 账单编号 | +| `cust_id` | 客户 ID | +| `record_id` | 抄表记录或开账来源 ID | +| `bill_period` | 账单期间 | +| `total_amount` | 账单总金额 | +| `charge_status` | 收费状态 | +| `due_date` | 应缴日期 | + +### biz_charge_detail (营业账明细表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `charge_id` | 营业账主表 ID | +| `cost_component_code` | 费用组成代码 | +| `usage_amount` | 用量 | +| `unit_price` | 单价 | +| `detail_amount` | 明细金额 | + +### biz_collection / biz_withholding (托收与代扣主表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_collection` | `code`, `cust_id`, `charge_id`, `collection_status` | 托收主表 | +| `biz_withholding` | `code`, `cust_id`, `charge_id`, `withholding_status` | 代扣主表 | + +### biz_invoice / biz_invoice_taxrate (发票主表与税率表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_invoice` | `code`, `cust_id`, `charge_id`, `invoice_status`, `invoice_amount` | 发票主表 | +| `biz_invoice_taxrate` | `tax_code`, `tax_name`, `tax_rate`, `status` | 税率基础配置 | + +### biz_operat_log / biz_operat_log_detail (操作留痕表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_operat_log` | `biz_type`, `biz_id`, `operate_user`, `operate_time` | 业务操作主日志 | +| `biz_operat_log_detail` | `log_id`, `field_name`, `before_value`, `after_value` | 字段级变更留痕 | + +> 边界说明:旧数据字典中的“跨周期水量、特账、红冲、已销调整、呆坏账、实时收费日志”等对象,在当前 backend 范围内未全部识别到独立实体表,数据库专项中统一按业务处理场景描述,不误写为已明确落地的真实表。 + +## SYS-002 业务办理与资料表 (`biz_process*` / `biz_business_*` / `biz_content*`) + +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_process` | `code`, `biz_type_code`, `cust_id`, `process_status` | 业务办理流程主表 | +| `biz_process_transfer` | `process_id`, `from_user`, `to_user`, `transfer_time` | 流转/转办记录 | +| `biz_process_cust_contact` | `process_id`, `contact_name`, `mobile` | 办理过程联系人信息 | +| `biz_process_meter_install` | `process_id`, `meter_id`, `install_addr` | 装表安装信息 | +| `biz_process_invoice_modifys` | `process_id`, `invoice_id`, `modify_type` | 发票变更记录 | +| `biz_business_types` | `code`, `name`, `status` | 业务类型定义 | +| `biz_business_datas` | `biz_id`, `data_key`, `data_value` | 业务扩展数据 | +| `biz_content` | `biz_id`, `content_type`, `content_title` | 办理资料主表 | +| `biz_content_attach` | `content_id`, `file_name`, `file_url` | 办理附件表 | + +## SYS-002 银行代收与结算表 (`bk_*`) + +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `bk_payment_channel` | `channel_code`, `channel_name`, `channel_type`, `status` | 支付渠道主表 | +| `bk_channel_api_config` | `channel_code`, `api_type`, `endpoint`, `crypto_type` | 渠道接口配置 | +| `bk_channel_route_rule` | `channel_code`, `route_type`, `priority`, `status` | 渠道路由规则 | +| `bk_channel_statistics` | `channel_code`, `stat_date`, `success_count`, `success_amount` | 渠道统计 | +| `bk_transaction` | `trade_no`, `biz_order_no`, `channel_code`, `trade_amount`, `trade_status` | 渠道交易流水 | +| `bk_transaction_callback` | `trade_no`, `callback_time`, `callback_status`, `raw_message` | 回调留痕 | +| `bk_transaction_exception` | `trade_no`, `exception_code`, `exception_desc`, `handle_status` | 异常处理 | +| `bk_withholding_agreement` | `agreement_no`, `cust_id`, `channel_code`, `sign_status` | 代扣签约 | +| `bk_withholding_batch` | `batch_no`, `channel_code`, `batch_date`, `batch_status` | 代扣批次 | +| `bk_withholding_item` | `batch_id`, `cust_id`, `charge_id`, `item_status` | 代扣明细 | +| `bk_reconcile_batch` | `batch_no`, `channel_code`, `bill_date`, `reconcile_status` | 对账批次 | +| `bk_reconcile_diff` | `batch_id`, `trade_no`, `diff_type`, `diff_amount` | 对账差异 | +| `bk_settlement_batch` | `batch_no`, `channel_code`, `settlement_date`, `settlement_status` | 结算批次 | -## 子系统3: 表务系统数据表 +## 子系统5: 客户服务数据表(复用 SYS-002 主数据) -表务系统负责水表的全生命周期管理,包括表务工单管理、表务仓库管理、表务基础管理等功能。 - -
-点击展开/折叠表务系统表详情 - -### 表务管理表 (meter_work_*) - -### meter_work_order (表务工单表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| work_order_no | varchar(32) | N | | 工单编号 | -| customer_id | int8 | N | | 客户ID | -| meter_id | int8 | N | | 水表ID | -| work_order_type | varchar(20) | N | | 工单类型:维修、更换、校验、拆除 | -| fault_description | varchar(500) | Y | | 故障描述 | -| urgency_level | varchar(20) | N | | 紧急程度:普通、紧急、特急 | -| scheduled_date | date | Y | | 预约日期 | -| assigned_user | varchar(100) | Y | | 指派人员 | -| assignment_date | timestamp(6) | Y | | 指派时间 | -| work_status | int2 | N | 0 | 工单状态:0-待指派,1-已指派,2-处理中,3-已完成,4-已取消 | -| start_time | timestamp(6) | Y | | 开始时间 | -| end_time | timestamp(6) | Y | | 结束时间 | -| work_duration | int4 | Y | 0 | 工作时长(分钟) | -| completion_note | varchar(1000) | Y | | 完成说明 | -| customer_satisfaction | int2 | Y | | 客户满意度:1-很不满意,2-不满意,3-一般,4-满意,5-很满意 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### meter_repair_record (水表维修记录表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| work_order_id | int8 | N | | 工单ID | -| repair_type | varchar(20) | N | | 维修类型:故障维修、预防性维修、定期维护 | -| fault_type | varchar(20) | N | | 故障类型:不走字、倒走、漏水、损坏 | -| fault_cause | varchar(200) | Y | | 故障原因 | -| repair_method | varchar(200) | Y | | 维修方法 | -| parts_replaced | varchar(500) | Y | | 更换部件 | -| repair_cost | numeric(15,4) | Y | 0 | 维修费用 | -| labor_cost | numeric(15,4) | Y | 0 | 人工费用 | -| material_cost | numeric(15,4) | Y | 0 | 材料费用 | -| before_repair_reading | numeric(15,3) | Y | 0 | 维修前读数 | -| after_repair_reading | numeric(15,3) | Y | 0 | 维修后读数 | -| repair_result | varchar(20) | N | | 维修结果:成功、失败、需要更换 | -| quality_check | varchar(20) | Y | | 质量检查:合格、不合格 | -| warranty_period | int4 | Y | 0 | 保修期(天) | -| repairer | varchar(100) | N | | 维修人员 | -| repair_date | timestamp(6) | N | pg_systimestamp() | 维修日期 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### meter_replacement_log (水表更换日志表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| work_order_id | int8 | N | | 工单ID | -| customer_id | int8 | N | | 客户ID | -| old_meter_id | int8 | N | | 旧水表ID | -| new_meter_id | int8 | N | | 新水表ID | -| replacement_type | varchar(20) | N | | 更换类型:故障更换、到期更换、升级更换 | -| replacement_reason | varchar(200) | Y | | 更换原因 | -| old_meter_reading | numeric(15,3) | Y | 0 | 旧表读数 | -| new_meter_reading | numeric(15,3) | Y | 0 | 新表底数 | -| old_meter_condition | varchar(100) | Y | | 旧表状况 | -| installation_position | varchar(200) | Y | | 安装位置 | -| replacement_date | timestamp(6) | N | pg_systimestamp() | 更换日期 | -| replacer | varchar(100) | N | | 更换人员 | -| quality_inspector | varchar(100) | Y | | 质量检查员 | -| inspection_result | varchar(20) | Y | | 检查结果:合格、不合格 | -| old_meter_disposal | varchar(20) | Y | | 旧表处理:回收、报废、维修 | -| replacement_cost | numeric(15,4) | Y | 0 | 更换费用 | -| warranty_start_date | date | Y | | 保修开始日期 | -| warranty_end_date | date | Y | | 保修结束日期 | -| photo_before | varchar(500) | Y | | 更换前照片 | -| photo_after | varchar(500) | Y | | 更换后照片 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### work_order_material (工单用料表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| work_order_id | int8 | N | | 工单ID | -| material_type | varchar(20) | N | | 材料类型:水表、配件、工具、耗材 | -| material_name | varchar(100) | N | | 材料名称 | -| material_model | varchar(100) | Y | | 材料型号 | -| material_spec | varchar(200) | Y | | 材料规格 | -| unit | varchar(20) | Y | | 单位 | -| quantity | numeric(15,3) | N | 0 | 数量 | -| unit_price | numeric(15,4) | Y | 0 | 单价 | -| total_amount | numeric(15,4) | Y | 0 | 总金额 | -| supplier | varchar(100) | Y | | 供应商 | -| warehouse_location | varchar(100) | Y | | 仓库位置 | -| material_status | varchar(20) | Y | | 材料状态:正常、损坏、过期 | -| use_date | timestamp(6) | Y | | 使用日期 | -| operator | varchar(100) | Y | | 操作人 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -## 代收业务表 (realtime_payment_*) - -### realtime_payment (实时收费表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| payment_no | varchar(32) | N | | 收费编号 | -| customer_id | int8 | N | | 客户ID | -| payment_channel | varchar(20) | N | | 支付渠道:微信、支付宝、银行卡、现金 | -| payment_method | varchar(20) | N | | 支付方式:扫码、刷卡、现金、转账 | -| total_amount | numeric(15,4) | N | 0 | 总金额 | -| payment_time | timestamp(6) | N | pg_systimestamp() | 支付时间 | -| payment_status | int2 | N | 0 | 支付状态:0-处理中,1-成功,2-失败 | -| transaction_id | varchar(100) | Y | | 交易流水号 | -| external_transaction_id | varchar(100) | Y | | 外部交易号 | -| merchant_id | varchar(100) | Y | | 商户号 | -| terminal_id | varchar(100) | Y | | 终端号 | -| operator | varchar(100) | Y | | 操作员 | -| callback_status | int2 | Y | 0 | 回调状态:0-未回调,1-已回调 | -| callback_time | timestamp(6) | Y | | 回调时间 | -| refund_amount | numeric(15,4) | Y | 0 | 退款金额 | -| refund_time | timestamp(6) | Y | | 退款时间 | -| error_code | varchar(20) | Y | | 错误代码 | -| error_message | varchar(500) | Y | | 错误信息 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### payment_interface_log (收费接口日志表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| payment_id | int8 | N | | 收费ID | -| interface_type | varchar(20) | N | | 接口类型:支付、查询、退款、对账 | -| interface_method | varchar(20) | N | | 接口方法:POST、GET、PUT | -| interface_url | varchar(500) | N | | 接口地址 | -| request_headers | text | Y | | 请求头 | -| request_body | text | Y | | 请求体 | -| response_headers | text | Y | | 响应头 | -| response_body | text | Y | | 响应体 | -| request_time | timestamp(6) | N | pg_systimestamp() | 请求时间 | -| response_time | timestamp(6) | Y | | 响应时间 | -| response_duration | int4 | Y | 0 | 响应时长(毫秒) | -| http_status_code | int4 | Y | 0 | HTTP状态码 | -| interface_status | int2 | N | 0 | 接口状态:0-成功,1-失败 | -| error_code | varchar(20) | Y | | 错误代码 | -| error_message | varchar(500) | Y | | 错误信息 | -| retry_count | int4 | Y | 0 | 重试次数 | -| client_ip | varchar(50) | Y | | 客户端IP | -| user_agent | varchar(500) | Y | | 用户代理 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### payment_error_log (收费错误日志表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| payment_id | int8 | Y | | 收费ID | -| error_type | varchar(20) | N | | 错误类型:系统错误、网络错误、业务错误 | -| error_level | varchar(20) | N | | 错误级别:信息、警告、错误、严重 | -| error_code | varchar(20) | N | | 错误代码 | -| error_message | varchar(500) | N | | 错误信息 | -| error_detail | text | Y | | 错误详情 | -| error_stack | text | Y | | 错误堆栈 | -| error_time | timestamp(6) | N | pg_systimestamp() | 错误时间 | -| user_id | int8 | Y | | 用户ID | -| customer_id | int8 | Y | | 客户ID | -| payment_channel | varchar(20) | Y | | 支付渠道 | -| payment_amount | numeric(15,4) | Y | 0 | 支付金额 | -| request_data | text | Y | | 请求数据 | -| response_data | text | Y | | 响应数据 | -| client_ip | varchar(50) | Y | | 客户端IP | -| user_agent | varchar(500) | Y | | 用户代理 | -| is_resolved | int2 | N | 0 | 是否已解决:0-未解决,1-已解决 | -| resolve_time | timestamp(6) | Y | | 解决时间 | -| resolve_user | varchar(100) | Y | | 解决人 | -| resolve_note | varchar(500) | Y | | 解决说明 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -
- -## 子系统4: 报装系统数据表 - -报装系统负责用户报装申请的全流程管理,包括报装申请管理、现场踏勘管理、档案管理等功能。 - -
-点击展开/折叠报装系统表详情 - -### 报装工程表 (construction_*) - -### site_survey (现场踏勘表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| application_id | int8 | N | | 报装申请ID | -| survey_no | varchar(32) | N | | 踏勘编号 | -| survey_date | timestamp(6) | N | pg_systimestamp() | 踏勘日期 | -| surveyor | varchar(100) | N | | 踏勘人员 | -| survey_result | varchar(20) | N | | 踏勘结果:可行、不可行、需调整 | -| water_source_condition | varchar(200) | Y | | 水源条件 | -| pipe_condition | varchar(200) | Y | | 管道条件 | -| terrain_condition | varchar(200) | Y | | 地形条件 | -| construction_difficulty | varchar(20) | Y | | 施工难度:简单、中等、复杂 | -| estimated_cost | numeric(15,4) | Y | 0 | 预估费用 | -| estimated_duration | int4 | Y | 0 | 预估工期(天) | -| material_requirements | text | Y | | 材料需求 | -| equipment_requirements | text | Y | | 设备需求 | -| special_requirements | text | Y | | 特殊要求 | -| risk_assessment | text | Y | | 风险评估 | -| survey_photos | text | Y | | 踏勘照片 | -| survey_drawings | text | Y | | 踏勘图纸 | -| approval_status | int2 | N | 0 | 审批状态:0-待审批,1-已审批,2-已拒绝 | -| approver | varchar(100) | Y | | 审批人 | -| approval_time | timestamp(6) | Y | | 审批时间 | -| approval_opinion | varchar(500) | Y | | 审批意见 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### construction_plan (施工方案表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| survey_id | int8 | N | | 踏勘ID | -| plan_no | varchar(32) | N | | 方案编号 | -| plan_name | varchar(200) | N | | 方案名称 | -| plan_type | varchar(20) | N | | 方案类型:标准方案、定制方案 | -| construction_method | varchar(100) | Y | | 施工方法 | -| construction_sequence | text | Y | | 施工顺序 | -| construction_duration | int4 | Y | 0 | 施工工期(天) | -| start_date | date | Y | | 开工日期 | -| end_date | date | Y | | 竣工日期 | -| construction_team | varchar(200) | Y | | 施工队伍 | -| team_leader | varchar(100) | Y | | 队长 | -| safety_measures | text | Y | | 安全措施 | -| quality_standards | text | Y | | 质量标准 | -| material_list | text | Y | | 材料清单 | -| equipment_list | text | Y | | 设备清单 | -| total_cost | numeric(15,4) | Y | 0 | 总费用 | -| labor_cost | numeric(15,4) | Y | 0 | 人工费用 | -| material_cost | numeric(15,4) | Y | 0 | 材料费用 | -| equipment_cost | numeric(15,4) | Y | 0 | 设备费用 | -| plan_status | int2 | N | 0 | 方案状态:0-草稿,1-已审批,2-执行中,3-已完成 | -| designer | varchar(100) | Y | | 设计人 | -| reviewer | varchar(100) | Y | | 审核人 | -| review_time | timestamp(6) | Y | | 审核时间 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### installation_contract (报装合同表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| application_id | int8 | N | | 报装申请ID | -| contract_no | varchar(32) | N | | 合同编号 | -| contract_name | varchar(200) | N | | 合同名称 | -| contract_type | varchar(20) | N | | 合同类型:标准合同、定制合同 | -| party_a | varchar(200) | N | | 甲方(水司) | -| party_b | varchar(200) | N | | 乙方(客户) | -| contract_amount | numeric(15,4) | N | 0 | 合同金额 | -| deposit_amount | numeric(15,4) | Y | 0 | 定金金额 | -| payment_method | varchar(20) | Y | | 付款方式 | -| contract_content | text | Y | | 合同内容 | -| technical_requirements | text | Y | | 技术要求 | -| quality_standards | text | Y | | 质量标准 | -| delivery_requirements | text | Y | | 交付要求 | -| warranty_period | int4 | Y | 0 | 保修期(月) | -| penalty_terms | text | Y | | 违约条款 | -| contract_start_date | date | Y | | 合同开始日期 | -| contract_end_date | date | Y | | 合同结束日期 | -| signing_date | timestamp(6) | Y | | 签订日期 | -| contract_status | int2 | N | 0 | 合同状态:0-草稿,1-已签订,2-执行中,3-已完成,4-已终止 | -| party_a_signer | varchar(100) | Y | | 甲方签约人 | -| party_b_signer | varchar(100) | Y | | 乙方签约人 | -| contract_file_path | varchar(500) | Y | | 合同文件路径 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -### construction_progress (施工进度表) -| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | -| :--- | :--- | :--- | :--- | :--- | -| id | int8 | N | nextval() | 主键 | -| plan_id | int8 | N | | 施工方案ID | -| progress_date | date | N | | 进度日期 | -| progress_description | varchar(500) | N | | 进度描述 | -| completion_percentage | numeric(5,2) | Y | 0 | 完成百分比 | -| current_phase | varchar(100) | Y | | 当前阶段 | -| completed_tasks | text | Y | | 已完成任务 | -| ongoing_tasks | text | Y | | 进行中任务 | -| pending_tasks | text | Y | | 待办任务 | -| material_usage | text | Y | | 材料使用情况 | -| equipment_usage | text | Y | | 设备使用情况 | -| personnel_arrangement | text | Y | | 人员安排 | -| quality_inspection | varchar(20) | Y | | 质量检查:合格、不合格、待检 | -| safety_inspection | varchar(20) | Y | | 安全检查:合格、不合格、待检 | -| encountered_problems | text | Y | | 遇到问题 | -| problem_solutions | text | Y | | 问题解决方案 | -| next_plan | text | Y | | 下一步计划 | -| progress_photos | text | Y | | 进度照片 | -| reporter | varchar(100) | N | | 汇报人 | -| report_time | timestamp(6) | N | pg_systimestamp() | 汇报时间 | -| reviewer | varchar(100) | Y | | 审核人 | -| review_time | timestamp(6) | Y | | 审核时间 | -| review_opinion | varchar(500) | Y | | 审核意见 | -| remark | varchar(500) | Y | | 备注 | -| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | -| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | -| creator | varchar(100) | Y | | 创建人id | -| updater | varchar(100) | Y | | 更新人id | -| deleted | int2 | N | 0 | 是否删除 | -| tenant_id | int8 | N | 0 | 租户id | - -
- -## 子系统5: 客户服务数据表 - -客户服务系统负责为客户提供便民服务,包括账户绑定管理、信息查询服务、在线缴费服务、电子发票服务等功能。 +客户服务模块本身不再单独维护旧稿中分散的平行表模型,而是以 `SYS-002` 主数据和交易表为主,按场景复用客户、账单、支付、发票与业务办理数据。
点击展开/折叠客户服务系统表详情 -### 客户服务相关表 +### 客户服务主要复用表 -客户服务系统主要复用营收系统的核心表,包括: -- `customer_info`:客户基本信息表 -- `customer_account`:客户账户信息表 -- `billing_record`:开账记录表 -- `payment_record`:缴费记录表 -- `invoice_info`:发票信息表 -- `thirdpay_binding`:第三方绑定表 -- `thirdpay_transaction`:第三方支付交易表 +| 场景 | 复用表 | 说明 | +| :--- | :--- | :--- | +| 账户绑定管理 | `biz_cust`, `biz_cust_app_binds`, `biz_account` | 支撑账户绑定、默认客户切换与账号关联 | +| 信息查询服务 | `biz_cust`, `biz_cust_meter`, `biz_meter`, `biz_charge`, `biz_charge_detail` | 支撑客户档案、表计信息、账单与费用查询 | +| 在线缴费服务 | `biz_charge`, `biz_collection`, `biz_withholding`, `bk_transaction`, `bk_transaction_callback` | 支撑缴费下单、支付回写与异步回调 | +| 电子发票服务 | `biz_invoice`, `biz_invoice_taxrate`, `biz_cust_invoice` | 支撑发票申请、税率匹配与抬头信息 | +| 业务办理服务 | `biz_process`, `biz_process_transfer`, `biz_business_datas`, `biz_content_attach` | 支撑业务申请、进度查询与附件资料 | + +> 说明:客户服务模块与 `SYS-008`、`SYS-009`、`SYS-010` 的协同在数据库层主要表现为复用 `SYS-002` 主业务表并接收外部服务回写结果,不再单列一套平行客户服务数据库模型。
@@ -3183,7 +1458,7 @@ | :--- | :--- | :--- | :--- | :--- | | id | bigint | N | AUTO_INCREMENT | 主键 | | user_id | bigint | N | | 用户ID,关联system_users.id | -| task_id | bigint | N | | 任务ID,关联reading_book.id | +| task_id | bigint | N | | 任务ID,关联biz_meter_book.id | | sync_status | varchar(20) | N | pending | 同步状态:pending、syncing、completed、failed | | sync_type | varchar(20) | N | | 同步类型:download、upload | | data_size | int | N | 0 | 数据大小(字节) | @@ -3203,7 +1478,7 @@ | 字段名 | 类型 | 是否可空 | 默认值 | 注释 | | :--- | :--- | :--- | :--- | :--- | | id | bigint | N | AUTO_INCREMENT | 主键 | -| work_order_id | bigint | N | | 工单ID,关联meter_work_order.id | +| work_order_id | bigint | N | | 工单ID,关联biz_process.id 或 biz_content.id | | attachment_type | varchar(20) | N | | 附件类型:image、video、document | | attachment_name | varchar(200) | N | | 附件名称 | | attachment_path | varchar(500) | N | | 附件存储路径 | @@ -3257,14 +1532,14 @@ |------|----------|------| | `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端账务信息 | +| `biz_cust` | 客户主档表 | 复用 Web 端客户档案 | +| `biz_meter` | 水表主档表 | 复用 Web 端水表档案 | +| `biz_meter_book` | 抄表册本表 | 复用 Web 端抄表任务 | +| `biz_reading_data` | 抄表数据表 | 复用 Web 端抄表数据 | +| `biz_meter_read` | 抄表任务/状态表 | 复用 Web 端抄表过程状态 | +| `biz_process` | 业务办理流程表 | 复用 Web 端现场业务工单/办理数据 | +| `biz_content_attach` | 办理附件表 | 复用 Web 端附件资料 | +| `biz_account` | 客户账户表 | 复用 Web 端账务信息 | ### 移动端特有表(5个) 仅保留移动端特有的功能表: @@ -3343,52 +1618,65 @@ erDiagram ### 业务核心表关系图 ```mermaid erDiagram - biz_community ||--o{ biz_community : "小区层级" - biz_company_account ||--o{ biz_dept_account_rel : "账户关系" - system_dept ||--o{ biz_dept_account_rel : "部门关系" - - biz_meter_maker ||--o{ biz_meter_model : "厂家型号" - biz_meter_caliber ||--o{ biz_meter_model : "口径型号" - - biz_price_category ||--o{ biz_price_category : "价格层级" - biz_price_category ||--o{ biz_price_cost_adjustment : "价格调整" - biz_cost_component ||--o{ biz_price_cost_adjustment : "费用调整" - biz_cost_component ||--o{ biz_price_discount_cost : "折扣费用" - - biz_price_discount_scheme ||--o{ biz_price_discount_cost : "折扣方案" - biz_price_discount_scheme ||--o{ biz_price_discount_tier : "折扣阶梯" - - biz_community { + BIZ_CUST ||--|| BIZ_ACCOUNT : 对应账户 + BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 联系人 + BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定水表 + BIZ_METER ||--o{ BIZ_CUST_METER : 被绑定 + BIZ_METER_BOOK ||--o{ BIZ_METER_READ : 生成任务 + BIZ_METER_READ ||--o{ BIZ_READING_DATA : 采集读数 + BIZ_METER ||--o{ BIZ_LAST_READING : 最新读数 + BIZ_READING_DATA ||--o{ BIZ_CHARGE : 触发开账 + BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 明细拆分 + BIZ_CHARGE ||--o{ BIZ_INVOICE : 开票关联 + BIZ_CHARGE ||--o{ BK_TRANSACTION : 支付核销 + BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_TEMPLATE : 模板归属 + BIZ_PRICE_TEMPLATE ||--o{ BIZ_WATER_USE_SCHEME : 计费方案 + BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_COST_ADJUSTMENT : 费用调整 + BIZ_PRICE_COST_ADJUSTMENT ||--o{ BIZ_PRICE_TIER_ADJUSTMENT : 阶梯规则 + BK_WITHHOLDING_BATCH ||--o{ BK_WITHHOLDING_ITEM : 批次明细 + BK_RECONCILE_BATCH ||--o{ BK_RECONCILE_DIFF : 对账差异 + + BIZ_CUST { int8 id PK - varchar name varchar code - varchar dept_code FK - int8 parent_id FK + varchar name + varchar cust_type + varchar mobile int8 tenant_id FK } - - biz_company_account { + + BIZ_ACCOUNT { int8 id PK - varchar account_name - varchar bank_name - varchar bank_account - int8 tenant_id FK - } - - biz_meter_maker { - int8 id PK - varchar name varchar code - varchar recharge_type - int8 tenant_id FK + int8 cust_id FK + numeric balance + numeric arrears_amount } - - biz_price_category { + + BIZ_METER { int8 id PK - varchar name varchar code - int8 parent_id FK - int8 tenant_id FK + varchar meter_no + varchar maker_code + varchar model_code + } + + BIZ_CHARGE { + int8 id PK + varchar code + int8 cust_id FK + varchar bill_period + numeric total_amount + int2 charge_status + } + + BK_TRANSACTION { + int8 id PK + varchar trade_no + varchar biz_order_no + varchar channel_code + numeric trade_amount + int2 trade_status } ``` @@ -3416,24 +1704,30 @@ 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; +SELECT + m.id AS meter_id, + m.code AS meter_code, + m.meter_no, + m.maker_code, + maker.name AS maker_name, + m.model_code, + model.name AS model_name, + m.caliber_code, + caliber.name AS caliber_name, + caliber.value AS caliber_value, + m.range_code, + range_cfg.name AS range_name, + m.install_address, + m.meter_status +FROM biz_meter m +LEFT JOIN biz_meter_maker maker ON m.maker_code = maker.code AND maker.deleted = 0 +LEFT JOIN biz_meter_model model ON m.model_code = model.code AND model.deleted = 0 +LEFT JOIN biz_meter_caliber caliber ON m.caliber_code = caliber.code AND caliber.deleted = 0 +LEFT JOIN biz_meter_range range_cfg ON m.range_code = range_cfg.code AND range_cfg.deleted = 0 +WHERE m.deleted = 0; ``` ### v_dept_hierarchy (部门层级视图) @@ -3502,23 +1796,33 @@ CREATE INDEX idx_system_login_log_ip_time ON system_login_log(user_ip, create_ti ### 业务表索引 ```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_cust_code ON biz_cust(code); +CREATE INDEX idx_biz_cust_mobile ON biz_cust(mobile); +CREATE INDEX idx_biz_account_cust_status ON biz_account(cust_id, account_status); --- 水表相关索引 -CREATE INDEX idx_biz_meter_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_meter_code ON biz_meter(code); +CREATE INDEX idx_biz_meter_book_dept_status ON biz_meter_book(dept_code, status); +CREATE INDEX idx_biz_meter_read_book_period ON biz_meter_read(book_id, read_period); +CREATE INDEX idx_biz_reading_data_read_time ON biz_reading_data(meter_read_id, read_time); + +-- 开账收费索引 +CREATE INDEX idx_biz_charge_cust_period ON biz_charge(cust_id, bill_period); +CREATE INDEX idx_biz_charge_status_due ON biz_charge(charge_status, due_date); +CREATE INDEX idx_biz_charge_detail_charge_cost ON biz_charge_detail(charge_id, cost_component_code); -- 价格体系索引 CREATE INDEX idx_biz_price_category_code ON biz_price_category(code); -CREATE INDEX idx_biz_price_category_parent_tenant ON biz_price_category(parent_id, tenant_id); +CREATE INDEX idx_biz_price_template_category ON biz_price_template(price_category_code, adjustment_snap_code); CREATE INDEX idx_biz_price_cost_adj_category_cost ON biz_price_cost_adjustment(price_category_code, cost_component_code); -CREATE INDEX idx_biz_price_cost_adj_effective ON biz_price_cost_adjustment(effective_date, expire_date); +CREATE INDEX idx_biz_price_tier_adj_cost_tier ON biz_price_tier_adjustment(cost_component_code, tier_level); --- 折扣方案索引 -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); +-- 银行代收与对账索引 +CREATE INDEX idx_bk_transaction_trade_no ON bk_transaction(trade_no); +CREATE INDEX idx_bk_transaction_biz_order ON bk_transaction(biz_order_no, trade_status); +CREATE INDEX idx_bk_withholding_batch_date ON bk_withholding_batch(batch_date, batch_status); +CREATE INDEX idx_bk_reconcile_batch_bill_date ON bk_reconcile_batch(bill_date, reconcile_status); ``` ## 分区表设计 diff --git a/03_Technical/03_Interface_Design.md b/03_Technical/03_Interface_Design.md index 020744c..bf20231 100644 --- a/03_Technical/03_Interface_Design.md +++ b/03_Technical/03_Interface_Design.md @@ -4,836 +4,948 @@ | 项目信息 | 详情 | |---------|------| | **项目名称** | 福建水务营收系统 | -| **文档类型** | 概要设计文档 | -| **技术框架** | RuoYi-Vue-Pro + yudao-ui-admin-vue3 | +| **文档类型** | 接口设计文档 | +| **技术框架** | Spring Cloud Alibaba + RuoYi-Vue-Pro + yudao-ui-admin-vue3 | | **文档版本** | v1.0 | -| **编写日期** | 2024-12-19 | -| **文档状态** | ✅ 已完成 | +| **编写日期** | 2026-03-11 | +| **文档状态** | 🔄 持续完善 | ## 目录 -- [接口概述](#接口概述) -- [外部接口](#外部接口) -- [内部接口](#内部接口) -- [接口标准](#接口标准) +- [接口设计范围](#接口设计范围) +- [设计原则与统一约束](#设计原则与统一约束) +- [SYS-002 接口视图](#sys-002-接口视图) +- [外部接口设计](#外部接口设计) +- [内部接口设计](#内部接口设计) +- [数据对象与表口径](#数据对象与表口径) +- [接口安全与异常处理](#接口安全与异常处理) +- [实现状态说明](#实现状态说明) -## 接口概述 +## 接口设计范围 -福建水务业务系统提供丰富的接口,用于与外部系统集成以及系统内部各模块间的数据交换。接口设计遵循标准化、安全性、可扩展性的原则,基于RuoYi-Vue-Pro框架采用RESTful风格设计,支持JSON数据格式。 +本文档用于描述福建水务营收系统的接口边界、调用方式、核心接口清单以及与外围子系统的协同关系,重点统一 `SYS-002` 营收业务系统的接口口径。 + +本次接口整编遵循以下事实来源: + +- `02_Detailed/01_Detailed_Design.md` +- `03_Technical/01_Database_Design.md` +- `docs/guides/BACKEND_CURRENT_STATUS.md` +- `docs/guides/BACKEND_TABLE_MAPPING.md` +- `output/preview/福建水务营收系统整体架构图.html` + +> 说明:本文档优先描述正式设计边界与业务接口职责,不将 backend 中尚未明确识别的内部实现细节误写为既有接口事实。对于历史资料中存在、但当前 backend 未完全确认的接口对象,统一按“文档先行”处理。 + +## 设计原则与统一约束 ### 接口设计原则 -- **统一性**:所有接口遵循统一的设计规范和数据格式 -- **安全性**:接口通过认证授权、参数校验等机制保障安全 -- **可维护性**:接口文档完善,便于维护和升级 -- **兼容性**:接口设计考虑版本兼容,支持平滑升级 -- **性能优化**:接口设计考虑性能,支持缓存、分页等机制 +- **统一编号**:接口编号统一采用 `IF-REV-*`、`IF-CS-*`、`IF-EXT-*` 规则。 +- **统一边界**:`SYS-002` 负责营收业务主流程,发票、支付结算、消息触达分别通过 `SYS-008`、`SYS-009`、`SYS-010` 协同完成。 +- **统一数据口径**:接口数据对象优先对齐真实 `biz_*` 与 `bk_*` 表,不再沿用旧稿中的 `customer_*`、`billing_*`、`thirdpay_*`、`service_*` 等历史命名。 +- **统一协议风格**:内部管理接口以 HTTPS REST 为主,跨系统集成根据场景采用 REST、文件交换、消息队列等方式。 +- **统一安全机制**:内部接口采用统一认证鉴权,外部接口按渠道要求实施签名、回调校验、白名单和审计留痕。 -### RESTful API规范 +### 通用响应格式 -系统API接口采用RESTful风格设计,主要规范如下: - -#### 资源命名 - -- 使用名词复数表示资源集合,如`/users`、`/meters` -- 使用资源ID标识特定资源,如`/users/1`、`/meters/123` -- 资源层级关系通过路径嵌套表示,如`/users/1/meters` - -#### HTTP方法 - -- GET:获取资源 -- POST:创建资源 -- PUT:更新资源(全量更新) -- PATCH:部分更新资源 -- DELETE:删除资源 - -#### 状态码 - -- 200 OK:请求成功 -- 201 Created:资源创建成功 -- 400 Bad Request:请求参数错误 -- 401 Unauthorized:未授权 -- 403 Forbidden:权限不足 -- 404 Not Found:资源不存在 -- 500 Internal Server Error:服务器内部错误 - -#### 响应格式 - -系统统一采用以下JSON格式响应: +内部 REST 接口统一采用如下响应模型: ```json { - "code": 0, // 业务状态码,0表示成功,非0表示失败 - "data": {}, // 响应数据 - "msg": "success" // 响应消息 + "code": 0, + "data": {}, + "msg": "success" } ``` -分页查询响应格式: +分页响应统一采用: ```json { "code": 0, "data": { - "list": [], // 数据列表 - "total": 100, // 总记录数 - "pageNum": 1, // 当前页码 - "pageSize": 10 // 每页记录数 + "list": [], + "total": 0, + "pageNo": 1, + "pageSize": 10 }, "msg": "success" } ``` -### 接口文档 +## SYS-002 接口视图 -系统使用Knife4j(基于Swagger)自动生成API文档,文档地址为:`http://{系统地址}/doc.html`。 +### 模块分组 -主要特点: -- 在线接口文档:支持在线查看接口定义 -- 接口调试:支持在线调试接口 -- 文档导出:支持导出OpenAPI规范文档 -- 权限控制:支持对接口文档的访问控制 +#### 营收核心模块群 -## 外部接口 +| 模块编号 | 模块名称 | 接口职责定位 | +|---------|----------|-------------| +| REV-001 | 客户资料管理 | 客户、账户、联系人、水表绑定等主数据查询与维护 | +| REV-002 | 抄表开账 | 抄表任务、抄表数据、校验、开账触发 | +| REV-003 | 营业收费 | 收费受理、账单核销、柜台与渠道收款状态回写 | +| REV-004 | 账务处理 | 调整、退款、冲正、坏账等账务处理申请与结果回写 | +| REV-005 | 发票管理 | 发票申请、开票结果回写、票据状态查询 | +| REV-006 | 催缴管理 | 催缴名单生成、催缴任务下发、通知结果回写 | +| REV-007 | 统计分析 | 营收、抄表、收费、客户、渠道统计查询 | +| REV-008 | 代收业务 | 银行代收、代扣、送盘、回盘、对账、结算协同 | +| REV-009 | 业务参数配置 | 水价、费用组成、业务参数、页面参数等配置接口 | -### 银行接口对接 +#### 客户服务模块群 -#### 银行代扣接口 +| 模块编号 | 模块名称 | 接口职责定位 | +|---------|----------|-------------| +| CS-001 | 账户绑定管理 | 客户绑定、解绑、默认客户切换 | +| CS-002 | 信息查询服务 | 账单、欠费、用水、缴费、停水公告等查询 | +| CS-003 | 在线缴费服务 | 创建线上支付订单、支付状态查询 | +| CS-004 | 电子发票服务 | 发票申请、发票列表、下载与推送 | +| CS-005 | 营业网点服务 | 网点查询、预约、导航、业务事项查询 | +| CS-006 | 业务办理服务 | 更名、过户、低保、换表、自主抄表等线上办理 | +| CS-007 | 柜面扫码支付 | 柜台二维码收款、订单生成、支付结果回写 | -**功能描述**:通过银行系统自动从用户账户中扣除水费。 +### 跨系统协同边界 -**接口详情**: -- **接口方式**:文件交换(FTP/SFTP) -- **数据格式**:定长文本文件 -- **交换频率**:每日凌晨2:00 -- **文件编码**:GBK +| 协同子系统 | 协同内容 | SYS-002 职责 | 对方职责 | +|-----------|----------|--------------|----------| +| SYS-008 发票服务 | 发票开具、作废、红冲、票据查询 | 提供业务上下文、账单信息、客户开票信息,接收结果回写 | 承接税控与电子发票能力 | +| SYS-009 支付与银行结算 | 微信/支付宝支付、银行实时收费、代扣、对账、结算 | 发起订单、接收支付结果、维护账单核销状态 | 承接支付渠道、交易流水、回调、对账与结算 | +| SYS-010 消息服务 | 催缴通知、缴费结果通知、办理进度通知 | 生成待通知业务事件与目标用户 | 承接短信、微信公众号、站内信等触达能力 | -**代扣文件格式**: -```text -记录类型(1位) + 客户号(12位) + 户名(30位) + 银行账号(20位) + 扣款金额(12位,含2位小数) + 账期(6位) + 保留字段(19位) -``` +## 外部接口设计 -**代扣文件示例**: -```text -1C00000000001张三 62172511001234567890000009180202412 -1C00000000002李四 62172511001234567891000015460202412 -``` +## 外部接口分类 -**回盘文件格式**: -```text -记录类型(1位) + 客户号(12位) + 银行账号(20位) + 扣款金额(12位) + 处理状态(1位) + 银行流水号(20位) + 处理时间(14位) + 失败原因(20位) -``` +| 接口分类 | 主要对接方 | 典型协议 | 说明 | +|---------|------------|----------|------| +| 银行代收/代扣接口 | 银行、银联、托收平台 | 文件交换 / HTTPS REST | 主要服务 REV-008 | +| 聚合支付接口 | 微信支付、支付宝等 | HTTPS REST + 回调 | 主要服务 REV-003、CS-003、CS-007 | +| 发票协同接口 | 税控/电子发票平台 | HTTPS REST | 主要服务 REV-005、CS-004 | +| 消息通知接口 | 短信平台、消息网关 | HTTPS REST / MQ | 主要服务 REV-006、CS-006 | +| 物联网集抄接口 | 集抄平台、IoT 平台 | HTTPS REST / MQ | 主要服务 REV-002 | -**代扣文件生成流程**: -1. 每日凌晨2点自动生成代扣文件 -2. 查询当日待代扣账单数据 -3. 按银行要求格式生成文件内容 -4. 通过SFTP上传至银行服务器 -5. 记录文件生成和上传日志 +### IF-EXT-001 银行代扣批次下发接口 -#### 银行实时缴费接口 +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-001 | +| 接口名称 | 银行代扣批次下发接口 | +| 归属模块 | REV-008 | +| 调用方向 | SYS-002 → SYS-009 / 银行渠道 | +| 接口方式 | 文件交换或 HTTPS REST | +| 业务说明 | 按账期生成待代扣账单批次,交由银行渠道执行代扣 | +| 核心数据支撑 | `biz_withholding`、`bk_withholding_batch`、`bk_withholding_item` | -**功能描述**:用户在银行柜台、网上银行或手机银行实时缴纳水费。 +关键报文信息包括:客户号、签约号、扣款金额、账期、渠道编码、批次号等。 -**接口详情**: -- **接口方式**:HTTP POST -- **请求URL**:`https://bank.api.com/payment/water-fee` -- **数据格式**:JSON -- **认证方式**:API Key + 签名 +### IF-EXT-002 银行代扣回盘接收接口 -**请求参数**: +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-002 | +| 接口名称 | 银行代扣回盘接收接口 | +| 归属模块 | REV-008 | +| 调用方向 | 银行渠道 / SYS-009 → SYS-002 | +| 接口方式 | 文件交换或 HTTPS REST | +| 业务说明 | 接收代扣成功、失败、退票等结果并回写业务状态 | +| 核心数据支撑 | `bk_withholding_batch`、`bk_withholding_item`、`bk_transaction`、`bk_transaction_exception` | + +### IF-EXT-003 银行实时收费接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-003 | +| 接口名称 | 银行实时收费接口 | +| 归属模块 | REV-003 / REV-008 | +| 调用方向 | 银行渠道 / SYS-009 ↔ SYS-002 | +| 接口方式 | HTTPS REST | +| 业务说明 | 支撑柜台、网银、手机银行实时查询应收并完成缴费 | +| 核心数据支撑 | `biz_charge`、`biz_charge_detail`、`bk_transaction`、`bk_transaction_callback` | + +### IF-EXT-004 聚合支付下单接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-004 | +| 接口名称 | 聚合支付下单接口 | +| 归属模块 | REV-003 / CS-003 / CS-007 | +| 调用方向 | SYS-002 → SYS-009 | +| 接口方式 | HTTPS REST | +| 业务说明 | 创建微信、支付宝等支付订单,返回二维码、收银参数或支付跳转信息 | +| 核心数据支撑 | `biz_charge`、`biz_collection`、`bk_transaction` | + +### IF-EXT-005 聚合支付结果回调接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-005 | +| 接口名称 | 聚合支付结果回调接口 | +| 归属模块 | REV-003 / CS-003 / CS-007 | +| 调用方向 | SYS-009 → SYS-002 | +| 接口方式 | HTTPS REST + 签名校验 | +| 业务说明 | 接收支付成功、失败、关闭、退款等异步事件,并更新收费状态 | +| 核心数据支撑 | `bk_transaction_callback`、`biz_collection`、`biz_charge` | + +### IF-EXT-006 发票开具协同接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-006 | +| 接口名称 | 发票开具协同接口 | +| 归属模块 | REV-005 / CS-004 | +| 调用方向 | SYS-002 → SYS-008 | +| 接口方式 | HTTPS REST | +| 业务说明 | 传递账单、客户、抬头、税率等信息,由 SYS-008 承接开票 | +| 核心数据支撑 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | + +### IF-EXT-007 发票结果回写接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-007 | +| 接口名称 | 发票结果回写接口 | +| 归属模块 | REV-005 / CS-004 | +| 调用方向 | SYS-008 → SYS-002 | +| 接口方式 | HTTPS REST | +| 业务说明 | 回写开票状态、票据编号、下载地址、作废/红冲结果 | +| 核心数据支撑 | `biz_invoice`、`biz_process_invoice_modifys` | + +### IF-EXT-008 消息触达接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-008 | +| 接口名称 | 消息触达接口 | +| 归属模块 | REV-006 / CS-006 | +| 调用方向 | SYS-002 → SYS-010 | +| 接口方式 | HTTPS REST 或 MQ | +| 业务说明 | 发送催缴通知、办理进度通知、缴费结果通知等消息事件 | +| 核心数据支撑 | `biz_charge`、`biz_process`、`biz_operat_log` | + +### IF-EXT-009 集抄数据接入接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-009 | +| 接口名称 | 集抄数据接入接口 | +| 归属模块 | REV-002 | +| 调用方向 | IoT 平台 / 集抄平台 → SYS-002 | +| 接口方式 | HTTPS REST / MQ | +| 业务说明 | 接收远传读数、设备状态、异常告警,触发抄表校验与开账准备 | +| 核心数据支撑 | `biz_meter_read`、`biz_reading_data`、`biz_last_reading` | + +## 内部接口设计 + +## SYS-002 内部接口清单 + +### REV 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-REV-001 | 客户信息查询接口 | REV-001 | 查询客户档案、联系人、账户、水表绑定关系 | `biz_cust`、`biz_account`、`biz_cust_contact`、`biz_cust_meter` | +| IF-REV-002 | 客户主数据维护接口 | REV-001 | 新增、变更客户档案及开票/托收/代扣关系 | `biz_cust`、`biz_cust_invoice`、`biz_cust_collection_rel`、`biz_cust_withholding_rel` | +| IF-REV-003 | 抄表任务下发接口 | REV-002 | 按册本、片区、抄表周期生成抄表任务 | `biz_meter_book`、`biz_meter_read` | +| IF-REV-004 | 抄表数据提交接口 | REV-002 | 提交抄表数据、图片、异常标记并触发校验 | `biz_reading_data`、`biz_reading_logs`、`biz_last_reading` | +| IF-REV-005 | 账单生成接口 | REV-002 | 根据抄表结果、价格模板和费用组成生成账单 | `biz_charge`、`biz_charge_detail`、`biz_price_template`、`biz_cost_component` | +| IF-REV-006 | 缴费处理接口 | REV-003 | 创建收费记录、核销账单、回写收款结果 | `biz_collection`、`biz_charge`、`bk_transaction` | +| IF-REV-007 | 账务调整接口 | REV-004 | 发起金额调整、退款、冲正、坏账等业务处理 | `biz_charge`、`biz_charge_detail`、`biz_operat_log` | +| IF-REV-008 | 发票申请接口 | REV-005 | 发起开票申请并接收票据状态回写 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | +| IF-REV-009 | 催缴任务接口 | REV-006 | 生成催缴名单并提交消息触达请求 | `biz_charge`、`biz_operat_log` | +| IF-REV-010 | 统计查询接口 | REV-007 | 查询营收、收费、欠费、渠道、客户统计结果 | 聚合视图 / 统计结果集 | +| IF-REV-011 | 银行代收协同接口 | REV-008 | 发起代扣、回盘、对账、结算协同 | `biz_withholding`、`bk_reconcile_batch`、`bk_settlement_batch` | +| IF-REV-012 | 业务参数配置接口 | REV-009 | 查询和维护价格模板、优惠方案、业务参数配置 | `biz_parameter_settings`、`biz_price_*`、`biz_page_settings*` | + +### CS 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-CS-001 | 账户绑定接口 | CS-001 | 绑定、解绑、切换默认客户 | `biz_cust_app_binds`、`biz_cust` | +| IF-CS-002 | 历史账单查询接口 | CS-002 | 查询账单、欠费、用水历史、缴费记录 | `biz_charge`、`biz_charge_detail`、`biz_reading_data` | +| IF-CS-003 | 在线支付下单接口 | CS-003 | 创建微信/支付宝线上支付订单 | `biz_charge`、`biz_collection`、`bk_transaction` | +| IF-CS-004 | 发票申请接口 | CS-004 | 提交电子发票申请、查询发票状态 | `biz_invoice`、`biz_cust_invoice` | +| IF-CS-005 | 网点与业务办理接口 | CS-005 | 查询营业网点、预约信息、可办事项 | `biz_outlets`、`biz_business_types` | +| IF-CS-006 | 业务办理进度接口 | CS-006 | 提交业务申请、查询办理进度与附件 | `biz_process`、`biz_process_transfer`、`biz_content_attach` | +| IF-CS-007 | 柜面扫码支付接口 | CS-007 | 创建柜面扫码支付订单并回写结果 | `biz_collection`、`bk_transaction`、`biz_charge` | + +## 关键内部接口说明 + +### IF-REV-001 客户信息查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-001 | +| 归属模块 | REV-001 | +| 请求方式 | GET | +| 请求路径 | `/admin-api/revenue/customer/{id}` | +| 功能描述 | 查询客户主档、账户状态、联系人、水表绑定及开票资料 | +| 核心表 | `biz_cust`、`biz_account`、`biz_cust_contact`、`biz_cust_meter`、`biz_cust_invoice` | + +响应结果以客户主档为中心,组合返回账户余额、欠费金额、联系人列表、水表列表与开票资料摘要。 + +### IF-REV-004 抄表数据提交接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-004 | +| 归属模块 | REV-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/reading-data/create` | +| 功能描述 | 接收人工或远传抄表数据,执行校验、估抄判断、异常标记 | +| 核心表 | `biz_meter_read`、`biz_reading_data`、`biz_last_reading`、`biz_reading_logs` | + +典型请求体: ```json { - "merchantId": "WATER001", - "customerCode": "C001", - "billCodes": ["B202412190001"], - "totalAmount": 91.80, - "bankAccount": "6217251100123456789", - "customerName": "张三", - "timestamp": "20241219103000", - "signature": "ABC123DEF456..." + "meterReadId": 1001, + "meterId": 2001, + "readTime": "2026-03-11 09:30:00", + "currentReading": 156.32, + "readType": "MANUAL", + "photoList": [ + "file-001", + "file-002" + ], + "gps": "119.2965,26.0745", + "remark": "现场抄表正常" } ``` -**响应参数**: -```json -{ - "resultCode": "0000", - "resultMsg": "交易成功", - "data": { - "transactionId": "TXN20241219001", - "paymentTime": "20241219103001", - "bankSerial": "BNK20241219001234" - } -} +### IF-REV-005 账单生成接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-005 | +| 归属模块 | REV-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/charge/generate` | +| 功能描述 | 基于抄表结果、水价模板、阶梯规则、费用组成生成账单 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_price_template`、`biz_price_tier_adjustment`、`biz_cost_component` | + +### IF-REV-006 缴费处理接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-006 | +| 归属模块 | REV-003 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/collection/create` | +| 功能描述 | 处理柜台收费、预存抵扣、渠道收款确认与账单核销 | +| 核心表 | `biz_collection`、`biz_charge`、`bk_transaction` | + +### IF-REV-008 发票申请接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-008 | +| 归属模块 | REV-005 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/invoice/apply` | +| 功能描述 | 发起电子发票或纸质发票申请,并调用 SYS-008 | +| 核心表 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | + +边界约束: +- 发票开具、作废、红冲能力由 `SYS-008` 统一承接。 +- `SYS-002` 仅负责业务单据归集、申请发起与结果落账。 + +### IF-REV-011 银行代收协同接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-011 | +| 归属模块 | REV-008 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/bank/withholding/batch` | +| 功能描述 | 创建代扣批次、发起对账、接收结算回写 | +| 核心表 | `biz_withholding`、`bk_withholding_batch`、`bk_reconcile_batch`、`bk_settlement_batch` | + +### IF-CS-003 在线支付下单接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-003 | +| 归属模块 | CS-003 | +| 请求方式 | POST | +| 请求路径 | `/app-api/customer/payment/order` | +| 功能描述 | 面向微网厅、微信、支付宝等客户渠道创建支付订单 | +| 核心表 | `biz_charge`、`biz_collection`、`bk_transaction` | + +边界约束: +- 支付通道、支付回调、对账流水由 `SYS-009` 负责。 +- `SYS-002` 负责校验待缴账单、生成业务订单、更新核销结果。 + +### IF-CS-006 业务办理进度接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-006 | +| 归属模块 | CS-006 | +| 请求方式 | GET / POST | +| 请求路径 | `/app-api/customer/process` | +| 功能描述 | 提交业务办理申请、查询办理进度、补充附件资料 | +| 核心表 | `biz_process`、`biz_process_transfer`、`biz_business_datas`、`biz_content_attach` | + +### IF-CS-007 柜面扫码支付接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-007 | +| 归属模块 | CS-007 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/counter/scan-pay/create` | +| 功能描述 | 柜台生成扫码订单,接收支付结果并回写收费状态 | +| 核心表 | `biz_collection`、`bk_transaction`、`biz_charge` | + +## 字段级请求与响应定义 + +> 说明:以下字段级定义服务于接口设计说明,重点体现业务含义、来源对象与跨系统协同所需关键字段,不等同于数据库表的完整字段清单。 + +### IF-REV-001 客户信息查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源 | +|------|------|------|------|----------| +| id | Long | 否 | 客户主键 ID,与 `code` 二选一 | `biz_cust.id` | +| code | String | 否 | 客户编号,与 `id` 二选一 | `biz_cust.code` | +| mobile | String | 否 | 客户手机号,支持模糊校验查询 | `biz_cust.mobile` / `biz_cust_contact.mobile` | +| queryType | String | 否 | 查询类型:`base`、`account`、`meter`、`invoice`、`all` | 查询控制参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| id | Long | 客户主键 ID | `biz_cust.id` | +| code | String | 客户编号 | `biz_cust.code` | +| name | String | 客户名称 | `biz_cust.name` | +| custType | String | 客户类型 | `biz_cust.cust_type` | +| mobile | String | 主要联系电话 | `biz_cust.mobile` | +| address | String | 客户地址 | `biz_cust.address` | +| accountInfo | Object | 账户信息对象 | `biz_account` | +| accountInfo.balance | Decimal | 账户余额 | `biz_account.balance` | +| accountInfo.arrearsAmount | Decimal | 欠费金额 | `biz_account.arrears_amount` | +| accountInfo.status | String | 账户状态 | `biz_account.status` | +| contactList | Array | 联系人列表 | `biz_cust_contact` | +| meterList | Array | 绑定水表列表 | `biz_cust_meter`、`biz_meter` | +| invoiceInfo | Object | 开票信息摘要 | `biz_cust_invoice` | + +### IF-REV-004 抄表数据提交接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| meterReadId | Long | 是 | 抄表任务 ID | `biz_meter_read.id` | +| meterId | Long | 是 | 水表 ID | `biz_meter.id` | +| readTime | Datetime | 是 | 抄表时间 | `biz_reading_data.read_time` | +| currentReading | Decimal | 是 | 本次读数 | `biz_reading_data.current_reading` | +| readType | String | 是 | 抄表方式:`MANUAL`、`IOT`、`IMPORT` | `biz_reading_data.read_type` | +| usageAmount | Decimal | 否 | 本次用量,可由系统自动计算 | `biz_reading_data.usage_amount` | +| photoList | Array | 否 | 表盘照片或现场图片文件标识 | 附件系统 / 文件服务 | +| gps | String | 否 | 现场坐标 | 扩展信息 | +| remark | String | 否 | 异常说明或现场备注 | `biz_reading_logs.remark` | +| abnormalFlag | Boolean | 否 | 是否标记异常 | 过程状态 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| readingId | Long | 抄表数据主键 | `biz_reading_data.id` | +| meterReadId | Long | 抄表任务 ID | `biz_meter_read.id` | +| validateStatus | String | 校验状态:`PASS`、`WARN`、`REJECT` | 校验结果 | +| abnormalFlag | Boolean | 是否识别为异常 | 过程判断 | +| nextAction | String | 后续动作:`BILLING`、`RECHECK`、`MANUAL_REVIEW` | 流程控制 | +| msg | String | 处理说明 | 返回消息 | + +### IF-REV-005 账单生成接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| billPeriod | String | 是 | 账期,如 `2026-03` | 开账批次参数 | +| readingBatchNo | String | 否 | 抄表批次号 | 抄表批次 | +| customerIds | Array | 否 | 指定客户范围 | `biz_cust.id` | +| meterReadIds | Array | 否 | 指定抄表任务范围 | `biz_meter_read.id` | +| dueDate | Date | 是 | 应收截止日期 | `biz_charge.due_date` | +| operatorId | Long | 否 | 发起操作人 | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| generateCount | Integer | 成功生成账单数量 | 汇总信息 | +| successList | Array | 成功明细列表 | `biz_charge` | +| successList[].chargeId | Long | 账单主键 | `biz_charge.id` | +| successList[].chargeCode | String | 账单编号 | `biz_charge.code` | +| successList[].custId | Long | 客户 ID | `biz_charge.cust_id` | +| successList[].totalAmount | Decimal | 账单总金额 | `biz_charge.total_amount` | +| failureList | Array | 失败明细列表 | 处理结果 | +| failureList[].reason | String | 失败原因 | 异常信息 | + +### IF-REV-006 缴费处理接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | `biz_charge.cust_id` | +| chargeIds | Array | 是 | 待核销账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`CASH`、`WECHAT`、`ALIPAY`、`BANK`、`PREPAY` | 渠道参数 | +| paymentAmount | Decimal | 是 | 本次支付金额 | `biz_collection.amount` | +| actualAmount | Decimal | 否 | 实收金额,柜台收费场景使用 | 柜台收费扩展 | +| tradeNo | String | 否 | 外部交易流水号 | `bk_transaction.trade_no` | +| outletCode | String | 否 | 柜台或网点编号 | `biz_outlets.code` | +| remark | String | 否 | 收费备注 | `biz_collection.remark` | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| collectionId | Long | 收费记录 ID | `biz_collection.id` | +| collectionCode | String | 收费业务编号 | `biz_collection.code` | +| writeOffStatus | String | 核销状态:`SUCCESS`、`PARTIAL`、`PENDING` | 业务状态 | +| paidAmount | Decimal | 已支付金额 | 汇总结果 | +| remainAmount | Decimal | 剩余待支付金额 | 汇总结果 | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| invoiceAvailable | Boolean | 是否可发起开票 | 业务判断 | + +### IF-REV-008 发票申请接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | `biz_invoice.cust_id` | +| chargeIds | Array | 是 | 开票关联账单 ID 列表 | 业务单据关联 | +| invoiceType | String | 是 | 发票类型:`ELECTRONIC`、`PAPER` | `biz_invoice.invoice_type` | +| invoiceTitle | String | 是 | 发票抬头 | `biz_cust_invoice.invoice_title` | +| taxNo | String | 否 | 税号 | `biz_cust_invoice.tax_no` | +| email | String | 否 | 电子发票接收邮箱 | `biz_cust_invoice.email` | +| mobile | String | 否 | 接收手机号 | `biz_cust_invoice.mobile` | +| taxRateCode | String | 否 | 税率编码 | `biz_invoice_taxrate.tax_code` | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| invoiceId | Long | 发票申请记录 ID | `biz_invoice.id` | +| invoiceCode | String | 发票申请编号 | `biz_invoice.code` | +| invoiceStatus | String | 状态:`INIT`、`APPLYING`、`SUCCESS`、`FAIL` | `biz_invoice.invoice_status` | +| requestNo | String | 发往 SYS-008 的请求号 | 协同流水 | +| fileUrl | String | 发票文件地址,成功后返回 | 结果回写 | +| msg | String | 处理说明 | 返回消息 | + +### IF-REV-011 银行代收协同接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| batchNo | String | 是 | 代扣批次号 | `bk_withholding_batch.batch_no` | +| businessType | String | 是 | 业务类型:`WITHHOLDING`、`RECONCILE`、`SETTLEMENT` | 协同类型 | +| channelCode | String | 是 | 渠道编码 | `bk_payment_channel.channel_code` | +| billPeriod | String | 否 | 账期 | 批处理参数 | +| itemList | Array | 否 | 批次明细列表 | `bk_withholding_item` | +| itemList[].custId | Long | 是 | 客户 ID | `bk_withholding_item.cust_id` | +| itemList[].chargeId | Long | 是 | 账单 ID | `bk_withholding_item.charge_id` | +| itemList[].amount | Decimal | 是 | 扣款金额 | 业务金额 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| batchNo | String | 批次号 | `bk_withholding_batch.batch_no` | +| batchStatus | String | 批次状态:`CREATED`、`SENT`、`RETURNED`、`RECONCILED`、`SETTLED` | 批次状态 | +| successCount | Integer | 成功处理条数 | 汇总结果 | +| failCount | Integer | 失败条数 | 汇总结果 | +| reconcileStatus | String | 对账状态 | `bk_reconcile_batch.status` | +| settlementStatus | String | 结算状态 | `bk_settlement_batch.status` | +| diffList | Array | 差异清单摘要 | `bk_reconcile_diff` | + +### IF-CS-003 在线支付下单接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | 客户上下文 | +| chargeIds | Array | 是 | 待支付账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`WECHAT`、`ALIPAY` | 渠道参数 | +| paymentAmount | Decimal | 是 | 支付金额 | `bk_transaction.trade_amount` | +| openId | String | 否 | 微信渠道用户标识 | 微信场景 | +| returnUrl | String | 否 | 前端完成跳转地址 | 前端场景 | +| notifyUrl | String | 否 | 支付结果通知地址 | 回调地址 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| bizOrderNo | String | SYS-002 业务订单号 | `biz_collection.code` / 业务单号 | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| orderStatus | String | 订单状态:`INIT`、`PAYING`、`SUCCESS`、`FAIL` | 交易状态 | +| payUrl | String | 支付链接或二维码地址 | 渠道返回 | +| prepayInfo | Object | 预支付参数对象 | 渠道返回 | +| expireTime | Datetime | 订单失效时间 | 交易参数 | + +### IF-CS-006 业务办理进度接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| processId | Long | 否 | 办理流程 ID,查询场景使用 | `biz_process.id` | +| businessTypeCode | String | 否 | 业务类型编码,如更名、过户、低保、换表 | `biz_business_types.code` | +| custId | Long | 否 | 客户 ID | 客户上下文 | +| applyData | Object | 否 | 业务申请主体数据 | `biz_business_datas` | +| attachmentList | Array | 否 | 附件文件标识列表 | `biz_content_attach` | +| action | String | 否 | 动作:`CREATE`、`QUERY`、`SUPPLEMENT` | 流程动作 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| processId | Long | 办理流程 ID | `biz_process.id` | +| processCode | String | 流程编号 | `biz_process.code` | +| processStatus | String | 当前状态:`INIT`、`ACCEPTED`、`PROCESSING`、`DONE`、`REJECTED` | `biz_process.status` | +| currentNode | String | 当前办理节点 | 流程状态 | +| transferList | Array | 流转轨迹 | `biz_process_transfer` | +| attachmentRequired | Boolean | 是否需要补件 | 业务判断 | +| msg | String | 办理说明 | 返回消息 | + +### IF-CS-007 柜面扫码支付接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| counterCode | String | 是 | 柜台编号 | 柜面终端 | +| chargeIds | Array | 是 | 待支付账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`WECHAT`、`ALIPAY` | 渠道参数 | +| orderAmount | Decimal | 是 | 订单金额 | `bk_transaction.trade_amount` | +| operatorId | Long | 是 | 柜台操作员 ID | 操作上下文 | +| scene | String | 否 | 场景标识,默认 `COUNTER_SCAN_PAY` | 场景参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| bizOrderNo | String | 柜面业务订单号 | `biz_collection.code` | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| qrCode | String | 柜面展示二维码内容 | 渠道返回 | +| orderStatus | String | 当前订单状态:`INIT`、`PAYING`、`SUCCESS`、`FAIL` | 交易状态 | +| writeBackStatus | String | 营收状态回写结果 | 业务状态 | +| msg | String | 处理说明 | 返回消息 | + +## 关键接口时序图 + +> 说明:以下时序图用于说明 SYS-002 与客户渠道、外部协同子系统之间的交互边界,重点体现业务校验、协同调用、结果回写与状态更新链路。 + +### 1. 在线支付下单与回调时序 + +```mermaid +sequenceDiagram + autonumber + participant Client as 客户渠道 + participant SYS002 as SYS-002营收系统 + participant SYS009 as SYS-009支付结算 + participant Channel as 支付渠道 + + Client->>SYS002: 提交缴费下单请求(IF-CS-003) + SYS002->>SYS002: 校验客户、账单状态与应付金额 + SYS002->>SYS002: 生成业务订单与收费记录草稿 + SYS002->>SYS009: 发起支付下单协同(IF-EXT-004) + SYS009->>Channel: 调用微信/支付宝统一下单 + Channel-->>SYS009: 返回tradeNo、payUrl/prepayInfo + SYS009-->>SYS002: 返回交易流水与支付参数 + SYS002-->>Client: 返回bizOrderNo、payUrl、expireTime + + Channel-->>SYS009: 异步支付结果通知 + SYS009->>SYS009: 校验签名与交易状态 + SYS009->>SYS002: 回写支付结果(IF-EXT-005) + SYS002->>SYS002: 幂等校验并更新biz_collection/biz_charge + SYS002-->>Client: 查询订单时返回最新支付状态 ``` -### 支付宝接口对接 +### 2. 电子发票申请与回写时序 -**功能描述**:用户通过支付宝缴纳水费,支持扫码支付和H5支付。 +```mermaid +sequenceDiagram + autonumber + participant Counter as 柜台或客户渠道 + participant SYS002 as SYS-002营收系统 + participant SYS008 as SYS-008发票服务 + participant Tax as 税控/开票平台 -**接口详情**: -- **接口方式**:HTTP POST -- **支付方式**:统一收单交易预创建(alipay.trade.precreate) -- **数据格式**:JSON -- **认证方式**:RSA2签名 - -**预创建支付请求参数**: - -```json -{ - "app_id": "2021001234567890", - "method": "alipay.trade.precreate", - "charset": "UTF-8", - "sign_type": "RSA2", - "timestamp": "2024-12-19 10:30:00", - "version": "1.0", - "notify_url": "https://water.example.com/api/payment/alipay/notify", - "biz_content": { - "out_trade_no": "P202412190002", - "total_amount": "91.80", - "subject": "水费缴费", - "body": "2024年12月水费-客户编号:C001", - "store_id": "WATER_STORE_001", - "timeout_express": "30m" - } -} + Counter->>SYS002: 提交发票申请(IF-REV-008/IF-CS-004) + SYS002->>SYS002: 校验客户、账单、开票抬头与金额 + SYS002->>SYS002: 生成发票申请记录biz_invoice + SYS002->>SYS008: 发起开票协同(IF-EXT-006) + SYS008->>Tax: 调用税控或电子发票平台 + Tax-->>SYS008: 返回受理结果/票号/文件地址 + SYS008-->>SYS002: 回写开票结果(IF-EXT-007) + SYS002->>SYS002: 更新biz_invoice状态与票据地址 + SYS002-->>Counter: 返回申请结果或供后续查询 ``` -**支付宝响应参数**: -```json -{ - "alipay_trade_precreate_response": { - "code": "10000", - "msg": "Success", - "out_trade_no": "P202412190002", - "qr_code": "https://qr.alipay.com/bax08945xtdnfwgqmwi200b4" - }, - "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE" -} +### 3. 银行代扣批次与回盘时序 + +```mermaid +sequenceDiagram + autonumber + participant BatchJob as 代扣批处理任务 + participant SYS002 as SYS-002营收系统 + participant SYS009 as SYS-009支付结算 + participant Bank as 银行渠道 + + BatchJob->>SYS002: 发起代扣批次处理(IF-REV-011) + SYS002->>SYS002: 汇总代扣客户、账单与协议关系 + SYS002->>SYS002: 生成bk_withholding_batch/bk_withholding_item + SYS002->>SYS009: 下发银行代扣批次(IF-EXT-001) + SYS009->>Bank: 发送代扣文件或报文 + Bank-->>SYS009: 返回受理结果 + SYS009-->>SYS002: 回写批次发送状态 + + Bank-->>SYS009: 回盘文件/结果通知(IF-EXT-002) + SYS009->>SYS009: 解析成功、失败、异常明细 + SYS009->>SYS002: 回写代扣结果、差异与结算状态 + SYS002->>SYS002: 更新biz_withholding、账单核销、对账结算状态 + SYS002-->>BatchJob: 返回批次处理汇总结果 ``` -**支付宝支付集成流程**: -1. 调用支付宝预创建接口生成支付二维码 -2. 前端展示二维码供用户扫码支付 -3. 支付完成后支付宝发送异步通知 -4. 系统验证通知签名并更新订单状态 -5. 记录支付日志和账务处理 +### 4. 催缴通知下发与结果回写时序 -### 微信支付接口对接 +```mermaid +sequenceDiagram + autonumber + participant Job as 催缴任务 + participant SYS002 as SYS-002营收系统 + participant SYS010 as SYS-010消息服务 + participant User as 客户 -**功能描述**:用户通过微信支付缴纳水费,支持扫码支付和小程序支付。 - -**接口详情**: -- **接口方式**:HTTP POST -- **支付方式**:Native支付(扫码)/ JSAPI支付(小程序) -- **请求URL**:`https://api.mch.weixin.qq.com/v3/pay/transactions/native` -- **数据格式**:JSON -- **认证方式**:微信支付V3签名 - -**统一下单请求参数**: - -```json -{ - "appid": "wx8888888888888888", - "mchid": "1900000109", - "description": "水费缴费-2024年12月", - "out_trade_no": "P202412190003", - "notify_url": "https://water.example.com/api/payment/wechat/notify", - "amount": { - "total": 9180, - "currency": "CNY" - }, - "attach": "客户编号:C001,账单号:B202412190001", - "goods_tag": "WATER_FEE", - "time_expire": "2024-12-19T11:00:00+08:00" -} + Job->>SYS002: 触发催缴任务(IF-REV-009) + SYS002->>SYS002: 按欠费账单、渠道偏好生成催缴名单 + SYS002->>SYS010: 提交通知下发请求(IF-EXT-008) + SYS010->>User: 发送短信/公众号/APP消息 + User-->>SYS010: 触达回执或阅读反馈 + SYS010-->>SYS002: 回写发送结果与触达状态 + SYS002->>SYS002: 更新催缴记录、通知状态与后续策略 + SYS002-->>Job: 返回催缴任务执行结果 ``` -**微信支付响应参数**: -```json -{ - "code_url": "weixin://wxpay/bizpayurl?pr=HuaLcAKwa" -} -``` - -**支付结果通知参数**: -```json -{ - "id": "EV-2018022511223320873", - "create_time": "2024-12-19T10:30:00+08:00", - "resource_type": "encrypt-resource", - "event_type": "TRANSACTION.SUCCESS", - "summary": "支付成功", - "resource": { - "original_type": "transaction", - "algorithm": "AEAD_AES_256_GCM", - "ciphertext": "...", - "associated_data": "transaction", - "nonce": "..." - } -} -``` - -### 短信接口 - -**功能描述**:向用户发送各类业务通知短信。 - -**接口规范**: -- 接口方式:HTTP接口 -- 数据格式:JSON -- 交换频率:实时 - -### 物联网集抄平台接口 - -**功能描述**:与物联网集抄平台交互,获取智能水表数据。 - -**接口规范**: -- 接口方式:HTTP接口或WebService -- 数据格式:JSON或XML -- 交换频率:定时或实时 - -## 内部接口 - -### 客户管理API接口 - -#### 客户信息查询接口 - -**功能描述**:根据客户ID查询客户详细信息。 - -**接口详情**: -- **请求方式**:GET -- **请求路径**:`/admin-api/water/customer/{id}` -- **请求头**:`Authorization: Bearer {token}` - -**请求参数**: - -| 参数名 | 类型 | 必填 | 说明 | 示例 | -|-------|------|------|------|------| -| id | Long | 是 | 客户ID | 1 | - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "id": 1, - "customerCode": "C001", - "customerName": "张三", - "customerType": "RESIDENT", - "phone": "13800138000", - "address": "福建省福州市台江区XX街道XX号", - "status": 1, - "createTime": "2024-12-19 10:00:00" - } -} -``` - -#### 客户分页查询接口 - -**功能描述**:分页查询客户列表信息。 - -**接口详情**: -- **请求方式**:GET -- **请求路径**:`/admin-api/water/customer/page` - -**请求参数**: - -| 参数名 | 类型 | 必填 | 说明 | 示例 | -|-------|------|------|------|------| -| pageNo | Integer | 否 | 页码,默认1 | 1 | -| pageSize | Integer | 否 | 每页条数,默认10 | 10 | -| customerName | String | 否 | 客户名称 | 张三 | -| customerCode | String | 否 | 客户编号 | C001 | -| customerType | String | 否 | 客户类型 | RESIDENT | -| phone | String | 否 | 联系电话 | 138 | - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "list": [ - { - "id": 1, - "customerCode": "C001", - "customerName": "张三", - "customerType": "RESIDENT", - "phone": "13800138000", - "address": "福建省福州市台江区XX街道XX号", - "status": 1, - "createTime": "2024-12-19 10:00:00" - } - ], - "total": 1 - } -} -``` - -#### 客户创建接口 - -**功能描述**:创建新客户记录。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/customer/create` - -**请求参数**: - -```json -{ - "customerCode": "C002", - "customerName": "李四", - "customerType": "RESIDENT", - "idType": "ID_CARD", - "idNumber": "350103199001011234", - "phone": "13900139000", - "address": "福建省福州市鼓楼区XX街道XX号" -} -``` - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": 2 -} -``` - -### 水表管理API接口 - -#### 水表信息查询接口 - -**功能描述**:根据水表ID查询水表详细信息。 - -**接口详情**: -- **请求方式**:GET -- **请求路径**:`/admin-api/water/meter/{id}` -- **请求头**:`Authorization: Bearer {token}` - -**请求参数**: - -| 参数名 | 类型 | 必填 | 说明 | 示例 | -|-------|------|------|------|------| -| id | Long | 是 | 水表ID | 1 | - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "id": 1, - "meterCode": "M001", - "meterNo": "20241219001", - "meterType": "SMART", - "meterModel": "LXSY-15E", - "meterCaliber": "15mm", - "installDate": "2024-01-15", - "installPosition": "1层水表井", - "initialReading": 0.00, - "currentReading": 156.32, - "readingCycle": "MONTHLY", - "meterStatus": 1, - "customerId": 1, - "customerName": "张三" - } -} -``` - -#### 抄表记录创建接口 - -**功能描述**:创建新的抄表记录。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/reading/create` - -**请求参数**: - -```json -{ - "meterId": 1, - "readingDate": "2024-12-19", - "readingValue": 156.32, - "readingType": "MANUAL", - "readerId": "R001", - "photoUrl": "https://example.com/photos/reading001.jpg", - "remark": "正常抄表" -} -``` - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": 1 -} -``` - -#### 抄表数据批量导入接口 - -**功能描述**:批量导入抄表数据,支持Excel文件上传。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/reading/import` -- **Content-Type**:`multipart/form-data` - -**请求参数**: - -| 参数名 | 类型 | 必填 | 说明 | 示例 | -|-------|------|------|------|------| -| file | MultipartFile | 是 | Excel文件 | reading_data.xlsx | -| updateSupport | Boolean | 否 | 是否更新已有数据 | false | - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "successCount": 95, - "failureCount": 5, - "failureList": [ - { - "lineNumber": 3, - "meterCode": "M003", - "errorMsg": "水表不存在" - } - ] - } -} -``` - -### 账单管理API接口 - -#### 账单查询接口 - -**功能描述**:根据客户ID和查询条件查询账单信息。 - -**接口详情**: -- **请求方式**:GET -- **请求路径**:`/admin-api/water/bill/page` - -**请求参数**: - -| 参数名 | 类型 | 必填 | 说明 | 示例 | -|-------|------|------|------|------| -| pageNo | Integer | 否 | 页码,默认1 | 1 | -| pageSize | Integer | 否 | 每页条数,默认10 | 10 | -| customerId | Long | 否 | 客户ID | 1 | -| billMonth | String | 否 | 账期 | 2024-12 | -| billStatus | Integer | 否 | 账单状态 | 0 | - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "list": [ - { - "id": 1, - "billCode": "B202412190001", - "billMonth": "2024-12", - "billDate": "2024-12-19", - "waterUsage": 25.50, - "waterFee": 76.50, - "sewageFee": 15.30, - "totalAmount": 91.80, - "paidAmount": 0.00, - "balanceAmount": 91.80, - "dueDate": "2025-01-19", - "billStatus": 0, - "customerName": "张三", - "meterCode": "M001" - } - ], - "total": 1 - } -} -``` - -#### 账单生成接口 - -**功能描述**:根据抄表记录生成水费账单。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/bill/generate` - -**请求参数**: - -```json -{ - "billMonth": "2024-12", - "customerIds": [1, 2, 3], - "readingIds": [1, 2, 3], - "dueDate": "2025-01-19" -} -``` - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "generateCount": 3, - "successList": [ - { - "customerId": 1, - "billId": 1, - "totalAmount": 91.80 - } - ], - "failureList": [] - } -} -``` - -### 缴费管理API接口 - -#### 缴费处理接口 - -**功能描述**:处理客户缴费操作。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/payment/create` - -**请求参数**: - -```json -{ - "customerId": 1, - "billIds": [1, 2], - "paymentType": "NORMAL", - "paymentChannel": "CASH", - "paymentAmount": 183.60, - "actualAmount": 200.00, - "operatorId": "OP001", - "outletCode": "OUT001", - "remark": "现金缴费" -} -``` - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "paymentId": 1, - "paymentCode": "P202412190001", - "changeAmount": 16.40, - "invoiceNo": "INV20241219001" - } -} -``` - -#### 在线支付接口 - -**功能描述**:处理在线支付(微信、支付宝等)。 - -**接口详情**: -- **请求方式**:POST -- **请求路径**:`/admin-api/water/payment/online-pay` - -**请求参数**: - -```json -{ - "customerId": 1, - "billIds": [1], - "paymentChannel": "WECHAT", - "paymentAmount": 91.80, - "returnUrl": "https://water.example.com/payment/callback", - "notifyUrl": "https://water.example.com/api/payment/notify" -} -``` - -**响应参数**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "paymentCode": "P202412190002", - "prepayId": "wx20241219001234567890", - "payUrl": "weixin://wxpay/bizpayurl?pr=abc123", - "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." - } -} -``` - -### 工单接口 - -#### 工单创建接口 - -**功能描述**:创建业务工单。 - -**接口规范**: -- 请求方式:POST -- 请求路径:/api/workorders -- 请求/返回格式:JSON - -#### 工单状态更新接口 - -**功能描述**:更新工单处理状态。 - -**接口规范**: -- 请求方式:PUT -- 请求路径:/api/workorders/{workorderId}/status -- 请求/返回格式:JSON - -## 接口标准 - -### 接口协议 - -系统接口主要采用以下协议: - -- **RESTful API**:适用于系统内部模块间的交互以及移动应用等轻量级客户端 -- **WebService**:适用于与外部系统的集成,特别是银行等传统机构 -- **消息队列**:适用于异步处理的场景,如批量数据处理、通知推送等 - -### 数据格式 - -接口数据主要采用以下格式: - -- **JSON**:主要用于RESTful API接口,结构简单清晰,适合Web应用 -- **XML**:主要用于WebService接口,兼容性好,适合与传统系统对接 -- **文本文件**:主要用于批量数据交换,如银行代扣文件等 - -### 接口安全设计 - -接口安全采用多层防护机制: - -#### 认证机制 - -**JWT令牌认证**: -- 验证用户名密码 -- 生成JWT Token -- 支持Token刷新机制 -- 设置合理的过期时间 - -**API Key认证**(外部系统): -- 验证API Key有效性 -- 验证请求时间戳(防重放攻击) -- 验证请求签名完整性 -- 记录访问日志 - -#### 数据加密 - -**敏感数据加密**: -- 个人信息字段AES加密存储 -- 数据传输HTTPS加密 -- 数据库连接SSL加密 -- 密钥定期轮换机制 - -#### 访问控制 - -**IP白名单控制**: -- 外部接口限制IP访问 -- 内部接口网络隔离 -- 访问日志记录和监控 -- 异常访问自动阻断 - -#### 接口限流 - -**基于Redis的令牌桶限流**: -- 按接口设置不同限流规则 -- 支持按用户/IP限流 -- 实时监控接口调用频率 -- 超限自动熔断保护 - -### 错误处理机制 - -#### 统一异常处理 - -系统采用统一的异常处理机制,包括: -- 业务异常统一处理 -- 参数校验异常处理 -- 系统异常统一处理 -- 异常日志记录和监控 - -#### 错误码定义 - -```markdown -# 错误码规范 - -## 通用错误码 (1-000-000-000) -- 0: 成功 -- 400: 请求参数不正确 -- 401: 账号未登录 -- 403: 没有该操作权限 -- 404: 请求未找到 -- 405: 请求方法不正确 -- 500: 系统异常 - -## 客户管理错误码 (1-001-000-000) -- 1_001_000_001: 客户不存在 -- 1_001_000_002: 客户编号已存在 -- 1_001_000_003: 客户状态不正确 - -## 水表管理错误码 (1-002-000-000) -- 1_002_000_001: 水表不存在 -- 1_002_000_002: 水表编号已存在 -- 1_002_000_003: 水表读数不正确 - -## 账单管理错误码 (1-003-000-000) -- 1_003_000_001: 账单不存在 -- 1_003_000_002: 账单已缴费 -- 1_003_000_003: 账单金额不正确 - -## 缴费管理错误码 (1-004-000-000) -- 1_004_000_001: 缴费失败 -- 1_004_000_002: 缴费金额不足 -- 1_004_000_003: 缴费渠道不可用 -``` - -#### 接口调用示例 - -**成功响应示例**: -```json -{ - "code": 0, - "msg": "操作成功", - "data": { - "id": 1, - "customerName": "张三" - } -} -``` - -**失败响应示例**: -```json -{ - "code": 1001000001, - "msg": "客户不存在", - "data": null -} -``` - -### 前端接口调用规范 - -#### 接口封装标准 - -前端接口调用需要遵循以下规范: -- 统一的请求配置和响应处理 -- 统一的错误处理和提示机制 -- 统一的Loading状态管理 -- 统一的数据类型定义 - -#### 组件使用规范 - -前端组件使用接口时需要: -- 合理的数据加载状态展示 -- 完善的错误处理和用户提示 -- 适当的数据缓存和优化 -- 规范的分页和查询实现 \ No newline at end of file +## 数据对象与表口径 + +### SYS-002 接口核心数据对象 + +| 数据域 | 代表表 | 接口说明 | +|--------|--------|----------| +| 客户与账户 | `biz_cust`、`biz_account`、`biz_cust_contact` | 用于客户查询、账户绑定、资料维护 | +| 客户扩展关系 | `biz_cust_meter`、`biz_cust_invoice`、`biz_cust_app_binds`、`biz_cust_collection_rel`、`biz_cust_withholding_rel` | 用于客户关联对象查询与服务协同 | +| 抄表与开账 | `biz_meter_book`、`biz_meter_read`、`biz_reading_data`、`biz_last_reading`、`biz_charge`、`biz_charge_detail` | 用于抄表任务、账单生成、费用明细查询 | +| 价格与参数 | `biz_price_*`、`biz_cost_component`、`biz_parameter_settings`、`biz_page_settings*` | 用于价格模板、业务参数、页面配置 | +| 收费与票据 | `biz_collection`、`biz_withholding`、`biz_invoice`、`biz_invoice_taxrate` | 用于收费、代扣、发票申请与回写 | +| 办理与资料 | `biz_process*`、`biz_business_datas`、`biz_content*` | 用于业务办理与进度跟踪 | +| 银行代收与结算 | `bk_transaction*`、`bk_withholding_*`、`bk_reconcile_*`、`bk_settlement_batch` | 用于支付流水、批次、回调、对账和结算 | + +### 口径约束说明 + +1. 不再使用旧稿中的 `customer_*`、`water_*`、`billing_*`、`thirdpay_*`、`service_*` 作为 SYS-002 正式接口数据口径。 +2. 若历史资料中仍存在旧命名,仅作为来源参考,不作为正式交付口径。 +3. 对 backend 中尚未明确存在独立实体表的对象,例如部分精细账务台账、红冲明细、价差调整明细等,本文仅描述为业务处理场景,不强写为既有独立接口对象。 + +## 跨系统报文映射表 + +> 说明:以下映射表用于说明 SYS-002 与 `SYS-008`、`SYS-009`、`SYS-010` 之间的关键报文字段对应关系,重点体现业务主键、状态字段、金额字段与结果回写字段,不展开各外部平台私有扩展字段。 + +### 1. SYS-002 ↔ SYS-009 支付下单与结果回写映射 + +| 协同场景 | SYS-002 字段 | SYS-009/渠道字段 | 说明 | 主要来源 | +|---------|--------------|------------------|------|----------| +| 支付下单 | `bizOrderNo` | `businessOrderNo` | SYS-002 业务订单号,作为支付协同主键 | `biz_collection.code` | +| 支付下单 | `chargeIds[]` | `orderItems[].sourceId` | 待缴账单明细标识 | `biz_charge.id` | +| 支付下单 | `custId` | `buyer.customerId` | 客户标识 | `biz_charge.cust_id` / `biz_cust.id` | +| 支付下单 | `paymentAmount` | `tradeAmount` | 交易总金额 | `bk_transaction.trade_amount` | +| 支付下单 | `paymentChannel` | `channelCode` | 支付渠道编码 | 渠道参数 / `bk_payment_channel.channel_code` | +| 支付下单 | `notifyUrl` | `notifyUrl` | 支付结果异步通知地址 | 协同参数 | +| 下单返回 | `tradeNo` | `tradeNo` | 渠道交易流水号 | `bk_transaction.trade_no` | +| 下单返回 | `payUrl`/`prepayInfo` | `payUrl`/`payParams` | 二维码链接或预支付参数 | 渠道返回 | +| 结果回写 | `orderStatus` | `tradeStatus` | 交易状态映射:`INIT/PAYING/SUCCESS/FAIL` | `bk_transaction.status` | +| 结果回写 | `paidAmount` | `successAmount` | 实际支付成功金额 | `biz_collection.amount` / 渠道结果 | +| 结果回写 | `callbackTime` | `notifyTime` | 回调时间 | `bk_transaction_callback.create_time` | +| 结果回写 | `writeOffStatus` | `writeBackStatus` | SYS-002 核销处理结果 | 业务状态 | + +### 2. SYS-002 ↔ SYS-008 发票申请与结果回写映射 + +| 协同场景 | SYS-002 字段 | SYS-008 字段 | 说明 | 主要来源 | +|---------|--------------|--------------|------|----------| +| 发票申请 | `invoiceCode` | `requestNo` | 发票申请单号 / 协同请求号 | `biz_invoice.code` | +| 发票申请 | `custId` | `customerId` | 客户标识 | `biz_invoice.cust_id` | +| 发票申请 | `chargeIds[]` | `billList[].sourceBillId` | 开票关联账单标识 | 业务单据关联 | +| 发票申请 | `invoiceTitle` | `buyerName` | 购方名称 / 抬头 | `biz_cust_invoice.invoice_title` | +| 发票申请 | `taxNo` | `buyerTaxNo` | 购方税号 | `biz_cust_invoice.tax_no` | +| 发票申请 | `invoiceType` | `invoiceType` | 电子/纸质发票类型 | `biz_invoice.invoice_type` | +| 发票申请 | `taxRateCode` | `taxRateCode` | 税率编码 | `biz_invoice_taxrate.tax_code` | +| 发票申请 | `email` / `mobile` | `receiver.email` / `receiver.mobile` | 票据接收信息 | `biz_cust_invoice.email` / `biz_cust_invoice.mobile` | +| 结果回写 | `invoiceStatus` | `invoiceStatus` | 开票状态:受理中、成功、失败、作废、红冲等 | `biz_invoice.invoice_status` | +| 结果回写 | `invoiceNo` | `invoiceNo` | 发票号码 | 开票结果 | +| 结果回写 | `fileUrl` | `fileUrl` | 发票文件下载地址 | 回写结果 | +| 结果回写 | `msg` | `resultMsg` | 结果说明 | 返回消息 | + +### 3. SYS-002 ↔ SYS-009 银行代扣、对账、结算映射 + +| 协同场景 | SYS-002 字段 | SYS-009/银行字段 | 说明 | 主要来源 | +|---------|--------------|------------------|------|----------| +| 批次下发 | `batchNo` | `batchNo` | 代扣批次号 | `bk_withholding_batch.batch_no` | +| 批次下发 | `businessType` | `businessType` | 代扣/对账/结算类型 | 协同参数 | +| 批次下发 | `channelCode` | `channelCode` | 渠道编码 | `bk_payment_channel.channel_code` | +| 批次下发 | `billPeriod` | `billPeriod` | 账期 | 批处理参数 | +| 批次明细 | `itemList[].custId` | `itemList[].customerId` | 客户标识 | `bk_withholding_item.cust_id` | +| 批次明细 | `itemList[].chargeId` | `itemList[].sourceBillId` | 账单标识 | `bk_withholding_item.charge_id` | +| 批次明细 | `itemList[].amount` | `itemList[].withholdingAmount` | 代扣金额 | 业务金额 | +| 回盘回写 | `batchStatus` | `batchStatus` | 批次状态:已发送、已回盘等 | `bk_withholding_batch.status` | +| 回盘回写 | `successCount` / `failCount` | `successCount` / `failCount` | 成功失败数量汇总 | 汇总结果 | +| 对账回写 | `reconcileStatus` | `reconcileStatus` | 对账状态 | `bk_reconcile_batch.status` | +| 对账回写 | `diffList[]` | `diffList[]` | 差异明细摘要 | `bk_reconcile_diff` | +| 结算回写 | `settlementStatus` | `settlementStatus` | 结算状态 | `bk_settlement_batch.status` | + +### 4. SYS-002 ↔ SYS-010 催缴与业务通知映射 + +| 协同场景 | SYS-002 字段 | SYS-010 字段 | 说明 | 主要来源 | +|---------|--------------|--------------|------|----------| +| 催缴通知 | `messageBizNo` | `eventNo` | 消息事件编号 | 业务事件编号 | +| 催缴通知 | `custId` | `receiver.customerId` | 接收客户标识 | `biz_charge.cust_id` / `biz_process.cust_id` | +| 催缴通知 | `mobile` | `receiver.mobile` | 接收手机号 | 客户联系方式 | +| 催缴通知 | `templateCode` | `templateCode` | 消息模板编码 | 模板参数 | +| 催缴通知 | `arrearsAmount` | `payload.arrearsAmount` | 欠费金额 | `biz_charge.total_amount` / 汇总结果 | +| 催缴通知 | `billPeriod` | `payload.billPeriod` | 账期 | `biz_charge.bill_period` | +| 办理进度通知 | `processCode` | `payload.processCode` | 业务办理单号 | `biz_process.code` | +| 办理进度通知 | `processStatus` | `payload.processStatus` | 办理状态 | `biz_process.status` | +| 发送结果回写 | `sendStatus` | `sendStatus` | 发送状态 | 消息结果 | +| 发送结果回写 | `reachStatus` | `reachStatus` | 触达/阅读状态 | 渠道回执 | +| 发送结果回写 | `sendTime` | `sendTime` | 发送时间 | 消息结果 | +| 发送结果回写 | `msg` | `resultMsg` | 结果说明 | 返回消息 | + +## 接口安全与异常处理 + +### 认证与鉴权 + +- 管理后台接口:统一采用登录态 + 权限控制 + 数据权限。 +- 客户渠道接口:采用账户绑定态、手机号/验证码、OAuth 或渠道令牌机制。 +- 外部协同接口:按渠道要求使用 API Key、时间戳、数字签名、证书或国密算法。 + +### 安全控制要求 + +- 全部接口统一走 HTTPS。 +- 外部回调接口必须执行签名校验、重复通知幂等处理与来源校验。 +- 关键交易类接口需记录业务流水、渠道流水和操作日志。 +- 敏感字段如证件号、手机号、银行账号按制度要求脱敏展示。 + +### 错误码分层建议 + +| 错误码段 | 说明 | +|---------|------| +| 0 | 成功 | +| 400~499 | 请求参数、权限、资源不存在等通用错误 | +| 1_002_001_xxx | 客户主数据类错误 | +| 1_002_002_xxx | 抄表开账类错误 | +| 1_002_003_xxx | 收费与核销类错误 | +| 1_002_004_xxx | 账务处理类错误 | +| 1_002_005_xxx | 发票协同类错误 | +| 1_002_006_xxx | 银行代收与结算类错误 | +| 1_002_007_xxx | 客户渠道与业务办理类错误 | +| 1_002_008_xxx | 消息通知与触达类错误 | + +### 典型错误码建议 + +| 错误码 | 适用接口/场景 | 说明 | 处理建议 | +|-------|---------------|------|----------| +| `1_002_001_001` | IF-REV-001 / IF-REV-002 | 客户不存在或已停用 | 返回客户状态并阻断后续处理 | +| `1_002_001_002` | IF-CS-001 | 账户绑定关系不存在 | 引导重新绑定客户 | +| `1_002_002_001` | IF-REV-004 | 抄表任务不存在或已关闭 | 禁止提交抄表数据 | +| `1_002_002_002` | IF-REV-004 | 本次读数小于上次读数且未通过异常审批 | 标记异常并进入复核 | +| `1_002_002_003` | IF-REV-005 | 价格模板或费用组成缺失 | 阻断账单生成并提示补齐配置 | +| `1_002_003_001` | IF-REV-006 / IF-CS-003 / IF-CS-007 | 账单已核销或不允许重复支付 | 返回当前账单支付状态 | +| `1_002_003_002` | IF-REV-006 | 支付金额与待核销金额不一致 | 阻断核销并返回差额 | +| `1_002_003_003` | IF-EXT-005 | 支付回调签名校验失败 | 记录异常回调并拒绝入账 | +| `1_002_004_001` | IF-REV-007 | 账务调整目标状态不允许变更 | 返回当前账务状态 | +| `1_002_005_001` | IF-REV-008 / IF-CS-004 | 发票申请单据不满足开票条件 | 返回不可开票原因 | +| `1_002_005_002` | IF-EXT-007 | 发票结果回写状态非法或重复 | 按请求号执行幂等回写 | +| `1_002_006_001` | IF-REV-011 / IF-EXT-001 | 代扣批次不存在或已发送 | 禁止重复下发批次 | +| `1_002_006_002` | IF-EXT-002 | 银行回盘文件格式非法或批次号不匹配 | 记录异常并进入人工核查 | +| `1_002_006_003` | IF-REV-011 | 对账差异未处理,禁止结算确认 | 需先完成差异处置 | +| `1_002_007_001` | IF-CS-006 | 业务办理单不存在 | 返回空结果并提示核对单号 | +| `1_002_007_002` | IF-CS-006 | 当前节点不允许补件或重复提交 | 返回当前流程节点状态 | +| `1_002_008_001` | IF-REV-009 / IF-EXT-008 | 消息模板不存在或目标联系方式缺失 | 记录失败原因并允许后续补发 | +| `1_002_008_002` | IF-EXT-008 | 消息通道调用超时 | 标记待重试,不直接判定业务失败 | + +### 幂等与状态冲突控制 + +#### 幂等键建议 + +| 场景 | 接口 | 建议幂等键 | 幂等判定说明 | +|------|------|------------|--------------| +| 支付下单 | IF-CS-003 / IF-CS-007 | `bizOrderNo` 或 `custId + chargeIds + paymentChannel` | 相同业务订单仅允许创建一次有效支付单 | +| 支付回调 | IF-EXT-005 | `tradeNo + tradeStatus + notifyTime` | 同一交易成功回调只允许入账一次 | +| 发票申请 | IF-REV-008 / IF-CS-004 | `invoiceCode` 或 `custId + chargeIds` | 相同账单组合避免重复申请开票 | +| 发票结果回写 | IF-EXT-007 | `requestNo + invoiceStatus` | 相同发票状态重复回写仅更新回执日志 | +| 银行批次下发 | IF-REV-011 / IF-EXT-001 | `batchNo` | 同一代扣批次禁止重复发送 | +| 银行回盘接收 | IF-EXT-002 | `batchNo + fileSerialNo` | 同一回盘文件只处理一次 | +| 催缴通知 | IF-REV-009 / IF-EXT-008 | `messageBizNo + templateCode + receiver` | 同一业务事件与同一接收方避免重复发送 | +| 业务补件 | IF-CS-006 | `processId + action + attachmentDigest` | 相同补件内容重复提交仅保留一次 | + +#### 状态冲突处理原则 + +| 场景 | 冲突条件 | 处理原则 | +|------|----------|----------| +| 支付核销 | 账单已完成核销后再次支付 | 拒绝重复核销,返回现有 `writeOffStatus` | +| 支付回调 | 先收到失败回调,后收到成功回调 | 以最终成功状态为准,但全过程保留回调日志 | +| 发票申请 | 单据已开票成功后再次申请 | 拒绝重复申请,返回既有发票信息 | +| 发票回写 | 已成功开票后收到失败回写 | 不覆盖成功状态,转入异常核查 | +| 银行代扣 | 批次已发送后再次下发 | 拒绝重复发送,保留原批次状态 | +| 对账结算 | 差异未消除即发起结算 | 禁止结算,提示先处理差异明细 | +| 催缴通知 | 同一账期、同一模板短时间内重复催缴 | 按通知频控策略拦截重复下发 | +| 业务办理 | 流程已办结后再次补件 | 拒绝补件,返回当前流程终态 | + +### 异常处理要求 + +- 参数校验失败:直接返回明确字段错误信息。 +- 外部渠道超时:记录重试状态,不直接覆盖业务成功状态。 +- 重复回调:按业务流水执行幂等控制。 +- 账务状态冲突:返回当前账单状态与冲突原因,禁止重复核销。 +- 外部结果晚到:允许按幂等键补写回执,但不得回退已确认成功状态。 +- 人工兜底场景:支付异常、银行回盘异常、发票状态冲突等需保留人工复核入口与操作日志。 + +## 实现状态说明 + +### 已落地 + +结合 `backend` 当前已确认模块与真实表,可明确支撑以下接口域: + +- 客户与账户查询、维护接口 +- 抄表任务与抄表数据接口 +- 账单生成与收费核销接口 +- 银行代收、代扣、交易回调、对账、结算接口 +- 发票申请与票据状态回写接口的业务侧支撑 +- 客户渠道的账户绑定、查询、缴费、业务办理进度接口 + +### 部分落地 + +以下接口域已有主线支撑,但部分细粒度对象仍需结合后续实现继续核实: + +- 账务调整、退款、坏账、冲正类精细接口 +- 催缴管理中针对不同通知策略和停复水联动的细分接口 +- 发票红冲、作废、补开等票据后处理接口 + +### 文档先行 + +以下内容可保留设计说明,但当前不应直接表述为已完全落地: + +- 历史数据字典中大量细粒度账务台账接口 +- 未在 backend 当前扫描范围内明确识别到的独立业务对象接口 +- 特定银行或地方平台的专有报文细节 + +--- + +本文档后续如继续细化,应优先补充: + +1. 各接口的字段级请求/响应结构; +2. 典型时序图(支付、发票、代扣回盘、催缴通知); +3. 与 `SYS-008`、`SYS-009`、`SYS-010` 的接口报文映射表; +4. 错误码明细与幂等规则。 diff --git a/sql/lhc_数据库设计.md b/sql/lhc_数据库设计.md index ea83cb4..cf01a2e 100644 --- a/sql/lhc_数据库设计.md +++ b/sql/lhc_数据库设计.md @@ -788,6 +788,260 @@ erDiagram ## 表结构设计 +## 待补表清单(TODO) + +> 说明:以下清单基于 `04_Appendix/Archive/05_Data_Dictionary/营收数据字典.md` 与当前 `backend` 真实表扫描结果整理,用于标识“数据字典或后端已出现,但当前文档尚未展开详细字段设计”的表或表组。 +> +> 当前表结构设计已覆盖部分核心基础表、价格表、客户主表、抄表主表、营业账主表、托收/代扣主表、开票配置主表、统一工单主表;以下对象为后续优先补充范围。 + +### 已设计范围(当前文档) + +当前已在本章展开设计的表包括: + +- 水表基础:`biz_meter_maker`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range`、`biz_meter` +- 组织账户:`system_dept`、`biz_company_account`、`biz_dept_account_rel` +- 基础主数据:`biz_community`、`biz_cust`、`biz_cust_group` +- 价格与方案:`biz_price_category`、`biz_cost_component`、`biz_price_adjustment_snap`、`biz_template_dept_rel`、`biz_price_template`、`biz_price_cost_adjustment`、`biz_price_tier_adjustment`、`biz_price_discount_scheme`、`biz_price_discount_tier`、`biz_price_discount_cost`、`biz_water_use_scheme`、`biz_water_use_scheme_tier` +- 页面配置:`infra_user_form_config` +- 抄表与账务:`biz_meter_book`、`biz_reading_data`、`biz_last_reading`、`biz_charge`、`biz_charge_detail` +- 银行与发票:`biz_collection`、`biz_withholding`、`biz_invoice` +- 业务办理:`biz_process` + +### 待补设计范围(按领域归类) + +#### 1. 客户信息扩展域 + +- `biz_account`(账户信息) +- `biz_cust_contact`(联系人) +- `biz_cust_app_binds`(客户应用绑定关联) +- `biz_cust_collection_rel`(客户托收中间关系) +- `biz_cust_withholding_rel`(客户代扣中间关系) +- `biz_cust_invoice`(客户开票信息) +- `biz_cust_meter`(客户与水表关系) +- `biz_cust_bill_type`(客户开账类型) +- `biz_cust_no_rule`、`biz_dept_cust_no_rule_rel`(客户编号规则) +- `biz_cust_hub_marks`(集收号/集收标记类) +- `biz_cust_water_use_scheme`、`biz_cust_water_scheme_rel`(客户计划用水关系) + +#### 2. 抄表与表务扩展域 + +- `biz_meter_read`(抄表状态/抄表任务状态) +- `biz_reading_logs`(抄表日志) +- `biz_meter_log`(表务/抄表日志) +- `biz_meter_in_out`、`biz_meter_in_out_rel`(水表出入库及关联) + +#### 3. 账务与收费处理扩展域 + +- 跨周期水量 +- 特账 / 特账明细 +- 退款账 +- 阶梯累计量 +- 收费汇总 / 收费小计 / 实时收费日志 +- 红冲表 +- 预存退款 / 预存退款详情 +- 催缴登记 / 催缴停水 / 催缴明细 +- 价差调整汇总 / 明细 +- 分账调整汇总 / 明细 +- 呆坏账汇总 / 明细 +- 已销调整汇总 / 明细 +- IC卡充退账 / 结余 / 操作日志 + +#### 4. 发票域扩展 + +- `biz_invoice_taxrate`(发票税率) +- 发票明细表 +- 营业账开票关系表 +- 发票信息关联表 +- 发票修改记录 +- `biz_process_invoice_modifys`(发票变更流程) + +#### 5. 业务办理与工单子表域 + +- `biz_process_transfer`(流程流转) +- `biz_process_cust_contact`(流程联系人) +- `biz_process_meter_install`(装表流程信息) +- `biz_business_types`(业务类型) +- `biz_business_datas`(业务扩展数据) +- `biz_content`、`biz_content_attach`(资料与附件) +- 更名 / 过户 / 停复水 / 低保 / 换表 / 自助抄表等业务子表 +- 稽查工单 / 移表工单 / PDA派单 / 上报清单 / 换表记录表 + +#### 6. 参数、页面与系统配置域 + +- `biz_parameter_settings`(系统参数/业务参数) +- `biz_page_settings`、`biz_page_settings_detail`(页面基础配置) +- `biz_extend_propertys`(扩展信息) +- `biz_bank`、`biz_bank_branch`(银行及分行) +- 账务年月表 / 抄表年月表 +- 编号生成配置 / 编号生成记录 +- 导出任务 / 站内消息 / 报表 / 日志管理 +- 系统菜单表 / 权限表 / 词语字典表 + +#### 7. 银行代收与对账域 + +- `bk_payment_channel` +- `bk_channel_api_config` +- `bk_channel_route_rule` +- `bk_channel_statistics` +- `bk_transaction` +- `bk_transaction_callback` +- `bk_transaction_exception` +- `bk_withholding_agreement` +- `bk_withholding_batch` +- `bk_withholding_item` +- `bk_reconcile_batch` +- `bk_reconcile_diff` +- `bk_settlement_batch` + +#### 8. 报装、微网厅与移动侧补充域 + +- 报装用户信息 / 报装工程项目 / 报装踏勘 / 工程验收信息 +- 微网厅账户绑定、微信支付订单、网点门店、文章公告、页面配置等表 +- 手机记录表 / PDA版本控制表 + +### 后续补充原则 + +1. 优先补充“后端已有真实表且业务价值高”的对象。 +2. 对于数据字典中的旧系统表,若已被当前后端重构为统一模型,应在设计说明中注明“已合并映射”,而非机械按旧名重复建表。 +3. 若某类对象仅在 `sw-module-system`、`sw-module-infra`、`sw-module-pay` 等模块中存在,后续应结合对应模块再次核对后补入。 + +## 表模块归属说明 + +> 说明:以下归属依据 `output/preview/福建水务营收系统整体架构图.html` 的业务子系统划分整理,用于明确“当前已设计表、真实后端表、待补表”在总体架构中的主归属模块。若某张表被多个子系统共同使用,以“主数据维护方、核心业务责任方”作为唯一主归属。 + +### 模块归属原则 + +1. 客户、账单、价格、收费等核心营收主数据,归属 `SYS-002 营收业务子系统`。 +2. 水表设备主档、库存、出入库、设备日志等表务对象,归属 `SYS-006 表务管理子系统`。 +3. 统一受理、流转、附件、业务办理过程数据,归属 `SYS-005 工单管理子系统`。 +4. 发票主数据、税率、开票关系、回执与红冲作废,归属 `SYS-008 发票服务子系统`。 +5. 支付渠道、交易、回调、代扣、对账、结算等资金链路数据,归属 `SYS-009 支付与银行结算子系统`。 +6. `SYS-003 手机抄表APP` 与 `SYS-004 微网厅子系统` 原则上作为前端渠道,不单独持有核心业务主表,主要复用营收、工单、发票、支付等后端核心表;仅在出现终端同步、授权绑定、日志等专属数据时,才单独归入对应渠道子系统。 + +### 当前已设计表的模块归属 + +#### SYS-001 统一平台 + +- `system_dept` + +#### SYS-002 营收业务子系统 + +- 客户与基础主数据:`biz_cust`、`biz_cust_group`、`biz_community` +- 价格与用水方案:`biz_price_category`、`biz_cost_component`、`biz_price_adjustment_snap`、`biz_template_dept_rel`、`biz_price_template`、`biz_price_cost_adjustment`、`biz_price_tier_adjustment`、`biz_price_discount_scheme`、`biz_price_discount_tier`、`biz_price_discount_cost`、`biz_water_use_scheme`、`biz_water_use_scheme_tier` +- 抄表开账:`biz_meter_book`、`biz_reading_data`、`biz_last_reading` +- 营业收费与账务:`biz_charge`、`biz_charge_detail` + +#### SYS-005 工单管理子系统 + +- `biz_process` + +#### SYS-006 表务管理子系统 + +- `biz_meter_maker` +- `biz_meter_model` +- `biz_meter_caliber` +- `biz_meter_range` +- `biz_meter` + +#### SYS-008 发票服务子系统 + +- `biz_invoice` + +#### SYS-009 支付与银行结算子系统 + +- `biz_collection` +- `biz_withholding` + +#### 基础设施/页面配置能力 + +- `infra_user_form_config` + +> 说明:`infra_user_form_config` 更偏表单与页面配置能力,建议作为基础设施支撑表看待,不直接归入单一营收业务子系统。 + +### 后续待补表的建议归属 + +#### SYS-002 营收业务子系统 + +- 客户扩展:`biz_account`、`biz_cust_contact`、`biz_cust_app_binds`、`biz_cust_meter`、`biz_cust_bill_type`、`biz_cust_no_rule`、`biz_dept_cust_no_rule_rel`、`biz_cust_hub_marks`、`biz_cust_water_use_scheme`、`biz_cust_water_scheme_rel` +- 抄表与开账扩展:`biz_meter_read`、`biz_reading_logs` +- 账务处理扩展:跨周期水量、特账/特账明细、退款账、阶梯累计量、收费汇总/收费小计/实时收费日志、红冲、预存退款、催缴登记、价差调整、分账调整、已销调整、呆坏账、IC卡账务等对象 +- 参数配置扩展:`biz_parameter_settings` + +#### SYS-005 工单管理子系统 + +- `biz_process_transfer` +- `biz_process_cust_contact` +- `biz_process_meter_install` +- `biz_business_types` +- `biz_business_datas` +- `biz_content` +- `biz_content_attach` +- 更名、过户、停复水、低保、换表、自助抄表、稽查工单、PDA派单等业务子表 + +#### SYS-006 表务管理子系统 + +- `biz_meter_log` +- `biz_meter_in_out` +- `biz_meter_in_out_rel` + +#### SYS-008 发票服务子系统 + +- `biz_invoice_taxrate` +- `biz_cust_invoice` +- `biz_process_invoice_modifys` +- 发票明细表 +- 营业账开票关系表 +- 发票回执/作废/红冲/存证相关表 + +#### SYS-009 支付与银行结算子系统 + +- `biz_cust_collection_rel` +- `biz_cust_withholding_rel` +- `biz_bank` +- `biz_bank_branch` +- `bk_payment_channel` +- `bk_channel_api_config` +- `bk_channel_route_rule` +- `bk_channel_statistics` +- `bk_transaction` +- `bk_transaction_callback` +- `bk_transaction_exception` +- `bk_withholding_agreement` +- `bk_withholding_batch` +- `bk_withholding_item` +- `bk_reconcile_batch` +- `bk_reconcile_diff` +- `bk_settlement_batch` + +#### SYS-003 / SYS-004 渠道子系统专属补充对象 + +- 微信绑定、默认账户、公众号配置、前台申请单、终端同步日志、PDA版本控制、移动端缓存同步等专属表 + +### 模块-表清单-状态总表 + +| 模块 | 表清单 | 状态 | +| --- | --- | --- | +| `SYS-001 统一平台` | `system_dept` | 已设计 | +| `SYS-002 营收业务子系统` | `biz_cust`、`biz_cust_group`、`biz_community` | 已设计 | +| `SYS-002 营收业务子系统` | `biz_price_category`、`biz_cost_component`、`biz_price_adjustment_snap`、`biz_template_dept_rel`、`biz_price_template`、`biz_price_cost_adjustment`、`biz_price_tier_adjustment`、`biz_price_discount_scheme`、`biz_price_discount_tier`、`biz_price_discount_cost`、`biz_water_use_scheme`、`biz_water_use_scheme_tier` | 已设计 | +| `SYS-002 营收业务子系统` | `biz_meter_book`、`biz_reading_data`、`biz_last_reading` | 已设计 | +| `SYS-002 营收业务子系统` | `biz_charge`、`biz_charge_detail` | 已设计 | +| `SYS-002 营收业务子系统` | `biz_account`、`biz_cust_contact`、`biz_cust_app_binds`、`biz_cust_meter`、`biz_cust_bill_type`、`biz_cust_no_rule`、`biz_dept_cust_no_rule_rel`、`biz_cust_hub_marks`、`biz_cust_water_use_scheme`、`biz_cust_water_scheme_rel` | 待补 | +| `SYS-002 营收业务子系统` | `biz_meter_read`、`biz_reading_logs` | 待补 | +| `SYS-002 营收业务子系统` | 跨周期水量、特账/特账明细、退款账、阶梯累计量、收费汇总/收费小计/实时收费日志、红冲、预存退款、催缴登记、价差调整、分账调整、已销调整、呆坏账、IC卡账务等对象 | 待补 | +| `SYS-002 营收业务子系统` | `biz_parameter_settings` | 待补 | +| `SYS-005 工单管理子系统` | `biz_process` | 已设计 | +| `SYS-005 工单管理子系统` | `biz_process_transfer`、`biz_process_cust_contact`、`biz_process_meter_install`、`biz_business_types`、`biz_business_datas`、`biz_content`、`biz_content_attach` | 待补 | +| `SYS-005 工单管理子系统` | 更名、过户、停复水、低保、换表、自助抄表、稽查工单、PDA派单等业务子表 | 待补 | +| `SYS-006 表务管理子系统` | `biz_meter_maker`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range`、`biz_meter` | 已设计 | +| `SYS-006 表务管理子系统` | `biz_meter_log`、`biz_meter_in_out`、`biz_meter_in_out_rel` | 待补 | +| `SYS-008 发票服务子系统` | `biz_invoice` | 已设计 | +| `SYS-008 发票服务子系统` | `biz_invoice_taxrate`、`biz_cust_invoice`、`biz_process_invoice_modifys`、发票明细表、营业账开票关系表、发票回执/作废/红冲/存证相关表 | 待补 | +| `SYS-009 支付与银行结算子系统` | `biz_collection`、`biz_withholding` | 已设计 | +| `SYS-009 支付与银行结算子系统` | `biz_cust_collection_rel`、`biz_cust_withholding_rel`、`biz_bank`、`biz_bank_branch`、`bk_payment_channel`、`bk_channel_api_config`、`bk_channel_route_rule`、`bk_channel_statistics`、`bk_transaction`、`bk_transaction_callback`、`bk_transaction_exception`、`bk_withholding_agreement`、`bk_withholding_batch`、`bk_withholding_item`、`bk_reconcile_batch`、`bk_reconcile_diff`、`bk_settlement_batch` | 待补 | +| `基础设施/页面配置能力` | `infra_user_form_config` | 已设计 | +| `SYS-003 / SYS-004 渠道子系统` | 微信绑定、默认账户、公众号配置、前台申请单、终端同步日志、PDA版本控制、移动端缓存同步等专属表 | 待补 | + ### 水表厂家表-biz_meter_maker > 水表厂家基础信息管理,记录水表生产厂商的详细信息,支持水表型号的厂家归属管理 @@ -1321,6 +1575,379 @@ erDiagram | deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | | tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | +### 水表信息表-biz_meter + +> 水表主档信息表,用于管理实物水表、远传采集标识、库存归属及表务状态,是客户挂表、抄表、换表、远传接入的核心基础表。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| dept_id | 仓库/部门ID | number / bigint(64) | 否 | 否 | 关联组织或仓库 | +| maker_code | 水表厂家代码 | string / varchar(100) | 否 | 否 | 关联`biz_meter_maker` | +| model_code | 水表型号代码 | string / varchar(100) | 否 | 否 | 关联`biz_meter_model` | +| caliber_code | 水表口径代码 | string / varchar(100) | 否 | 否 | 关联`biz_meter_caliber` | +| range_code | 水表量程代码 | string / varchar(100) | 否 | 否 | 关联`biz_meter_range` | +| type | 水表分类 | number / tinyint | 否 | 否 | 普通表/远传表等 | +| cust_code | 客户编号 | string / varchar(100) | 否 | 否 | 当前绑定客户 | +| project_code | 工程编码 | string / varchar(100) | 否 | 否 | 报装/工程来源标识 | +| steel_mark | 钢印号 | string / varchar(100) | 否 | 否 | | +| seal_number | 水表编号 | string / varchar(100) | 否 | 否 | 表具编号 | +| bar_code | 条形码 | string / varchar(100) | 否 | 否 | | +| check_code | 强检编号 | string / varchar(100) | 否 | 否 | | +| make_date | 生产日期 | datetime | 否 | 否 | | +| check_date | 强检日期 | datetime | 否 | 否 | | +| collect_code | 采集号 | string / varchar(100) | 否 | 否 | 远传采集设备编号 | +| gpsx | GPSX坐标 | number / decimal(18,6) | 否 | 否 | | +| gpsy | GPSY坐标 | number / decimal(18,6) | 否 | 否 | | +| latitude | 纬度 | number / decimal(18,6) | 否 | 否 | | +| longitude | 经度 | number / decimal(18,6) | 否 | 否 | | +| imei | 设备识别码 | string / varchar(100) | 否 | 否 | 远传设备识别码 | +| imsi | IMSI | string / varchar(100) | 否 | 否 | | +| module_code | 模块号 | string / varchar(100) | 否 | 否 | | +| nfc_code | NFC编号 | string / varchar(100) | 否 | 否 | | +| qr_code | 二维码编号 | string / varchar(100) | 否 | 否 | | +| meter_status | 表务状态 | number / tinyint | 否 | 否 | 水表生命周期状态 | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| status | 状态 | number / tinyint | 否 | 默认0 | 详见常量说明[默认状态](###默认状态-default_status) | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 抄表册本表-biz_meter_book + +> 抄表册本主表,用于按站点、抄表员、周期组织客户抄表任务,是生成抄表数据与后续开账批次的基础对象。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| code | 册本编码 | string / varchar(100) | 是 | 是 | | +| name | 册本名称 | string / varchar(200) | 否 | 是 | | +| dept_id | 站点ID | number / bigint(64) | 否 | 是 | 关联部门/站点 | +| meter_read_id | 抄表员ID | number / bigint(64) | 否 | 否 | | +| urger_id | 催缴员ID | number / bigint(64) | 否 | 否 | | +| read_cycle | 抄表周期 | number / tinyint | 否 | 否 | 月/季/年等 | +| start_date | 起抄时间 | datetime | 否 | 否 | | +| next_read_date | 下次抄表时间 | datetime | 否 | 否 | | +| read_method | 抄表方式 | number / tinyint | 否 | 否 | 人工/远传等 | +| is_temp | 册本类型 | number / tinyint | 否 | 否 | 正式/临时 | +| book_mark | 册本标识 | number / tinyint | 否 | 否 | 特殊业务分类 | +| work_times | 工次 | number / int | 否 | 否 | | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| status | 状态 | number / tinyint | 否 | 默认0 | 详见常量说明[默认状态](###默认状态-default_status) | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 抄表数据表-biz_reading_data + +> 抄表作业数据表,承载每次抄表过程中的读数、状态、审核、复核、退补等信息,是开账与异常处理的直接数据来源。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| cust_id | 客户ID | number / bigint(64) | 否 | 是 | 关联客户资料 | +| cust_meter_id | 客户水表ID | number / bigint(64) | 否 | 否 | 关联客户挂表关系 | +| cust_meter_status | 客户水表状态 | number / int | 否 | 否 | | +| dept_id | 站点ID | number / bigint(64) | 否 | 否 | | +| bill_month | 抄表期间 | number / int | 否 | 是 | 格式YYYYMM | +| meter_reader_id | 抄表员ID | string / varchar(100) | 否 | 否 | | +| book_id | 册本ID | number / bigint(64) | 否 | 否 | 关联`biz_meter_book` | +| book_code | 册本编号 | string / varchar(100) | 否 | 否 | | +| read_cycle | 抄表周期 | number / int | 否 | 否 | | +| read_method | 抄表方式 | number / int | 否 | 否 | | +| read_type | 抄表类型 | number / int | 否 | 否 | 正常抄表/补抄等 | +| read_times | 抄表次数 | number / int | 否 | 否 | | +| last_reading | 上次读数 | number / decimal(18,4) | 否 | 否 | | +| last_child_reading | 上次子读数 | number / decimal(18,4) | 否 | 否 | | +| last_read_date | 上次抄表日期 | datetime | 否 | 否 | | +| last_read_water | 上次抄表水量 | number / decimal(18,4) | 否 | 否 | | +| last_read_state_id | 上次抄表状态ID | number / bigint(64) | 否 | 否 | | +| reading | 本次读数 | number / decimal(18,4) | 否 | 否 | | +| child_reading | 本次子读数 | number / decimal(18,4) | 否 | 否 | | +| read_date | 抄表日期 | datetime | 否 | 否 | | +| read_water | 抄表水量 | number / decimal(18,4) | 否 | 否 | | +| read_state_id | 抄表状态ID | number / bigint(64) | 否 | 否 | | +| is_estimate | 是否估算 | boolean / bit(1) | 否 | 默认0 | | +| replace_water | 替代表量 | number / decimal(18,4) | 否 | 否 | 换表或估算修正 | +| avg_water | 平均水量 | number / decimal(18,4) | 否 | 否 | | +| review_state | 审核状态 | number / int | 否 | 否 | | +| review_user | 审核人 | string / varchar(100) | 否 | 否 | | +| review_date | 审核日期 | datetime | 否 | 否 | | +| check_water | 复核水量 | number / decimal(18,4) | 否 | 否 | | +| check_state | 复核状态 | number / int | 否 | 否 | | +| check_user | 复核人 | string / varchar(100) | 否 | 否 | | +| check_date | 复核日期 | datetime | 否 | 否 | | +| read_remark | 抄表备注 | string / varchar(500) | 否 | 否 | | +| refund_reason | 退费原因 | number / int | 否 | 否 | | +| refund_water | 退费水量 | number / decimal(18,4) | 否 | 否 | | +| status | 状态 | number / int | 否 | 默认0 | 抄表记录状态 | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 上次抄表表-biz_last_reading + +> 上次抄表快照表,用于为下一期抄表、开账、阶梯累计和异常核算提供基线数据。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| cust_id | 客户ID | number / bigint(64) | 否 | 是 | | +| cust_code | 客户编号 | string / varchar(100) | 否 | 是 | | +| bill_month | 抄表年月 | number / int | 否 | 是 | 格式YYYYMM | +| read_date | 抄表时间 | datetime | 否 | 否 | | +| reading | 抄码 | number / decimal(18,4) | 否 | 否 | | +| child_reading | 子表抄码 | number / decimal(18,4) | 否 | 否 | | +| read_water | 抄见水量 | number / decimal(18,4) | 否 | 否 | | +| replace_water | 换表水量 | number / decimal(18,4) | 否 | 否 | | +| read_state_id | 抄表状态 | number / bigint(64) | 否 | 否 | | +| state_times | 状态连续次数 | number / int | 否 | 否 | | +| check_water | 开账水量 | number / decimal(18,4) | 否 | 否 | | +| change | 零头 | number / decimal(18,4) | 否 | 否 | | +| check_times | 开账次数 | number / int | 否 | 否 | | +| month_total_water | 月度累计量 | number / decimal(18,4) | 否 | 否 | | +| quarter_total_water | 季度累计量 | number / decimal(18,4) | 否 | 否 | | +| year_total_water | 年度累计量 | number / decimal(18,4) | 否 | 否 | | +| his_read_water | 历史抄见水量 | string / longtext | 否 | 否 | 历史轨迹记录 | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 营业账表-biz_charge + +> 营业账主表,是营收系统最核心的账务表之一,汇总客户、册本、抄表、用水量、金额、收费、开票、优惠等信息。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| meter_id | 水表ID | number / bigint(64) | 否 | 是 | 关联水表 | +| record_id | 抄表ID | number / bigint(64) | 否 | 否 | 关联`biz_reading_data` | +| bill_month | 账务年月 | number / int | 否 | 是 | 格式YYYYMM | +| dept_id | 站点ID | number / bigint(64) | 否 | 否 | | +| book_id | 册本ID | number / bigint(64) | 否 | 否 | | +| book_sort_index | 册内顺序 | number / int | 否 | 否 | | +| cust_id | 客户ID | number / bigint(64) | 否 | 是 | | +| cust_code | 客户编号 | string / varchar(100) | 否 | 否 | | +| cust_name | 客户名称 | string / varchar(200) | 否 | 否 | | +| cust_address | 客户地址 | string / varchar(500) | 否 | 否 | | +| population | 人口数 | number / int | 否 | 否 | | +| pay_method | 缴费方式 | number / int | 否 | 否 | 详见常量说明[缴费方式](#payment_method) | +| last_reading | 上次抄码 | number / decimal(18,4) | 否 | 否 | | +| reading | 本次抄码 | number / decimal(18,4) | 否 | 否 | | +| read_water | 本次抄见水量 | number / decimal(18,4) | 否 | 否 | | +| read_date | 本次抄表时间 | datetime | 否 | 否 | | +| adjustment_snap_code | 调价快照编码 | string / varchar(100) | 否 | 否 | 关联`biz_price_adjustment_snap` | +| price_template_code | 水价模板编码 | string / varchar(100) | 否 | 否 | 关联`biz_price_template` | +| bill_water | 开账水量 | number / decimal(18,4) | 否 | 否 | | +| bill_amount | 开账金额 | number / decimal(18,4) | 否 | 否 | | +| extended_amount | 应收金额 | number / decimal(18,4) | 否 | 否 | | +| late_fee | 滞纳金 | number / decimal(18,4) | 否 | 否 | | +| pay_date | 收费时间 | datetime | 否 | 否 | | +| checkout_date | 结账时间 | datetime | 否 | 否 | | +| charge_method | 收费途径 | number / int | 否 | 否 | 柜台/线上/批量等 | +| charge_way | 收费渠道 | number / int | 否 | 否 | 渠道分类 | +| pay_state | 收费状态 | number / int | 否 | 否 | 详见常量说明[收费状态](#charge_status) | +| invoice_code | 发票代码 | string / varchar(100) | 否 | 否 | | +| invoice_date | 开票日期 | datetime | 否 | 否 | | +| invoice_number | 发票编号 | string / varchar(100) | 否 | 否 | | +| invoice_state | 开票状态 | number / int | 否 | 否 | | +| subtotal_id | 收费小计ID | number / bigint(64) | 否 | 否 | | +| task_id | 流程任务ID | string / varchar(100) | 否 | 否 | | +| water_fee | 用水费 | number / decimal(18,4) | 否 | 否 | | +| sewage_fee | 污水处理费 | number / decimal(18,4) | 否 | 否 | | +| garbage_fee | 垃圾费 | number / decimal(18,4) | 否 | 否 | | +| over_plan_fee | 超计划费 | number / decimal(18,4) | 否 | 否 | | +| discount_money | 优惠金额 | number / decimal(18,4) | 否 | 否 | | +| original_money | 优惠前金额 | number / decimal(18,4) | 否 | 否 | | +| refund_water | 退补水量 | number / decimal(18,4) | 否 | 否 | | +| used_over_total | 超计划累计量 | number / decimal(18,4) | 否 | 否 | | +| community_id | 所属小区ID | number / bigint(64) | 否 | 否 | | +| cust_type | 用户类型 | number / int | 否 | 否 | | +| status | 状态 | number / int | 否 | 默认0 | | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 营业账明细表-biz_charge_detail + +> 营业账明细表,用于分解营业账中的费用组成、阶梯区间、分摊方式、金额构成,是计费规则落地的明细层对象。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| fee_id | 费用ID | number / bigint(64) | 否 | 是 | 关联`biz_charge` | +| adjustment_snap_code | 调价快照编码 | string / varchar(100) | 否 | 否 | | +| price_template_code | 水价模板编码 | string / varchar(100) | 否 | 否 | | +| cost_adjustment_id | 费用调整ID | number / bigint(64) | 否 | 否 | 关联`biz_price_cost_adjustment` | +| cost_component_code | 费用组成代码 | string / varchar(100) | 否 | 否 | 关联`biz_cost_component` | +| calc_mode | 计算方式 | number / int | 否 | 否 | 详见常量说明[计算类型](#calculation_mode) | +| level_type | 阶梯模式 | number / int | 否 | 否 | 详见常量说明[阶梯类型](#tiered_mode) | +| level_index | 阶梯级别 | number / int | 否 | 否 | | +| start_month | 开始月份 | number / int | 否 | 否 | | +| end_month | 结束月份 | number / int | 否 | 否 | | +| start_water | 开始水量 | number / decimal(18,4) | 否 | 否 | | +| end_water | 结束水量 | number / decimal(18,4) | 否 | 否 | | +| settle_method | 分摊方式 | number / int | 否 | 否 | 详见常量说明[分摊方式](#allocation_method) | +| settle_values | 分摊值 | number / decimal(18,4) | 否 | 否 | | +| price | 单价 | number / decimal(18,4) | 否 | 否 | | +| water | 应收水量 | number / decimal(18,4) | 否 | 否 | | +| discount_water | 优惠水量 | number / decimal(18,4) | 否 | 否 | | +| water_num | 水量系数 | number / decimal(18,4) | 否 | 否 | | +| money | 金额 | number / decimal(18,4) | 否 | 否 | | +| state | 状态 | number / int | 否 | 否 | 明细状态 | +| is_preferential | 是否优惠 | boolean / tinyint | 否 | 默认0 | | +| basic_number | 基数 | number / decimal(18,4) | 否 | 否 | | +| invoiced_state | 开票状态 | number / int | 否 | 否 | | +| discount_money | 优惠金额 | number / decimal(18,4) | 否 | 否 | | +| original_money | 优惠前金额 | number / decimal(18,4) | 否 | 否 | | +| is_water_over | 是否超计划 | boolean / tinyint | 否 | 默认0 | | +| item_invoice_error | 明细开票错误 | string / varchar(500) | 否 | 否 | | +| item_invoice_state | 明细开票状态 | number / int | 否 | 否 | | +| item_invoice_type | 明细开票类型 | number / int | 否 | 否 | | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 托收资料表-biz_collection + +> 托收资料主表,用于维护用户托收协议、银行账户、签约联系方式等信息,支撑批量托收与银行送盘业务。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| contract_no | 托收合同号 | string / varchar(100) | 否 | 否 | | +| agreement_no | 托收协议号 | string / varchar(100) | 否 | 否 | | +| bank_id | 总行ID | number / bigint(64) | 否 | 否 | 关联`biz_bank` | +| branchs_id | 分行ID | number / bigint(64) | 否 | 否 | 关联`biz_bank_branch` | +| account_no | 银行账号 | string / varchar(100) | 否 | 否 | | +| account_name | 开户户名 | string / varchar(200) | 否 | 否 | | +| account_address | 开户地址 | string / varchar(500) | 否 | 否 | | +| contact | 联系人 | string / varchar(100) | 否 | 否 | | +| mobile | 联系电话 | string / varchar(100) | 否 | 否 | 可脱敏/加密存储 | +| telephone | 座机 | string / varchar(100) | 否 | 否 | 可脱敏/加密存储 | +| contract_date | 签约日期 | datetime | 否 | 否 | | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| status | 状态 | number / int | 否 | 默认0 | 详见常量说明[默认状态](###默认状态-default_status) | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 代扣资料表-biz_withholding + +> 银行代扣资料主表,用于维护代扣合同、账户、银行分支和签约信息,支撑批量代扣与银行代扣协议管理。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| bank_id | 总行ID | number / int | 否 | 否 | 关联`biz_bank` | +| branchs_id | 分行ID | number / int | 否 | 否 | 关联`biz_bank_branch` | +| account_no | 银行账号 | string / varchar(100) | 否 | 否 | | +| account_name | 开户户名 | string / varchar(200) | 否 | 否 | | +| account_address | 开户地址 | string / varchar(500) | 否 | 否 | | +| contract_date | 签约日期 | datetime | 否 | 否 | | +| contract_no | 代扣合同号 | string / varchar(100) | 否 | 否 | | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| status | 状态 | number / int | 否 | 默认0 | 详见常量说明[默认状态](###默认状态-default_status) | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 开票配置表-biz_invoice + +> 开票配置主表,用于维护水司账户维度的发票供应商、开票限额、自动开票策略和扩展参数。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| account_id | 水司账户ID | number / bigint(64) | 否 | 是 | 关联`biz_company_account` | +| supplier | 供应商ID | number / int | 否 | 否 | | +| supplier_name | 供应商名称 | string / varchar(200) | 否 | 否 | | +| limit | 开票限额 | number / decimal(18,4) | 否 | 否 | 单次开票最大金额 | +| before_charge | 收费前开票 | boolean / tinyint | 否 | 默认0 | 0-否,1-是 | +| ex_cost_component_codes | 排除费用组成代码 | string / varchar(500) | 否 | 否 | 多个逗号分隔 | +| extra_properties | 扩展参数 | string / longtext | 否 | 否 | JSON扩展字段 | +| auto_invoice | 自动开票 | boolean / tinyint | 否 | 默认0 | 0-否,1-是 | +| invoice_type | 开票类型 | number / tinyint | 否 | 否 | 普票/专票 | +| include_invoice_special | 包含专票客户 | boolean / tinyint | 否 | 默认0 | | +| status | 状态 | number / tinyint | 否 | 默认0 | | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + +### 基础工单信息表-biz_process + +> 统一业务工单主表,用于承载更名、过户、停复水、换表、发票变更等业务办理流程,是当前后端流程化业务模型的核心表。 + +| 字段名 | 中文含义 | 字段类型 | 是否唯一 | 是否必填 | 字段说明 | +| --- | --- | --- | --- | --- | --- | +| id | 主键ID | number / bigint(64) | 是 | 是 | | +| request_source_code | 来源编码 | string / varchar(100) | 否 | 否 | 申请来源 | +| applicant | 申请人 | string / varchar(100) | 否 | 否 | | +| mobile | 申请人手机号码 | string / varchar(100) | 否 | 否 | | +| telephone | 座机 | string / varchar(100) | 否 | 否 | | +| cust_id | 客户ID | number / int | 否 | 否 | | +| cust_code | 客户编号 | string / varchar(100) | 否 | 否 | | +| org_name | 营业站点名称 | string / varchar(200) | 否 | 否 | | +| cust_name | 客户名称 | string / varchar(200) | 否 | 否 | | +| cust_address | 客户地址 | string / varchar(500) | 否 | 否 | | +| contact | 联系人信息 | string / varchar(200) | 否 | 否 | | +| apply_type | 申请原因 | number / int | 否 | 否 | | +| apply_date | 申请时间 | datetime | 否 | 否 | | +| acceptance_name | 受理人姓名 | string / varchar(100) | 否 | 否 | | +| acceptance_id | 受理人ID | string / varchar(100) | 否 | 否 | | +| acceptance_time | 受理时间 | datetime | 否 | 否 | | +| state | 工单状态 | number / int | 否 | 否 | | +| review_reasons | 审批备注 | string / varchar(500) | 否 | 否 | | +| review_opinion | 审批意见 | string / varchar(500) | 否 | 否 | | +| business_type | 业务类型 | number / int | 否 | 否 | | +| business_id | 业务单ID | number / int | 否 | 否 | 关联具体业务单 | +| process_state | 流程状态 | string / varchar(100) | 否 | 否 | 工作流状态 | +| business_code | 业务类型编码 | string / varchar(100) | 否 | 否 | | +| process_instance_id | 流程实例ID | string / varchar(100) | 否 | 否 | 工作流实例 | +| contact_mobile | 主联系人手机 | string / varchar(100) | 否 | 否 | | +| affairs_project_code | 一网通办项目编码 | string / varchar(100) | 否 | 否 | | +| affairs_project_content | 一网通办内容 | string / longtext | 否 | 否 | JSON内容 | +| affairs_project_state | 一网通办状态 | string / varchar(100) | 否 | 否 | | +| affairs_project_type | 一网通办类型 | number / int | 否 | 否 | | +| cust_type | 客户类型 | number / int | 否 | 否 | | +| user_id | 小程序用户ID | string / varchar(100) | 否 | 否 | | +| remark | 备注 | string / varchar(500) | 否 | 否 | | +| status | 状态 | number / int | 否 | 默认0 | | +| create_time | 创建时间 | datetime | 否 | 否 | | +| update_time | 更新时间 | datetime | 否 | 否 | | +| creator | 创建人id | string / varchar(100) | 否 | 否 | | +| updater | 更新人id | string / varchar(100) | 否 | 否 | | +| deleted | 是否删除 | boolean / bit(1) | 否 | 默认0 | | +| tenant_id | 租户id | number / bigint(64) | 否 | 默认0 | | + ## 数据库备份与安全 *(说明数据备份方式备份周期以及数据安全控制等等)*