-- 车辆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;