phase/0-infrastructure #1

Merged
g82tt merged 25 commits from phase/0-infrastructure into master 2026-05-16 15:17:19 +08:00
Showing only changes of commit 29fedc8701 - Show all commits

View File

@@ -1,168 +1,200 @@
-- ============================================ -- ============================================
-- SecMPS v2.0 数据库建表脚本 -- SecMPS v2.0 数据库建表脚本
-- 数据库: gljs_main -- 数据库: gljs_main
-- 说明: 每个表和字段均包含 COMMENT 中文注释,供 Vol.Pro 代码生成器使用
-- ============================================ -- ============================================
USE gljs_main; USE gljs_main;
-- ============================================
-- 1. 统一设备主表 -- 1. 统一设备主表
CREATE TABLE IF NOT EXISTS Base_Device ( -- ============================================
DeviceId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS Base_Device;
DeviceName NVARCHAR(100) NOT NULL, CREATE TABLE Base_Device (
AdapterCode NVARCHAR(50) NOT NULL, DeviceId CHAR(36) NOT NULL COMMENT '设备ID',
SourceId NVARCHAR(100) NOT NULL, DeviceName NVARCHAR(100) NOT NULL COMMENT '设备名称',
DeviceCategory INT NOT NULL DEFAULT 1, AdapterCode NVARCHAR(50) NOT NULL COMMENT '来源适配器(owl/mc4)',
DeviceType NVARCHAR(50), SourceId NVARCHAR(100) NOT NULL COMMENT '源系统设备ID',
RegionId INT NULL, DeviceCategory INT NOT NULL DEFAULT 1 COMMENT '设备大类(1视频/2IoT/3门禁/4道闸/5报警)',
IsParent TINYINT NOT NULL DEFAULT 0, DeviceType NVARCHAR(50) COMMENT '设备细分类型(GB28181/TempSensor)',
ParentDeviceId CHAR(36) NULL, RegionId INT NULL COMMENT '所属区域ID',
IsOnline TINYINT NOT NULL DEFAULT 0, IsParent TINYINT NOT NULL DEFAULT 0 COMMENT '是否父设备(0叶子/1可展开)',
IpAddress NVARCHAR(50), ParentDeviceId CHAR(36) NULL COMMENT '父设备ID',
Port INT, IsOnline TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态(0离线/1在线)',
Location NVARCHAR(200), IpAddress NVARCHAR(50) COMMENT 'IP地址',
Lat DOUBLE, Port INT COMMENT '端口',
Lng DOUBLE, Location NVARCHAR(200) COMMENT '安装位置',
MapModelId NVARCHAR(100), Lat DOUBLE COMMENT '纬度',
MapModelScale FLOAT DEFAULT 1.0, Lng DOUBLE COMMENT '经度',
MapModelRotation NVARCHAR(100), MapModelId NVARCHAR(100) COMMENT '三维地图模型ID',
ExtraData TEXT, MapModelScale FLOAT DEFAULT 1.0 COMMENT '模型缩放比例',
LocalOverrides TEXT, MapModelRotation NVARCHAR(100) COMMENT '模型旋转角度(JSON)',
SyncVersion BIGINT DEFAULT 0, ExtraData TEXT COMMENT '源系统原始数据JSON',
LastSyncTime DATETIME, LocalOverrides TEXT COMMENT '本地覆盖字段JSON',
Enable TINYINT DEFAULT 1, SyncVersion BIGINT DEFAULT 0 COMMENT '同步版本号',
Remark NVARCHAR(500), LastSyncTime DATETIME COMMENT '上次同步时间',
CreateID INT, Enable TINYINT DEFAULT 1 COMMENT '启用(0禁用/1启用)',
Creator NVARCHAR(50), Remark NVARCHAR(500) COMMENT '备注',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, CreateID INT COMMENT '创建人ID',
ModifyID INT, Creator NVARCHAR(50) COMMENT '创建人',
Modifier NVARCHAR(50), CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
ModifyDate DATETIME, ModifyID INT COMMENT '修改人ID',
Modifier NVARCHAR(50) COMMENT '修改人',
ModifyDate DATETIME COMMENT '修改时间',
PRIMARY KEY (DeviceId),
UNIQUE INDEX IX_Base_Device_Adapter_Source (AdapterCode, SourceId), UNIQUE INDEX IX_Base_Device_Adapter_Source (AdapterCode, SourceId),
INDEX IX_Base_Device_RegionId (RegionId), INDEX IX_Base_Device_RegionId (RegionId),
INDEX IX_Base_Device_ParentId (ParentDeviceId) INDEX IX_Base_Device_ParentId (ParentDeviceId)
); ) COMMENT '统一设备主表';
-- ============================================
-- 2. 视频设备扩展表 -- 2. 视频设备扩展表
CREATE TABLE IF NOT EXISTS Device_Video_Ext ( -- ============================================
ExtId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS Device_Video_Ext;
DeviceId CHAR(36) NOT NULL, CREATE TABLE Device_Video_Ext (
OwlDeviceId NVARCHAR(64) NOT NULL, ExtId CHAR(36) NOT NULL COMMENT '扩展记录ID',
Protocol INT DEFAULT 1, DeviceId CHAR(36) NOT NULL COMMENT '关联设备ID',
Manufacturer NVARCHAR(100), OwlDeviceId NVARCHAR(64) NOT NULL COMMENT 'Owl系统设备ID',
Model NVARCHAR(100), Protocol INT DEFAULT 1 COMMENT '接入协议(1GB28181/2ONVIF/3RTMP/4RTSP)',
ChannelCount INT DEFAULT 0, Manufacturer NVARCHAR(100) COMMENT '厂商',
OwlStatus NVARCHAR(500), Model NVARCHAR(100) COMMENT '设备型号',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, ChannelCount INT DEFAULT 0 COMMENT '通道数量',
OwlStatus NVARCHAR(500) COMMENT 'Owl原始状态JSON',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ExtId),
UNIQUE INDEX IX_VideoExt_Owl (OwlDeviceId), UNIQUE INDEX IX_VideoExt_Owl (OwlDeviceId),
INDEX IX_VideoExt_Device (DeviceId) INDEX IX_VideoExt_Device (DeviceId)
); ) COMMENT '视频设备扩展表';
-- ============================================
-- 3. 视频通道表 -- 3. 视频通道表
CREATE TABLE IF NOT EXISTS Video_Channel ( -- ============================================
ChannelId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS Video_Channel;
OwlChannelId NVARCHAR(64) NOT NULL, CREATE TABLE Video_Channel (
DeviceId CHAR(36) NOT NULL, ChannelId CHAR(36) NOT NULL COMMENT '通道ID',
ChannelName NVARCHAR(100) NOT NULL, OwlChannelId NVARCHAR(64) NOT NULL COMMENT 'Owl系统通道ID',
ChannelNo INT DEFAULT 0, DeviceId CHAR(36) NOT NULL COMMENT '关联父设备ID',
OwlStreamApp NVARCHAR(50), ChannelName NVARCHAR(100) NOT NULL COMMENT '通道名称',
OwlStreamName NVARCHAR(100), ChannelNo INT DEFAULT 0 COMMENT '通道编号',
HasPtz TINYINT DEFAULT 0, OwlStreamApp NVARCHAR(50) COMMENT 'Owl流应用名',
HasRecording TINYINT DEFAULT 0, OwlStreamName NVARCHAR(100) COMMENT 'Owl流名称',
RecordMode INT DEFAULT 0, HasPtz TINYINT DEFAULT 0 COMMENT '是否支持云台(0否/1是)',
IsOnline TINYINT DEFAULT 0, HasRecording TINYINT DEFAULT 0 COMMENT '是否支持录像(0否/1是)',
SnapshotUrl NVARCHAR(500), RecordMode INT DEFAULT 0 COMMENT '录像模式(0不录像/1设备录像/2中心录像)',
Location NVARCHAR(200), IsOnline TINYINT DEFAULT 0 COMMENT '在线状态(0离线/1在线)',
Lat DOUBLE, SnapshotUrl NVARCHAR(500) COMMENT '快照地址',
Lng DOUBLE, Location NVARCHAR(200) COMMENT '安装位置',
Enable TINYINT DEFAULT 1, Lat DOUBLE COMMENT '纬度',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, Lng DOUBLE COMMENT '经度',
Enable TINYINT DEFAULT 1 COMMENT '启用(0禁用/1启用)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ChannelId),
UNIQUE INDEX IX_Channel_Owl (OwlChannelId), UNIQUE INDEX IX_Channel_Owl (OwlChannelId),
INDEX IX_Channel_Device (DeviceId) INDEX IX_Channel_Device (DeviceId)
); ) COMMENT '视频通道表';
-- ============================================
-- 4. 录像记录表 -- 4. 录像记录表
CREATE TABLE IF NOT EXISTS Video_Record ( -- ============================================
RecordId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS Video_Record;
ChannelId CHAR(36) NOT NULL, CREATE TABLE Video_Record (
OwlRecordId INT NOT NULL, RecordId CHAR(36) NOT NULL COMMENT '录像记录ID',
App NVARCHAR(50), ChannelId CHAR(36) NOT NULL COMMENT '关联通道ID',
Stream NVARCHAR(100), OwlRecordId INT NOT NULL COMMENT 'Owl录像记录ID',
StartedAt DATETIME NOT NULL, App NVARCHAR(50) COMMENT '应用名',
EndedAt DATETIME, Stream NVARCHAR(100) COMMENT '流ID',
Duration DOUBLE DEFAULT 0, StartedAt DATETIME NOT NULL COMMENT '录像开始时间',
FilePath NVARCHAR(500), EndedAt DATETIME COMMENT '录像结束时间',
FileSize BIGINT DEFAULT 0, Duration DOUBLE DEFAULT 0 COMMENT '录像时长(秒)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, FilePath NVARCHAR(500) COMMENT '文件路径',
FileSize BIGINT DEFAULT 0 COMMENT '文件大小(字节)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (RecordId),
INDEX IX_Record_Channel (ChannelId), INDEX IX_Record_Channel (ChannelId),
INDEX IX_Record_Time (StartedAt) INDEX IX_Record_Time (StartedAt)
); ) COMMENT '录像记录表';
-- ============================================
-- 5. IoT设备扩展表 -- 5. IoT设备扩展表
CREATE TABLE IF NOT EXISTS Device_IoT_Ext ( -- ============================================
ExtId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS Device_IoT_Ext;
DeviceId CHAR(36) NOT NULL, CREATE TABLE Device_IoT_Ext (
Mc4DeviceId INT NOT NULL, ExtId CHAR(36) NOT NULL COMMENT '扩展记录ID',
ObjectType INT, DeviceId CHAR(36) NOT NULL COMMENT '关联设备ID',
Tag NVARCHAR(100), Mc4DeviceId INT NOT NULL COMMENT 'MC4.0设备ID',
ParentId INT, ObjectType INT COMMENT 'MC4.0对象类型',
Mc4Option NVARCHAR(500), Tag NVARCHAR(100) COMMENT '设备标签',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, ParentId INT COMMENT 'MC4.0父级ID',
Mc4Option NVARCHAR(500) COMMENT 'MC4.0原始配置JSON',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ExtId),
UNIQUE INDEX IX_IoTExt_Mc4 (Mc4DeviceId), UNIQUE INDEX IX_IoTExt_Mc4 (Mc4DeviceId),
INDEX IX_IoTExt_Device (DeviceId) INDEX IX_IoTExt_Device (DeviceId)
); ) COMMENT '采集设备扩展表';
-- ============================================
-- 6. 设备点位表 -- 6. 设备点位表
CREATE TABLE IF NOT EXISTS IoT_DevicePoint ( -- ============================================
PointId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS IoT_DevicePoint;
DeviceId CHAR(36) NOT NULL, CREATE TABLE IoT_DevicePoint (
Mc4DeviceId INT NOT NULL, PointId CHAR(36) NOT NULL COMMENT '点位ID',
PointIndex INT NOT NULL, DeviceId CHAR(36) NOT NULL COMMENT '关联设备ID',
PointType INT, Mc4DeviceId INT NOT NULL COMMENT 'MC4.0设备ID',
PointTag NVARCHAR(100), PointIndex INT NOT NULL COMMENT '点位索引',
PointName NVARCHAR(100) NOT NULL, PointType INT COMMENT '点位类型',
PointDesc NVARCHAR(200), PointTag NVARCHAR(100) COMMENT '点位标签',
Unit NVARCHAR(50), PointName NVARCHAR(100) NOT NULL COMMENT '点位名称',
IsControlPoint TINYINT DEFAULT 0, PointDesc NVARCHAR(200) COMMENT '点位描述',
Mc4Option NVARCHAR(500), Unit NVARCHAR(50) COMMENT '单位(℃/%/V)',
Enable TINYINT DEFAULT 1, IsControlPoint TINYINT DEFAULT 0 COMMENT '是否控制点(0只读/1可写)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, Mc4Option NVARCHAR(500) COMMENT 'MC4.0原始配置JSON',
Enable TINYINT DEFAULT 1 COMMENT '启用(0禁用/1启用)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (PointId),
UNIQUE INDEX IX_Point_Mc4 (Mc4DeviceId, PointIndex), UNIQUE INDEX IX_Point_Mc4 (Mc4DeviceId, PointIndex),
INDEX IX_Point_Device (DeviceId) INDEX IX_Point_Device (DeviceId)
); ) COMMENT '设备点位表';
-- 7. 设备数据归档表(仅存快照,实时不入库) -- ============================================
CREATE TABLE IF NOT EXISTS IoT_DeviceData ( -- 7. 设备数据归档表(仅存历史快照,实时数据不入库)
DataId CHAR(36) NOT NULL PRIMARY KEY, -- ============================================
DeviceId CHAR(36) NOT NULL, DROP TABLE IF EXISTS IoT_DeviceData;
PointId CHAR(36) NOT NULL, CREATE TABLE IoT_DeviceData (
PointValue DOUBLE, DataId CHAR(36) NOT NULL COMMENT '数据记录ID',
UpdateTime DATETIME NOT NULL, DeviceId CHAR(36) NOT NULL COMMENT '关联设备ID',
`Interval` INT DEFAULT 0, PointId CHAR(36) NOT NULL COMMENT '关联点位ID',
ArchiveType INT DEFAULT 1, PointValue DOUBLE COMMENT '点位数值',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, UpdateTime DATETIME NOT NULL COMMENT '数据更新时间',
`Interval` INT DEFAULT 0 COMMENT '采集间隔(毫秒)',
ArchiveType INT DEFAULT 1 COMMENT '归档类型(1小时/2日)',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (DataId),
INDEX IX_Data_Device (DeviceId), INDEX IX_Data_Device (DeviceId),
INDEX IX_Data_Time (CreateDate) INDEX IX_Data_Time (CreateDate)
); ) COMMENT '设备数据归档表(仅存历史快照)';
-- ============================================
-- 8. 告警记录表 -- 8. 告警记录表
CREATE TABLE IF NOT EXISTS IoT_Alarm ( -- ============================================
AlarmId CHAR(36) NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS IoT_Alarm;
Mc4AlarmId NVARCHAR(64) NOT NULL, CREATE TABLE IoT_Alarm (
DeviceId CHAR(36), AlarmId CHAR(36) NOT NULL COMMENT '告警ID',
PointId CHAR(36), Mc4AlarmId NVARCHAR(64) NOT NULL COMMENT 'MC4.0告警ID',
AlarmType INT DEFAULT 0, DeviceId CHAR(36) COMMENT '关联设备ID',
AlarmLevel INT DEFAULT 1, PointId CHAR(36) COMMENT '关联点位ID',
AlarmDesc NVARCHAR(500), AlarmType INT DEFAULT 0 COMMENT '告警类型',
AlarmValue DOUBLE, AlarmLevel INT DEFAULT 1 COMMENT '告警等级(1提示/2普通/3重要/4紧急)',
StartTime DATETIME NOT NULL, AlarmDesc NVARCHAR(500) COMMENT '告警描述',
EndTime DATETIME, AlarmValue DOUBLE COMMENT '触发值',
ConfirmTime DATETIME, StartTime DATETIME NOT NULL COMMENT '告警开始时间',
ConfirmUser NVARCHAR(50), EndTime DATETIME COMMENT '告警结束时间',
State INT DEFAULT 1, ConfirmTime DATETIME COMMENT '确认时间',
AdapterCode NVARCHAR(50), ConfirmUser NVARCHAR(50) COMMENT '确认人',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP, State INT DEFAULT 1 COMMENT '状态(1未确认/2已确认/3已结束)',
AdapterCode NVARCHAR(50) COMMENT '来源适配器',
CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (AlarmId),
UNIQUE INDEX IX_Alarm_Mc4 (Mc4AlarmId), UNIQUE INDEX IX_Alarm_Mc4 (Mc4AlarmId),
INDEX IX_Alarm_Device (DeviceId), INDEX IX_Alarm_Device (DeviceId),
INDEX IX_Alarm_Time (StartTime) INDEX IX_Alarm_Time (StartTime)
); ) COMMENT '告警记录表';