Pu Zhibing
2025-07-23 1ee76c252f2dbba62e0ec34cccf9eaac51de9083
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CarServiceImpl.java
@@ -1,6 +1,13 @@
package com.ruoyi.system.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -19,6 +26,7 @@
import com.ruoyi.system.service.ICarTypeService;
import com.ruoyi.system.service.IDriverService;
import com.ruoyi.system.service.IEnterpriseService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -29,6 +37,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
/**
 * @author zhibing.pu
@@ -36,6 +45,9 @@
 */
@Service
public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarService {
   @Value("${live.hls.output-path}")
   private String hlsOutputPath;
   
   @Resource
   private UPExgMsgRegisterClient upExgMsgRegisterClient;
@@ -69,8 +81,13 @@
      }
      List<Enterprise> list1 = enterpriseService.list();
      List<Driver> driverList = driverService.list(new LambdaQueryWrapper<Driver>().eq(Driver::getStatus, 1));
      List<Car> list2 = this.list();
      List<Car> carList = new ArrayList<>();
      for (UPExgMsgRegisterVo vo : list) {
         Optional<Car> first = list2.stream().filter(s -> s.getVehicleNumber().equals(vo.getVehicleNo())).findFirst();
         if(first.isPresent()){
            continue;
         }
         car = new Car();
         car.setVehicleNumber(vo.getVehicleNo());
         car.setLicensePlateColor(VehicleColorEnum.getName(vo.getVehicleColor()));
@@ -103,6 +120,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 +161,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 +172,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 +181,48 @@
                  updateWrapper.set(Car::getOnlineTime, LocalDateTime.now());
               }
               updateWrapper.set(Car::getStatus, 1);
               updateWrapper.eq(Car::getId, car.getId());
               this.update(updateWrapper);
            }
         }
      }
   }
   public void taskGetCarDeviceId(){
      Object o = redisTemplate.opsForValue().get("chuzu:token");
      String access_Token = "";
      if(null == o){
         HttpRequest get = HttpUtil.createGet("http://116.169.59.170:9986/MediaAPI/Token?token=shehongchuzu");
         HttpResponse execute = get.execute();
         String body = execute.body();
         Integer expires_in = JSON.parseObject(body).getInteger("Expires_In");
         access_Token = JSON.parseObject(body).getString("Access_Token");
         redisTemplate.opsForValue().set("chuzu:token", access_Token, expires_in, TimeUnit.SECONDS);
      }
      //获取车辆数据
      List<Car> cars = this.list(new QueryWrapper<Car>().eq("enterprise_id", 5));
      HttpRequest get = HttpUtil.createGet("http://116.169.59.170:9986/MediaAPI/BaseInfo/GetVehicleInfo?accessToken=" + access_Token + "&tenantNo=射洪出租");
      HttpResponse execute = get.execute();
      String body = execute.body();
      JSONObject jsonObject = JSON.parseObject(body);
      Integer resultState = jsonObject.getInteger("ResultState");
      if(null != resultState && 1 == resultState){
         JSONArray resultData = jsonObject.getJSONArray("ResultData");
         for (int i = 0; i < resultData.size(); i++) {
            JSONObject jsonObject1 = resultData.getJSONObject(i);
            String vehicleNo = jsonObject1.getString("VehicleNo");
            String Deviceid = jsonObject1.getString("Deviceid");
            cars.stream().filter(s->s.getVehicleNumber().equals(vehicleNo)).findFirst().ifPresent(car -> {
               car.setDeviceId(Deviceid);
               this.updateById(car);
            });
         }
      }
   }
}