You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

233 lines
11 KiB
SQL

-- CNC机床数据采集分析系统数据库脚本
-- 创建时间: 2024-01-01
-- 数据库: cnc_business (业务库)
-- 1. 设备管理表
-- 设备信息表
CREATE TABLE `devices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_code` varchar(50) NOT NULL COMMENT '设备编号',
`device_name` varchar(100) NOT NULL COMMENT '设备名称',
`ip_address` varchar(15) NOT NULL COMMENT 'IP地址',
`http_url` varchar(255) NOT NULL COMMENT '采集地址',
`collection_interval` int(11) NOT NULL DEFAULT '60' COMMENT '采集间隔(秒)',
`template_id` int(11) NOT NULL COMMENT '模板ID',
`is_available` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否可用',
`is_online` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否在线',
`last_collection_time` datetime DEFAULT NULL COMMENT '最后采集时间',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_device_code` (`device_code`),
KEY `idx_ip_address` (`ip_address`),
KEY `idx_template_id` (`template_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备信息表';
-- 设备状态表
CREATE TABLE `device_status` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) NOT NULL COMMENT '设备ID',
`status` varchar(20) NOT NULL COMMENT '设备状态',
`is_running` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否运行',
`nc_program` varchar(100) DEFAULT NULL COMMENT 'NC程序名',
`cumulative_count` int(11) NOT NULL DEFAULT '0' COMMENT '累计数量',
`operating_mode` varchar(20) DEFAULT NULL COMMENT '操作模式',
`record_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
PRIMARY KEY (`id`),
KEY `idx_device_id` (`device_id`),
KEY `idx_record_time` (`record_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备状态表';
-- 2. 模板管理表
-- 品牌模板表
CREATE TABLE `cnc_templates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`brand_name` varchar(50) NOT NULL COMMENT '品牌名称',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`field_mappings` json NOT NULL COMMENT '字段映射配置',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_brand_name` (`brand_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CNC品牌模板表';
-- 字段映射表
CREATE TABLE `template_field_mappings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`template_id` int(11) NOT NULL COMMENT '模板ID',
`source_field_path` varchar(255) NOT NULL COMMENT '源字段路径',
`standard_field_id` varchar(50) NOT NULL COMMENT '标准字段ID',
`standard_field_desc` varchar(100) NOT NULL COMMENT '标准字段描述',
`data_type` varchar(20) NOT NULL COMMENT '数据类型',
`conversion_rule` json DEFAULT NULL COMMENT '转换规则',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_template_id` (`template_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模板字段映射表';
-- 3. 生产数据表
-- 生产记录表
CREATE TABLE `production_records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) NOT NULL COMMENT '设备ID',
`nc_program` varchar(100) NOT NULL COMMENT 'NC程序名',
`production_date` date NOT NULL COMMENT '生产日期',
`quantity` int(11) NOT NULL DEFAULT '0' COMMENT '产量',
`quality_rate` decimal(5,2) DEFAULT '100.00' COMMENT '合格率',
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`operator_id` int(11) DEFAULT NULL COMMENT '操作员ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_device_id` (`device_id`),
KEY `idx_nc_program` (`nc_program`),
KEY `idx_production_date` (`production_date`),
KEY `idx_operator_id` (`operator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产记录表';
-- 程序产量统计表
CREATE TABLE `program_production_summary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) NOT NULL COMMENT '设备ID',
`nc_program` varchar(100) NOT NULL COMMENT 'NC程序名',
`production_date` date NOT NULL COMMENT '生产日期',
`total_quantity` int(11) NOT NULL DEFAULT '0' COMMENT '总产量',
`valid_quantity` int(11) NOT NULL DEFAULT '0' COMMENT '有效产量',
`invalid_quantity` int(11) NOT NULL DEFAULT '0' COMMENT '无效数量',
`quality_rate` decimal(5,2) DEFAULT '100.00' COMMENT '合格率',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_device_program_date` (`device_id`,`nc_program`,`production_date`),
KEY `idx_production_date` (`production_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='程序产量统计表';
-- 4. 用户管理表
-- 用户表
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`password_hash` varchar(255) NOT NULL COMMENT '密码哈希',
`real_name` varchar(50) NOT NULL COMMENT '真实姓名',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) DEFAULT NULL COMMENT '电话',
`role_id` int(11) NOT NULL COMMENT '角色ID',
`is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否激活',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
KEY `idx_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 角色表
CREATE TABLE `roles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_name` varchar(50) NOT NULL COMMENT '角色名称',
`description` varchar(255) DEFAULT NULL COMMENT '角色描述',
`permissions` json NOT NULL COMMENT '权限列表',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_name` (`role_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-- 员工表
CREATE TABLE `employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`employee_code` varchar(50) NOT NULL COMMENT '员工编号',
`name` varchar(50) NOT NULL COMMENT '员工姓名',
`department` varchar(50) DEFAULT NULL COMMENT '部门',
`position` varchar(50) DEFAULT NULL COMMENT '职位',
`assigned_devices` json DEFAULT NULL COMMENT '分配的设备ID列表',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_employee_code` (`employee_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表';
-- 设备分配表
CREATE TABLE `device_assignments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) NOT NULL COMMENT '设备ID',
`employee_id` int(11) NOT NULL COMMENT '员工ID',
`assignment_date` date NOT NULL COMMENT '分配日期',
`end_date` date DEFAULT NULL COMMENT '结束日期',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_device_id` (`device_id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_assignment_date` (`assignment_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备分配表';
-- 5. 系统管理表
-- 统计规则表
CREATE TABLE `statistic_rules` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rule_name` varchar(100) NOT NULL COMMENT '规则名称',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`metric_formula` text NOT NULL COMMENT '指标计算公式',
`group_by_dimensions` json NOT NULL COMMENT '分组维度',
`is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计规则表';
-- 告警表
CREATE TABLE `alarms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`alarm_type` varchar(50) NOT NULL COMMENT '告警类型',
`alarm_level` varchar(20) NOT NULL COMMENT '告警级别',
`alarm_content` text NOT NULL COMMENT '告警内容',
`device_id` int(11) DEFAULT NULL COMMENT '关联设备ID',
`device_name` varchar(100) DEFAULT NULL COMMENT '设备名称',
`is_resolved` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已解决',
`occurrence_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发生时间',
`resolution_time` datetime DEFAULT NULL COMMENT '解决时间',
`resolution_note` text DEFAULT NULL COMMENT '解决备注',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_alarm_type` (`alarm_type`),
KEY `idx_alarm_level` (`alarm_level`),
KEY `idx_device_id` (`device_id`),
KEY `idx_occurrence_time` (`occurrence_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警表';
-- 系统配置表
CREATE TABLE `system_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`config_key` varchar(100) NOT NULL COMMENT '配置键',
`config_value` text NOT NULL COMMENT '配置值',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
-- 6. 初始化数据
-- 插入默认角色
INSERT INTO `roles` (`role_name`, `description`, `permissions`) VALUES
('管理员', '系统管理员,拥有所有权限', '["*"]'),
('班组长', '班组长,管理本班组设备', '["device:view", "production:view", "alarm:view"]'),
('操作员', '操作员,查看个人设备', '["device:view_own", "production:view_own"]'),
('访客', '访客,只读权限', '["device:view_readonly", "production:view_readonly"]');
-- 插入默认用户
INSERT INTO `users` (`username`, `password_hash`, `real_name`, `role_id`, `is_active`) VALUES
('admin', '$2a$10$XUn0bQjQoO.nE0zWnYh0uOe2zQzQzQzQzQzQzQzQzQzQzQzQzQzQzQzQzQzQz', '系统管理员', 1, 1);
-- 插入默认系统配置
INSERT INTO `system_config` (`config_key`, `config_value`, `description`) VALUES
('collection_interval', '60', '数据采集间隔(秒)'),
('max_retry_count', '3', '最大重试次数'),
('retry_interval', '30', '重试间隔(秒)'),
('max_concurrent_collections', '100', '最大并发采集数'),
('data_retention_days', '30', '数据保留天数'),
('alarm_email_enabled', 'true', '是否启用告警邮件'),
('alarm_email_smtp', 'smtp.example.com', '邮件服务器'),
('alarm_email_port', '587', '邮件端口'),
('alarm_email_username', 'alarm@example.com', '邮件用户名'),
('alarm_email_password', 'password', '邮件密码'),
('dashboard_refresh_interval', '30', '仪表板刷新间隔(秒)');