本项目使用 PostgreSQL 作为主数据库,支持水质管控与报警管理系统的核心业务数据存储。
CREATE TABLE water_quality_station (
id BIGSERIAL PRIMARY KEY,
station_name VARCHAR(100) NOT NULL,
location VARCHAR(200) NOT NULL,
station_type VARCHAR(50) NOT NULL CHECK (station_type LIKE 'WQ-%'),
description TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 索引
CREATE INDEX idx_station_name ON water_quality_station(station_name);
CREATE INDEX idx_station_type ON water_quality_station(station_type);
CREATE INDEX idx_location ON water_quality_station(location);
CREATE TABLE chemical_dosing (
id BIGSERIAL PRIMARY KEY,
station_id BIGINT NOT NULL REFERENCES water_quality_station(id),
chemical_type VARCHAR(50) NOT NULL,
dosage DECIMAL(10,3) NOT NULL,
unit VARCHAR(20),
dosing_time TIMESTAMP WITH TIME ZONE,
operator VARCHAR(50),
notes TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 索引
CREATE INDEX idx_chemical_dosing_station_id ON chemical_dosing(station_id);
CREATE INDEX idx_chemical_dosing_chemical_type ON chemical_dosing(chemical_type);
CREATE INDEX idx_chemical_dosing_dosing_time ON chemical_dosing(dosing_time);
CREATE TABLE process_parameter (
id BIGSERIAL PRIMARY KEY,
station_id BIGINT NOT NULL REFERENCES water_quality_station(id),
parameter_type VARCHAR(100) NOT NULL,
value DECIMAL(12,4) NOT NULL,
unit VARCHAR(20),
upper_limit DECIMAL(12,4),
lower_limit DECIMAL(12,4),
alarm_threshold DECIMAL(12,4),
measurement_time TIMESTAMP WITH TIME ZONE,
status VARCHAR(20) DEFAULT 'NORMAL' CHECK (status IN ('NORMAL', 'WARNING', 'ALARM')),
notes TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 索引
CREATE INDEX idx_process_parameter_station_id ON process_parameter(station_id);
CREATE INDEX idx_process_parameter_parameter_type ON process_parameter(parameter_type);
CREATE INDEX idx_process_parameter_measurement_time ON process_parameter(measurement_time);
CREATE INDEX idx_process_parameter_alarm_threshold ON process_parameter(alarm_threshold);
CREATE TABLE water_quality_alarm (
id BIGSERIAL PRIMARY KEY,
station_id BIGINT NOT NULL REFERENCES water_quality_station(id),
alarm_type VARCHAR(100) NOT NULL,
alarm_level VARCHAR(20) NOT NULL CHECK (alarm_level IN ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL')),
alarm_message TEXT NOT NULL,
alarm_time TIMESTAMP WITH TIME ZONE,
acknowledge_time TIMESTAMP WITH TIME ZONE,
resolve_time TIMESTAMP WITH TIME ZONE,
status VARCHAR(20) DEFAULT 'ACTIVE' CHECK (status IN ('ACTIVE', 'ACKNOWLEDGED', 'RESOLVED')),
operator VARCHAR(50),
acknowledge_notes TEXT,
resolve_notes TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 索引
CREATE INDEX idx_alarm_station_id ON water_quality_alarm(station_id);
CREATE INDEX idx_alarm_alarm_level ON water_quality_alarm(alarm_level);
CREATE INDEX idx_alarm_alarm_type ON water_quality_alarm(alarm_type);
CREATE INDEX idx_alarm_alarm_time ON water_quality_alarm(alarm_time);
CREATE INDEX idx_alarm_status ON water_quality_alarm(status);
-- 初始化水质监测站点
INSERT INTO water_quality_station (station_name, location, station_type, description) VALUES
('一体化水厂', '精河县一体化水厂', 'WQ-01', '精河县主要供水水厂'),
('八家户水厂', '精河县八家户乡', 'WQ-01', '八家户区域供水水厂'),
('查村水厂', '精河县查干莫墩乡', 'WQ-01', '查村区域供水水厂'),
('沙山子水厂', '精河县沙山子镇', 'WQ-01', '沙山子区域供水水厂'),
('大河沿子镇水厂', '精河县大河沿子镇', 'WQ-01', '大河沿子区域供水水厂');
-- 初始化药剂投加记录
INSERT INTO chemical_dosing (station_id, chemical_type, dosage, unit, dosing_time, operator) VALUES
(1, '絮凝剂', 10.5, 'mg/L', NOW(), '系统自动'),
(1, '消毒剂', 2.0, 'mg/L', NOW(), '系统自动'),
(2, '絮凝剂', 12.0, 'mg/L', NOW(), '系统自动'),
(3, '絮凝剂', 8.5, 'mg/L', NOW(), '系统自动');
-- 初始化工艺监控参数
INSERT INTO process_parameter (station_id, parameter_type, value, unit, upper_limit, lower_limit, alarm_threshold, measurement_time) VALUES
(1, '进水浊度', 5.2, 'NTU', 10.0, 0.0, 8.0, NOW()),
(1, '沉淀池液位', 3.5, 'm', 5.0, 1.0, 4.5, NOW()),
(1, '滤池压力', 0.4, 'MPa', 0.6, 0.1, 0.5, NOW()),
(1, '余氯', 0.3, 'mg/L', 0.5, 0.0, 0.4, NOW());
-- 初始化报警记录
INSERT INTO water_quality_alarm (station_id, alarm_type, alarm_level, alarm_message, alarm_time, status) VALUES
(1, '水质超标', 'HIGH', '进水浊度超过警戒值(8.0 NTU)', NOW() - INTERVAL '1 hour', 'ACTIVE'),
(2, '设备故障', 'MEDIUM', '沉淀池液位传感器异常', NOW() - INTERVAL '30 minutes', 'ACKNOWLEDGED'),
(3, '水质异常', 'CRITICAL', '出厂浊度严重超标', NOW() - INTERVAL '15 minutes', 'ACTIVE');
本项目使用 Flyway 进行数据库版本管理: