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
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', '仪表板刷新间隔(秒)'); |