From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 28 三月 2025 19:57:56 +0800
Subject: [PATCH] 修改bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java |  196 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 194 insertions(+), 2 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
index d80ad15..21db73c 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -20,6 +20,7 @@
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
+import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
 import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
 import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo;
 import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil;
@@ -105,6 +106,15 @@
     
     @Resource
     private IBalanceUsageRecordService balanceUsageRecordService;
+    
+    @Resource
+    private FleetEngineUtil fleetEngineUtil;
+    
+    @Autowired
+    private IOrderPositionService orderPositionService;
+    
+    @Autowired
+    private ICarService carService;
 
 
 
@@ -750,10 +760,11 @@
      */
     @Override
     public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception {
-        //出租车
         int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId)
                 .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9)));
-        return i;
+        int i1 = orderLogisticsService.selectCount(new EntityWrapper<OrderLogistics>().eq("driverId", driverId)
+                .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9)));
+        return i + i1;
     }
 
 
@@ -1234,6 +1245,187 @@
         }
         return ResultUtil.success();
     }
+    
+    
+    @Override
+    public void getDriverNowPosition() {
+        for (OrderPrivateCar orderPrivateCar : orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 5))) {
+            String trackId = orderPrivateCar.getTrackId();
+            if(ToolUtil.isNotEmpty(trackId)){
+                String trip = fleetEngineUtil.getTrip(trackId);
+                JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation");
+                JSONObject location = lastLocation.getJSONObject("location");
+                Double latitude = location.getDouble("latitude");
+                Double longitude = location.getDouble("longitude");
+                OrderPosition orderPosition = new OrderPosition();
+                orderPosition.setOrderId(orderPrivateCar.getId());
+                orderPosition.setOrderType(1);
+                orderPosition.setDriverId(orderPrivateCar.getDriverId());
+                orderPosition.setLat(latitude.toString());
+                orderPosition.setLon(longitude.toString());
+                orderPosition.setInsertTime(new Date());
+                try {
+                    orderPositionService.saveData(orderPosition);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    
+        List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().eq("state", 5));
+        for (OrderLogistics orderLogistics : orderLogisticsList) {
+            String trackId = orderLogistics.getTrackId();
+            if(ToolUtil.isNotEmpty(trackId)){
+                String trip = fleetEngineUtil.getTrip(trackId);
+                JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation");
+                JSONObject location = lastLocation.getJSONObject("location");
+                Double latitude = location.getDouble("latitude");
+                Double longitude = location.getDouble("longitude");
+                OrderPosition orderPosition = new OrderPosition();
+                orderPosition.setOrderId(orderLogistics.getId());
+                orderPosition.setOrderType(1);
+                orderPosition.setDriverId(orderLogistics.getDriverId());
+                orderPosition.setLat(latitude.toString());
+                orderPosition.setLon(longitude.toString());
+                orderPosition.setInsertTime(new Date());
+                try {
+                    orderPositionService.saveData(orderPosition);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+    
+    
+    /**
+     * 结束google订单状态
+     */
+    @Override
+    public void overGoogleOrder() {
+        List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId")
+                .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1));
+        for (OrderPrivateCar privateCar : privateCars) {
+            Integer state = privateCar.getState();
+            String tripId = privateCar.getTripId();
+            String trip = fleetEngineUtil.getTrip(tripId);
+            if("" == trip){
+                privateCar.setIsover(1);
+                orderPrivateCarService.updateById(privateCar);
+                continue;
+            }
+            if(ToolUtil.isNotEmpty(trip)){
+                JSONObject jsonObject = JSON.parseObject(trip);
+                String tripStatus = jsonObject.getString("tripStatus");
+                Car car = carService.selectById(privateCar.getCarId());
+                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                privateCar.setIsover(1);
+                                orderPrivateCarService.updateById(privateCar);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        privateCar.setIsover(1);
+                        orderPrivateCarService.updateById(privateCar);
+                    }
+                }
+                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                privateCar.setIsover(1);
+                                orderPrivateCarService.updateById(privateCar);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        privateCar.setIsover(1);
+                        orderPrivateCarService.updateById(privateCar);
+                    }
+                }
+            }
+        }
+        List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId")
+                .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1));
+        for (OrderLogistics orderLogistics : orderLogisticsList) {
+            Integer state = orderLogistics.getState();
+            String tripId = orderLogistics.getTripId();
+            String trip = fleetEngineUtil.getTrip(tripId);
+            if("" == trip){
+                orderLogistics.setIsover(1);
+                orderLogisticsService.updateById(orderLogistics);
+                continue;
+            }
+            if(ToolUtil.isNotEmpty(trip)){
+                JSONObject jsonObject = JSON.parseObject(trip);
+                String tripStatus = jsonObject.getString("tripStatus");
+                Car car = carService.selectById(orderLogistics.getCarId());
+                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                orderLogistics.setIsover(1);
+                                orderLogisticsService.updateById(orderLogistics);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        orderLogistics.setIsover(1);
+                        orderLogisticsService.updateById(orderLogistics);
+                    }
+                }
+                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                orderLogistics.setIsover(1);
+                                orderLogisticsService.updateById(orderLogistics);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        orderLogistics.setIsover(1);
+                        orderLogisticsService.updateById(orderLogistics);
+                    }
+                }
+            }
+        }
+    }
 }
 
 

--
Gitblit v1.7.1