From 8b005a808d6ab8fae1480ed57bdfd68af2dafcd4 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 01 十一月 2025 23:07:49 +0800
Subject: [PATCH] feat:输入出入地址时,会自动计算距离
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java | 106 ++++++++++++++--------------------------------------
1 files changed, 29 insertions(+), 77 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java
index 8c7c1ee..bb1e178 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java
@@ -4,15 +4,11 @@
import java.util.Date;
import java.util.List;
-import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import com.ruoyi.system.domain.GpsDevice;
-import com.ruoyi.system.domain.GpsDeviceListResponse;
-import com.ruoyi.system.domain.GpsGroup;
import com.ruoyi.system.domain.GpsLastPosition;
import com.ruoyi.system.domain.GpsLastPositionRequest;
import com.ruoyi.system.domain.GpsLastPositionResponse;
@@ -40,21 +36,16 @@
private IVehicleGpsService vehicleGpsService;
/**
- * 鍚屾璁惧鍒楄〃鍜孏PS浣嶇疆
+ * 鍚屾GPS浣嶇疆
*/
public void syncGpsData() {
try {
log.info("寮�濮嬪悓姝PS鏁版嵁...");
- // 1. 鑾峰彇璁惧鍒楄〃锛岃繖浼氳嚜鍔ㄦ洿鏂拌溅杈嗕俊鎭腑鐨勮澶嘔D
- GpsDeviceListResponse response = gpsCollectService.getDeviceList();
- // 鏇存柊杞﹁締璁惧ID
- updateVehicleDeviceIds(response);
-
- // 2. 鑾峰彇鎵�鏈夎溅杈嗕俊鎭�
+ // 1. 鑾峰彇鎵�鏈夎溅杈嗕俊鎭�
List<VehicleInfo> vehicleList = vehicleInfoService.selectVehicleInfoList(new VehicleInfo());
- //鍦ㄨ繖閲岃幏寰楁墍鏈夎溅杈嗙殑GPS鏈�鍚庝綅缃�
+ // 2. 鑾峰彇鎵�鏈夎溅杈嗙殑GPS鏈�鍚庝綅缃�
GpsLastPositionResponse gpsLastPositionResponse = gpsCollectService.getLastPosition(new GpsLastPositionRequest());
// 3. 閬嶅巻杞﹁締鍒楄〃锛岃幏鍙栨瘡涓溅杈嗙殑GPS浣嶇疆
@@ -62,11 +53,11 @@
if (vehicle.getDeviceId() != null && !vehicle.getDeviceId().isEmpty()) {
try {
// 鑾峰彇杞﹁締鐨勬渶鍚庝綅缃�
- gpsLastPositionResponse.getRecords().stream().filter(e->e.getDeviceid().equals(vehicle.getDeviceId())).forEach(record -> {
+ gpsLastPositionResponse.getRecords().stream()
+ .filter(e -> e.getDeviceid().equals(vehicle.getDeviceId()))
+ .forEach(record -> {
updateVehicleGpsPositions(vehicle, record);
-
- });
-
+ });
} catch (Exception e) {
log.error("鑾峰彇杞﹁締[{}]GPS浣嶇疆澶辫触: {}", vehicle.getVehicleNo(), e.getMessage());
}
@@ -77,53 +68,6 @@
} catch (Exception e) {
log.error("GPS鏁版嵁鍚屾澶辫触: {}", e.getMessage());
}
- }
-
- /**
- * 鏇存柊杞﹁締璁惧ID
- */
- private void updateVehicleDeviceIds(GpsDeviceListResponse response) {
- if (response.getStatus() != 0 || response.getGroups() == null) {
- return;
- }
-
- for (GpsGroup group : response.getGroups()) {
- for (GpsDevice device : group.getDevices()) {
- String deviceName = device.getDevicename();
- String remark = device.getRemark();
- String deviceId = device.getDeviceid();
-
- if (StringUtils.isNotEmpty(deviceName) || StringUtils.isNotEmpty(remark)) {
- String plateNumber = extractPlateNumber(deviceName, remark);
- if (StringUtils.isNotEmpty(plateNumber)) {
- VehicleInfo vehicleInfo = vehicleInfoService.selectVehicleInfoByPlateNumber(plateNumber);
- if (vehicleInfo != null) {
- vehicleInfo.setDeviceId(deviceId);
- vehicleInfoService.updateVehicleInfo(vehicleInfo);
- } else {
- VehicleInfo newVehicle = new VehicleInfo();
- newVehicle.setVehicleNo(plateNumber);
- newVehicle.setDeviceId(deviceId);
- newVehicle.setStatus("0");
- vehicleInfoService.insertVehicleInfo(newVehicle);
- }
- }
- }
- }
- }
- }
-
- /**
- * 浠庤澶囧悕绉板拰澶囨敞涓彁鍙栬溅鐗屽彿
- */
- private String extractPlateNumber(String deviceName, String remark) {
- if (StringUtils.isNotEmpty(deviceName)) {
- return deviceName;
- }
- if (StringUtils.isNotEmpty(remark)) {
- return remark;
- }
- return null;
}
/**
@@ -140,33 +84,41 @@
gps.setSpeed(position.getSpeed());
gps.setDirection(Double.valueOf(position.getCourse()));
- //devicetime 杩欎釜鏄竴涓猯inux鏃堕棿鎴筹紝瑕佽浆鎹㈡垚鍖椾含鏃堕棿锛屽啀杞垚yyyy-MM-dd HH:mm:ss鏍煎紡
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
+
+ // 澶勭悊鍒拌揪鏃堕棿
+ long arrivedTime = position.getArrivedtime();
+ Date arrivedDate;
+ if (arrivedTime > 0) {
+ arrivedDate = new Date(arrivedTime);
+ arrivedDate.setTime(arrivedDate.getTime() - 8 * 60 * 60 * 1000);
+ } else {
+ arrivedDate = new Date();
+ }
+ gps.setPlatformProcessTime(sdf.format(arrivedDate));
+
// 璁惧涓婃姤鏃堕棿
long deviceTime = position.getDevicetime();
- if (deviceTime > 0 && deviceTime < 4102444800L) { // 2100-01-01 00:00:00
- gps.setDeviceReportTime(sdf.format(new Date(deviceTime * 1000L)));
+ Date date;
+ if (deviceTime > 0) {
+ date = new Date(deviceTime);
+ date.setTime(date.getTime() - 8 * 60 * 60 * 1000);
} else {
- log.warn("杞﹁締[{}]鐨勮澶囨椂闂存埑[{}]鏃犳晥锛屼娇鐢ㄥ綋鍓嶆椂闂�", vehicle.getVehicleNo(), deviceTime);
- gps.setDeviceReportTime(sdf.format(new Date()));
+ date = arrivedDate;
}
-
- // 骞冲彴澶勭悊鏃堕棿锛堝綋鍓嶆椂闂达級
- gps.setPlatformProcessTime(sdf.format(new Date()));
+ gps.setDeviceReportTime(sdf.format(date));
// 閲囬泦鏃堕棿锛堜娇鐢ㄨ澶囦笂鎶ユ椂闂达級
- gps.setCollectTime(gps.getDeviceReportTime());
+ gps.setCollectTime(sdf.format(new Date()));
// 淇濆瓨GPS浣嶇疆淇℃伅
vehicleGpsService.insertVehicleGps(gps);
- log.info("杞﹁締[{}]GPS浣嶇疆宸叉洿鏂�: 缁忓害={}, 绾害={}, 璁惧鏃堕棿={}, 澶勭悊鏃堕棿={}",
- vehicle.getVehicleNo(), position.getCallon(), position.getCallat(),
- gps.getDeviceReportTime(), gps.getPlatformProcessTime());
+// log.info("杞﹁締[{}]GPS浣嶇疆宸叉洿鏂�: 缁忓害={}, 绾害={}, 璁惧鏃堕棿={}, 澶勭悊鏃堕棿={}",
+// vehicle.getVehicleNo(), position.getCallon(), position.getCallat(),
+// gps.getDeviceReportTime(), gps.getPlatformProcessTime());
} catch (Exception e) {
log.error("鏇存柊杞﹁締[{}]GPS浣嶇疆澶辫触: {}", vehicle.getVehicleNo(), e.getMessage());
}
}
-
}
--
Gitblit v1.9.1