-- 1. 创建监管实体表 CREATE TABLE IF NOT EXISTS supervision_entities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, type ENUM('farm', 'business', 'facility') NOT NULL, address TEXT, contact_person VARCHAR(50), contact_phone VARCHAR(20), status ENUM('active', 'inactive', 'suspended') DEFAULT 'active', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_type (type), INDEX idx_status (status) ); -- 2. 创建检查记录表 CREATE TABLE IF NOT EXISTS inspections ( id INT AUTO_INCREMENT PRIMARY KEY, entity_id INT NOT NULL, inspector_id INT NOT NULL, date DATE NOT NULL, result ENUM('passed', 'failed', 'pending') DEFAULT 'pending', notes TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (entity_id) REFERENCES supervision_entities(id), INDEX idx_entity (entity_id), INDEX idx_date (date) ); -- 3. 创建违规记录表 CREATE TABLE IF NOT EXISTS violations ( id INT AUTO_INCREMENT PRIMARY KEY, entity_id INT NOT NULL, inspection_id INT, type VARCHAR(50) NOT NULL, description TEXT, status ENUM('reported', 'processed', 'resolved') DEFAULT 'reported', penalty DECIMAL(10,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (entity_id) REFERENCES supervision_entities(id), FOREIGN KEY (inspection_id) REFERENCES inspections(id), INDEX idx_status (status) ); -- 4. 创建审批流程表 CREATE TABLE IF NOT EXISTS approval_workflows ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, description TEXT, steps JSON NOT NULL, created_by INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 5. 创建用户表 CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role ENUM('admin', 'manager', 'inspector', 'clerk') NOT NULL, status ENUM('active', 'inactive') DEFAULT 'active', last_login TIMESTAMP NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );