From d6df1c415a1e34b6aaa2f107c2b30580992e85e3 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 23 四月 2025 17:10:50 +0800
Subject: [PATCH] 修改测试bug

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 53 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java
index e4ec30f..09b2e9e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java
@@ -19,6 +19,8 @@
 import com.ruoyi.system.service.ICarTypeService;
 import com.ruoyi.system.service.IDriverService;
 import com.ruoyi.system.service.IEnterpriseService;
+import com.ruoyi.system.util.JavaCVStreamUtil;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -29,6 +31,9 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author zhibing.pu
@@ -36,6 +41,9 @@
  */
 @Service
 public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarService {
+	
+	@Value("${live.hls.output-path}")
+	private String hlsOutputPath;
 	
 	@Resource
 	private UPExgMsgRegisterClient upExgMsgRegisterClient;
@@ -103,6 +111,22 @@
 	
 	
 	/**
+	 * 定时保存车辆司机id
+	 */
+	@Override
+	public void taskSaveDriverId() {
+		List<Driver> driverList = driverService.list(new LambdaQueryWrapper<Driver>().eq(Driver::getStatus, 1));
+		List<Car> list = this.list(new LambdaQueryWrapper<Car>().isNull(Car::getDriverId));
+		for (Car car : list) {
+			Optional<Driver> optional = driverList.stream().filter(s -> s.getVehicleNumber().equals(car.getVehicleNumber())).findFirst();
+			if (optional.isPresent()) {
+				car.setDriverId(optional.get().getId());
+				this.updateById(car);
+			}
+		}
+	}
+	
+	/**
 	 * 获取车辆列表数据
 	 *
 	 * @param carListReq
@@ -128,7 +152,8 @@
 				if (car.getStatus() == 1) {
 					updateWrapper.set(Car::getDownlineTime, LocalDateTime.now());
 				}
-				updateWrapper.set(Car::getStatus, 4);
+				updateWrapper.set(Car::getStatus, 3);
+				updateWrapper.eq(Car::getId, car.getId());
 				this.update(updateWrapper);
 			} else {
 				String dateTime = gnssDataVo.getDate() + " " + gnssDataVo.getTime();
@@ -138,7 +163,8 @@
 					if (car.getStatus() == 1) {
 						updateWrapper.set(Car::getDownlineTime, LocalDateTime.now());
 					}
-					updateWrapper.set(Car::getStatus, 4);
+					updateWrapper.set(Car::getStatus, 3);
+					updateWrapper.eq(Car::getId, car.getId());
 					this.update(updateWrapper);
 				} else {
 					if (car.getStatus() != 1) {
@@ -146,9 +172,34 @@
 						updateWrapper.set(Car::getOnlineTime, LocalDateTime.now());
 					}
 					updateWrapper.set(Car::getStatus, 1);
+					updateWrapper.eq(Car::getId, car.getId());
 					this.update(updateWrapper);
 				}
 			}
 		}
 	}
+	
+	
+	/**
+	 * 检测视频播放,清除没有播放的视频流
+	 */
+	@Override
+	public void taskPlayDetection(Integer deviceNumber) {
+		Car car = this.getById(deviceNumber);
+		try {
+			ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
+			executorService.scheduleWithFixedDelay(new Runnable() {
+				@Override
+				public void run() {
+					if(!redisTemplate.hasKey("live:" + car.getId())){
+						String folderPath = hlsOutputPath + "hls\\" + car.getVehicleNumber();
+						JavaCVStreamUtil.close(car.getId(), folderPath);
+					}
+				}}, 1, 1, TimeUnit.MINUTES);
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+	}
+
+
 }

--
Gitblit v1.7.1