From 821fc2f632f8b974a2c0fc37630e13c5fbe6086c Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 26 九月 2025 17:26:16 +0800
Subject: [PATCH] 修改bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java
index 999d760..6821759 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java
@@ -157,6 +157,13 @@
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         List<DriverActivityHistory> driverActivityHistories = driverActivityHistoryMapper.selectList(new EntityWrapper<DriverActivityHistory>().eq("driverId", driverId)
                 .eq("type", 3).eq("carryOut", 1).last(" and day = '" + sdf.format(new Date()) + "' and driverActivityId in (select id from t_driver_activity where status = 3 and now() between startTime and endTime)"));
+        if(!driverActivityHistories.isEmpty()){
+            //如果一直属于上班中,则需要从任务开始时间计算时间
+            Date insertTime = driverActivityHistories.get(0).getInsertTime();
+            if(driverWork.getStartTime().getTime() < insertTime.getTime()){
+                driverWork.setStartTime(insertTime);
+            }
+        }
         //生成每个活动从开始上班到当前时间的时长记录
         for (DriverActivityHistory driverActivityHistory : driverActivityHistories) {
             String value = redisUtil.getValue("driverActivity_" + driverId + "_" + driverActivityHistory.getId());
@@ -210,7 +217,6 @@
                 continue;
             }
             Integer driverId = driverOnline.getDriverId();
-            Driver driver1 = driverService.selectById(driverId);
             long m = Double.valueOf(driverActivityOnline.getOfflineTime() * 3600000L).longValue();
             
             //找出最后一次接单的时间
@@ -259,7 +265,7 @@
                     public void run() {
                         try {
                             // 使用Runtime执行命令
-                            Process process = Runtime.getRuntime().exec("sudo rm -rf /home/igotechgh/nginx/html/files/audio/" + fileName);
+                            Process process = Runtime.getRuntime().exec("sudo rm -rf /data/nginx/html/files/audio/" + fileName);
                             // 读取命令的输出
                             BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                             String line;
@@ -306,13 +312,13 @@
             //在线时长累计
             Long time = jsonObject.getLong("time") / 60000;
             int count1 = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverActivityHistory.getDriverId())
-                    .eq("isDelete", 1).ne("state", 10).last(" and UNIX_TIMESTAMP(snatchOrderTime) > " + (startTime) / 1000));
+                    .eq("isDelete", 1).ne("state", 10).last(" and UNIX_TIMESTAMP(snatchOrderTime) > " + (startTime / 1000)));
             int count2 = orderLogisticsService.selectCount(new EntityWrapper<OrderLogistics>().eq("driverId", driverActivityHistory.getDriverId())
-                    .eq("isDelete", 1).ne("state", 10).last(" and UNIX_TIMESTAMP(snatchOrderTime) > " + (startTime) / 1000));
+                    .eq("isDelete", 1).ne("state", 10).last(" and UNIX_TIMESTAMP(snatchOrderTime) > " + (startTime / 1000)));
     
             Driver driver = driverService.selectById(driverWork.getDriverId());
             //阶段时间累计时长超过设定时长且没有接单,不计入累计总时长(司机服务中不下班)
-            if(m <= time && count1 + count2 == 0 && driver.getState() != 3){
+            if(m <= time && (count1 + count2) == 0){
                 //司机下班,清空当前阶段的累计时长
                 driverWork.setState(2);
                 driverWork.setEndTime(new Date());
@@ -343,7 +349,7 @@
                     public void run() {
                         try {
                             // 使用Runtime执行命令
-                            Process process = Runtime.getRuntime().exec("sudo rm -rf /home/igotechgh/nginx/html/files/audio/" + fileName);
+                            Process process = Runtime.getRuntime().exec("sudo rm -rf /data/nginx/html/files/audio/" + fileName);
                             // 读取命令的输出
                             BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                             String line;
@@ -359,9 +365,8 @@
                         }
                     }
                 }, 30000);
-            }
-            //阶段时间累计有新的订单,计入累计总时长,重置新的开始统计时间戳
-            if(m <= time && count1 + count2 > 0){
+            } else if(m <= time && (count1 + count2) > 0){
+                //阶段时间累计有新的订单,计入累计总时长,重置新的开始统计时间戳
                 DriverOnline driverOnline = this.selectOne(new EntityWrapper<DriverOnline>().eq("DATE_FORMAT(date, '%Y-%m-%d')", sdf.format(new Date()))
                         .eq("driverId", driverActivityHistory.getDriverId()));
                 if(null == driverOnline){

--
Gitblit v1.7.1