数据结构重构

This commit is contained in:
lin 2026-04-17 11:25:21 +08:00
parent fb06fa85f1
commit 0893d45c20
4 changed files with 67 additions and 16 deletions

View File

@ -57,20 +57,17 @@ create table IF NOT EXISTS wvp_device_alarm
);
-- 存储移动位置订阅上报的数据
drop table IF EXISTS wvp_device_mobile_position;
create table IF NOT EXISTS wvp_device_mobile_position
drop table IF EXISTS wvp_mobile_position;
create table IF NOT EXISTS wvp_mobile_position
(
id serial primary key COMMENT '主键ID',
device_id character varying(50) not null COMMENT '设备ID',
channel_id character varying(50) not null COMMENT '通道ID',
device_name character varying(255) COMMENT '设备名称',
time character varying(50) COMMENT '上报时间',
timestamp BIGINT COMMENT '上报时间',
longitude double precision COMMENT '经度',
latitude double precision COMMENT '纬度',
altitude double precision COMMENT '海拔',
speed double precision COMMENT '速度',
direction double precision COMMENT '方向角',
report_source character varying(50) COMMENT '上报来源',
create_time character varying(50) COMMENT '入库时间'
);

View File

@ -102,34 +102,28 @@ COMMENT ON COLUMN wvp_device_alarm.alarm_type IS '报警类型';
COMMENT ON COLUMN wvp_device_alarm.create_time IS '数据入库时间';
drop table IF EXISTS wvp_device_mobile_position;
create table IF NOT EXISTS wvp_device_mobile_position
drop table IF EXISTS wvp_mobile_position;
create table IF NOT EXISTS wvp_mobile_position
(
id serial primary key,
device_id character varying(50) not null,
channel_id character varying(50) not null,
device_name character varying(255),
time character varying(50),
timestamp int8 varying(50),
longitude double precision,
latitude double precision,
altitude double precision,
speed double precision,
direction double precision,
report_source character varying(50),
create_time character varying(50)
);
COMMENT ON TABLE wvp_device_mobile_position IS '存储移动位置订阅上报的数据';
COMMENT ON COLUMN wvp_device_mobile_position.id IS '主键ID';
COMMENT ON COLUMN wvp_device_mobile_position.device_id IS '设备ID';
COMMENT ON COLUMN wvp_device_mobile_position.channel_id IS '通道ID';
COMMENT ON COLUMN wvp_device_mobile_position.device_name IS '设备名称';
COMMENT ON COLUMN wvp_device_mobile_position.time IS '上报时间';
COMMENT ON COLUMN wvp_device_mobile_position.timestamp IS '上报时间';
COMMENT ON COLUMN wvp_device_mobile_position.longitude IS '经度';
COMMENT ON COLUMN wvp_device_mobile_position.latitude IS '纬度';
COMMENT ON COLUMN wvp_device_mobile_position.altitude IS '海拔';
COMMENT ON COLUMN wvp_device_mobile_position.speed IS '速度';
COMMENT ON COLUMN wvp_device_mobile_position.direction IS '方向角';
COMMENT ON COLUMN wvp_device_mobile_position.report_source IS '上报来源';
COMMENT ON COLUMN wvp_device_mobile_position.create_time IS '入库时间';

View File

@ -156,6 +156,51 @@ create table IF NOT EXISTS wvp_alarm (
);
/*
* 20260417 wvp_device_mobile_position从专属国标的位置记录表
*/
DELIMITER // -- 重定义分隔符避免分号冲突
CREATE PROCEDURE `wvp_20260417`()
BEGIN
IF NOT EXISTS (SELECT column_name FROM information_schema.columns
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position' and column_name = 'timestamp')
THEN
ALTER TABLE wvp_device_mobile_position ADD timestamp BIGINT COMMENT '上报时间';
END IF;
IF EXISTS (SELECT column_name FROM information_schema.columns
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position' and column_name = 'time')
THEN
UPDATE wvp_device_mobile_position SET timestamp = UNIX_TIMESTAMP(time) * 1000;
ALTER TABLE wvp_device_mobile_position DROP time;
END IF;
IF EXISTS (SELECT column_name FROM information_schema.columns
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position' and column_name = 'device_id')
THEN
ALTER TABLE wvp_device_mobile_position DROP device_id;
END IF;
IF EXISTS (SELECT column_name FROM information_schema.columns
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position' and column_name = 'device_name')
THEN
ALTER TABLE wvp_device_mobile_position DROP device_name;
END IF;
IF EXISTS (SELECT column_name FROM information_schema.columns
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position' and column_name = 'report_source')
THEN
ALTER TABLE wvp_device_mobile_position DROP report_source;
END IF;
-- 修改表名
IF EXISTS (SELECT table_name FROM information_schema.tables
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_mobile_position')
THEN
ALTER TABLE wvp_device_mobile_position RENAME TO wvp_mobile_position;
END IF;
END; //
call wvp_20260417();
DROP PROCEDURE wvp_20260417;
DELIMITER ;

View File

@ -69,3 +69,18 @@ COMMENT ON COLUMN wvp_alarm.longitude IS '报警附带的经度';
COMMENT ON COLUMN wvp_alarm.latitude IS '报警附带的纬度';
COMMENT ON COLUMN wvp_alarm.alarm_type IS '报警类别';
COMMENT ON COLUMN wvp_alarm.alarm_time IS '报警时间';
/*
* 20260417 wvp_device_mobile_position从专属国标的位置记录表
*/
ALTER TABLE wvp_device_mobile_position ADD COLUMN IF NOT EXISTS timestamp int8;
UPDATE wvp_device_mobile_position SET timestamp = EXTRACT(EPOCH FROM time::timestamp) * 1000;
ALTER TABLE wvp_device_mobile_position DROP COLUMN IF EXISTS time;
ALTER TABLE wvp_device_mobile_position DROP COLUMN IF EXISTS device_id;
ALTER TABLE wvp_device_mobile_position DROP COLUMN IF EXISTS device_name;
ALTER TABLE wvp_device_mobile_position DROP COLUMN IF EXISTS report_source;
-- 修改表名
ALTER TABLE wvp_device_mobile_position RENAME TO wvp_mobile_position;
COMMENT ON COLUMN wvp_mobile_position.timestamp IS '上报时间';