| | |
| | | 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; |
| | | |
| | |
| | | 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 |
| | |
| | | */ |
| | | @Service |
| | | public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarService { |
| | | |
| | | @Value("${live.hls.output-path}") |
| | | private String hlsOutputPath; |
| | | |
| | | @Resource |
| | | private UPExgMsgRegisterClient upExgMsgRegisterClient; |
| | |
| | | |
| | | |
| | | /** |
| | | * 定时保存车辆司机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 |
| | |
| | | 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(); |
| | |
| | | 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) { |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |