# 设计规范 ## 5.5 供水生产-水质管控 ### 5.5.1 药剂投加管控模块 #### 数据库设计 ```sql -- 药剂投加站点表 CREATE TABLE water_quality_station ( id BIGSERIAL PRIMARY KEY, station_name VARCHAR(100) NOT NULL, station_type VARCHAR(50) NOT NULL, -- '一体化', '八家户', '查村', '沙山子', '大河沿子镇' location_x DECIMAL(10,6), location_y DECIMAL(10,6), status VARCHAR(20) DEFAULT 'ACTIVE', created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 药剂投加记录表 CREATE TABLE chemical_dosing_record ( id BIGSERIAL PRIMARY KEY, station_id BIGINT REFERENCES water_quality_station(id), chemical_type VARCHAR(50) NOT NULL, -- '絮凝剂', '消毒剂', '其他' dosage_amount DECIMAL(10,3) NOT NULL, dosage_unit VARCHAR(20) NOT NULL, operator_name VARCHAR(100), record_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) DEFAULT 'NORMAL' ); -- 工艺监控参数表 CREATE TABLE process_monitoring_params ( id BIGSERIAL PRIMARY KEY, station_id BIGINT REFERENCES water_quality_station(id), param_name VARCHAR(100) NOT NULL, param_value DECIMAL(12,3), param_unit VARCHAR(20), normal_min DECIMAL(12,3), normal_max DECIMAL(12,3), record_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) DEFAULT 'NORMAL' -- 'NORMAL', 'WARNING', 'ALARM' ); ``` #### API接口 ``` # 药剂投加站点管理 GET /api/v1/water-quality/stations # 获取站点列表 POST /api/v1/water-quality/stations # 创建站点 PUT /api/v1/water-quality/stations/{id} # 更新站点 DELETE /api/v1/water-quality/stations/{id} # 删除站点 # 药剂投加记录 POST /api/v1/water-quality/chemical-records # 记录投加信息 GET /api/v1/water-quality/chemical-records # 获取投加记录 PUT /api/v1/water-quality/chemical-records/{id} # 更新记录 # 工艺监控参数 POST /api/v1/water-quality/process-params # 记录工艺参数 GET /api/v1/water-quality/process-params # 获取工艺参数 GET /api/v1/water-quality/process-params/{stationId} # 获取指定站点工艺参数 ``` #### 前端组件 ``` WaterQualityStation.vue -- 站点管理页面 ChemicalDosingRecord.vue -- 药剂投加记录 ProcessMonitoring.vue -- 工艺监控面板 ``` ### 5.5.2 水质监测管理模块 #### 数据库设计 ```sql -- 水质检测项目表 CREATE TABLE water_quality_test_item ( id BIGSERIAL PRIMARY KEY, item_name VARCHAR(100) NOT NULL, item_code VARCHAR(50) UNIQUE NOT NULL, test_method VARCHAR(200), normal_range_min DECIMAL(10,3), normal_range_max DECIMAL(10,3), unit VARCHAR(20), is_active BOOLEAN DEFAULT true, created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 人工检测记录表 CREATE TABLE manual_water_quality_test ( id BIGSERIAL PRIMARY KEY, station_id BIGINT REFERENCES water_quality_station(id), test_date DATE NOT NULL, test_items JSONB NOT NULL, -- {itemId: value} 的JSON格式 tester_name VARCHAR(100) NOT NULL, remarks TEXT, status VARCHAR(20) DEFAULT 'PENDING', created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 自动监测数据表 CREATE TABLE auto_water_quality_data ( id BIGSERIAL PRIMARY KEY, station_id BIGINT REFERENCES water_quality_station(id), parameter_code VARCHAR(50) NOT NULL, parameter_value DECIMAL(12,3), unit VARCHAR(20), data_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, data_quality VARCHAR(20) DEFAULT 'GOOD', device_id VARCHAR(100) ); ``` #### API接口 ``` # 水质检测项目管理 GET /api/v1/water-quality/test-items # 获取检测项目列表 POST /api/v1/water-quality/test-items # 创建检测项目 PUT /api/v1/water-quality/test-items/{id} # 更新检测项目 # 人工检测记录 POST /api/v1/water-quality/manual-tests # 创建人工检测记录 GET /api/v1/water-quality/manual-tests # 获取人工检测记录 PUT /api/v1/water-quality/manual-tests/{id} # 更新人工检测记录 # 自动监测数据 GET /api/v1/water-quality/auto-data # 获取自动监测数据 GET /api/v1/water-quality/auto-data/{stationId} # 获取指定站点监测数据 ``` #### 前端组件 ``` ManualTestManagement.vue -- 人工检测管理 AutoMonitoring.vue -- 自动监测展示 WaterQualityReport.vue -- 水质报表 ``` ## 5.3 报警管理中心 ### 数据库设计 ```sql -- 报警类型表 CREATE TABLE alarm_type ( id BIGSERIAL PRIMARY KEY, type_name VARCHAR(100) NOT NULL, type_code VARCHAR(50) UNIQUE NOT NULL, severity VARCHAR(20) NOT NULL, -- 'LOW', 'MEDIUM', 'HIGH', 'CRITICAL' description TEXT, is_active BOOLEAN DEFAULT true, created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 报警记录表 CREATE TABLE alarm_record ( id BIGSERIAL PRIMARY KEY, alarm_type_id BIGINT REFERENCES alarm_type(id), station_id BIGINT REFERENCES water_quality_station(id), alarm_code VARCHAR(50) NOT NULL, alarm_title VARCHAR(200) NOT NULL, alarm_content TEXT, severity VARCHAR(20) NOT NULL, alarm_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, confirm_time TIMESTAMP, confirm_user_id BIGINT, confirm_remarks TEXT, status VARCHAR(20) DEFAULT 'ACTIVE' -- 'ACTIVE', 'CONFIRMED', 'RESOLVED', 'CLOSED' ); -- 报警处理记录表 CREATE TABLE alarm_handle_record ( id BIGSERIAL PRIMARY KEY, alarm_id BIGINT REFERENCES alarm_record(id), handler_id BIGINT NOT NULL, handle_type VARCHAR(50) NOT NULL, -- 'CONFIRM', 'PROCESS', 'RESOLVE' handle_content TEXT, handle_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` #### API接口 ``` # 报警总览 GET /api/v1/alarms/overview # 获取报警统计 GET /api/v1/alarms/types # 获取报警类型 GET /api/v1/alarms/records # 获取报警记录列表 # 实时报警 GET /api/v1/alarms/active # 获取活跃报警 PUT /api/v1/alarms/{id}/confirm # 确认报警 PUT /api/v1/alarms/{id}/resolve # 解决报警 # 历史报警 GET /api/v1/alarms/history # 获取历史报警 GET /api/v1/alarms/{id}/details # 获取报警详情 ``` #### 前端组件 ``` AlarmOverview.vue -- 报警总览页面 ActiveAlarm.vue -- 实时报警监控 AlarmHistory.vue -- 历史报警查询 AlarmDetail.vue -- 报警详情页面 ``` ## 数据流图 ### 水质管控数据流 ``` IoT设备 → 实时数据采集 → 数据处理 → 阈值判断 → 报警触发 → 通知推送 ↓ 用户手动录入 → 数据验证 → 存入数据库 → 展示在界面 ``` ### 报警管理数据流 ``` 报警事件 → 实时监控 → 报警分类 → 状态流转 → 处理记录 → 归档统计 ``` ## 前端组件树 ``` WaterManagementSystem/ ├── views/ │ ├── WaterQuality/ │ │ ├── StationList.vue -- 站点列表 │ │ ├── StationDetail.vue -- 站点详情 │ │ ├── ChemicalDosing.vue -- 药剂投加 │ │ ├── ProcessMonitoring.vue -- 工艺监控 │ │ ├── ManualTest.vue -- 人工检测 │ │ ├── AutoMonitoring.vue -- 自动监测 │ │ └── QualityReport.vue -- 质量报表 │ ├── AlarmManagement/ │ │ ├── AlarmOverview.vue -- 报警总览 │ │ ├── ActiveAlarm.vue -- 实时报警 │ │ ├── AlarmHistory.vue -- 历史报警 │ │ └── AlarmDetail.vue -- 报警详情 │ └── Dashboard/ │ └── WaterQualityDashboard.vue -- 水质管理总览 ├── components/ │ ├── WaterQuality/ │ │ ├── StationCard.vue -- 站点卡片 │ │ ├── ProcessChart.vue -- 工艺图表 │ │ └── QualityChart.vue -- 质量图表 │ └── Alarm/ │ ├── AlarmCard.vue -- 报警卡片 │ ├── AlarmTimeline.vue -- 报警时间线 │ └── SeverityIndicator.vue -- 严重程度指示器 └── store/ ├── modules/ │ ├── waterQuality.js -- 水质管理模块 │ └── alarm.js -- 报警管理模块 ``` ## 技术栈 - 后端:Spring Boot 3.x + MyBatis-Plus + Redis - 前端:Vue 3 + TypeScript + Element Plus + ECharts - 数据库:PostgreSQL 16 + PostGIS - 消息队列:Redis Stream - 实时通信:WebSocket - 部署:Docker + Docker Compose