feat: 实现应急推演功能(爆管模拟+水质异常处置预案)
- 新增 EmergencySimulationService 应急推演核心服务
- 新增 EmergencyPlanService 应急预案管理服务
- 新增 EmergencyDispatchService 应急调度协调服务
- 新增相关 Controller 类提供 REST API
- 新增数据库表结构和初始化数据
- 新增测试脚本和使用指南
- 实现爆管模拟、水质异常处置、预案管理等核心功能
Addresses Issue #70
提交ID: 9f5af5db6e
This commit is contained in:
@@ -0,0 +1,357 @@
|
||||
# 应急推演功能使用指南
|
||||
|
||||
## 功能概述
|
||||
|
||||
本功能实现了 Issue #70 要求的"应急推演(爆管模拟 + 水质异常处置预案)",包括:
|
||||
|
||||
1. **爆管模拟**:分析爆管影响区域、关阀方案、受影响用户、恢复时间
|
||||
2. **水质异常处置**:停水方案、备用水源、风险等级评估
|
||||
3. **预案管理**:应急预案的创建、应用和管理
|
||||
4. **应急响应**:基于推演结果生成调度指令
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 核心组件
|
||||
|
||||
- **EmergencySimulationService**: 应急推演核心服务
|
||||
- **EmergencyPlanService**: 应急预案管理服务
|
||||
- **EmergencyDispatchService**: 应急调度服务
|
||||
- **EmergencySimulationController**: 推演API控制器
|
||||
- **EmergencyPlanController**: 预案API控制器
|
||||
- **EmergencyDispatchController**: 调度API控制器
|
||||
|
||||
### 数据库表
|
||||
|
||||
- `prod_emergency_simulation`: 应急推演记录表
|
||||
- `prod_emergency_plan`: 应急预案表
|
||||
|
||||
### 主要功能流程
|
||||
|
||||
1. 创建推演 → 执行推演 → 生成调度指令 → 应用应急预案 → 完成响应
|
||||
|
||||
## API接口文档
|
||||
|
||||
### 1. 快速爆管模拟
|
||||
|
||||
```bash
|
||||
POST /api/emergency/dispatch/quick-pipe-burst
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"lng": 116.4074,
|
||||
"lat": 39.9042,
|
||||
"pipeDiameter": "DN100",
|
||||
"operatorName": "operator_name"
|
||||
}
|
||||
```
|
||||
|
||||
响应示例:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"simulation": {
|
||||
"simulationNo": "SIM-20240614010001",
|
||||
"scenarioType": "pipe_burst",
|
||||
"scenarioName": "爆管应急推演",
|
||||
"affectedArea": "半径500m圆形区域",
|
||||
"affectedCustomers": 230,
|
||||
"estimatedRecoveryHours": 4,
|
||||
"status": "completed"
|
||||
},
|
||||
"executionResult": {
|
||||
"impactAnalysis": {
|
||||
"affectedArea": "半径500m圆形区域",
|
||||
"affectedCustomers": 230,
|
||||
"estimatedRecoveryHours": 4
|
||||
},
|
||||
"emergencyMeasures": {
|
||||
"valveShutdown": "关闭上游阀门 V-001, V-002",
|
||||
"emergencyWater": "启动应急供水方案 B",
|
||||
"userNotification": "通知受影响用户(短信+公告)",
|
||||
"repairTeam": "调度抢修队出发"
|
||||
}
|
||||
},
|
||||
"suggestedCommands": [
|
||||
{
|
||||
"title": "爆管应急推演",
|
||||
"type": "emergency",
|
||||
"priority": "high",
|
||||
"content": "爆管应急响应..."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 快速水质异常模拟
|
||||
|
||||
```bash
|
||||
POST /api/emergency/dispatch/quick-water-quality
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"area": "市中心区域",
|
||||
"pollutant": "重金属",
|
||||
"lng": 116.4074,
|
||||
"lat": 39.9042,
|
||||
"operatorName": "operator_name"
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 应急预案管理
|
||||
|
||||
```bash
|
||||
# 创建预案
|
||||
POST /api/emergency/plan/create
|
||||
?planName=预案名称&planType=disaster&scenario=爆管&operatorName=operator_name
|
||||
|
||||
# 激活预案
|
||||
POST /api/emergency/plan/{planId}/activate
|
||||
?operatorName=operator_name
|
||||
|
||||
# 查询预案列表
|
||||
GET /api/emergency/plan/list
|
||||
?page=1&size=10&planType=all&status=active
|
||||
```
|
||||
|
||||
### 4. 应急状态查询
|
||||
|
||||
```bash
|
||||
GET /api/emergency/dispatch/status
|
||||
```
|
||||
|
||||
响应示例:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"status": {
|
||||
"alertLevel": "medium",
|
||||
"preparednessScore": 85,
|
||||
"recentSimulations": [...],
|
||||
"activePlans": [...],
|
||||
"activeCommands": [...]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5. 生成应急报告
|
||||
|
||||
```bash
|
||||
GET /api/emergency/dispatch/report?period=week
|
||||
```
|
||||
|
||||
## 数据模型
|
||||
|
||||
### EmergencySimulation(应急推演记录)
|
||||
|
||||
| 字段 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| simulationNo | String | 推演编号 |
|
||||
| scenarioType | String | 推演类型(pipe_burst/water_quality) |
|
||||
| scenarioName | String | 推演名称 |
|
||||
| locationLng | Double | 经度 |
|
||||
| locationLat | Double | 纬度 |
|
||||
| pipeDiameter | String | 管道直径 |
|
||||
| affectedArea | String | 影响区域 |
|
||||
| affectedCustomers | Integer | 受影响用户数 |
|
||||
| estimatedRecoveryHours | Integer | 预计恢复时间 |
|
||||
| status | String | 状态(draft/executing/completed/with_plan) |
|
||||
|
||||
### EmergencyPlan(应急预案)
|
||||
|
||||
| 字段 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| planNo | String | 预案编号 |
|
||||
| planName | String | 预案名称 |
|
||||
| planType | String | 预案类型(disaster/accident/emergency) |
|
||||
| scenario | String | 适用场景 |
|
||||
| triggerConditions | String | 触发条件 |
|
||||
| responseProcedure | String | 响应流程 |
|
||||
| responsibleDepartments | String | 责任部门 |
|
||||
| contactInfo | String | 联系信息 |
|
||||
| resourceRequirements | String | 资源需求 |
|
||||
| backupSolutions | String | 备用方案 |
|
||||
| status | String | 状态(draft/active/inactive/expired) |
|
||||
|
||||
## 业务流程
|
||||
|
||||
### 爆管应急响应流程
|
||||
|
||||
1. **触发条件检测**
|
||||
- 管道压力异常波动
|
||||
- 地面出现喷水现象
|
||||
- 用户报告大面积停水
|
||||
- 系统监测到漏水量异常
|
||||
|
||||
2. **影响分析**
|
||||
- 基于管道直径计算影响半径
|
||||
- 计算受影响用户数量
|
||||
- 生成关阀方案
|
||||
|
||||
3. **应急措施**
|
||||
- 关闭上游阀门
|
||||
- 启动应急供水方案
|
||||
- 通知受影响用户
|
||||
- 调度抢修队
|
||||
|
||||
4. **恢复重建**
|
||||
- 组织抢修
|
||||
- 水质检测
|
||||
- 恢复供水
|
||||
- 用户通知
|
||||
|
||||
### 水质异常应急响应流程
|
||||
|
||||
1. **触发条件检测**
|
||||
- 水质检测指标超标
|
||||
- 用户反映水质异常
|
||||
- 上游水源污染报告
|
||||
- 系统监测到浊度/色度异常
|
||||
|
||||
2. **影响分析**
|
||||
- 评估污染程度和范围
|
||||
- 确定风险等级
|
||||
- 选择备用水源
|
||||
|
||||
3. **应急措施**
|
||||
- 立即停止异常区域供水
|
||||
- 启动备用水源
|
||||
- 水质采样送检
|
||||
- 发布停水通知
|
||||
|
||||
4. **恢复重建**
|
||||
- 水质达标后恢复供水
|
||||
- 清洗管道系统
|
||||
- 用户通知和解释
|
||||
|
||||
## 预警级别定义
|
||||
|
||||
### 警报级别
|
||||
|
||||
- **低级**(low):日常监测,无需特别关注
|
||||
- **中级**(medium):有推演记录,需要关注
|
||||
- **高级**(high):高风险事件,需要立即响应
|
||||
|
||||
### 风险等级(水质异常)
|
||||
|
||||
- **中等**(medium):一般污染物影响,2-4小时恢复
|
||||
- **高**(high):较严重污染物,4-8小时恢复
|
||||
- **严重**(critical):剧毒污染物,8小时以上恢复
|
||||
|
||||
## 系统集成
|
||||
|
||||
### 与现有调度系统集成
|
||||
|
||||
1. **DispatchCommandService**: 生成调度指令
|
||||
2. **DispatchTrackingService**: 跟踪指令执行
|
||||
3. **AlertEngine**: 警报系统集成
|
||||
|
||||
### 与其他系统集成
|
||||
|
||||
- **用户服务**: 获取用户信息
|
||||
- **通知服务**: 发送用户通知
|
||||
- **GIS服务**: 地理信息分析
|
||||
- **物联网平台**: 设备状态监控
|
||||
|
||||
## 测试和验证
|
||||
|
||||
### 自动化测试
|
||||
|
||||
运行测试脚本验证功能:
|
||||
```bash
|
||||
cd water-management-system
|
||||
python test_emergency_simulation.py
|
||||
```
|
||||
|
||||
### 手动测试清单
|
||||
|
||||
- [x] 爆管模拟创建和执行
|
||||
- [x] 水质异常模拟创建和执行
|
||||
- [x] 应急预案创建和管理
|
||||
- [x] 应急状态查询
|
||||
- [x] 应急报告生成
|
||||
- [x] 调度指令生成和应用
|
||||
- [x] 数据库完整性检查
|
||||
|
||||
## 部署和配置
|
||||
|
||||
### 数据库迁移
|
||||
|
||||
```sql
|
||||
-- 执行数据库迁移脚本
|
||||
psql -d water_management -f wm-production/src/main/resources/db/V3__emergency_simulation.sql
|
||||
psql -d water_management -f wm-production/src/main/resources/db/V3__emergency_simulation_data.sql
|
||||
```
|
||||
|
||||
### Spring Boot 配置
|
||||
|
||||
在 `application.yml` 中添加:
|
||||
```yaml
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:postgresql://localhost:5432/water_management
|
||||
username: water_user
|
||||
password: water_pass
|
||||
```
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **数据库连接失败**
|
||||
- 检查数据库配置
|
||||
- 确认数据库服务运行
|
||||
|
||||
2. **API接口返回500错误**
|
||||
- 检查日志文件
|
||||
- 确认参数格式正确
|
||||
|
||||
3. **推演结果异常**
|
||||
- 检查输入参数
|
||||
- 确认地理坐标有效
|
||||
|
||||
### 日志查看
|
||||
|
||||
```bash
|
||||
# 查看应用日志
|
||||
tail -f logs/wm-production.log
|
||||
|
||||
# 查看数据库日志
|
||||
tail -f postgresql.log
|
||||
```
|
||||
|
||||
## 扩展功能
|
||||
|
||||
### 未来规划
|
||||
|
||||
1. **AI驱动的智能推演**
|
||||
- 机器学习预测影响范围
|
||||
- 智能推荐最佳方案
|
||||
|
||||
2. **3D可视化**
|
||||
- 三维地理信息展示
|
||||
- 实时监控和预警
|
||||
|
||||
3. **移动端支持**
|
||||
- 手机端应急响应
|
||||
- 现场数据采集
|
||||
|
||||
### 性能优化
|
||||
|
||||
1. **缓存机制**
|
||||
- 缓存常用预案
|
||||
- 缓存地理信息
|
||||
|
||||
2. **异步处理**
|
||||
- 推演任务异步执行
|
||||
- 推送通知异步处理
|
||||
|
||||
3. **负载均衡**
|
||||
- 分布式部署
|
||||
- 负载均衡配置
|
||||
|
||||
## 联系支持
|
||||
|
||||
如有问题请联系:
|
||||
- 开发团队:dev-team@water.com
|
||||
- 技术支持:support@water.com
|
||||
- 紧急联系:400-123-4567
|
||||
Reference in New Issue
Block a user