-- ---------------------------- -- 通用任务管理相关表结构 -- ---------------------------- -- 1. 任务主表 -- ---------------------------- DROP TABLE IF EXISTS sys_task; CREATE TABLE sys_task ( task_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '任务ID', task_code VARCHAR(50) NOT NULL UNIQUE COMMENT '任务编号', task_type VARCHAR(20) NOT NULL COMMENT '任务类型:MAINTENANCE-维修保养,FUEL-加油任务,OTHER-其他', task_status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态:PENDING-待开始,IN_PROGRESS-任务中,COMPLETED-已完成,CANCELLED-已取消', task_description VARCHAR(1000) COMMENT '任务描述', -- 地址信息 departure_address VARCHAR(500) COMMENT '出发地址', destination_address VARCHAR(500) COMMENT '目的地址', -- GPS坐标信息 departure_longitude DECIMAL(10,7) COMMENT '出发地经度', departure_latitude DECIMAL(10,7) COMMENT '出发地纬度', destination_longitude DECIMAL(10,7) COMMENT '目的地经度', destination_latitude DECIMAL(10,7) COMMENT '目的地纬度', estimated_distance DECIMAL(8,2) COMMENT '预计公里数', -- 时间信息 planned_start_time DATETIME COMMENT '计划开始时间', planned_end_time DATETIME COMMENT '计划结束时间', actual_start_time DATETIME COMMENT '实际开始时间', actual_end_time DATETIME COMMENT '实际结束时间', -- 人员信息 creator_id BIGINT NOT NULL COMMENT '创建人ID', assignee_id BIGINT COMMENT '执行人ID', dept_id BIGINT NOT NULL COMMENT '归属部门ID', -- 系统字段 create_time DATETIME NOT NULL COMMENT '创建时间', update_time DATETIME NOT NULL COMMENT '更新时间', create_by VARCHAR(64) NOT NULL COMMENT '创建者', update_by VARCHAR(64) COMMENT '更新者', remark VARCHAR(500) COMMENT '备注', del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', INDEX idx_task_code (task_code), INDEX idx_task_type (task_type), INDEX idx_task_status (task_status), INDEX idx_creator_id (creator_id), INDEX idx_assignee_id (assignee_id), INDEX idx_dept_id (dept_id), INDEX idx_planned_start_time (planned_start_time), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务管理表'; -- 2. 任务车辆关联表 -- ---------------------------- DROP TABLE IF EXISTS sys_task_vehicle; CREATE TABLE sys_task_vehicle ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联ID', task_id BIGINT NOT NULL COMMENT '任务ID', vehicle_id BIGINT NOT NULL COMMENT '车辆ID', assign_time DATETIME NOT NULL COMMENT '分配时间', assign_by VARCHAR(64) NOT NULL COMMENT '分配人', status VARCHAR(20) DEFAULT 'ASSIGNED' COMMENT '关联状态:ASSIGNED-已分配,ACTIVE-执行中,COMPLETED-已完成,CANCELLED-已取消', remark VARCHAR(500) COMMENT '备注', INDEX idx_task_id (task_id), INDEX idx_vehicle_id (vehicle_id), INDEX idx_status (status), INDEX idx_assign_time (assign_time), UNIQUE KEY uk_task_vehicle (task_id, vehicle_id), FOREIGN KEY (task_id) REFERENCES sys_task(task_id) ON DELETE CASCADE, FOREIGN KEY (vehicle_id) REFERENCES tb_vehicle_info(vehicle_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务车辆关联表'; -- 3. 任务附件表 -- ---------------------------- DROP TABLE IF EXISTS sys_task_attachment; CREATE TABLE sys_task_attachment ( attachment_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '附件ID', task_id BIGINT NOT NULL COMMENT '任务ID', file_name VARCHAR(255) NOT NULL COMMENT '文件名', file_path VARCHAR(500) NOT NULL COMMENT '文件路径', file_size BIGINT COMMENT '文件大小(字节)', file_type VARCHAR(50) COMMENT '文件类型', upload_time DATETIME NOT NULL COMMENT '上传时间', upload_by VARCHAR(64) NOT NULL COMMENT '上传者', INDEX idx_task_id (task_id), FOREIGN KEY (task_id) REFERENCES sys_task(task_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务附件表'; -- 4. 任务操作日志表 -- ---------------------------- DROP TABLE IF EXISTS sys_task_log; CREATE TABLE sys_task_log ( log_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID', task_id BIGINT NOT NULL COMMENT '任务ID', operation_type VARCHAR(20) NOT NULL COMMENT '操作类型:CREATE-创建,UPDATE-更新,ASSIGN-分配,STATUS_CHANGE-状态变更,DELETE-删除', operation_desc VARCHAR(500) COMMENT '操作描述', old_value TEXT COMMENT '操作前值', new_value TEXT COMMENT '操作后值', operator_id BIGINT NOT NULL COMMENT '操作人ID', operator_name VARCHAR(64) NOT NULL COMMENT '操作人姓名', operation_time DATETIME NOT NULL COMMENT '操作时间', ip_address VARCHAR(128) COMMENT 'IP地址', INDEX idx_task_id (task_id), INDEX idx_operation_type (operation_type), INDEX idx_operator_id (operator_id), INDEX idx_operation_time (operation_time), FOREIGN KEY (task_id) REFERENCES sys_task(task_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务操作日志表'; -- 5. 更新车辆信息表,添加机构关联字段 -- ---------------------------- ALTER TABLE tb_vehicle_info ADD COLUMN dept_id BIGINT(20) DEFAULT NULL COMMENT '归属机构ID'; ALTER TABLE tb_vehicle_info ADD INDEX idx_dept_id (dept_id); ALTER TABLE tb_vehicle_info ADD FOREIGN KEY (dept_id) REFERENCES sys_dept(dept_id) ON DELETE SET NULL;