From a07a063b9e2fbe1ea41b520274dd9821af5ee03a Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 17 十月 2025 15:46:05 +0800
Subject: [PATCH] 添加修改司机状态的定时任务

---
 DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java |   77 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 72 insertions(+), 5 deletions(-)

diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
index e2ee4a6..b23c202 100644
--- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
+++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -1,12 +1,21 @@
 package com.stylefeng.guns.modular.system.util;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
+import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
+import com.stylefeng.guns.modular.system.dao.DriverWorkMapper;
+import com.stylefeng.guns.modular.system.model.Driver;
+import com.stylefeng.guns.modular.system.model.DriverWork;
 import com.stylefeng.guns.modular.system.service.IDriverService;
+import com.stylefeng.guns.modular.system.service.IDriverWorkService;
 import com.stylefeng.guns.modular.system.service.IOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 
@@ -26,8 +35,14 @@
     private JGPushUtil jgPushUtil;
 
     public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id
+    @Autowired
+    private DriverWorkMapper driverWorkMapper;
 
+    @Autowired
+    private IDriverWorkService driverWorkService;
 
+    @Autowired
+    private IOrderPrivateCarService orderPrivateCarService;
 
 
     /**
@@ -36,10 +51,9 @@
     @Scheduled(fixedRate = 1000 * 60)
     public void taskMinute(){
         try {
+
             //修改满足活动条件的数据(在线时长,订单量)
-            driverService.taskMinute();
-            //处于预约单
-            orderService.reservationOrder();
+//            driverService.taskMinute();
 //            处理车载端断电后的自动下班
 //            driverService.taskOffWork();
 //            处理结束订单后30分钟解绑小号功能
@@ -48,6 +62,21 @@
             e.printStackTrace();
         }
     }
+    
+    /**
+     * 每隔一分钟去处理的定时任务
+     */
+    @Scheduled(fixedRate = 1000 * 60)
+    public void taskMinute2(){
+        try {
+            updateDriverState();
+            //处于预约单
+            orderService.reservationOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
 
 
 
@@ -59,9 +88,9 @@
         try {
             //处理未支付订单发送短信通知
             orderService.taskSmsSend();
-            for (Integer id: driverIds){
+//            for (Integer id: driverIds){
 //                jgPushUtil.push(1, "您的预约订单出行时间就要到了,请尽快前往预约地点接乘客", "DRIVER" + id);
-            }
+//            }
             this.driverIds.clear();
         } catch (Exception e) {
             e.printStackTrace();
@@ -96,4 +125,42 @@
 //            e.printStackTrace();
 //        }
 //    }
+
+
+
+
+    private void updateDriverState(){
+        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("authState", 2).ne("flag", 3));
+        for (Driver driver : drivers) {
+            Integer state = driver.getState();
+            int driverWork = driverWorkService.selectCount(new EntityWrapper<DriverWork>().eq("driverId", driver.getId()).eq("state", 1));
+            int count = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driver.getId())
+                    .in("state", Arrays.asList(2, 3, 4, 5, 11)).eq("isDelete", 1).last(" and (orderType = 1 or (orderType = 2 and UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(NOW()) < 1800))"));
+            if(1 == state){
+                if(count > 0){
+                    driver.setState(3);
+                } else if (count == 0 && driverWork > 0) {
+                    driver.setState(2);
+                }
+            }
+            if(2 == state){
+                if(count > 0){
+                    driver.setState(3);
+                } else if (0 == driverWork) {
+                    driver.setState(1);
+                }
+            }
+            if(3 == state){
+                if(count == 0 && driverWork > 0){
+                    driver.setState(2);
+                }
+                if (count == 0 && 0 == driverWork) {
+                    driver.setState(1);
+                }
+            }
+        }
+        if(!drivers.isEmpty()){
+            driverService.updateBatchById(drivers);
+        }
+    }
 }

--
Gitblit v1.7.1