供水生产管理平台设计规格
版本信息
- 版本: 1.1.0
- 更新日期: 2026-06-15
- 更新内容: 修复PM退回问题,补充单元测试和完整业务逻辑实现
1. 项目架构
1.1 技术栈
- 框架: Spring Boot 3.2.0
- 数据库: PostgreSQL 16 + H2 (测试)
- ORM: Spring Data JPA
- 安全: Spring Security
- 文档: SpringDoc OpenAPI
- 监控: Actuator + Prometheus
- 任务调度: Quartz
1.2 模块结构
src/main/java/com/waterquality/
├── controller/ # REST API 控制器层
├── service/ # 业务逻辑服务层
├── repository/ # 数据访问层
├── entity/ # JPA 实体类
├── dto/ # 数据传输对象
└── WaterQualityApplication.java # 主应用类
2. 核心功能模块
2.1 水质管控模块
2.1.1 站点管理
- 实体:
WaterQualityStation
- 功能: 管理所有水质监测站点
- 接口:
- 创建/更新/删除站点
- 查询活跃站点
- 按类型筛选站点
- 按位置搜索站点
2.1.2 药剂投加管理
- 实体:
ChemicalDosing
- 功能: 管理絮凝剂、消毒剂等药剂投加记录
- 接口:
- 创建投加记录
- 查询站点药剂投加记录
- 按药剂类型查询
- 按时间范围查询
2.1.3 工艺监控
- 实体:
ProcessParameter
- 功能: 监控关键工艺参数
- 接口:
- 记录工艺参数
- 自动计算参数状态(NORMAL/WARNING/ALARM)
- 查询参数报警阈值
- 历史数据查询
2.2 报警管理中心
2.2.1 报警管理
- 实体:
Alarm
- 功能: 管理水质报警的全生命周期
- 接口:
- 创建报警
- 确认报警
- 解决报警
- 按状态/级别查询
- 未确认/未解决报警查询
2.2.2 报警状态流转
ACTIVE → ACKNOWLEDGED → RESOLVED
3. 数据库设计
3.1 核心表结构
水质监测站点表 (water_quality_station)
- id: 主键
- station_name: 站点名称
- location: 地理位置
- station_type: 站点类型(WQ-01, WQ-02, WQ-03等)
- description: 描述信息
- is_active: 是否活跃
- created_at/updated_at: 时间戳
药剂投加记录表 (chemical_dosing)
- id: 主键
- station_id: 关联站点ID
- chemical_type: 药剂类型
- dosage: 投加量
- unit: 单位
- dosing_time: 投加时间
- operator: 操作员
- notes: 备注
- is_active: 是否活跃
- created_at/updated_at: 时间戳
工艺参数表 (process_parameter)
- id: 主键
- station_id: 关联站点ID
- parameter_type: 参数类型
- value: 参数值
- unit: 单位
- upper_limit: 上限
- lower_limit: 下限
- alarm_threshold: 报警阈值
- status: 状态(NORMAL/WARNING/ALARM)
- measurement_time: 测量时间
- created_at/updated_at: 时间戳
报警记录表 (water_quality_alarm)
- id: 主键
- station_id: 关联站点ID
- alarm_type: 报警类型
- alarm_level: 报警级别
- alarm_message: 报警消息
- alarm_time: 报警时间
- acknowledge_time: 确认时间
- resolve_time: 解决时间
- status: 状态(ACTIVE/ACKNOWLEDGED/RESOLVED)
- operator: 操作员
- acknowledge_notes: 确认备注
- resolve_notes: 解决备注
- created_at/updated_at: 时间戳
3.2 索引策略
- 所有外键建立索引
- 常用查询字段建立索引
- 时间相关字段建立索引
- 状态字段建立索引
4. API 设计
4.1 响应格式
所有API统一返回格式:
{
"success": true,
"message": "操作成功",
"data": {},
"timestamp": 1678901234567
}
4.2 分页规范
- 使用
Page<T> 对象处理分页
- 默认页码:1
- 默认页大小:20
- 最大页大小:100
4.3 错误处理
- 全局异常处理器
- 参数校验失败统一处理
- 数据库异常统一处理
- 业务异常统一处理
5. 安全设计
5.1 认证授权
- JWT Token 认证
- 角色基础访问控制
- 方法级安全注解
5.2 数据安全
- 敏感字段加密
- SQL注入防护
- XSS攻击防护
- CSRF防护
6. 性能优化
6.1 数据库优化
6.2 缓存策略
6.3 异步处理
7. 监控与运维
7.1 应用监控
7.2 数据库监控
- 连接池监控
- 查询性能监控
- 锁等待监控
- 空间使用监控
8. 测试策略
8.1 单元测试
- JUnit 5
- Mockito
- 覆盖率要求:80%+
8.2 集成测试
- Spring Boot Test
- 数据库测试
- API测试
8.3 端到端测试
9. 部署方案
9.1 容器化部署
- Docker
- Docker Compose
- Kubernetes
9.2 环境配置
9.3 配置管理
10. 后续迭代计划
10.1 短期计划(1-2周)
10.2 中期计划(1-3个月)
10.3 长期计划(3-6个月)
11. 代码规范
11.1 编码规范
- 遵循 Google Java Style
- 使用 Lombok 减少样板代码
- 合理使用设计模式
11.2 文档规范
- 详细的API文档
- 代码注释规范
- README 文档
11.3 版本控制
12. 依赖管理
12.1 核心依赖
- Spring Boot 3.2.0
- Spring Data JPA
- PostgreSQL Driver
- Lombok
- MapStruct
12.2 测试依赖
- JUnit 5
- Mockito
- Spring Boot Test
12.3 工具依赖
- Flyway
- Maven Compiler Plugin
- Surefire Plugin
注意: 本文档随着项目开发持续更新,请确保查看最新版本。