-- 车辆GPS分段里程表(按5分钟时间段统计)
|
CREATE TABLE `tb_vehicle_gps_segment_mileage` (
|
`segment_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分段ID',
|
`vehicle_id` bigint(20) NOT NULL COMMENT '车辆ID',
|
`vehicle_no` varchar(20) DEFAULT NULL COMMENT '车牌号',
|
`segment_start_time` datetime NOT NULL COMMENT '时间段开始时间',
|
`segment_end_time` datetime NOT NULL COMMENT '时间段结束时间',
|
`start_longitude` decimal(10,7) DEFAULT NULL COMMENT '起点经度',
|
`start_latitude` decimal(10,7) DEFAULT NULL COMMENT '起点纬度',
|
`end_longitude` decimal(10,7) DEFAULT NULL COMMENT '终点经度',
|
`end_latitude` decimal(10,7) DEFAULT NULL COMMENT '终点纬度',
|
`segment_distance` decimal(10,3) DEFAULT 0.000 COMMENT '段距离(公里)',
|
`gps_point_count` int(11) DEFAULT 0 COMMENT 'GPS点数量',
|
`gps_ids` text COMMENT '关联的GPS记录ID列表(逗号分隔)',
|
`calculate_method` varchar(20) DEFAULT 'tianditu' COMMENT '计算方式(tianditu-天地图/haversine-球面距离)',
|
`create_time` datetime COMMENT '创建时间',
|
`update_time` datetime COMMENT '更新时间',
|
PRIMARY KEY (`segment_id`),
|
UNIQUE KEY `uk_vehicle_time` (`vehicle_id`, `segment_start_time`),
|
KEY `idx_vehicle_id` (`vehicle_id`),
|
KEY `idx_start_time` (`segment_start_time`),
|
KEY `idx_vehicle_date` (`vehicle_id`, `segment_start_time`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆GPS分段里程表';
|
|
-- GPS记录计算状态关联表(用于快速查询GPS点是否已被计算)
|
CREATE TABLE `tb_vehicle_gps_calculated` (
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
`gps_id` bigint(20) NOT NULL COMMENT 'GPS记录ID',
|
`segment_id` bigint(20) NOT NULL COMMENT '分段里程ID',
|
`vehicle_id` bigint(20) NOT NULL COMMENT '车辆ID',
|
`create_time` datetime COMMENT '计算时间',
|
PRIMARY KEY (`id`),
|
UNIQUE KEY `uk_gps_id` (`gps_id`),
|
KEY `idx_segment_id` (`segment_id`),
|
KEY `idx_vehicle_id` (`vehicle_id`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='GPS记录计算状态表';
|
|
-- 添加配置参数到系统配置表
|
INSERT INTO sys_config (config_name, config_key, config_value, config_type, remark, create_by, create_time)
|
VALUES ('GPS里程计算时间间隔', 'gps.mileage.segment.minutes', '5', 'Y', 'GPS里程计算的时间间隔(分钟),用于将GPS数据分段计算里程', 'admin', NOW())
|
ON DUPLICATE KEY UPDATE config_value = config_value;
|
|
INSERT INTO sys_config (config_name, config_key, config_value, config_type, remark, create_by, create_time)
|
VALUES ('GPS里程计算方式', 'gps.mileage.calculate.method', 'tianditu', 'Y', 'GPS里程计算方式:tianditu-天地图API,haversine-球面距离公式', 'admin', NOW())
|
ON DUPLICATE KEY UPDATE config_value = config_value;
|
|
INSERT INTO sys_config (config_name, config_key, config_value, config_type, remark, create_by, create_time)
|
VALUES ('GPS里程重复计算控制', 'gps.mileage.skip.calculated', 'true', 'Y', '是否跳过已计算的GPS点:true-跳过,false-允许重复计算', 'admin', NOW())
|
ON DUPLICATE KEY UPDATE config_value = config_value;
|