-- ============================================= -- WCS 仓库控制系统 - MySQL 初始化脚本 -- 适用数据库: MySQL 5.7+ / 8.0+ -- 字符集: utf8mb4 -- 说明: 骨架阶段最小字段集,后续迭代逐步扩展 -- ============================================= SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- 1. 设备信息表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_device`; CREATE TABLE `wcs_device` ( `device_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '设备ID', `device_code` varchar(64) NOT NULL COMMENT '设备编码', `device_name` varchar(128) DEFAULT NULL COMMENT '设备名称', `device_type` varchar(32) DEFAULT NULL COMMENT '设备类型(conveyor/agv/elevator/stacker等)', `area_code` varchar(64) DEFAULT NULL COMMENT '所属区域编码', `protocol_type` varchar(32) DEFAULT NULL COMMENT '通信协议(modbus_tcp/opc_ua/s7等)', `ip_address` varchar(64) DEFAULT NULL COMMENT '设备IP地址', `port` int(11) DEFAULT NULL COMMENT '通信端口', `status` char(1) DEFAULT '0' COMMENT '设备状态(0正常 1停用)', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`device_id`), UNIQUE KEY `uk_device_code` (`device_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 设备信息表'; -- ---------------------------- -- 2. 设备点位表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_device_point`; CREATE TABLE `wcs_device_point` ( `point_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '点位ID', `device_id` bigint(20) NOT NULL COMMENT '所属设备ID', `point_code` varchar(64) NOT NULL COMMENT '点位编码', `point_name` varchar(128) DEFAULT NULL COMMENT '点位名称', `point_type` varchar(32) DEFAULT NULL COMMENT '点位类型(read/write/read_write)', `data_type` varchar(32) DEFAULT NULL COMMENT '数据类型(int/float/bool/string)', `address` varchar(128) DEFAULT NULL COMMENT '寄存器地址/OPC节点', `unit` varchar(32) DEFAULT NULL COMMENT '单位', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`point_id`), KEY `idx_device_id` (`device_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 设备点位表'; -- ---------------------------- -- 3. 设备点位值记录表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_device_point_value`; CREATE TABLE `wcs_device_point_value` ( `value_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录ID', `point_id` bigint(20) NOT NULL COMMENT '点位ID', `device_id` bigint(20) NOT NULL COMMENT '设备ID', `point_value` varchar(256) DEFAULT NULL COMMENT '点位值', `quality` varchar(16) DEFAULT NULL COMMENT '数据质量(good/bad/uncertain)', `collect_time` datetime DEFAULT NULL COMMENT '采集时间', `create_time` datetime DEFAULT NULL COMMENT '记录时间', PRIMARY KEY (`value_id`), KEY `idx_point_id` (`point_id`), KEY `idx_collect_time` (`collect_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 设备点位值记录表'; -- ---------------------------- -- 4. 接口配置表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_api_config`; CREATE TABLE `wcs_api_config` ( `api_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '接口ID', `api_code` varchar(64) NOT NULL COMMENT '接口编码', `api_name` varchar(128) DEFAULT NULL COMMENT '接口名称', `api_url` varchar(512) DEFAULT NULL COMMENT '接口地址', `request_method` varchar(16) DEFAULT 'POST' COMMENT '请求方式(GET/POST/PUT/DELETE)', `content_type` varchar(64) DEFAULT 'application/json' COMMENT '内容类型', `timeout` int(11) DEFAULT 30000 COMMENT '超时时间(毫秒)', `retry_count` int(11) DEFAULT 0 COMMENT '重试次数', `direction` varchar(16) DEFAULT NULL COMMENT '方向(inbound/outbound)', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`api_id`), UNIQUE KEY `uk_api_code` (`api_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 接口配置表'; -- ---------------------------- -- 5. 流程定义表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_flow_def`; CREATE TABLE `wcs_flow_def` ( `flow_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '流程ID', `flow_code` varchar(64) NOT NULL COMMENT '流程编码', `flow_name` varchar(128) DEFAULT NULL COMMENT '流程名称', `flow_type` varchar(32) DEFAULT NULL COMMENT '流程类型', `version` int(11) DEFAULT 1 COMMENT '版本号', `flow_json` text COMMENT '流程JSON定义(画布数据)', `status` char(1) DEFAULT '0' COMMENT '状态(0草稿 1已发布 2已停用)', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`flow_id`), UNIQUE KEY `uk_flow_code_version` (`flow_code`, `version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 流程定义表'; -- ---------------------------- -- 6. 流程节点表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_flow_node`; CREATE TABLE `wcs_flow_node` ( `node_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '节点ID', `flow_id` bigint(20) NOT NULL COMMENT '所属流程ID', `node_code` varchar(64) NOT NULL COMMENT '节点编码', `node_name` varchar(128) DEFAULT NULL COMMENT '节点名称', `node_type` varchar(32) DEFAULT NULL COMMENT '节点类型(start/end/task/condition/parallel等)', `handler_class` varchar(256) DEFAULT NULL COMMENT '处理器类名', `config_json` text COMMENT '节点配置JSON', `pos_x` int(11) DEFAULT 0 COMMENT '画布X坐标', `pos_y` int(11) DEFAULT 0 COMMENT '画布Y坐标', `sort_order` int(11) DEFAULT 0 COMMENT '排序', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`node_id`), KEY `idx_flow_id` (`flow_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 流程节点表'; -- ---------------------------- -- 7. 流程连线表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_flow_line`; CREATE TABLE `wcs_flow_line` ( `line_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '连线ID', `flow_id` bigint(20) NOT NULL COMMENT '所属流程ID', `source_node_id` bigint(20) NOT NULL COMMENT '源节点ID', `target_node_id` bigint(20) NOT NULL COMMENT '目标节点ID', `condition_expr` varchar(512) DEFAULT NULL COMMENT '条件表达式', `line_label` varchar(128) DEFAULT NULL COMMENT '连线标签', `sort_order` int(11) DEFAULT 0 COMMENT '排序', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`line_id`), KEY `idx_flow_id` (`flow_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 流程连线表'; -- ---------------------------- -- 8. 流程实例表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_flow_instance`; CREATE TABLE `wcs_flow_instance` ( `instance_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '实例ID', `flow_id` bigint(20) NOT NULL COMMENT '流程定义ID', `instance_code` varchar(64) DEFAULT NULL COMMENT '实例编码', `trigger_source` varchar(64) DEFAULT NULL COMMENT '触发来源', `current_node_id` bigint(20) DEFAULT NULL COMMENT '当前节点ID', `instance_status` varchar(16) DEFAULT 'running' COMMENT '实例状态(running/completed/failed/cancelled)', `context_json` text COMMENT '运行时上下文JSON', `start_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `error_msg` varchar(2000) DEFAULT NULL COMMENT '错误信息', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`instance_id`), KEY `idx_flow_id` (`flow_id`), KEY `idx_instance_status` (`instance_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 流程实例表'; -- ---------------------------- -- 9. 流程节点执行日志表 -- ---------------------------- DROP TABLE IF EXISTS `wcs_flow_node_log`; CREATE TABLE `wcs_flow_node_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', `instance_id` bigint(20) NOT NULL COMMENT '流程实例ID', `node_id` bigint(20) NOT NULL COMMENT '节点ID', `node_name` varchar(128) DEFAULT NULL COMMENT '节点名称', `execute_status` varchar(16) DEFAULT NULL COMMENT '执行状态(success/fail/skip)', `input_data` text COMMENT '输入数据JSON', `output_data` text COMMENT '输出数据JSON', `error_msg` varchar(2000) DEFAULT NULL COMMENT '错误信息', `start_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `duration` bigint(20) DEFAULT NULL COMMENT '执行耗时(毫秒)', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`), KEY `idx_instance_id` (`instance_id`), KEY `idx_node_id` (`node_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='WCS 流程节点执行日志表'; -- ---------------------------- -- WCS 菜单数据初始化(插入若依菜单表) -- 菜单ID 从 2000 起,避免与系统菜单冲突 -- ---------------------------- -- WCS 一级菜单 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2000, 'WCS仓库控制', 0, 5, 'wcs', NULL, '', '', 1, 0, 'M', '0', '0', '', 'server', 'admin', sysdate(), '', NULL, 'WCS仓库控制系统'); -- 设备管理 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2001, '设备管理', 2000, 1, 'device', 'wcs/device/index', '', '', 1, 0, 'C', '0', '0', 'wcs:device:list', 'component', 'admin', sysdate(), '', NULL, 'WCS设备管理'); -- 点位配置 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2002, '点位配置', 2000, 2, 'point', 'wcs/point/index', '', '', 1, 0, 'C', '0', '0', 'wcs:point:list', 'edit', 'admin', sysdate(), '', NULL, 'WCS点位配置'); -- 接口配置 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2003, '接口配置', 2000, 3, 'apiconfig', 'wcs/apiconfig/index', '', '', 1, 0, 'C', '0', '0', 'wcs:api:list', 'link', 'admin', sysdate(), '', NULL, 'WCS接口配置'); -- 流程定义 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2004, '流程定义', 2000, 4, 'flowdef', 'wcs/flowdef/index', '', '', 1, 0, 'C', '0', '0', 'wcs:flow:list', 'cascader', 'admin', sysdate(), '', NULL, 'WCS流程定义'); -- 流程实例 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2005, '流程实例', 2000, 5, 'flowinstance', 'wcs/flowinstance/index', '', '', 1, 0, 'C', '0', '0', 'wcs:instance:list', 'list', 'admin', sysdate(), '', NULL, 'WCS流程实例'); -- 运行日志 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2006, '运行日志', 2000, 6, 'flowlog', 'wcs/flowlog/index', '', '', 1, 0, 'C', '0', '0', 'wcs:log:list', 'log', 'admin', sysdate(), '', NULL, 'WCS运行日志'); -- ---------------------------- -- 按钮权限(menu_type='F') -- menuId 从 2010 起,每个二级菜单 5 个按钮(查询/新增/修改/删除/导出) -- ---------------------------- -- 设备管理按钮 insert into sys_menu values('2010', '设备查询', '2001', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:device:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2011', '设备新增', '2001', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:device:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2012', '设备修改', '2001', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:device:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2013', '设备删除', '2001', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:device:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2014', '设备导出', '2001', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:device:export', '#', 'admin', sysdate(), '', null, ''); -- 点位配置按钮 insert into sys_menu values('2015', '点位查询', '2002', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:point:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2016', '点位新增', '2002', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:point:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2017', '点位修改', '2002', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:point:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2018', '点位删除', '2002', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:point:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2019', '点位导出', '2002', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:point:export', '#', 'admin', sysdate(), '', null, ''); -- 接口配置按钮 insert into sys_menu values('2020', '接口查询', '2003', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:api:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2021', '接口新增', '2003', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:api:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2022', '接口修改', '2003', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:api:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2023', '接口删除', '2003', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:api:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2024', '接口导出', '2003', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:api:export', '#', 'admin', sysdate(), '', null, ''); -- 流程定义按钮 insert into sys_menu values('2025', '流程查询', '2004', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:flow:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2026', '流程新增', '2004', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:flow:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2027', '流程修改', '2004', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:flow:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2028', '流程删除', '2004', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:flow:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2029', '流程导出', '2004', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:flow:export', '#', 'admin', sysdate(), '', null, ''); -- 流程实例按钮 insert into sys_menu values('2030', '实例查询', '2005', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:instance:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2031', '实例新增', '2005', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:instance:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2032', '实例修改', '2005', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:instance:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2033', '实例删除', '2005', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:instance:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2034', '实例导出', '2005', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:instance:export', '#', 'admin', sysdate(), '', null, ''); -- 运行日志按钮 insert into sys_menu values('2035', '日志查询', '2006', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:log:query', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2036', '日志新增', '2006', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:log:add', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2037', '日志修改', '2006', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:log:edit', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2038', '日志删除', '2006', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:log:remove', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('2039', '日志导出', '2006', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'wcs:log:export', '#', 'admin', sysdate(), '', null, ''); SET FOREIGN_KEY_CHECKS = 1;