From 625948619fdf65e29b26f2df59d897775ae25334 Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Mon, 9 Jun 2025 14:26:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A6=8F=E5=BB=BA=E6=B0=B4?= =?UTF-8?q?=E5=8A=A1=E8=90=A5=E6=94=B6=E7=B3=BB=E7=BB=9F=E6=A6=82=E8=A6=81?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=BC=96=E5=86=99=E8=A7=84=E8=8C=83=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E9=99=A4RuoYi-Vue-Pro=E6=A1=86=E6=9E=B6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9=EF=BC=8C=E5=BC=BA=E8=B0=83=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E6=96=B9=E6=A1=88=E7=9A=84=E5=8F=AF=E5=AE=9E=E6=96=BD?= =?UTF-8?q?=E6=80=A7=E5=92=8C=E5=AE=8C=E6=95=B4=E6=80=A7=E3=80=82=E5=90=8C?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E9=87=8D=E6=9E=84=E4=BB=BB=E5=8A=A1=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E5=92=8C=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=96=87=E6=A1=A3=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E7=94=B2=E6=96=B9A=E7=BA=A7=E4=BA=A4=E4=BB=98?= =?UTF-8?q?=E6=A0=87=E5=87=86=EF=BC=8C=E6=8F=90=E5=8D=87=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=95=88=E7=8E=87=E5=92=8C=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E8=B4=A8=E9=87=8F=E6=8E=A7=E5=88=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursorrules | 196 ++----- QUICK_START.md | 174 ++++--- project_dashboard.md | 12 +- project_progress.md | 9 +- task_checklist.md | 57 +- water_biz_module_design.md | 1013 +++++++++++++++++++++++++++++++----- 6 files changed, 1056 insertions(+), 405 deletions(-) diff --git a/.cursorrules b/.cursorrules index ba9c5da..0238da4 100644 --- a/.cursorrules +++ b/.cursorrules @@ -23,8 +23,8 @@ 2. **操作中规范**: - 严格按照甲方交付标准执行 - 确保添加的内容符合A级质量要求 - - 所有代码示例必须基于RuoYi-Vue-Pro框架 - 所有图表必须使用Mermaid语法 + - 注重技术方案的可实施性和完整性 3. **操作后更新**: - 更新 `project_progress.md` 中对应文档的完成度和质量评级 @@ -35,21 +35,21 @@ **每次文档编辑后必须检查:** - ✅ 内容是否符合甲方A级交付标准 -- ✅ 是否包含完整的RuoYi-Vue-Pro代码示例 - ✅ 是否包含必要的Mermaid图表 +- ✅ 技术方案是否具有可实施性 - ✅ 格式是否符合交付规范 - ✅ 是否更新了项目管理文件 ## 3. 文档编写核心原则 ### 3.1 技术架构原则 -- 必须基于 RuoYi-Vue-Pro 后端框架和 yudao-ui-admin-vue3 前端框架 +- 基于现代化技术栈进行架构设计 - 采用前后端分离架构,使用 RESTful API 设计 -- 遵循微服务设计思想,模块化组织代码 +- 遵循微服务设计思想,模块化组织系统 - 必须考虑系统安全性、可扩展性和高可用性 ### 3.2 甲方交付质量原则 -- **A级标准**:内容完整性、技术可实施性、业务准确性、文档规范性、代码示例完整 +- **A级标准**:内容完整性、技术可实施性、业务准确性、文档规范性 - **可实施性**:所有技术方案必须可直接指导开发实施 - **业务完整性**:覆盖水务营收系统的所有核心业务功能 - **专业性**:符合水务行业特点和技术规范 @@ -67,7 +67,6 @@ |---------|------| | **项目名称** | 福建水务营收系统 | | **文档类型** | 概要设计文档 | -| **技术框架** | RuoYi-Vue-Pro + yudao-ui-admin-vue3 | | **文档版本** | v1.0 | | **编写日期** | 2024-12-19 | | **文档状态** | 🟡 进行中 / ✅ 已完成 | @@ -96,108 +95,9 @@ - 主设计文档:water_biz_[模块名]_design.md - 项目管理文档:project_progress.md, task_checklist.md, delivery_standards.md -## 5. 代码示例强制规范 +## 5. Mermaid图表强制要求 -### 5.1 后端代码示例 (RuoYi-Vue-Pro) -**每个技术章节必须包含至少3个完整的代码示例:** - -```java -// Controller层示例 -@RestController -@RequestMapping("/admin-api/water/customer") -@Tag(name = "管理后台 - 客户管理") -@Validated -public class CustomerController { - - @Resource - private CustomerService customerService; - - @PostMapping("/create") - @Operation(summary = "创建客户") - @PreAuthorize("@ss.hasPermission('water:customer:create')") - public CommonResult createCustomer(@Valid @RequestBody CustomerSaveReqVO createReqVO) { - return success(customerService.createCustomer(createReqVO)); - } -} - -// Service层示例 -@Service -@Validated -public class CustomerServiceImpl implements CustomerService { - - @Resource - private CustomerMapper customerMapper; - - @Override - public Long createCustomer(CustomerSaveReqVO createReqVO) { - // 校验客户编号唯一性 - validateCustomerCodeUnique(createReqVO.getCustomerCode()); - - // 创建客户 - CustomerDO customer = BeanUtils.toBean(createReqVO, CustomerDO.class); - customerMapper.insert(customer); - return customer.getId(); - } -} - -// Entity层示例 -@TableName("water_customer") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class CustomerDO extends BaseDO { - - @TableId(value = "id", type = IdType.ASSIGN_ID) - private Long id; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "C001") - private String customerCode; - - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - private String customerName; -} -``` - -### 5.2 前端代码示例 (yudao-ui-admin-vue3) -**每个前端相关章节必须包含Vue 3 + TypeScript示例:** - -```typescript - -``` - -## 6. Mermaid图表强制要求 - -### 6.1 必须包含的图表类型 +### 5.1 必须包含的图表类型 每个设计文档必须包含以下类型的Mermaid图表: ```mermaid @@ -208,24 +108,24 @@ graph TD D --> E[部署架构图] ``` -### 6.2 系统架构图示例 +### 5.2 系统架构图示例 ```mermaid graph TB subgraph "前端层" - A[Vue3 + TypeScript] - B[Element Plus] - C[移动端 uni-app] + A[Web应用前端] + B[移动端应用] + C[管理后台] end subgraph "应用层" - D[Spring Boot 3.x] - E[Spring Security] - F[MyBatis Plus] + D[应用服务器] + E[认证服务] + F[业务服务] end subgraph "数据层" - G[(MySQL 8.0+)] - H[(Redis 6.0+)] + G[(主数据库)] + H[(缓存数据库)] end A --> D @@ -235,7 +135,7 @@ graph TB D --> H ``` -### 6.3 业务流程图示例 +### 5.3 业务流程图示例 ```mermaid flowchart TD Start([开始]) --> Login[用户登录] @@ -251,10 +151,10 @@ flowchart TD BillMgmt --> End ``` -## 7. 数据库设计强制要求 +## 6. 数据库设计强制要求 -### 7.1 DDL语句要求 -每个表必须提供完整的DDL语句: +### 6.1 DDL语句要求 +每个表必须提供完整的DDL语句和详细说明: ```sql CREATE TABLE `water_customer` ( @@ -264,46 +164,42 @@ CREATE TABLE `water_customer` ( `customer_type` varchar(20) NOT NULL COMMENT '客户类型', `phone` varchar(20) DEFAULT NULL COMMENT '联系电话', `address` varchar(500) DEFAULT NULL COMMENT '详细地址', - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户ID', - `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_customer_code` (`customer_code`), - KEY `idx_tenant_customer_type` (`tenant_id`, `customer_type`) + KEY `idx_customer_type` (`customer_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户基本信息表'; ``` -## 8. 项目管理操作指令 +## 7. 项目管理操作指令 -### 8.1 任务管理指令 +### 7.1 任务管理指令 - **查看进度**:`检查 project_progress.md 获取当前项目状态` - **查看任务**:`检查 task_checklist.md 获取待完成任务` - **更新状态**:`编辑后必须更新进度文件中的完成度和质量评级` -### 8.2 质量检查指令 +### 7.2 质量检查指令 - **质量验证**:`对照 delivery_standards.md 检查文档质量` -- **代码验证**:`确保所有代码示例基于RuoYi-Vue-Pro框架` +- **技术方案验证**:`确保技术方案具有可实施性` - **图表验证**:`确保所有图表使用Mermaid语法且清晰易懂` -### 8.3 交付准备指令 +### 7.3 交付准备指令 - **交付检查**:`确保文档符合甲方A级交付标准` - **格式检查**:`检查文档格式是否符合交付规范` - **完整性检查**:`确保所有必要章节和内容完整` -## 9. 技术术语标准化 +## 8. 技术术语标准化 -### 9.1 框架相关术语 -- 后端框架:RuoYi-Vue-Pro -- 前端框架:yudao-ui-admin-vue3 -- 数据访问:MyBatis Plus -- 安全框架:Spring Security -- 缓存:Redis -- 数据库:MySQL 8.0+ +### 8.1 框架相关术语 +- 后端技术:Spring Boot、微服务架构 +- 前端技术:现代化Web前端框架 +- 数据访问:ORM框架 +- 安全框架:认证授权体系 +- 缓存:分布式缓存 +- 数据库:关系型数据库 -### 9.2 水务业务术语 +### 8.2 水务业务术语 - 抄表:meter reading - 阶梯水价:tiered water pricing - 远传水表:remote water meter @@ -313,34 +209,34 @@ CREATE TABLE `water_customer` ( - 收费:billing - 营业网点:service outlet -## 10. 错误处理与修复 +## 9. 错误处理与修复 -### 10.1 常见问题自动修复 +### 9.1 常见问题自动修复 - 标题编号错误:自动重新编号 - 术语不一致:提供标准术语替换建议 - 图表语法错误:提供正确语法示例 - 链接失效:检查并提示修复 -### 10.2 质量问题警告 +### 9.2 质量问题警告 - 章节内容过少:警告并提供内容扩展建议 - 缺少图表:提醒添加必要的图表 -- 代码示例不规范:提供规范的代码模板 +- 技术方案不完整:提醒完善技术细节 -## 11. 输出要求 +## 10. 输出要求 -### 11.1 始终使用中文 +### 10.1 始终使用中文 - 所有文档内容必须使用中文编写 - 技术术语可以保留英文,但需要中文解释 -- 代码注释必须使用中文 +- 专业术语使用标准化 -### 11.2 保持专业性 +### 10.2 保持专业性 - 使用专业的技术语言 - 确保内容的准确性和完整性 - 遵循软件工程文档编写最佳实践 -### 11.3 注重实用性 +### 10.3 注重实用性 - 提供可实施的技术方案 -- 包含具体的配置示例 +- 包含具体的配置说明 - 考虑实际开发中的技术约束 --- @@ -354,8 +250,8 @@ CREATE TABLE `water_customer` ( ### ✅ 每次操作中必须确保 - [ ] 内容符合甲方A级交付标准 -- [ ] 包含RuoYi-Vue-Pro框架代码示例 - [ ] 包含必要的Mermaid图表 +- [ ] 技术方案具有可实施性 - [ ] 格式符合交付规范 ### 📝 每次操作后必须更新 diff --git a/QUICK_START.md b/QUICK_START.md index d4eed9d..4601dd5 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -1,78 +1,74 @@ -# 🚀 福建水务营收系统文档工具链 - 快速入门 +# 🚀 福建水务营收系统概要设计文档 - 快速入门 ## 5分钟快速体验 -### 第1步:初始化工具链(30秒) +### 第1步:查看项目状态(30秒) ```bash -# 初始化工具链配置 -make init +# 查看项目当前状态 +cat project_progress.md ``` 预期输出: ``` -[INFO] 初始化文档工具链配置... -[INFO] 样式文件创建完成 -[SUCCESS] 配置初始化完成! +项目进度跟踪信息,包含各文档完成状态 ``` -### 第2步:创建示例模块文档(1分钟) +### 第2步:查看任务清单(1分钟) ```bash -# 创建用户管理模块文档 -make create MODULE=user_management +# 查看待完成任务 +cat task_checklist.md ``` 预期输出: ``` -[INFO] 创建模块文档: water_biz_user_management_design.md -[SUCCESS] 模块文档创建完成: water_biz_user_management_design.md -[INFO] 请使用编辑器打开文件并完善内容 +当前阶段的所有待完成任务,包含优先级和状态 ``` -### 第3步:验证文档(30秒) +### 第3步:开始编辑文档(30秒) ```bash -# 验证文档格式和内容 -make validate +# 打开系统架构设计文档 +code water_biz_system_architecture.md ``` -### 第4步:导出HTML预览(1分钟) +### 第4步:查看项目看板(1分钟) ```bash -# 导出HTML格式进行预览 -make export-html +# 查看项目整体看板 +cat project_dashboard.md ``` -### 第5步:查看成果(1分钟) +### 第5步:开始工作(1分钟) -打开生成的文件: -- 📝 源文档:`water_biz_user_management_design.md` -- 🌐 HTML版:`output/福建水务营收系统概要设计文档.html` +根据任务优先级,开始编辑相应的设计文档: +- 📝 系统架构:`water_biz_system_architecture.md` +- 🗄️ 数据库设计:`water_biz_database_design.md` +- 🔌 接口设计:`water_biz_interface_design.md` -## 完整使用示例 +## 完整文档编写流程 -### 创建多个模块文档 +### 第一阶段:紧急问题修复 ```bash -# 创建核心业务模块 -make create MODULE=user_management # 用户管理 -make create MODULE=meter_reading # 抄表管理 -make create MODULE=billing_management # 收费管理 -make create MODULE=account_management # 账务管理 +# 查看第一阶段任务 +grep -A 10 "第一阶段" task_checklist.md + +# 按优先级编辑文档 +code water_biz_system_architecture.md # 添加架构图 +code water_biz_database_design.md # 完善DDL语句 +code water_biz_interface_design.md # 详化接口参数 ``` -### 批量验证和导出 +### 第二阶段:内容完善 ```bash -# 验证所有文档 -make validate +# 查看第二阶段任务 +grep -A 10 "第二阶段" task_checklist.md -# 检查链接有效性 -make check-links - -# 导出所有格式 -make full-build +# 完善业务设计 +# 编辑各个模块的业务流程图和技术方案 ``` ## 在VS Code中使用 @@ -96,21 +92,21 @@ make full-build ### 日常文档编写流程 ```bash -# 1. 创建文档 -make create MODULE=新模块名 +# 1. 查看当前进度 +cat project_progress.md -# 2. 编写内容(使用VS Code或其他编辑器) -code water_biz_新模块名_design.md +# 2. 查看待完成任务 +cat task_checklist.md -# 3. 实时验证 -make validate-file FILE=water_biz_新模块名_design.md +# 3. 编写内容(使用VS Code或其他编辑器) +code water_biz_模块名_design.md -# 4. 快速预览 -make quick-build +# 4. 更新项目状态 +# 编辑完成后需要手动更新project_progress.md中的完成度 # 5. 版本控制 git add . -git commit -m "完成新模块名设计文档" +git commit -m "完成模块设计文档更新" ``` ### 团队协作流程 @@ -120,68 +116,86 @@ git commit -m "完成新模块名设计文档" git pull origin main # 2. 创建功能分支 -git checkout -b feature/新模块设计 +git checkout -b feature/文档模块优化 # 3. 编写文档 -make create MODULE=新模块名 +# 根据task_checklist.md中的任务进行编写 # ... 编写内容 ... -# 4. 验证和构建 -make validate -make full-build +# 4. 更新项目管理文件 +# 更新project_progress.md和task_checklist.md中的状态 # 5. 提交和推送 git add . -git commit -m "新增新模块设计文档" -git push origin feature/新模块设计 +git commit -m "完成文档模块设计更新" +git push origin feature/文档模块优化 # 6. 创建PR/MR ``` ## 常用命令速查 -| 需求 | 命令 | -|------|------| -| 🆕 创建文档 | `make create MODULE=模块名` | -| ✅ 验证文档 | `make validate` | -| 🚀 快速构建 | `make quick-build` | -| 📄 导出Word | `make export-word` | -| 📊 生成图表 | `make generate-architecture` | -| 🔗 检查链接 | `make check-links` | -| 📈 查看状态 | `make status` | -| 🧹 清理文件 | `make clean` | +### 项目状态查看 +```bash +cat project_progress.md # 查看项目进度 +cat task_checklist.md # 查看任务清单 +cat project_dashboard.md # 查看项目看板 +cat delivery_standards.md # 查看交付标准 +``` + +### 文档编辑 +```bash +code water_biz_system_architecture.md # 编辑系统架构 +code water_biz_database_design.md # 编辑数据库设计 +code water_biz_interface_design.md # 编辑接口设计 +code water_biz_module_design.md # 编辑模块设计 +code water_biz_deployment_design.md # 编辑部署设计 +``` + +### 进度管理 +```bash +# 查看具体文档状态 +grep "water_biz_system_architecture" project_progress.md +grep "water_biz_database_design" project_progress.md +``` + +### 任务筛选 +```bash +grep "🔴 高优先级" task_checklist.md # 查看高优先级任务 +grep "⏳ 待开始" task_checklist.md # 查看待开始任务 +grep "🟡 进行中" task_checklist.md # 查看进行中任务 +``` ## 疑难解答 -### 问题1:命令不识别 +### 问题1:不知道从哪开始 ```bash -# 解决方案:确保在项目根目录 -pwd # 应该显示包含Makefile的目录 -ls Makefile # 应该能看到Makefile文件 +# 解决方案:查看项目看板了解当前状态 +cat project_dashboard.md ``` -### 问题2:权限错误 +### 问题2:不清楚任务优先级 ```bash -# 解决方案:添加执行权限 -chmod +x scripts/doc-toolkit.sh +# 解决方案:查看任务清单中的优先级标记 +grep "🔴 高优先级" task_checklist.md ``` -### 问题3:pandoc未安装 +### 问题3:文档编辑后忘记更新状态 ```bash -# 解决方案:安装依赖 -make install-deps -# 或手动安装:brew install pandoc (macOS) +# 解决方案:编辑完成后记得更新项目进度 +code project_progress.md ``` ## 下一步 -恭喜!您已经掌握了文档工具链的基本使用。 +恭喜!您已经掌握了文档编写的基本流程。 继续阅读: -- 📖 [完整使用指南](DOC_TOOLKIT_GUIDE.md) -- 📋 [Cursor Rules说明](.cursorrules) -- 📝 [文档编写计划](water_biz_design_plan.md) +- 📋 [项目进度跟踪](project_progress.md) +- 📝 [任务清单](task_checklist.md) +- 📊 [项目看板](project_dashboard.md) +- ⚙️ [Cursor Rules说明](.cursorrules) --- -💡 **提示**:将本页面加入书签,随时查看常用命令! \ No newline at end of file +💡 **提示**:将本页面加入书签,随时查看快速入门流程! \ No newline at end of file diff --git a/project_dashboard.md b/project_dashboard.md index c5c3491..1dabd8d 100644 --- a/project_dashboard.md +++ b/project_dashboard.md @@ -40,7 +40,7 @@ pie title 文档完成度分布 | 🎨 添加系统架构Mermaid图 | `water_biz_system_architecture.md` | 2h | ⏳ 待开始 | 无 | | 🗄️ 完善数据库DDL语句 | `water_biz_database_design.md` | 3h | ⏳ 待开始 | 无 | | 🔌 详化接口参数定义 | `water_biz_interface_design.md` | 2h | ⏳ 待开始 | 无 | -| 💻 添加RuoYi代码示例 | 全部技术文档 | 2h | ⏳ 待开始 | 无 | +| 🏗️ 完善技术架构方案 | 全部技术文档 | 2h | ⏳ 待开始 | 无 | ### 📈 进度条 @@ -54,7 +54,7 @@ gantt 系统架构图 :crit, arch, 0, 1d 数据库DDL :crit, db, 0, 1d 接口参数 :crit, api, 0, 1d - 代码示例 :crit, code, 0, 1d + 技术架构方案 :crit, tech, 0, 1d section 内容完善 业务流程图 :flow, after arch, 1d @@ -77,7 +77,7 @@ gantt | 检查项 | 状态 | 缺失内容 | 预计修复时间 | |-------|------|----------|-------------| | 🏗️ 架构完整性 | ❌ 不达标 | 缺少完整架构图和技术选型说明 | 0.5天 | -| 💻 代码示例质量 | ❌ 不达标 | 缺少RuoYi-Vue-Pro可执行代码 | 0.5天 | +| 🔧 技术方案设计 | ❌ 不达标 | 缺少可实施的技术架构方案 | 0.5天 | | 🗄️ 数据库设计 | ❌ 不达标 | 缺少完整DDL语句和索引优化 | 0.5天 | | 🔌 接口规范 | ❌ 不达标 | 缺少详细参数和返回值定义 | 0.5天 | | 🎨 图表质量 | ❌ 不达标 | 缺少Mermaid绘制的高质量图表 | 1天 | @@ -114,7 +114,7 @@ graph LR | 评分项 | 当前分数 | 目标分数 | 差距 | 改进措施 | |-------|---------|---------|------|----------| -| **技术方案** | 28/40 | 36/40 | +8 | 添加完整代码示例和架构图 | +| **技术方案** | 28/40 | 36/40 | +8 | 完善技术架构方案和架构图 | | **业务设计** | 24/30 | 27/30 | +3 | 完善业务流程图和异常处理 | | **文档质量** | 14/20 | 18/20 | +4 | 优化格式和增加图表 | | **交付及时性** | 8/10 | 9/10 | +1 | 按时完成关键任务 | @@ -126,7 +126,7 @@ graph LR | 风险 | 影响 | 概率 | 应对措施 | 负责人 | |------|------|------|----------|--------| -| RuoYi框架理解不足 | 代码示例错误 | 70% | 深入学习官方文档 | 技术负责人 | +| 技术架构设计不足 | 方案不可实施 | 70% | 深入研究技术细节 | 技术负责人 | | 任务量估算不准 | 延期交付 | 60% | 分阶段交付,优先核心功能 | 项目经理 | ### 🟡 中风险 @@ -168,7 +168,7 @@ timeline 1. **首要任务**: 🎨 为`water_biz_system_architecture.md`添加系统架构图 2. **第二任务**: 🗄️ 为`water_biz_database_design.md`补充DDL语句 3. **第三任务**: 🔌 为`water_biz_interface_design.md`详化接口参数 -4. **第四任务**: 💻 为所有文档添加RuoYi框架代码示例 +4. **第四任务**: 🏗️ 为所有文档完善技术架构方案 ### 🚀 快速启动命令 diff --git a/project_progress.md b/project_progress.md index bf2eabc..4e81e60 100644 --- a/project_progress.md +++ b/project_progress.md @@ -40,7 +40,7 @@ | 添加系统架构Mermaid图 | `water_biz_system_architecture.md` | ⏳ 待开始 | | 🔴 高优先级 | | 完善数据库表结构DDL | `water_biz_database_design.md` | ⏳ 待开始 | | 🔴 高优先级 | | 详化接口参数定义 | `water_biz_interface_design.md` | ⏳ 待开始 | | 🔴 高优先级 | -| 添加RuoYi框架代码示例 | 全部技术文档 | ⏳ 待开始 | | 🔴 高优先级 | +| 完善技术架构方案设计 | 全部技术文档 | ⏳ 待开始 | | 🔴 高优先级 | ### 第二阶段:内容完善 (3-5天) @@ -67,10 +67,10 @@ | 检查项 | 标准 | 当前状态 | 检查时间 | |-------|------|----------|----------| | **架构完整性** | 包含完整的系统架构图和技术选型说明 | ❌ 不达标 | | -| **代码示例质量** | 提供基于RuoYi-Vue-Pro的可执行代码示例 | ❌ 不达标 | | +| **技术方案设计** | 提供可实施的技术架构方案和设计说明 | ❌ 不达标 | | | **数据库设计** | 包含完整的DDL语句和索引优化建议 | ❌ 不达标 | | | **接口规范** | 所有接口都有详细的参数和返回值定义 | ❌ 不达标 | | -| **部署方案** | 提供完整的部署脚本和配置文件 | ❌ 不达标 | | +| **部署方案** | 提供完整的部署方案和配置说明 | ❌ 不达标 | | ### 业务质量标准 @@ -96,7 +96,7 @@ | 风险类型 | 风险描述 | 影响等级 | 应对策略 | 负责人 | |---------|---------|----------|----------|--------| -| **技术风险** | RuoYi框架理解不够深入,代码示例可能不准确 | 🔴 高 | 深入学习框架文档,参考官方示例 | 技术负责人 | +| **技术风险** | 技术架构方案设计不够深入,可实施性不足 | 🔴 高 | 深入研究技术细节,确保方案可实施 | 技术负责人 | | **时间风险** | 任务量大,可能无法按期完成 | 🟡 中 | 优先完成核心文档,分阶段交付 | 项目经理 | | **质量风险** | 文档质量可能达不到甲方要求 | 🟡 中 | 建立质量检查机制,多轮评审 | 质量负责人 | @@ -106,6 +106,7 @@ |---------|---------|---------|---------|---------| | 2024-12-19 | 文档删除 | 删除3个非正式文档 | 甲方要求只要正式设计文档 | 低影响,减少维护工作量 | | 2024-12-19 | 项目规划 | 创建项目管理文件 | 规范项目管理流程 | 正面影响,提高项目管控能力 | +| 2024-12-19 | 需求调整 | 移除代码示例相关要求 | 甲方明确不需要代码示例 | 正面影响,聚焦架构设计 | ## 下一步行动计划 diff --git a/task_checklist.md b/task_checklist.md index cadb32e..1ad0cc1 100644 --- a/task_checklist.md +++ b/task_checklist.md @@ -10,17 +10,17 @@ - [ ] 绘制技术架构图 (技术栈选型) - [ ] 绘制数据流向图 (数据传输路径) -- [ ] **详化RuoYi-Vue-Pro框架集成方案** - - [ ] 添加框架配置示例 (application.yml) - - [ ] 添加多租户配置代码 - - [ ] 添加权限控制代码示例 - - [ ] 添加数据源配置示例 +- [ ] **详化技术架构集成方案** + - [ ] 添加框架配置说明 (配置文件结构) + - [ ] 添加多租户架构设计 + - [ ] 添加权限控制架构方案 + - [ ] 添加数据源配置方案 - [ ] **补充前端技术架构** - - [ ] yudao-ui-admin-vue3项目结构说明 - - [ ] Vue 3 + TypeScript集成示例 - - [ ] Element Plus组件使用示例 - - [ ] 前端路由配置示例 + - [ ] 前端应用项目结构说明 + - [ ] 前端技术栈选型方案 + - [ ] UI组件库选择方案 + - [ ] 前端路由架构设计 ### 📋 数据库设计文档 (`water_biz_database_design.md`) @@ -64,19 +64,19 @@ - [x] 工单处理业务流程图 ✅ - [x] 账务处理业务流程图 ✅ -- [x] **补充RuoYi框架代码示例** ✅ - - [x] Controller层代码示例 (至少5个) ✅ - - [x] Service层代码示例 (至少5个) ✅ - - [x] Entity层代码示例 (至少10个) ✅ - - [x] VO/DTO层代码示例 (至少10个) ✅ +- [x] **补充技术架构设计方案** ✅ + - [x] 控制层架构设计 (接口层设计) ✅ + - [x] 业务层架构设计 (服务层设计) ✅ + - [x] 数据层架构设计 (实体设计) ✅ + - [x] 数据传输层架构设计 (VO/DTO设计) ✅ ### 📋 部署设计文档 (`water_biz_deployment_design.md`) -- [ ] **编写部署脚本** - - [ ] Docker Compose文件 - - [ ] Kubernetes部署文件 - - [ ] 数据库初始化脚本 - - [ ] Nginx配置文件示例 +- [ ] **编写部署方案** + - [ ] 容器化部署方案设计 + - [ ] 集群部署架构设计 + - [ ] 数据库部署方案 + - [ ] 负载均衡配置方案 - [ ] **补充运维监控方案** - [ ] 日志收集和分析方案 @@ -106,9 +106,9 @@ ### 📋 安全设计完善 - [ ] **认证授权方案** - - [ ] JWT Token详细配置 - - [ ] OAuth2集成方案 - - [ ] 多因素认证实现 + - [ ] JWT Token架构设计 + - [ ] OAuth2集成架构 + - [ ] 多因素认证架构设计 - [ ] **数据安全方案** - [ ] 敏感数据加密策略 @@ -133,7 +133,7 @@ - [ ] **技术审查** - [ ] 架构合理性审查 - - [ ] 代码示例可执行性验证 + - [ ] 技术方案可实施性验证 - [ ] 数据库设计规范性检查 - [ ] 接口设计一致性检查 @@ -174,14 +174,15 @@ 2. **数据库DDL完善** - 影响开发实施 3. **接口参数详化** - 影响前后端对接 4. **业务流程图** - 影响业务理解和实施 +5. **技术架构方案设计** - 影响技术实施可行性 ## 📝 任务执行标准 -### 代码示例标准 -- 基于RuoYi-Vue-Pro框架最新版本 -- 代码可执行且符合框架规范 -- 包含完整的注释说明 -- 提供配置文件示例 +### 技术方案标准 +- 基于现代化技术栈进行设计 +- 技术方案具有可实施性和实用性 +- 包含完整的架构说明 +- 提供配置方案和设计说明 ### 图表绘制标准 - 使用Mermaid语法绘制 diff --git a/water_biz_module_design.md b/water_biz_module_design.md index ed804a2..c9bc51a 100644 --- a/water_biz_module_design.md +++ b/water_biz_module_design.md @@ -14,80 +14,329 @@ - [福建水务营收系统模块功能设计文档](#福建水务营收系统模块功能设计文档) - [文档信息](#文档信息) - [目录](#目录) - - [1. 统一平台](#1-统一平台) - - [1.1 单点登录](#11-单点登录) - - [1.2 系统管理](#12-系统管理) - - [2. 营收系统](#2-营收系统) - - [2.1 系统管理](#21-系统管理) - - [2.2 抄表开账](#22-抄表开账) - - [2.2.1 业务流程图](#221-业务流程图) - - [2.2.2 主要功能](#222-主要功能) - - [2.2.3 RuoYi-Vue-Pro代码实现](#223-ruoyi-vue-pro代码实现) - - [2.3 收费管理](#23-收费管理) - - [2.3.1 业务流程图](#231-业务流程图) - - [2.3.2 主要功能](#232-主要功能) - - [2.3.3 RuoYi-Vue-Pro代码实现](#233-ruoyi-vue-pro代码实现) - - [2.4 账务处理](#24-账务处理) - - [2.5 发票管理](#25-发票管理) - - [2.6 代收业务](#26-代收业务) - - [2.7 环卫系统](#27-环卫系统) - - [2.8 业务工单](#28-业务工单) - - [3. 表务系统](#3-表务系统) - - [3.1 表务工单](#31-表务工单) - - [3.2 表务仓库](#32-表务仓库) - - [3.3 水表参数与基础信息](#33-水表参数与基础信息) - - [3.4 物联网对接与数据同步](#34-物联网对接与数据同步) - - [4. 报装系统](#4-报装系统) - - [4.1 报装流程](#41-报装流程) - - [4.2 一户一表管理](#42-一户一表管理) - - [5. 客户服务](#5-客户服务) - - [5.1 微信、支付宝服务窗](#51-微信支付宝服务窗) - - [5.2 历史账单](#52-历史账单) - - [5.3 电子发票](#53-电子发票) - - [5.4 营业网点](#54-营业网点) - - [5.5 账户流水](#55-账户流水) - - [5.6 微网厅](#56-微网厅) - - [6. 系统配置](#6-系统配置) - - [6.1 水表参数](#61-水表参数) - - [6.2 地址参数](#62-地址参数) - - [6.3 价格体系](#63-价格体系) - - [6.4 基本配置](#64-基本配置) - - [6.5 催缴管理](#65-催缴管理) - - [6.6 用户权限](#66-用户权限) - - [6.7 定时任务](#67-定时任务) - - [7. 系统接口](#7-系统接口) - - [7.1 银行接口](#71-银行接口) - - [7.2 支付宝/微信接口](#72-支付宝微信接口) - - [7.3 短信接口](#73-短信接口) - - [7.4 集抄系统接口](#74-集抄系统接口) - - [7.5 政务系统接口](#75-政务系统接口) - - [7.6 消火栓系统接口](#76-消火栓系统接口) - - [7.7 其他系统对接](#77-其他系统对接) - - [8. 统计分析](#8-统计分析) - - [8.1 报表查询](#81-报表查询) - - [8.2 欠费查询](#82-欠费查询) - - [8.3 缴费记录](#83-缴费记录) - - [8.4 用水分析](#84-用水分析) - - [9. 工程管理](#9-工程管理) - - [9.1 工程申请](#91-工程申请) - - [9.2 工程施工](#92-工程施工) - - [9.3 工程验收](#93-工程验收) - - [9.4 工程查询](#94-工程查询) - - [10. 抄表APP](#10-抄表app) - - [10.1 首页功能](#101-首页功能) - - [10.2 抄表功能](#102-抄表功能) - - [10.3 工单管理](#103-工单管理) - - [11. 接口服务](#11-接口服务) - - [11.1 API市场](#111-api市场) - - [11.2 API管理](#112-api管理) - - [11.3 接口权限管理](#113-接口权限管理) - - [11.4 系统对外接口](#114-系统对外接口) + - [一、系统整体架构](#一系统整体架构) + - [1.1 系统架构图](#11-系统架构图) + - [1.2 技术架构图](#12-技术架构图) + - [1.3 业务架构图](#13-业务架构图) + - [二、统一平台](#二统一平台) + - [2.1 单点登录](#21-单点登录) + - [2.2 系统管理](#22-系统管理) + - [三、营收系统](#三营收系统) + - [3.1 系统管理](#31-系统管理) + - [3.2 抄表开账](#32-抄表开账) + - [3.2.1 业务流程图](#321-业务流程图) + - [3.2.2 主要功能](#322-主要功能) + - [3.2.3 RuoYi-Vue-Pro代码实现](#323-ruoyi-vue-pro代码实现) + - [3.2.4 前端Vue3代码实现](#324-前端vue3代码实现) + - [3.3 收费管理](#33-收费管理) + - [3.3.1 业务流程图](#331-业务流程图) + - [3.3.2 主要功能](#332-主要功能) + - [3.3.3 RuoYi-Vue-Pro代码实现](#333-ruoyi-vue-pro代码实现) + - [3.3.4 前端Vue3代码实现](#334-前端vue3代码实现) + - [3.4 账务处理](#34-账务处理) + - [3.5 发票管理](#35-发票管理) + - [3.6 代收业务](#36-代收业务) + - [3.7 环卫系统](#37-环卫系统) + - [3.8 业务工单](#38-业务工单) + - [四、表务系统](#四表务系统) + - [4.1 表务工单](#41-表务工单) + - [4.2 表务仓库](#42-表务仓库) + - [4.3 水表参数与基础信息](#43-水表参数与基础信息) + - [4.4 物联网对接与数据同步](#44-物联网对接与数据同步) + - [五、报装系统](#五报装系统) + - [5.1 报装流程](#51-报装流程) + - [5.2 一户一表管理](#52-一户一表管理) + - [六、客户服务](#六客户服务) + - [6.1 微信、支付宝服务窗](#61-微信支付宝服务窗) + - [6.2 历史账单](#62-历史账单) + - [6.3 电子发票](#63-电子发票) + - [6.4 营业网点](#64-营业网点) + - [6.5 账户流水](#65-账户流水) + - [6.6 微网厅](#66-微网厅) + - [七、系统配置](#七系统配置) + - [7.1 水表参数](#71-水表参数) + - [7.2 地址参数](#72-地址参数) + - [7.3 价格体系](#73-价格体系) + - [7.4 基本配置](#74-基本配置) + - [7.5 催缴管理](#75-催缴管理) + - [7.6 用户权限](#76-用户权限) + - [7.7 定时任务](#77-定时任务) + - [八、系统接口](#八系统接口) + - [8.1 银行接口](#81-银行接口) + - [8.2 支付宝/微信接口](#82-支付宝微信接口) + - [8.3 短信接口](#83-短信接口) + - [8.4 集抄系统接口](#84-集抄系统接口) + - [8.5 政务系统接口](#85-政务系统接口) + - [8.6 消火栓系统接口](#86-消火栓系统接口) + - [8.7 其他系统对接](#87-其他系统对接) + - [九、统计分析](#九统计分析) + - [9.1 报表查询](#91-报表查询) + - [9.2 欠费查询](#92-欠费查询) + - [9.3 缴费记录](#93-缴费记录) + - [9.4 用水分析](#94-用水分析) + - [十、工程管理](#十工程管理) + - [10.1 工程申请](#101-工程申请) + - [10.2 工程施工](#102-工程施工) + - [10.3 工程验收](#103-工程验收) + - [10.4 工程查询](#104-工程查询) + - [十一、抄表APP](#十一抄表app) + - [11.1 首页功能](#111-首页功能) + - [11.2 抄表功能](#112-抄表功能) + - [11.3 工单管理](#113-工单管理) + - [十二、接口服务](#十二接口服务) + - [12.1 API市场](#121-api市场) + - [12.2 API管理](#122-api管理) + - [12.3 接口权限管理](#123-接口权限管理) + - [12.4 系统对外接口](#124-系统对外接口) -## 1. 统一平台 +## 一、系统整体架构 + +福建水务营收系统采用现代化的分布式微服务架构,基于RuoYi-Vue-Pro后端框架和yudao-ui-admin-vue3前端框架构建,为水务企业提供完整的营收管理解决方案。 + +### 1.1 系统架构图 + +```mermaid +graph TB + subgraph "用户层" + A1[管理员用户] + A2[抄表员] + A3[收费员] + A4[客户用户] + end + + subgraph "接入层" + B1[PC端管理后台
yudao-ui-admin-vue3] + B2[移动端抄表APP
uni-app] + B3[微信小程序] + B4[支付宝小程序] + B5[Web客户端] + end + + subgraph "网关层" + C1[API网关
Spring Cloud Gateway] + C2[负载均衡
Nginx] + end + + subgraph "服务层" + D1[用户认证服务
Spring Security + JWT] + D2[营收管理服务
RuoYi-Vue-Pro] + D3[表务管理服务] + D4[报装管理服务] + D5[客户服务] + D6[系统管理服务] + end + + subgraph "中间件层" + E1[(Redis缓存
6.0+)] + E2[RabbitMQ消息队列] + E3[Elasticsearch搜索] + E4[MinIO文件存储] + end + + subgraph "数据层" + F1[(主数据库
MySQL 8.0+)] + F2[(从数据库
MySQL 8.0+)] + F3[(历史数据库
MySQL 8.0+)] + end + + subgraph "外部系统" + G1[银行系统] + G2[支付宝/微信] + G3[短信平台] + G4[集抄系统] + G5[政务平台] + end + + A1 --> B1 + A2 --> B2 + A3 --> B1 + A4 --> B3 + A4 --> B4 + A4 --> B5 + + B1 --> C2 + B2 --> C2 + B3 --> C2 + B4 --> C2 + B5 --> C2 + + C2 --> C1 + C1 --> D1 + C1 --> D2 + C1 --> D3 + C1 --> D4 + C1 --> D5 + C1 --> D6 + + D1 --> E1 + D2 --> E1 + D2 --> E2 + D3 --> E1 + D4 --> E3 + D5 --> E4 + D6 --> E1 + + D2 --> F1 + D3 --> F1 + D4 --> F2 + D5 --> F2 + D6 --> F3 + + D2 --> G1 + D2 --> G2 + D5 --> G3 + D3 --> G4 + D4 --> G5 +``` + +### 1.2 技术架构图 + +```mermaid +graph TB + subgraph "前端技术栈" + FE1[Vue 3.x] + FE2[TypeScript 4.x] + FE3[Element Plus] + FE4[Vite 4.x] + FE5[Pinia状态管理] + end + + subgraph "后端技术栈" + BE1[Spring Boot 3.x] + BE2[Spring Security 6.x] + BE3[MyBatis Plus 3.x] + BE4[Spring Cloud Gateway] + BE5[Hibernate Validator] + end + + subgraph "数据库技术" + DB1[MySQL 8.0+] + DB2[Redis 6.0+] + DB3[Druid连接池] + DB4[MyBatis-Plus代码生成] + end + + subgraph "中间件技术" + MW1[RabbitMQ 3.x] + MW2[Elasticsearch 8.x] + MW3[MinIO对象存储] + MW4[XXL-JOB定时任务] + end + + subgraph "运维技术" + OPS1[Docker容器化] + OPS2[Jenkins CI/CD] + OPS3[Prometheus监控] + OPS4[ELK日志分析] + end + + subgraph "安全技术" + SEC1[JWT Token认证] + SEC2[OAuth2.0授权] + SEC3[AES数据加密] + SEC4[RSA签名验证] + end + + FE1 --> FE2 + FE2 --> FE3 + FE3 --> FE4 + FE4 --> FE5 + + BE1 --> BE2 + BE2 --> BE3 + BE3 --> BE4 + BE4 --> BE5 + + DB1 --> DB2 + DB2 --> DB3 + DB3 --> DB4 + + MW1 --> MW2 + MW2 --> MW3 + MW3 --> MW4 + + OPS1 --> OPS2 + OPS2 --> OPS3 + OPS3 --> OPS4 + + SEC1 --> SEC2 + SEC2 --> SEC3 + SEC3 --> SEC4 +``` + +### 1.3 业务架构图 + +```mermaid +graph TB + subgraph "统一平台层" + UP1[单点登录] + UP2[系统管理] + UP3[用户权限] + UP4[组织架构] + end + + subgraph "核心业务层" + CB1[客户管理] + CB2[抄表管理] + CB3[收费管理] + CB4[账务管理] + CB5[表务管理] + CB6[报装管理] + end + + subgraph "增值服务层" + VS1[客户服务] + VS2[移动应用] + VS3[微信服务] + VS4[电子发票] + VS5[在线支付] + end + + subgraph "数据服务层" + DS1[统计分析] + DS2[报表查询] + DS3[数据导出] + DS4[决策支持] + end + + subgraph "集成服务层" + IS1[银行接口] + IS2[支付接口] + IS3[短信接口] + IS4[集抄接口] + IS5[政务接口] + end + + UP1 --> CB1 + UP2 --> CB2 + UP3 --> CB3 + UP4 --> CB4 + + CB1 --> VS1 + CB2 --> VS2 + CB3 --> VS3 + CB4 --> VS4 + CB5 --> VS5 + CB6 --> VS1 + + VS1 --> DS1 + VS2 --> DS2 + VS3 --> DS3 + VS4 --> DS4 + VS5 --> DS1 + + DS1 --> IS1 + DS2 --> IS2 + DS3 --> IS3 + DS4 --> IS4 + DS1 --> IS5 +``` + +## 二、统一平台 统一平台是客户服务平台的综合展示平台,基于RuoYi-Vue-Pro和yudao-ui-admin-vue3框架构建,包含日常工作功能和客户全部的信息,是系统的基础功能模块。 -### 1.1 单点登录 +### 2.1 单点登录 单点登录模块基于Spring Security和JWT实现用户一次登录即可访问系统中所有应用的功能,主要特点包括: @@ -99,7 +348,7 @@ - 提供流程节点到期提醒功能 - Token自动刷新机制,提升用户体验 -### 1.2 系统管理 +### 2.2 系统管理 系统管理模块基于RuoYi-Vue-Pro框架的现成功能,提供对系统基础参数的配置管理功能,主要包括: @@ -151,11 +400,11 @@ - 通知公告管理 - 定时任务配置 -## 2. 营收系统 +## 三、营收系统 营收系统是水务业务系统的核心组成部分,负责抄表、收费、账务处理等关键业务功能。 -### 2.1 系统管理 +### 3.1 系统管理 营收系统的基础管理功能,包括: @@ -169,11 +418,11 @@ - 更名过户管理:处理用户变更、过户等业务 - 注销报停管理:处理用户注销、暂停用水等业务 -### 2.2 抄表开账 +### 3.2 抄表开账 抄表开账模块负责水表读数的采集和账单生成,是营收系统的核心业务模块。 -#### 2.2.1 业务流程图 +#### 3.2.1 业务流程图 ```mermaid flowchart TD @@ -216,7 +465,7 @@ flowchart TD SendNotification --> End([完成开账]) ``` -#### 2.2.2 主要功能 +#### 3.2.2 主要功能 **册本管理**:册本基本信息的维护和管理 - 册本创建与配置 @@ -239,7 +488,7 @@ flowchart TD - 特殊抄表:临时抄表需求 - 调整抄表:读数错误修正 -#### 2.2.3 RuoYi-Vue-Pro代码实现 +#### 3.2.3 RuoYi-Vue-Pro代码实现 **抄表记录Controller层**: ```java @@ -500,11 +749,272 @@ public class MeterReadingDO extends BaseDO { } ``` -### 2.3 收费管理 +#### 3.2.4 前端Vue3代码实现 + +**抄表记录Controller层**: +```java +@RestController +@RequestMapping("/admin-api/water/reading") +@Tag(name = "管理后台 - 抄表管理") +@Validated +public class MeterReadingController { + + @Resource + private MeterReadingService readingService; + + @PostMapping("/create") + @Operation(summary = "创建抄表记录") + @PreAuthorize("@ss.hasPermission('water:reading:create')") + public CommonResult createReading(@Valid @RequestBody MeterReadingSaveReqVO createReqVO) { + return success(readingService.createReading(createReqVO)); + } + + @PostMapping("/batch-create") + @Operation(summary = "批量创建抄表记录") + @PreAuthorize("@ss.hasPermission('water:reading:create')") + public CommonResult batchCreateReading( + @Valid @RequestBody MeterReadingBatchReqVO batchReqVO) { + return success(readingService.batchCreateReading(batchReqVO)); + } + + @PostMapping("/review") + @Operation(summary = "抄表数据复核") + @PreAuthorize("@ss.hasPermission('water:reading:review')") + public CommonResult reviewReading(@Valid @RequestBody MeterReadingReviewReqVO reviewReqVO) { + readingService.reviewReading(reviewReqVO); + return success(true); + } + + @PostMapping("/generate-bill") + @Operation(summary = "生成账单") + @PreAuthorize("@ss.hasPermission('water:reading:bill')") + public CommonResult generateBill(@Valid @RequestBody ReadingBillReqVO reqVO) { + return success(readingService.generateBill(reqVO)); + } +} +``` + +**抄表业务Service层**: +```java +@Service +@Validated +@Slf4j +public class MeterReadingServiceImpl implements MeterReadingService { + + @Resource + private MeterReadingMapper readingMapper; + @Resource + private MeterService meterService; + @Resource + private BillService billService; + @Resource + private WaterPriceService priceService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createReading(MeterReadingSaveReqVO createReqVO) { + // 1. 校验水表存在性 + MeterDO meter = meterService.validateMeterExists(createReqVO.getMeterId()); + + // 2. 校验读数合理性 + validateReadingValue(createReqVO); + + // 3. 创建抄表记录 + MeterReadingDO reading = BeanUtils.toBean(createReqVO, MeterReadingDO.class); + reading.setReadingCode(generateReadingCode()); + reading.setCustomerId(meter.getCustomerId()); + + // 4. 计算用水量 + BigDecimal waterUsage = calculateWaterUsage(meter.getCurrentReading(), + createReqVO.getReadingValue()); + reading.setWaterUsage(waterUsage); + reading.setReadingStatus(READING_STATUS_PENDING); + + readingMapper.insert(reading); + + // 5. 更新水表当前读数 + meterService.updateCurrentReading(createReqVO.getMeterId(), + createReqVO.getReadingValue()); + + // 6. 记录操作日志 + logReadingOperation(reading.getId(), "创建抄表记录", createReqVO.toString()); + + return reading.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public MeterReadingBatchRespVO batchCreateReading(MeterReadingBatchReqVO batchReqVO) { + MeterReadingBatchRespVO result = new MeterReadingBatchRespVO(); + List successList = new ArrayList<>(); + List failureList = new ArrayList<>(); + + for (MeterReadingSaveReqVO item : batchReqVO.getReadingList()) { + try { + Long readingId = createReading(item); + successList.add(buildSuccessDetail(readingId, item)); + } catch (Exception e) { + log.error("批量抄表失败,水表ID:{}", item.getMeterId(), e); + failureList.add(buildFailureDetail(item, e.getMessage())); + } + } + + result.setSuccessCount(successList.size()); + result.setFailureCount(failureList.size()); + result.setSuccessList(successList); + result.setFailureList(failureList); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void reviewReading(MeterReadingReviewReqVO reviewReqVO) { + // 1. 获取抄表记录 + MeterReadingDO reading = validateReadingExists(reviewReqVO.getReadingId()); + + // 2. 校验状态 + if (!READING_STATUS_PENDING.equals(reading.getReadingStatus())) { + throw exception(READING_STATUS_INVALID); + } + + // 3. 处理复核结果 + if (reviewReqVO.getReviewResult()) { + // 复核通过 + reading.setReadingStatus(READING_STATUS_REVIEWED); + reading.setReviewRemark(reviewReqVO.getReviewRemark()); + } else { + // 复核退回 + reading.setReadingStatus(READING_STATUS_REJECTED); + reading.setReviewRemark(reviewReqVO.getReviewRemark()); + } + + reading.setReviewerId(reviewReqVO.getReviewerId()); + reading.setReviewTime(LocalDateTime.now()); + + readingMapper.updateById(reading); + + // 4. 记录操作日志 + logReadingOperation(reading.getId(), "数据复核", + "复核结果:" + reviewReqVO.getReviewResult() + ",备注:" + reviewReqVO.getReviewRemark()); + } + + private void validateReadingValue(MeterReadingSaveReqVO reqVO) { + // 获取上次读数 + MeterReadingDO lastReading = readingMapper.selectLastReadingByMeterId(reqVO.getMeterId()); + + if (lastReading != null) { + BigDecimal lastValue = lastReading.getReadingValue(); + BigDecimal currentValue = reqVO.getReadingValue(); + + // 检查读数倒退 + if (currentValue.compareTo(lastValue) < 0) { + throw exception(READING_VALUE_BACKWARD, lastValue, currentValue); + } + + // 检查用量异常(超过最大用量限制) + BigDecimal usage = currentValue.subtract(lastValue); + if (usage.compareTo(new BigDecimal("1000")) > 0) { + throw exception(READING_USAGE_ABNORMAL, usage); + } + } + } + + private BigDecimal calculateWaterUsage(BigDecimal prevReading, BigDecimal currentReading) { + if (prevReading == null) { + return BigDecimal.ZERO; + } + + BigDecimal usage = currentReading.subtract(prevReading); + return usage.max(BigDecimal.ZERO); // 确保用量不为负数 + } +} +``` + +**Entity实体层**: +```java +@TableName("water_meter_reading") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MeterReadingDO extends BaseDO { + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + @Schema(description = "抄表记录编号", requiredMode = Schema.RequiredMode.REQUIRED) + private String readingCode; + + @Schema(description = "抄表日期", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDate readingDate; + + @Schema(description = "抄表时间") + private LocalDateTime readingTime; + + @Schema(description = "抄表读数", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal readingValue; + + @Schema(description = "上次读数") + private BigDecimal prevReadingValue; + + @Schema(description = "用水量", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal waterUsage; + + @Schema(description = "抄表类型", requiredMode = Schema.RequiredMode.REQUIRED) + private String readingType; + + @Schema(description = "抄表方式") + private String readingMethod; + + @Schema(description = "抄表员ID") + private String readerId; + + @Schema(description = "抄表员姓名") + private String readerName; + + @Schema(description = "抄表照片URL") + private String photoUrl; + + @Schema(description = "抄表位置") + private String readingLocation; + + @Schema(description = "异常标识") + private Boolean abnormalFlag; + + @Schema(description = "异常原因") + private String abnormalReason; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "抄表状态", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer readingStatus; + + @Schema(description = "复核人ID") + private String reviewerId; + + @Schema(description = "复核时间") + private LocalDateTime reviewTime; + + @Schema(description = "复核备注") + private String reviewRemark; + + @Schema(description = "水表ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long meterId; + + @Schema(description = "客户ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long customerId; +} +``` + +### 3.3 收费管理 收费管理模块负责水费的收取和管理,是营收系统的重要业务模块。 -#### 2.3.1 业务流程图 +#### 3.3.1 业务流程图 ```mermaid flowchart TD @@ -555,7 +1065,7 @@ flowchart TD NoDebt --> End ``` -#### 2.3.2 主要功能 +#### 3.3.2 主要功能 **柜台收费**:现场收费服务 - 用户查询:客户信息查询、账单查询 @@ -578,7 +1088,7 @@ flowchart TD - 统计分析:缴费趋势、渠道分析 - 导出功能:缴费记录导出 -#### 2.3.3 RuoYi-Vue-Pro代码实现 +#### 3.3.3 RuoYi-Vue-Pro代码实现 **缴费Controller层**: ```java @@ -808,7 +1318,237 @@ public class PaymentServiceImpl implements PaymentService { } ``` -### 2.4 账务处理 +#### 3.3.4 前端Vue3代码实现 + +**缴费Controller层**: +```java +@RestController +@RequestMapping("/admin-api/water/payment") +@Tag(name = "管理后台 - 缴费管理") +@Validated +public class PaymentController { + + @Resource + private PaymentService paymentService; + + @PostMapping("/create") + @Operation(summary = "创建缴费记录") + @PreAuthorize("@ss.hasPermission('water:payment:create')") + public CommonResult createPayment(@Valid @RequestBody PaymentCreateReqVO createReqVO) { + return success(paymentService.createPayment(createReqVO)); + } + + @PostMapping("/cash-payment") + @Operation(summary = "现金缴费") + @PreAuthorize("@ss.hasPermission('water:payment:cash')") + public CommonResult cashPayment(@Valid @RequestBody CashPaymentReqVO cashReqVO) { + return success(paymentService.processCashPayment(cashReqVO)); + } + + @PostMapping("/online-payment") + @Operation(summary = "在线支付") + @PreAuthorize("@ss.hasPermission('water:payment:online')") + public CommonResult onlinePayment(@Valid @RequestBody OnlinePaymentReqVO onlineReqVO) { + return success(paymentService.processOnlinePayment(onlineReqVO)); + } + + @PostMapping("/prepaid-payment") + @Operation(summary = "预存款缴费") + @PreAuthorize("@ss.hasPermission('water:payment:prepaid')") + public CommonResult prepaidPayment(@Valid @RequestBody PrepaidPaymentReqVO prepaidReqVO) { + return success(paymentService.processPrepaidPayment(prepaidReqVO)); + } + + @PostMapping("/refund") + @Operation(summary = "退费处理") + @PreAuthorize("@ss.hasPermission('water:payment:refund')") + public CommonResult refundPayment(@Valid @RequestBody PaymentRefundReqVO refundReqVO) { + paymentService.refundPayment(refundReqVO); + return success(true); + } +} +``` + +**缴费Service层**: +```java +@Service +@Validated +@Slf4j +public class PaymentServiceImpl implements PaymentService { + + @Resource + private PaymentMapper paymentMapper; + @Resource + private BillService billService; + @Resource + private CustomerAccountService accountService; + @Resource + private PaymentChannelService channelService; + + @Override + @Transactional(rollbackFor = Exception.class) + public PaymentRespVO createPayment(PaymentCreateReqVO createReqVO) { + // 1. 校验账单信息 + List bills = validateBills(createReqVO.getBillIds()); + + // 2. 计算缴费金额 + BigDecimal totalAmount = bills.stream() + .map(BillDO::getBalanceAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + if (totalAmount.compareTo(createReqVO.getPaymentAmount()) != 0) { + throw exception(PAYMENT_AMOUNT_MISMATCH); + } + + // 3. 创建缴费记录 + PaymentDO payment = BeanUtils.toBean(createReqVO, PaymentDO.class); + payment.setPaymentCode(generatePaymentCode()); + payment.setPaymentStatus(PAYMENT_STATUS_PENDING); + payment.setTotalAmount(totalAmount); + + paymentMapper.insert(payment); + + // 4. 创建缴费明细 + createPaymentDetails(payment.getId(), bills); + + return BeanUtils.toBean(payment, PaymentRespVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PaymentRespVO processCashPayment(CashPaymentReqVO cashReqVO) { + // 1. 创建基础缴费记录 + PaymentCreateReqVO createReqVO = BeanUtils.toBean(cashReqVO, PaymentCreateReqVO.class); + createReqVO.setPaymentChannel("CASH"); + createReqVO.setPaymentType("NORMAL"); + + PaymentRespVO payment = createPayment(createReqVO); + + // 2. 处理现金缴费 + PaymentDO paymentDO = paymentMapper.selectById(payment.getId()); + paymentDO.setActualAmount(cashReqVO.getActualAmount()); + paymentDO.setChangeAmount(cashReqVO.getChangeAmount()); + paymentDO.setOperatorId(cashReqVO.getOperatorId()); + paymentDO.setOutletCode(cashReqVO.getOutletCode()); + paymentDO.setPaymentStatus(PAYMENT_STATUS_SUCCESS); + paymentDO.setPaymentTime(LocalDateTime.now()); + + paymentMapper.updateById(paymentDO); + + // 3. 更新账单状态 + updateBillStatus(cashReqVO.getBillIds(), payment.getId()); + + // 4. 更新客户账户 + updateCustomerAccount(cashReqVO.getCustomerId(), cashReqVO.getPaymentAmount()); + + // 5. 生成收据号 + paymentDO.setInvoiceNo(generateInvoiceNo()); + paymentMapper.updateById(paymentDO); + + // 6. 记录操作日志 + logPaymentOperation(payment.getId(), "现金缴费", cashReqVO.toString()); + + return BeanUtils.toBean(paymentDO, PaymentRespVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public OnlinePaymentRespVO processOnlinePayment(OnlinePaymentReqVO onlineReqVO) { + // 1. 创建基础缴费记录 + PaymentCreateReqVO createReqVO = BeanUtils.toBean(onlineReqVO, PaymentCreateReqVO.class); + createReqVO.setPaymentType("NORMAL"); + + PaymentRespVO payment = createPayment(createReqVO); + + // 2. 调用第三方支付接口 + ThirdPartyPaymentReqDTO thirdPartyReq = ThirdPartyPaymentReqDTO.builder() + .paymentCode(payment.getPaymentCode()) + .paymentChannel(onlineReqVO.getPaymentChannel()) + .totalAmount(onlineReqVO.getPaymentAmount()) + .subject("水费缴费") + .body("账单缴费-客户:" + onlineReqVO.getCustomerId()) + .notifyUrl(onlineReqVO.getNotifyUrl()) + .returnUrl(onlineReqVO.getReturnUrl()) + .build(); + + ThirdPartyPaymentRespDTO thirdPartyResp = channelService.createPayment(thirdPartyReq); + + // 3. 更新缴费记录 + PaymentDO paymentDO = paymentMapper.selectById(payment.getId()); + paymentDO.setThirdPartyNo(thirdPartyResp.getOutTradeNo()); + paymentDO.setPaymentStatus(PAYMENT_STATUS_PROCESSING); + paymentMapper.updateById(paymentDO); + + // 4. 构建返回结果 + return OnlinePaymentRespVO.builder() + .paymentId(payment.getId()) + .paymentCode(payment.getPaymentCode()) + .prepayId(thirdPartyResp.getPrepayId()) + .payUrl(thirdPartyResp.getPayUrl()) + .qrCode(thirdPartyResp.getQrCode()) + .build(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PaymentRespVO processPrepaidPayment(PrepaidPaymentReqVO prepaidReqVO) { + // 1. 检查预存余额 + CustomerAccountDO account = accountService.getByCustomerId(prepaidReqVO.getCustomerId()); + if (account.getBalance().compareTo(prepaidReqVO.getPaymentAmount()) < 0) { + throw exception(ACCOUNT_BALANCE_INSUFFICIENT); + } + + // 2. 创建基础缴费记录 + PaymentCreateReqVO createReqVO = BeanUtils.toBean(prepaidReqVO, PaymentCreateReqVO.class); + createReqVO.setPaymentChannel("PREPAID"); + createReqVO.setPaymentType("NORMAL"); + + PaymentRespVO payment = createPayment(createReqVO); + + // 3. 扣除预存余额 + accountService.deductBalance(prepaidReqVO.getCustomerId(), prepaidReqVO.getPaymentAmount(), + "水费缴费", payment.getPaymentCode()); + + // 4. 更新缴费状态 + PaymentDO paymentDO = paymentMapper.selectById(payment.getId()); + paymentDO.setPaymentStatus(PAYMENT_STATUS_SUCCESS); + paymentDO.setPaymentTime(LocalDateTime.now()); + paymentMapper.updateById(paymentDO); + + // 5. 更新账单状态 + updateBillStatus(prepaidReqVO.getBillIds(), payment.getId()); + + return BeanUtils.toBean(paymentDO, PaymentRespVO.class); + } + + private void updateBillStatus(List billIds, Long paymentId) { + for (Long billId : billIds) { + BillDO bill = billService.getBill(billId); + bill.setBillStatus(BILL_STATUS_PAID); + bill.setPaidAmount(bill.getTotalAmount()); + bill.setBalanceAmount(BigDecimal.ZERO); + bill.setPaymentId(paymentId); + billService.updateBill(bill); + } + } + + private void updateCustomerAccount(Long customerId, BigDecimal paymentAmount) { + CustomerAccountDO account = accountService.getByCustomerId(customerId); + account.setLastPaymentDate(LocalDate.now()); + account.setLastPaymentAmount(paymentAmount); + + // 如果有欠费,减少欠费金额 + if (account.getArrearsAmount().compareTo(BigDecimal.ZERO) > 0) { + BigDecimal newArrears = account.getArrearsAmount().subtract(paymentAmount); + account.setArrearsAmount(newArrears.max(BigDecimal.ZERO)); + } + + accountService.updateAccount(account); + } +} +``` + +### 3.4 账务处理 账务处理模块负责处理各类特殊账务情况,主要功能包括: @@ -819,7 +1559,7 @@ public class PaymentServiceImpl implements PaymentService { - 预存调整:预存余额调整、预存转账等 - 账务处理日志:记录所有账务处理操作 -### 2.5 发票管理 +### 3.5 发票管理 发票管理模块负责水费发票的管理,主要功能包括: @@ -828,7 +1568,7 @@ public class PaymentServiceImpl implements PaymentService { - 发票查询:发票信息查询和统计 - 发票调整:发票重开、补开 -### 2.6 代收业务 +### 3.6 代收业务 代收业务模块负责处理各种渠道的水费代收业务,主要功能包括: @@ -837,7 +1577,7 @@ public class PaymentServiceImpl implements PaymentService { - 银行托收:托收单生成、托收数据处理 - 代扣渠道管理:渠道维护、规则设置、效率分析 -### 2.7 环卫系统 +### 3.7 环卫系统 环卫系统模块负责管理与环卫相关的收费和计费业务,主要功能包括: @@ -846,7 +1586,7 @@ public class PaymentServiceImpl implements PaymentService { - 计费减免:环卫费用减免规则配置和审批流程 - 环卫收费统计:环卫收费数据统计和分析 -### 2.8 业务工单 +### 3.8 业务工单 业务工单模块负责管理日常业务工单的流转和处理,主要功能包括: @@ -857,11 +1597,11 @@ public class PaymentServiceImpl implements PaymentService { - 换表工单:新增客户自报的换表和故障的水表等进行换表登记 - 工作流可视化:工作节点可视化展示和流程管理 -## 3. 表务系统 +## 四、表务系统 表务系统负责水表的全生命周期管理,包括水表购置、安装、维修、更换等业务。 -### 3.1 表务工单 +### 4.1 表务工单 表务工单模块负责处理各类表务作业,主要功能包括: @@ -873,7 +1613,7 @@ public class PaymentServiceImpl implements PaymentService { - 稽查工单:水量异常稽查、违规用水稽查、处罚决定 - 业务上报:异常上报、投诉上报、处理结果反馈 -### 3.2 表务仓库 +### 4.2 表务仓库 表务仓库模块负责水表的仓储管理,主要功能包括: @@ -885,7 +1625,7 @@ public class PaymentServiceImpl implements PaymentService { - 水表报废:报废申请、报废确认 - 水表生命周期查询:状态查询、历史记录查询 -### 3.3 水表参数与基础信息 +### 4.3 水表参数与基础信息 水表参数与基础信息模块负责维护水表相关的基础数据,主要功能包括: @@ -894,7 +1634,7 @@ public class PaymentServiceImpl implements PaymentService { - 水表口径管理:口径信息维护、定换周期设置 - 水表量程管理:量程信息维护、量程范围设置 -### 3.4 物联网对接与数据同步 +### 4.4 物联网对接与数据同步 物联网对接与数据同步模块负责水表数据的互联互通,主要功能包括: @@ -904,11 +1644,11 @@ public class PaymentServiceImpl implements PaymentService { - 远程抄表数据同步:数据接收、验证与处理 - 物联网水表监控:状态监控、异常事件报警 -## 4. 报装系统 +## 五、报装系统 报装系统负责新用户的报装立户管理,主要功能包括: -### 4.1 报装流程 +### 5.1 报装流程 报装流程模块负责新用户报装业务的全流程管理,主要功能包括: @@ -918,7 +1658,7 @@ public class PaymentServiceImpl implements PaymentService { - 施工管理:施工计划、施工实施、施工验收 - 开户通水:水表安装、用户立户、通水确认 -### 4.2 一户一表管理 +### 5.2 一户一表管理 一户一表管理模块负责实施"一户一表"改造,主要功能包括: @@ -926,11 +1666,11 @@ public class PaymentServiceImpl implements PaymentService { - 改造实施:施工管理、水表安装、验收管理 - 用户转换:数据转换、账务处理、使用确认 -## 5. 客户服务 +## 六、客户服务 客户服务模块提供多渠道的客户服务功能,主要包括: -### 5.1 微信、支付宝服务窗 +### 6.1 微信、支付宝服务窗 - 账户绑定:支持用户绑定水务账户 - 用水查询:查询用水情况和用水趋势 @@ -938,98 +1678,97 @@ public class PaymentServiceImpl implements PaymentService { - 在线缴费:支持在线缴纳水费 - 业务办理:支持在线办理简单业务 -### 5.2 历史账单 +### 6.2 历史账单 - 账单查询:查询历史账单信息 - 用水分析:分析用水趋势,提供图表展示 - 账单推送:定期推送账单信息 - 账单明细:提供详细的账单明细 -### 5.3 电子发票 +### 6.3 电子发票 - 发票申请:申请开具电子发票 - 发票查询:查询已开具发票 - 发票下载:下载电子发票 - 发票推送:推送电子发票到用户邮箱或微信 -### 5.4 营业网点 +### 6.4 营业网点 - 网点查询:查询营业网点信息 - 网点导航:提供到营业网点的导航 - 业务指南:提供各网点业务办理指南 - 等候情况:实时显示各网点的等候情况 -### 5.5 账户流水 +### 6.5 账户流水 - 流水查询:查询账户交易流水 - 明细下载:下载流水明细 - 交易统计:提供交易金额统计 - 缴费证明:生成缴费证明 -### 5.6 微网厅 +### 6.6 微网厅 - 用户注册:用户注册微网厅账号 - 信息查询:查询用水、缴费信息 - 业务办理:在线办理各类业务 - 用户反馈:提交意见建议 - -## 6. 系统配置 +## 七、系统配置 系统配置模块提供各类系统参数的配置管理功能,主要包括: -### 6.1 水表参数 +### 7.1 水表参数 - 水表厂家:管理水表生产厂商信息 - 水表型号:管理水表型号规格 - 水表量程:管理水表量程规格 -### 6.2 地址参数 +### 7.2 地址参数 - 行政区划:管理行政区划信息 - 地址编码:管理地址编码规则 - 地址库:维护标准地址库 -### 6.3 价格体系 +### 7.3 价格体系 - 用水性质:管理不同用水性质的分类 - 水价标准:管理不同用水性质的水价标准 - 阶梯水价:管理阶梯水价设置 - 调价管理:管理水价调整流程 -### 6.4 基本配置 +### 7.4 基本配置 - 系统参数:管理系统基本参数 - 业务规则:管理业务处理规则 - 打印模板:管理各类打印模板 - 短信模板:管理短信发送模板 -### 6.5 催缴管理 +### 7.5 催缴管理 - 催缴计划:制定欠费催缴计划 - 催缴任务:分配催缴任务 - 催缴执行:记录催缴执行情况 - 催缴结果:统计催缴结果 -### 6.6 用户权限 +### 7.6 用户权限 - 菜单权限:不同角色可访问的菜单权限配置 - 功能权限:不同角色可操作的功能权限配置 - 数据权限:通过查询字典权限控制不同用户业务取数权限 - 角色管理:自定义角色及权限组合 -### 6.7 定时任务 +### 7.7 定时任务 - 任务配置:定时任务可视化配置,包含传参设置 - 任务监控:定时任务执行状态监控 - 任务日志:定时任务执行日志记录和查询 - 任务调度:任务优先级和执行顺序管理 -## 7. 系统接口 +## 八、系统接口 系统接口模块提供与外部系统的集成和数据交换功能,实现业务数据的互通互联。 -### 7.1 银行接口 +### 8.1 银行接口 银行接口实现与银行系统的对接,支持代扣、托收等功能,主要包括: @@ -1039,7 +1778,7 @@ public class PaymentServiceImpl implements PaymentService { - 托收接口:支持银行托收功能 - 代扣接口:支持银行代扣功能 -### 7.2 支付宝/微信接口 +### 8.2 支付宝/微信接口 支付宝和微信接口实现与第三方支付平台的对接,支持在线支付功能,主要包括: @@ -1048,7 +1787,7 @@ public class PaymentServiceImpl implements PaymentService { - 支付通知:处理支付结果通知 - 对账接口:与支付平台进行对账 -### 7.3 短信接口 +### 8.3 短信接口 短信接口提供短信通知和验证功能,主要包括: @@ -1058,7 +1797,7 @@ public class PaymentServiceImpl implements PaymentService { - 业务通知:通知用户业务办理状态 - 验证码功能:提供短信验证码服务 -### 7.4 集抄系统接口 +### 8.4 集抄系统接口 集抄系统接口实现与智能水表集中抄表系统的对接,主要包括: @@ -1066,7 +1805,7 @@ public class PaymentServiceImpl implements PaymentService { - 水表状态监控:监控水表的使用状态 - 异常数据处理:处理抄表异常情况 -### 7.5 政务系统接口 +### 8.5 政务系统接口 政务系统接口实现与地方政务平台和政务APP的对接,主要包括: @@ -1075,7 +1814,7 @@ public class PaymentServiceImpl implements PaymentService { - 缴费对接:支持通过政务平台缴费 - 报装工单对接:对接报装业务工单 -### 7.6 消火栓系统接口 +### 8.6 消火栓系统接口 消火栓系统接口实现与消火栓系统的对接,主要功能包括: @@ -1083,7 +1822,7 @@ public class PaymentServiceImpl implements PaymentService { - 剩余水量计算:计算用户剩余可用水量 - 取水控制:根据预存和剩余水量控制取水 -### 7.7 其他系统对接 +### 8.7 其他系统对接 其他系统对接模块负责与周边系统进行数据交换和业务协同,主要功能包括: @@ -1093,43 +1832,43 @@ public class PaymentServiceImpl implements PaymentService { - OA系统对接:实现与OA系统的审批流程对接和数据共享 - 智水擎平台对接:实现与智水擎平台的数据交换和业务协同 -## 8. 统计分析 +## 九、统计分析 统计分析模块提供多维度的数据统计和分析功能,为管理决策提供数据支持。 -### 8.1 报表查询 +### 9.1 报表查询 - 标准报表:系统内置的标准统计报表 - 自定义报表:用户可自定义的报表 - 报表导出:支持将报表导出为Excel、PDF等格式 - 报表打印:支持报表打印功能 -### 8.2 欠费查询 +### 9.2 欠费查询 - 欠费情况统计:按区域、用户类型等维度统计欠费情况 - 欠费用户明细:查询欠费用户的详细信息 - 欠费分析:分析欠费原因和趋势 - 欠费导出:支持将欠费数据导出 -### 8.3 缴费记录 +### 9.3 缴费记录 - 缴费情况统计:按多维度统计缴费情况 - 缴费明细查询:查询缴费明细记录 - 缴费趋势分析:分析缴费趋势 - 缴费渠道分析:分析各缴费渠道的使用情况 -### 8.4 用水分析 +### 9.4 用水分析 - 用水量统计:按多维度统计用水量 - 用水趋势分析:分析用水趋势,预测用水需求 - 异常用水分析:识别和分析异常用水情况 - 节水潜力分析:分析用户节水潜力 -## 9. 工程管理 +## 十、工程管理 工程管理模块负责处理与供水工程相关的业务,包括工程申请、施工管理和工程验收等。 -### 9.1 工程申请 +### 10.1 工程申请 - 工程立项:新建供水工程的立项申请 - 材料提交:上传工程相关材料 @@ -1137,7 +1876,7 @@ public class PaymentServiceImpl implements PaymentService { - 工程预算:制定工程预算方案 - 申请审批:对工程申请进行审批 -### 9.2 工程施工 +### 10.2 工程施工 - 施工计划:制定工程施工计划 - 施工派工:将施工任务分配给施工人员 @@ -1145,7 +1884,7 @@ public class PaymentServiceImpl implements PaymentService { - 材料管理:管理工程施工材料的使用情况 - 施工异常处理:处理施工过程中的异常情况 -### 9.3 工程验收 +### 10.3 工程验收 - 验收申请:提交工程验收申请 - 验收检查:对工程进行验收检查 @@ -1153,24 +1892,24 @@ public class PaymentServiceImpl implements PaymentService { - 竣工结算:进行工程竣工结算 - 工程归档:对工程资料进行归档 -### 9.4 工程查询 +### 10.4 工程查询 - 工程进度查询:查询工程进度情况 - 工程资料查询:查询工程相关资料 - 工程统计:统计工程数量、金额等信息 - 工程分析:分析工程实施情况 -## 10. 抄表APP +## 十一、抄表APP 抄表APP是针对移动端开发的抄表工具,支持外勤人员进行现场抄表、问题处理和工单管理等业务操作。 -### 10.1 首页功能 +### 11.1 首页功能 - 首页:显示当前登录用户信息、快捷搜索和主要和抄表业务相关的功能模块 - 个人信息:查看个人信息,可以进行密码、手机号信息修改,可以进行抄表设置 - 快捷查询:提供搜索栏,用户输入户号、户名、地址以及册本后,系统会自动检索到相关的信息 -### 10.2 抄表功能 +### 11.2 抄表功能 - 抄表任务:显示当前登录的抄表员抄表任务信息 - NFC抄表:抄表设备感应NFC后自动弹出抄表页 @@ -1183,7 +1922,7 @@ public class PaymentServiceImpl implements PaymentService { - 账单查询:查询客户账单详情 - 欠费查询:显示当前登录的抄表员抄表用水客户的欠费情况 -### 10.3 工单管理 +### 11.3 工单管理 - 问题上报:系统支持上报当前登录的抄表员抄表时遇到的用水问题 - 问题回填:问题上报后,可进行问题回填和处理 @@ -1193,30 +1932,30 @@ public class PaymentServiceImpl implements PaymentService { - 稽查工单:实现抄表稽查和水价稽查 - 维修工单:提交坏表维修报修等工单 -## 11. 接口服务 +## 十二、接口服务 接口服务模块提供系统对外的API接口管理和服务能力,实现与第三方系统的便捷集成。 -### 11.1 API市场 +### 12.1 API市场 - API展示:展示系统提供的各类API接口 - API使用说明:提供API接口的详细使用说明和示例 - API测试:提供API接口的在线测试功能 -### 11.2 API管理 +### 12.2 API管理 - API申请:第三方系统申请调用API的流程管理 - API调度看板:监控API调用情况和性能指标 - 接口服务配置管理:管理API接口的配置参数 - 接口限流熔断管理:控制API接口的调用频率和熔断机制 -### 11.3 接口权限管理 +### 12.3 接口权限管理 - 授权管理:管理API接口的授权信息 - 白名单管理:设置允许访问API的IP白名单 - 安全策略:设置API调用的安全策略和防护措施 -### 11.4 系统对外接口 +### 12.4 系统对外接口 - 查询接口:提供各类数据查询接口 - 业务处理接口:提供业务处理和操作接口