fastbee/sql/platform-integration.sql
2026-07-31 05:53:20 +08:00

277 lines
17 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 平台对接模块 DDL
-- 创建时间: 2026-05-30
-- ----------------------------
-- 0. 平台传感器类型字典
-- 页面从 platform_sensor_type 读取选项,新增类型只需维护字典。
-- ----------------------------
INSERT IGNORE INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('平台传感器类型', 'platform_sensor_type', '0', 'system', NOW(), '第三方平台对接使用的传感器类型');
DELETE FROM `sys_dict_data`
WHERE `dict_type` = 'platform_sensor_type'
AND `dict_value` IN ('inclino', 'deep_inclino', 'stress', 'hyeto', 'static_level');
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES
(1, '倾角', 'inclino', 'platform_sensor_type', 'primary', 'N', '0', 'system', NOW(), 'DCP倾角'),
(2, '深部位移计', 'deep_inclino', 'platform_sensor_type', 'primary', 'N', '0', 'system', NOW(), 'DCP深部位移计'),
(3, '轴力计', 'stress', 'platform_sensor_type', 'primary', 'N', '0', 'system', NOW(), 'DCP轴力计'),
(4, '雨量计', 'hyeto', 'platform_sensor_type', 'primary', 'N', '0', 'system', NOW(), 'DCP雨量计'),
(5, '静力水准仪', 'static_level', 'platform_sensor_type', 'primary', 'N', '0', 'system', NOW(), 'DCP静力水准');
INSERT INTO `sys_dict_data_translate` (`id`,`zh_cn`, `en_us`)
VALUES (738,'倾角','inclino'),
(739,'深部位移','deepInclino'),
(740,'轴力','stress'),
(741,'雨量','hyeto'),
(742,'静力水准','staticLevel')
;
-- ----------------------------
-- 1. 平台实体
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_instance` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(100) NOT NULL COMMENT '平台名称,如 DCP结构监测',
`code` varchar(50) NOT NULL COMMENT '平台唯一标识,如 dcp',
`base_url` varchar(255) NOT NULL COMMENT '基础URL',
`auth_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '认证类型(1=密码Token,2=ApiKey,3=OAuth2)',
`auth_config` json DEFAULT NULL COMMENT '认证凭证JSON {userName,password,clientId,scope}',
`extra_config` json DEFAULT NULL COMMENT '初始化后保存的平台数据 {userId,projectId,...}',
`access_token` varchar(2000) DEFAULT NULL COMMENT '当前有效Token',
`token_expires_at` datetime DEFAULT NULL COMMENT 'Token过期时间',
`init_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '初始化状态(0=未初始化,1=已初始化)',
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用(0=禁用,1=启用)',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方平台实体';
-- ----------------------------
-- 2. 接口定义
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_interface` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
`name` varchar(100) NOT NULL COMMENT '接口名称',
`code` varchar(100) NOT NULL COMMENT '接口标识',
`method` varchar(10) NOT NULL COMMENT 'HTTP方法: GET/POST/PUT/DELETE',
`is_batch_push` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否批量推送(0=否,1=是),用于深部位移等整孔数据推送',
`path` varchar(255) NOT NULL COMMENT '接口路径,支持路径变量 {userId}',
`content_type` varchar(100) DEFAULT 'application/json' COMMENT 'Content-Type',
`request_schema` json DEFAULT NULL COMMENT '入参字段定义 [{name,type,source,value,field,contextKey,required,desc}]',
`response_schema` json DEFAULT NULL COMMENT '出参字段定义 [{name,type,path,desc}]',
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_platform_id` (`platform_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台接口定义';
ALTER TABLE `platform_interface` ADD COLUMN `is_batch_push` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否批量推送(0=否,1=是),用于深部位移等整孔数据推送' AFTER `method`
-- ----------------------------
-- 3. 流程定义
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_flow` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
`name` varchar(100) NOT NULL COMMENT '流程名称',
`code` varchar(100) NOT NULL COMMENT '流程标识',
`flow_type` tinyint(1) NOT NULL COMMENT '流程类型(1=平台初始化,2=设备入网,3=Token刷新)',
`sensor_type` varchar(50) DEFAULT NULL COMMENT '传感器类型,flow_type=2时有效,来自字典 platform_sensor_type',
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_platform_type` (`platform_id`, `flow_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台对接流程';
-- ----------------------------
-- 4. 流程步骤
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_flow_step` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`flow_id` bigint(20) NOT NULL COMMENT '所属流程ID',
`step_order` int(11) NOT NULL DEFAULT 1 COMMENT '执行顺序,从1开始',
`interface_id` bigint(20) NOT NULL COMMENT '关联接口ID',
`param_mapping` json DEFAULT NULL COMMENT '入参来源覆盖配置,覆盖接口默认schema',
`result_key` varchar(100) DEFAULT NULL COMMENT '出参写入上下文的key,如 step1',
`result_save` json DEFAULT NULL COMMENT '需持久化的出参字段 [{field,saveTo}]',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_flow_id` (`flow_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程步骤';
-- ----------------------------
-- 5. 设备绑定关系
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_device_mapping` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
`platform_user_auth_id` bigint(20) DEFAULT NULL COMMENT '关联用户认证ID',
`platform_project_id` varchar(100) NOT NULL COMMENT 'DCP项目ID',
`platform_project_name` varchar(255) DEFAULT NULL COMMENT 'DCP项目名称',
`device_id` bigint(20) NOT NULL COMMENT 'FastBee设备ID',
`serial_number` varchar(64) NOT NULL COMMENT 'FastBee设备序列号',
`device_name` varchar(64) DEFAULT NULL COMMENT '默认为本平台设备名称,可以修改为对方平台需要的名称',
`platform_device_id` varchar(100) DEFAULT NULL COMMENT 'DCP侧deviceId,入网后自动回填',
`platform_point_id` varchar(100) DEFAULT NULL COMMENT 'DCP侧pointId,入网后自动回填',
`sensor_type` varchar(50) NOT NULL COMMENT '传感器类型,来自字典 platform_sensor_type',
`device_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '设备类型: 0=直连设备 1=网关设备(多子设备)',
`push_interface_id` bigint(20) DEFAULT NULL COMMENT '推送接口ID,用于字段映射参照',
`field_mapping` json DEFAULT NULL COMMENT '字段映射 [{identifier,platformField,transform}]',
`extra_mapping` json DEFAULT NULL COMMENT '扩展映射配置,如静力水准子设备编号与DCP sensorId映射',
`net_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '入网状态(0=未入网,1=已入网)',
`push_mode` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '推送模式:1=实时 2=定时(默认1)',
`push_interval` INT DEFAULT 0 COMMENT '定时推送间隔(分钟),0=不自动推送',
`last_push_time` DATETIME DEFAULT NULL COMMENT '最近推送时间',
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_serial` (`serial_number`),
KEY `idx_platform_device` (`platform_id`, `device_id`),
KEY `idx_user_auth` (`platform_user_auth_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台设备绑定关系';
-- ----------------------------
-- 5.1 设备绑定关系 - 补充绑定项目和设备类型字段
-- ----------------------------
ALTER TABLE `platform_device_mapping`
ADD COLUMN IF NOT EXISTS `platform_project_id` varchar(100) DEFAULT NULL COMMENT 'DCP项目ID' AFTER `platform_id`,
ADD COLUMN IF NOT EXISTS `platform_project_name` varchar(255) DEFAULT NULL COMMENT 'DCP项目名称' AFTER `platform_project_id`;
ALTER TABLE `platform_device_mapping`
ADD COLUMN IF NOT EXISTS `device_type` tinyint(1) NOT NULL DEFAULT 0
COMMENT '设备类型: 0=直连设备 1=网关设备(多子设备)' AFTER `sensor_type`;
ALTER TABLE `platform_device_mapping`
ADD COLUMN `device_name` varchar(64) DEFAULT NULL COMMENT '默认为本平台设备名称,可以修改为对方平台需要的名称' AFTER `serial_number`;
-- 添加推送模式字段
ALTER TABLE platform_device_mapping
ADD COLUMN `push_mode` TINYINT DEFAULT 1 COMMENT '推送模式:1=实时 2=定时(默认1)' AFTER `net_status`;
-- 添加定时推送间隔字段
ALTER TABLE platform_device_mapping
ADD COLUMN `push_interval` INT DEFAULT 0 COMMENT '定时推送间隔(分钟),0=不自动推送' after `push_mode`;
-- 添加最近推送时间字段
ALTER TABLE platform_device_mapping
ADD COLUMN `last_push_time` DATETIME DEFAULT NULL COMMENT '最近推送时间' after `push_interval`;
-- 添加索引优化查询性能
CREATE INDEX idx_push_mode ON platform_device_mapping(push_mode);
CREATE INDEX idx_last_push_time ON platform_device_mapping(last_push_time);
-- ----------------------------
-- 5.2 子设备映射(网关多子设备通用)
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_device_sub_mapping` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`parent_mapping_id` bigint(20) NOT NULL COMMENT '父映射ID (platform_device_mapping.id)',
`sub_serial_number` varchar(64) NOT NULL COMMENT '子设备序列号',
`sub_device_name` varchar(64) DEFAULT NULL COMMENT '子设备名称',
`device_role` varchar(20) NOT NULL DEFAULT 'monitor' COMMENT '角色: reference=基准 monitor=监测',
`platform_device_id` varchar(100) DEFAULT NULL COMMENT '平台分配的设备ID (入网后回填)',
`platform_point_id` varchar(100) DEFAULT NULL COMMENT '平台分配的测点/辅助ID (入网后回填)',
`onboard_config` json DEFAULT NULL COMMENT '入网时传给平台的标识参数(平台相关)',
`net_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=未入网 1=已入网',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_parent` (`parent_mapping_id`),
KEY `idx_sub_serial` (`sub_serial_number`),
UNIQUE KEY `uk_parent_sub` (`parent_mapping_id`, `sub_serial_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台设备子映射(网关多子设备通用)';
ALTER TABLE `platform_device_sub_mapping`
ADD COLUMN IF NOT EXISTS `sub_device_name` varchar(64) DEFAULT NULL
COMMENT '子设备名称' AFTER `sub_serial_number`;
-- ----------------------------
-- 6. 推送日志
-- ----------------------------
CREATE TABLE IF NOT EXISTS `platform_push_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`platform_id` bigint(20) NOT NULL COMMENT '平台ID',
`flow_id` bigint(20) DEFAULT NULL COMMENT '流程ID',
`step_order` int(11) DEFAULT NULL COMMENT '步骤序号',
`device_id` bigint(20) DEFAULT NULL COMMENT '设备ID',
`serial_number` varchar(64) DEFAULT NULL COMMENT '设备序列号',
`interface_code` varchar(100) DEFAULT NULL COMMENT '接口标识',
`request_url` varchar(500) DEFAULT NULL COMMENT '请求URL',
`request_body` mediumtext DEFAULT NULL COMMENT '请求体',
`response_code` int(11) DEFAULT NULL COMMENT 'HTTP响应码',
`response_body` mediumtext DEFAULT NULL COMMENT '响应体',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态(0=进行中,1=成功,2=失败)',
`error_msg` varchar(1000) DEFAULT NULL COMMENT '错误信息',
`idempotency_key` varchar(100) DEFAULT NULL COMMENT '幂等键,防重复推送',
`log_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '日志类型(1=数据推送,2=操作日志)',
`retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数',
`cost_ms` int(11) DEFAULT NULL COMMENT '耗时毫秒',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_platform_status` (`platform_id`, `status`),
KEY `idx_device_time` (`device_id`, `create_time`),
KEY `idx_idempotency` (`idempotency_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台推送日志';
-- ----------------------------
-- DCP 内置数据初始化
-- ----------------------------
-- DCP 平台接口定义(内置,用户无需手动配置)
-- 注意:platform_id 需在创建 DCP 平台实例后更新,此处用占位符 0
-- 实际由 DcpPlatformAdapter 在初始化时写入
-- ----------------------------
-- 7. 创建平台用户认证表
-- ----------------------------
CREATE TABLE `platform_user_auth` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`platform_id` bigint(20) NOT NULL COMMENT '平台实例ID',
`platform_user_id` varchar(100) DEFAULT NULL COMMENT '平台侧用户ID(如DCP的userId)',
`platform_user_name` varchar(100) DEFAULT NULL COMMENT '平台侧用户名',
`auth_config` json DEFAULT NULL COMMENT '用户认证凭证JSON {userName,password,clientId,scope}',
`access_token` varchar(2000) DEFAULT NULL COMMENT '该用户的Token',
`token_expires_at` datetime DEFAULT NULL COMMENT 'Token过期时间',
`init_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '初始化状态(0=未初始化,1=已初始化)',
`extra_config` json DEFAULT NULL COMMENT '用户级配置 {projectId,projectName,...}',
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_platform_user` (`platform_id`, `platform_user_id`),
KEY `idx_token_expire` (`token_expires_at`),
KEY `idx_init_status` (`init_status`),
KEY `idx_platform_id` (`platform_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台用户认证';
-- ----------------------------
-- 2. 修改 platform_device_mapping 表
-- ----------------------------
-- 增加用户认证关联字段
ALTER TABLE `platform_device_mapping`
ADD COLUMN `platform_user_auth_id` bigint(20) DEFAULT NULL COMMENT '关联用户认证ID' AFTER `platform_id`;
-- 增加索引
CREATE INDEX `idx_user_auth` ON `platform_device_mapping`(`platform_user_auth_id`);