# 供水管理系统 ## 项目简介 供水管理系统基于 Spring Cloud Alibaba 微服务架构,涵盖供水生产管理、营业收费、巡检系统、流程引擎、大数据分析等核心业务模块。 ## 系统架构 ### 微服务模块 1. **wm-gateway** - 网关服务 - 基于 Spring Cloud Gateway - 统一认证、路由、限流、跨域处理 - API 网关,所有请求统一入口 2. **wm-base** - 基础服务 - 统一响应格式 `R` - 统一异常处理 `GlobalExceptionHandler` - 公共工具类和配置 3. **wm-iot** - 物联网服务 - 设备管理 - 数据采集 - WebSocket 实时通信 - MQTT 消息处理 4. **wm-data-engine** - 数据引擎服务 - 多源数据接入 - 数据转换和清洗 - 实时数据处理 - 批量导入功能 5. **wm-bpm** - 业务流程管理服务 - 基于 Activiti 7 工作流引擎 - 流程定义和管理 - 审批流程 6. **wm-production** - 生产管理服务 - 供水生产调度 - 设备监控 - 生产数据分析 7. **wm-revenue** - 营业收费服务 - 用户管理 - 收费管理 - 账单生成 8. **wm-patrol** - 巡检服务 - 巡检路线管理 - 巡检任务分配 - 巡检记录管理 9. **wm-bi** - 大数据分析服务 - 经营分析 - 预警分析 - 数据可视化 10. **wm-notify** - 通知服务 - 短信通知 - Push 通知 - WebSocket 实时消息 11. **wm-job** - 定时任务服务 - 基于 Quartz 2.x - 分布式任务调度 - 定时数据处理 ### 技术栈 - **框架**: Spring Boot 3.2.1, Spring Cloud Alibaba 2023.0.0 - **认证**: Sa-Token 1.39.0 - **服务注册**: Nacos 2.2.3 - **数据库**: MySQL 8.0, PostgreSQL 16, TDengine 3.5.0 - **缓存**: Redis 7 - **消息队列**: Kafka 7.4.0, MQTT (EMQX 5.3.1) - **搜索引擎**: Elasticsearch 8.11.0 - **对象存储**: MinIO - **监控**: Prometheus + Grafana, SkyWalking - **GIS**: GeoServer - **工作流**: Activiti 7 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - Docker & Docker Compose ### 启动步骤 1. **克隆项目** ```bash git clone cd water-management-system ``` 2. **启动中间件** ```bash # 使用 Docker Compose 启动所有中间件 docker-compose up -d ``` 3. **启动服务** ```bash # 启动父工程(按需启动具体服务) cd wm-parent mvn clean install # 启动网关服务 cd wm-gateway mvn spring-boot:run # 启动基础服务 cd ../wm-base mvn spring-boot:run # 启动其他服务... ``` ### 端口配置 | 服务 | 端口 | 说明 | |------|------|------| | Gateway | 8080 | API 网关 | | wm-base | 8081 | 基础服务 | | wm-iot | 8082 | 物联网服务 | | wm-data-engine | 8083 | 数据引擎 | | wm-bpm | 8084 | 流程管理 | | wm-production | 8085 | 生产管理 | | wm-revenue | 8086 | 营业收费 | | wm-patrol | 8087 | 巡检服务 | | wm-bi | 8088 | 大数据 | | wm-notify | 8089 | 通知服务 | | wm-job | 8090 | 任务调度 | | Redis | 6379 | 缓存服务 | | PostgreSQL | 5432 | 数据库 | | TDengine | 6030 | 时序数据库 | | Kafka | 9092 | 消息队列 | | Elasticsearch | 9200 | 搜索引擎 | | MinIO | 9000 | 对象存储 | | EMQX | 1883 | MQTT 服务器 | | Nacos | 8848 | 配置中心 | | Prometheus | 9090 | 监控 | | Grafana | 3000 | 可视化监控 | | SkyWalking | 8080 | 分布式追踪 | | GeoServer | 8082 | GIS 服务 | ### Nacos 配置 1. 访问 Nacos 控制台: http://localhost:8848/nacos 2. 默认账户密码: nacos/nacos 3. 创建命名空间: water-management 4. 配置文件: - gateway-common-config.yml - base-common-config.yml - 各服务配置 ### 数据库配置 1. **MySQL** (基础数据) ```sql CREATE DATABASE water_management; USE water_management; -- 导入基础表结构 ``` 2. **PostgreSQL** (GIS 数据) ```sql CREATE DATABASE water_management_postgis; -- 启用 PostGIS 扩展 ``` 3. **TDengine** (时序数据) ```sql CREATE DATABASE water_monitoring; -- 创建数据采集表 ``` ## 开发指南 ### 模块开发规范 1. **服务注册**: 所有服务必须注册到 Nacos 2. **统一认证**: 使用 Sa-Token 进行统一认证 3. **统一响应**: 使用 `R` 统一响应格式 4. **异常处理**: 使用 `GlobalExceptionHandler` 统一异常处理 5. **日志规范**: 使用 SLF4J + Logback 6. **代码规范**: 遵循阿里巴巴 Java 开发手册 ### 配置管理 1. **环境配置**: - application-dev.yml (开发环境) - application-prod.yml (生产环境) 2. **Nacos 配置**: - 公共配置在 base-common-config.yml - 服务特有配置在各服务配置文件 ### 数据库规范 1. **表前缀**: 所有业务表使用 `wm_` 前缀 2. **逻辑删除**: 使用 deleted 字段 (0-未删除, 1-已删除) 3. **分页**: 使用 MyBatis-Plus 分页插件 4. **索引**: 根据查询需求合理创建索引 ### API 规范 1. **RESTful API**: 遵循 REST 设计原则 2. **统一响应**: 所有 API 返回 `R` 格式 3. **错误码**: 统一错误码管理 4. **接口文档**: 使用 Swagger/OpenAPI ## 部署指南 ### 生产环境部署 1. **环境准备** ```bash # 安装 Java 17 # 安装 Docker 和 Docker Compose # 配置 Nginx 反向代理 ``` 2. **编译打包** ```bash mvn clean package -Pprod ``` 3. **Docker 部署** ```bash # 构建镜像 docker build -t water-management-system . # 启动服务 docker-compose -f docker-compose.prod.yml up -d ``` ### 监控和运维 1. **Prometheus**: 监控服务状态 2. **Grafana**: 可视化监控面板 3. **SkyWalking**: 分布式链路追踪 4. **ELK Stack**: 日志收集和分析 ## 贡献指南 1. Fork 项目 2. 创建特性分支 3. 提交更改 4. 发起 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 联系方式 - 项目地址: - 问题反馈: - 技术支持: