fastbee/sql/iot_project_tables.sql
2026-07-21 09:05:31 +08:00

67 lines
3.6 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.

-- ========================================
-- FastBee项目管理数据库表创建脚本
-- 创建日期: 2026-06-28
-- 描述: 创建项目表和项目-分组关系表,实现User→Project→Group→Device层级
-- ========================================
-- 1. 创建项目表(iot_project)
-- 实现 User → Project 层级(通过responsible_user_id字段)
CREATE TABLE `iot_project` (
`project_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '项目ID',
`project_name` VARCHAR(100) NOT NULL COMMENT '项目名称',
`project_code` VARCHAR(50) DEFAULT NULL COMMENT '项目编码',
`tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID',
`tenant_name` VARCHAR(30) DEFAULT '' COMMENT '租户名称',
`responsible_user_id` BIGINT(20) DEFAULT NULL COMMENT '负责人ID',
`responsible_user_name` VARCHAR(30) DEFAULT '' COMMENT '负责人姓名',
`longitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目经度',
`latitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目纬度',
`address` VARCHAR(255) DEFAULT NULL COMMENT '项目地址',
`project_status` TINYINT(1) DEFAULT 2 COMMENT '项目状态(1-预警,2-运行中,3-完结)',
`start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
`end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
`project_desc` VARCHAR(500) DEFAULT NULL COMMENT '项目描述',
`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 (`project_id`),
KEY `idx_tenant_user` (`tenant_id`, `responsible_user_id`),
KEY `idx_project_status` (`project_status`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='业务项目表';
-- 2. 创建项目-分组关系表(iot_project_group)
-- 实现 Project → Device Group 层级
CREATE TABLE `iot_project_group` (
`project_id` BIGINT(20) NOT NULL COMMENT '项目ID',
`group_id` BIGINT(20) NOT NULL COMMENT '设备分组ID',
PRIMARY KEY (`project_id`, `group_id`),
KEY `idx_project_id` (`project_id`),
KEY `idx_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='项目-设备分组关系表';
-- ========================================
-- 层级关系说明:
-- User (responsible_user_id) → Project (project_id) → Project_Group (group_id) → Device_Group (device_id) → Device
--
-- 与现有逻辑兼容的关键点:
-- 1. iot_group表保持不变(现有分组管理逻辑不受影响)
-- 2. iot_device_user表保持不变(设备归属关系独立)
-- 3. 项目-分组关系是可选的(未关联项目的分组保持现有功能)
--
-- 用户查询设备的两种路径:
-- 路径1:查询用户负责的项目设备(新增功能)
-- SELECT DISTINCT d.* FROM iot_device d
-- INNER JOIN iot_device_group dg ON d.device_id = dg.device_id
-- INNER JOIN iot_project_group pg ON dg.group_id = pg.group_id
-- INNER JOIN iot_project p ON pg.project_id = p.project_id
-- WHERE p.responsible_user_id = #{userId} AND p.del_flag='0' AND d.del_flag='0'
--
-- 路径2:查询设备归属用户的设备(现有逻辑)
-- SELECT d.* FROM iot_device d
-- INNER JOIN iot_device_user du ON d.device_id = du.device_id
-- WHERE du.user_id = #{userId} AND d.del_flag='0'
-- ========================================