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