From 53443db90d66094124dbbeebbcf763032a2333d0 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期五, 23 五月 2025 18:27:37 +0800
Subject: [PATCH] fix: 修复订单详情知情书的显示

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/GpsSyncTask.java |  100 +++++++++++++-------------------------------------
 1 files changed, 26 insertions(+), 74 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..692c14f 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,23 +84,32 @@
             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);
@@ -168,5 +121,4 @@
             log.error("鏇存柊杞﹁締[{}]GPS浣嶇疆澶辫触: {}", vehicle.getVehicleNo(), e.getMessage());
         }
     }
-
 }

--
Gitblit v1.9.1