puzhibing
2025-05-30 35b0088fa28dab8a28758dcbcc056620c1ea5e2c
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;
@@ -111,6 +118,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
@@ -136,7 +159,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();
@@ -146,7 +170,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) {
@@ -154,6 +179,7 @@
                  updateWrapper.set(Car::getOnlineTime, LocalDateTime.now());
               }
               updateWrapper.set(Car::getStatus, 1);
               updateWrapper.eq(Car::getId, car.getId());
               this.update(updateWrapper);
            }
         }
@@ -181,6 +207,39 @@
         e.printStackTrace();
      }
   }
   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);
            });
         }
      }
   }
}