wlzboy
2025-11-15 caf56217dc2bf898b63b0e1f31a7098202c32825
sql/vehicle_mileage_stats.sql
@@ -1,37 +1,40 @@
-- 车辆里程统计表
DROP TABLE IF EXISTS `vehicle_mileage_stats`;
CREATE TABLE `vehicle_mileage_stats` (
CREATE TABLE `tb_vehicle_mileage_stats` (
  `stats_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '统计ID',
  `vehicle_id` bigint(20) NOT NULL COMMENT '车辆ID',
  `stats_date` date NOT NULL COMMENT '统计日期',
  `total_mileage` decimal(10,2) DEFAULT '0.00' COMMENT '总里程(公里)',
  `task_mileage` decimal(10,2) DEFAULT '0.00' COMMENT '任务里程(公里)',
  `non_task_mileage` decimal(10,2) DEFAULT '0.00' COMMENT '非任务里程(公里)',
  `task_mileage_ratio` decimal(5,2) DEFAULT '0.00' COMMENT '任务里程占比(%)',
  `gps_count` int(11) DEFAULT '0' COMMENT 'GPS点数',
  `vehicle_no` varchar(20) DEFAULT NULL COMMENT '车牌号',
  `stat_date` date NOT NULL COMMENT '统计日期',
  `total_mileage` decimal(10,2) DEFAULT 0.00 COMMENT '总里程(公里)',
  `task_mileage` decimal(10,2) DEFAULT 0.00 COMMENT '任务时段里程(公里)',
  `non_task_mileage` decimal(10,2) DEFAULT 0.00 COMMENT '非任务时段里程(公里)',
  `task_ratio` decimal(5,4) DEFAULT 0.0000 COMMENT '任务里程占比(0-1)',
  `gps_point_count` int(11) DEFAULT 0 COMMENT 'GPS点数量',
  `task_count` int(11) DEFAULT 0 COMMENT '任务数量',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`stats_id`),
  UNIQUE KEY `uk_vehicle_date` (`vehicle_id`,`stats_date`),
  KEY `idx_stats_date` (`stats_date`),
  KEY `idx_vehicle_id` (`vehicle_id`)
  UNIQUE KEY `uk_vehicle_date` (`vehicle_id`, `stat_date`),
  KEY `idx_vehicle_id` (`vehicle_id`),
  KEY `idx_stat_date` (`stat_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆里程统计表';
-- 车辆里程统计明细表
DROP TABLE IF EXISTS `vehicle_mileage_stats_detail`;
CREATE TABLE `vehicle_mileage_stats_detail` (
-- 车辆里程统计明细表(可选,用于调试和追溯)
CREATE TABLE `tb_vehicle_mileage_detail` (
  `detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `stats_id` bigint(20) NOT NULL COMMENT '统计ID',
  `vehicle_id` bigint(20) NOT NULL COMMENT '车辆ID',
  `task_id` bigint(20) DEFAULT NULL COMMENT '任务ID(任务时段)',
  `start_time` datetime NOT NULL COMMENT '开始时间',
  `end_time` datetime NOT NULL COMMENT '结束时间',
  `mileage` decimal(10,2) DEFAULT '0.00' COMMENT '里程(公里)',
  `is_task_period` char(1) DEFAULT '0' COMMENT '是否任务时段(0否 1是)',
  `gps_count` int(11) DEFAULT '0' COMMENT 'GPS点数',
  `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 '段距离(公里)',
  `task_distance` decimal(10,3) DEFAULT 0.000 COMMENT '任务内距离(公里)',
  `non_task_distance` decimal(10,3) DEFAULT 0.000 COMMENT '任务外距离(公里)',
  `is_in_task` tinyint(1) DEFAULT 0 COMMENT '是否完全在任务时段内(0-否,1-是,2-部分)',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`detail_id`),
  KEY `idx_stats_id` (`stats_id`),
  KEY `idx_vehicle_id` (`vehicle_id`),
  KEY `idx_task_id` (`task_id`)
  KEY `idx_vehicle_id` (`vehicle_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆里程统计明细表';