为通用任务管理系统增加了GPS坐标记录和距离计算功能,用于记录车辆的路程信息。
在 sys_task
表中新增以下字段:
字段名 | 类型 | 说明 |
---|---|---|
departure_longitude |
DECIMAL(10,7) | 出发地经度 |
departure_latitude |
DECIMAL(10,7) | 出发地纬度 |
destination_longitude |
DECIMAL(10,7) | 目的地经度 |
destination_latitude |
DECIMAL(10,7) | 目的地纬度 |
estimated_distance |
DECIMAL(8,2) | 预计公里数 |
sql/task_tables.sql
- 新表创建脚本sql/add_gps_coordinates.sql
- 现有表字段添加脚本使用Haversine公式计算地球表面两点间的球面距离:
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c
其中:
- φ1, φ2:两点的纬度
- Δφ:纬度差
- Δλ:经度差
- R:地球半径(6371公里)
{
"taskType": "MAINTENANCE",
"taskDescription": "车辆维修任务",
"departureAddress": "北京市朝阳区",
"destinationAddress": "北京市海淀区",
"departureLongitude": 116.397128,
"departureLatitude": 39.916527,
"destinationLongitude": 116.298056,
"destinationLatitude": 39.959444,
"plannedStartTime": "2024-01-15 09:00:00",
"plannedEndTime": "2024-01-15 17:00:00"
}
系统会自动计算两点间距离并设置到 estimatedDistance
字段。
sql/task_tables.sql
创建新表sql/add_gps_coordinates.sql
添加字段-- 查看表结构
SHOW CREATE TABLE sys_task;
-- 查看新增字段
DESCRIBE sys_task;
-- 测试数据插入
INSERT INTO sys_task (
task_code, task_type, task_status, creator_id, dept_id, create_by,
departure_longitude, departure_latitude, destination_longitude, destination_latitude
) VALUES (
'TEST001', 'MAINTENANCE', 'PENDING', 1, 1, 'admin',
116.397128, 39.916527, 116.298056, 39.959444
);
sql/task_tables.sql
- 新表创建脚本sql/add_gps_coordinates.sql
- 现有表更新脚本ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTask.java
- 实体类ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskCreateVO.java
- 创建VOruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskUpdateVO.java
- 更新VOruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
- 服务实现ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml
- MyBatis映射ruoyi-common/src/main/java/com/ruoyi/common/utils/GpsDistanceUtils.java
- 工具类