智慧水务管理系统 - 精河县供水工程综合管理平台

design-spec.md 8.8KB

设计规范

5.5 供水生产-水质管控

5.5.1 药剂投加管控模块

数据库设计

-- 药剂投加站点表
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 水质监测管理模块

数据库设计

-- 水质检测项目表
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 报警管理中心

数据库设计

-- 报警类型表
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