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

README.md 5.8KB

数据库文档

数据库设计

数据库架构

1. 收费管理数据库 (water_management.revenue)

-- 用户表
CREATE TABLE users (
    user_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(100) NOT NULL,
    real_name VARCHAR(100),
    email VARCHAR(100),
    phone VARCHAR(20),
    user_type ENUM('PERSONAL', 'ENTERPRISE') DEFAULT 'PERSONAL',
    status ENUM('ACTIVE', 'INACTIVE') DEFAULT 'ACTIVE',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 账单表
CREATE TABLE bills (
    bill_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    bill_number VARCHAR(50) UNIQUE NOT NULL,
    bill_type ENUM('WATER', 'SEWER', 'FEE') NOT NULL,
    billing_period DATE NOT NULL,
    previous_reading DECIMAL(10,2),
    current_reading DECIMAL(10,2),
    usage_amount DECIMAL(10,2),
    unit_price DECIMAL(10,4),
    total_amount DECIMAL(10,2),
    due_date DATE,
    payment_status ENUM('UNPAID', 'PARTIAL', 'PAID', 'OVERDUE') DEFAULT 'UNPAID',
    paid_amount DECIMAL(10,2),
    paid_at TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- 支付记录表
CREATE TABLE payments (
    payment_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    bill_id BIGINT NOT NULL,
    payment_number VARCHAR(50) UNIQUE NOT NULL,
    payment_method ENUM('CASH', 'BANK_TRANSFER', 'WECHAT', 'ALIPAY', 'AUTO_DEBIT'),
    amount DECIMAL(10,2) NOT NULL,
    payment_time TIMESTAMP NOT NULL,
    payment_status ENUM('SUCCESS', 'FAILED', 'PENDING', 'REFUNDED'),
    transaction_id VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (bill_id) REFERENCES bills(bill_id)
);

2. 生产管理数据库 (water_management.production)

-- 设备表
CREATE TABLE equipment (
    equipment_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    equipment_name VARCHAR(100) NOT NULL,
    equipment_type VARCHAR(50) NOT NULL,
    equipment_code VARCHAR(50) UNIQUE NOT NULL,
    location VARCHAR(200),
    status ENUM('ACTIVE', 'INACTIVE', 'MAINTENANCE', 'BROKEN'),
    installation_date DATE,
    last_maintenance_date DATE,
    next_maintenance_date DATE,
    specifications JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 生产计划表
CREATE TABLE production_plans (
    plan_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    plan_name VARCHAR(100) NOT NULL,
    plan_type ENUM('DAILY', 'WEEKLY', 'MONTHLY', 'QUARTERLY'),
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    target_output DECIMAL(10,2),
    actual_output DECIMAL(10,2),
    status ENUM('PLANNED', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'),
    created_by BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (created_by) REFERENCES users(user_id)
);

-- 生产记录表
CREATE TABLE production_records (
    record_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    plan_id BIGINT NOT NULL,
    equipment_id BIGINT NOT NULL,
    production_date DATE NOT NULL,
    shift ENUM('MORNING', 'AFTERNOON', 'NIGHT'),
    target_quantity DECIMAL(10,2),
    actual_quantity DECIMAL(10,2),
    quality_score DECIMAL(5,2),
    energy_consumption DECIMAL(10,2),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (plan_id) REFERENCES production_plans(plan_id),
    FOREIGN KEY (equipment_id) REFERENCES equipment(equipment_id)
);

3. DMA管理数据库 (water_management.dma)

-- DMA区域表
CREATE TABLE dma_areas (
    dma_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    dma_name VARCHAR(100) NOT NULL,
    dma_code VARCHAR(50) UNIQUE NOT NULL,
    area_size DECIMAL(10,2),
    population_count INT,
    customer_count INT,
    pressure_zone VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 监测点表
CREATE TABLE monitoring_points (
    point_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    dma_id BIGINT NOT NULL,
    point_name VARCHAR(100) NOT NULL,
    point_type ENUM('PRESSURE', 'FLOW', 'QUALITY', 'LEAK'),
    location VARCHAR(200),
    coordinates JSON,
    installation_date DATE,
    last_calibration_date DATE,
    status ENUM('ACTIVE', 'INACTIVE', 'MAINTENANCE'),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (dma_id) REFERENCES dma_areas(dma_id)
);

-- 流量记录表
CREATE TABLE flow_records (
    record_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    point_id BIGINT NOT NULL,
    flow_rate DECIMAL(10,2),
    pressure DECIMAL(10,2),
    temperature DECIMAL(5,2),
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_score DECIMAL(5,2),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (point_id) REFERENCES monitoring_points(point_id)
);

-- 报警记录表
CREATE TABLE alarms (
    alarm_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    point_id BIGINT NOT NULL,
    alarm_type ENUM('HIGH_PRESSURE', 'LOW_PRESSURE', 'HIGH_FLOW', 'LOW_FLOW', 'LEAK', 'QUALITY'),
    severity ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL'),
    threshold_value DECIMAL(10,2),
    actual_value DECIMAL(10,2),
    status ENUM('ACTIVE', 'ACKNOWLEDGED', 'RESOLVED'),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    resolved_at TIMESTAMP,
    resolved_by BIGINT,
    FOREIGN KEY (point_id) REFERENCES monitoring_points(point_id),
    FOREIGN KEY (resolved_by) REFERENCES users(user_id)
);

自动生成于 2026-06-16