创建了数据库表单

- 用户表 (user)
sql
CREATE TABLE user (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
real_name VARCHAR(50) NOT NULL,
phone VARCHAR(20),
email VARCHAR(100),
role ENUM('admin', 'engineer', 'repair_level2') NOT NULL,
status ENUM('active', 'inactive') DEFAULT 'active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
); - 车站表 (station)
sql
CREATE TABLE station (
station_id INT PRIMARY KEY AUTO_INCREMENT,
station_name VARCHAR(100) NOT NULL,
station_code VARCHAR(20) NOT NULL UNIQUE,
location VARCHAR(200),
status ENUM('active', 'inactive') DEFAULT 'active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
); - 设备表 (equipment)
sql
CREATE TABLE equipment (
equipment_id INT PRIMARY KEY AUTO_INCREMENT,
equipment_name VARCHAR(100) NOT NULL,
equipment_code VARCHAR(50) NOT NULL UNIQUE,
equipment_type VARCHAR(50) NOT NULL,
station_id INT NOT NULL,
status ENUM('normal', 'abnormal', 'maintaining', 'scrapped') DEFAULT 'normal',
install_date DATE,
manufacturer VARCHAR(100),
model VARCHAR(100),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (station_id) REFERENCES station(station_id)
); - 备件表 (spare_part)
sql
CREATE TABLE spare_part (
part_id INT PRIMARY KEY AUTO_INCREMENT,
part_name VARCHAR(100) NOT NULL,
part_code VARCHAR(50) NOT NULL UNIQUE,
part_type VARCHAR(50) NOT NULL,
model VARCHAR(100),
manufacturer VARCHAR(100),
status ENUM('good', 'bad', 'in_use', 'scrapped') DEFAULT 'good',
quantity INT DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
); - 工程师表 (engineer)
sql
CREATE TABLE engineer (
engineer_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
station_id INT,
skill_level VARCHAR(50),
certification VARCHAR(100),
status ENUM('available', 'busy', 'offline') DEFAULT 'available',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (station_id) REFERENCES station(station_id)
); - 报修单表 (fault_report)
sql
CREATE TABLE fault_report (
report_id INT PRIMARY KEY AUTO_INCREMENT,
report_code VARCHAR(50) NOT NULL UNIQUE,
station_id INT NOT NULL,
equipment_id INT NOT NULL,
reporter_id INT NOT NULL,
fault_type VARCHAR(50) NOT NULL,
fault_level ENUM('low', 'medium', 'high', 'critical') NOT NULL,
fault_description TEXT,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (station_id) REFERENCES station(station_id),
FOREIGN KEY (equipment_id) REFERENCES equipment(equipment_id),
FOREIGN KEY (reporter_id) REFERENCES user(user_id)
); - 维修单表 (repair_order)
sql
CREATE TABLE repair_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_code VARCHAR(50) NOT NULL UNIQUE,
report_id INT NOT NULL,
assignee_id INT NOT NULL,
start_time DATETIME,
end_time DATETIME,
repair_description TEXT,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (report_id) REFERENCES fault_report(report_id),
FOREIGN KEY (assignee_id) REFERENCES user(user_id)
); - 巡检单表 (inspection_order)
sql
CREATE TABLE inspection_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_code VARCHAR(50) NOT NULL UNIQUE,
station_id INT NOT NULL,
assignee_id INT,
inspection_type VARCHAR(50) NOT NULL,
planned_time DATETIME NOT NULL,
start_time DATETIME,
end_time DATETIME,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (station_id) REFERENCES station(station_id),
FOREIGN KEY (assignee_id) REFERENCES user(user_id)
); - 保养单表 (maintenance_order)
sql
CREATE TABLE maintenance_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_code VARCHAR(50) NOT NULL UNIQUE,
station_id INT NOT NULL,
assignee_id INT,
maintenance_type VARCHAR(50) NOT NULL,
planned_time DATETIME NOT NULL,
start_time DATETIME,
end_time DATETIME,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (station_id) REFERENCES station(station_id),
FOREIGN KEY (assignee_id) REFERENCES user(user_id)
); - 检修单表 (check_order)
sql
CREATE TABLE check_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_code VARCHAR(50) NOT NULL UNIQUE,
station_id INT NOT NULL,
assignee_id INT,
check_type VARCHAR(50) NOT NULL,
planned_time DATETIME NOT NULL,
start_time DATETIME,
end_time DATETIME,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (station_id) REFERENCES station(station_id),
FOREIGN KEY (assignee_id) REFERENCES user(user_id)
); - 备件单表 (spare_part_order)
sql
CREATE TABLE spare_part_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_code VARCHAR(50) NOT NULL UNIQUE,
part_id INT NOT NULL,
assignee_id INT,
fault_description TEXT,
repair_description TEXT,
status ENUM('pending', 'processing', 'completed', 'closed') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (part_id) REFERENCES spare_part(part_id),
FOREIGN KEY (assignee_id) REFERENCES user(user_id)
); - 照片表 (photo) - 用于存储所有模块的照片
sql
CREATE TABLE photo (
photo_id INT PRIMARY KEY AUTO_INCREMENT,
related_type ENUM('fault_report', 'repair_order', 'inspection_order', 'maintenance_order', 'check_order', 'spare_part_order') NOT NULL,
related_id INT NOT NULL,
photo_url VARCHAR(255) NOT NULL,
photo_time DATETIME NOT NULL,
photo_type ENUM('before', 'after', 'during') NOT NULL,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
reject_reason VARCHAR(255),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
); - 时间线表 (timeline) - 用于记录所有工单的处理时间线
sql
CREATE TABLE timeline (
timeline_id INT PRIMARY KEY AUTO_INCREMENT,
related_type ENUM('fault_report', 'repair_order', 'inspection_order', 'maintenance_order', 'check_order', 'spare_part_order') NOT NULL,
related_id INT NOT NULL,
action_type VARCHAR(50) NOT NULL,
action_description TEXT,
operator_id INT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (operator_id) REFERENCES user(user_id)
);