Forráskód Böngészése

修改车辆轨迹查询

chenxiaofei 2 hónapja
szülő
commit
32f37b8aed

+ 3 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/CurrentTaskTraceReq.java

@@ -7,6 +7,9 @@ import java.io.Serial;
 import java.io.Serializable;
 
 
+/**
+ * @author PC
+ */
 @Data
 public class CurrentTaskTraceReq implements Serializable {
     @Serial

+ 10 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/VehiclesTrajectoryReq.java

@@ -45,56 +45,56 @@ public class VehiclesTrajectoryReq {
      * 车速(km/h)
      */
     @Schema(description = "车速(km/h)")
-    private Float speed  =15.0f;
+    private Float speed;
 
     /**
      * GPS状态
      */
     @Schema(description = "GPS状态")
-    private String gpsStatus = "1";
+    private String gpsStatus;
     /**
      * 行驶方向(角度)
      */
     @Schema(description = "行驶方向(角度)")
-    private Float direction = 0.0f;
+    private Float direction ;
 
     /**
      * 燃油液位(%)
      */
     @Schema(description = "燃油液位(%)")
-    private Float fuelLevel = 0.0f;
+    private Float fuelLevel;
 
     /**
      * 里程数(km)
      */
     @Schema(description = "里程数(km)")
-    private String mileage= "1.0";
+    private String mileage;
 
     /**
      * 发动机温度(℃)
      */
     @Schema(description = "发动机温度(℃)")
-    private Float engineTemp = 25.0f;
+    private Float engineTemp ;
 
     /**
      * 电池电压(V)
      */
     @Schema(description = "电池电压(V)")
-    private Float batteryVoltage = 12.0f;
+    private Float batteryVoltage ;
 
     /**
      * 车辆状态
      */
 
     @Schema(description = "车辆状态")
-    private String status = "0";
+    private String status ;
 
     /**
      * 运单号
      */
 
     @Schema(description = "运单号")
-    private String wOrderNo = "55121245";
+    private String wOrderNo ;
     /**
      * 运单状态
      */
@@ -106,7 +106,7 @@ public class VehiclesTrajectoryReq {
      * 报警代码
      */
     @Schema(description = "报警代码")
-    private String alarmCode = "123";
+    private String alarmCode ;
 
     /**
      * 车辆信息

+ 69 - 29
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

@@ -3,7 +3,6 @@ package com.sckw.transport.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.core.exception.BusinessException;
@@ -48,16 +47,18 @@ import com.sckw.transport.repository.KwtWaybillOrderRepository;
 import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
 import com.sckw.transport.response.CollectZjxlResponse;
 import com.sckw.transport.service.zj.VehicleCollectService;
-import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -75,7 +76,6 @@ public class kwfTruckTraceService {
     private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
     private final VehicleCollectService vehicleCollectService;
     private final KwtLogisticsOrderUnitRepository kwtLogisticsOrderUnitRepository;
-
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     RemoteSystemService remoteSystemService;
 
@@ -237,14 +237,54 @@ public class kwfTruckTraceService {
         //缓存没有则查询数据中台
         VehicleReturnData vehicleReturnData = getVehicleReturnData(truckId);
         if (Objects.nonNull(vehicleReturnData)){
+            saveRedisCache(truckId, wOrderNo, truckNo, vehicleReturnData);
             return buildTruckInfo(truckId, vehicleReturnData, truckNo);
         }
         //todo 查询中交 如果数据中台没有数据则查询中交
-        return getTruckInfoVoByZj(truckNo, wOrderNo);
+        return getTruckInfoVoByZj(truckNo, wOrderNo,truckId);
+    }
+
+    private void saveRedisCache(String truckId, String wOrderNo, String truckNo, VehicleReturnData vehicleReturnData) {
+        TruckDto truckDto = new TruckDto();
+        truckDto.setWOrderNo(vehicleReturnData.getWOrderNo());
+        truckDto.setTruckNo(truckNo);
+        truckDto.setGpsStatus(String.valueOf(vehicleReturnData.getSpeed()));
+        truckDto.setLongitude(vehicleReturnData.getLongitude());
+        truckDto.setLatitude(vehicleReturnData.getLatitude());
+        if (Objects.nonNull(vehicleReturnData.getTs())){
+            LocalDateTime ts = vehicleReturnData.getTs();
+            Date date = Date.from(ts.toInstant(ZoneOffset.UTC));
+            truckDto.setLocationTime(DateUtils.format(date, DateUtils.DATE_TIME_PATTERN));
+        }
+        KwtWaybillOrderSubtask subtask = kwtWaybillOrderSubtaskRepository.findOneByWOrderNo(wOrderNo);
+        truckDto.setLOrderNo(Objects.nonNull(subtask) ? String.valueOf(subtask.getLOrderId()):"");
+        String taskAddress = getTaskAddress(subtask);
+        truckDto.setTaskAddress(taskAddress);
+        RedissonUtils.putString(CommonConstants.TRUCK_LOCATION + truckId +CommonConstants.UNDERSCORE+ wOrderNo, JSON.toJSONString(truckDto),10,TimeUnit.DAYS);
+    }
+
+    @NotNull
+    private String getTaskAddress(KwtWaybillOrderSubtask subtask) {
+        String startPoint = "";
+        String endPoint = "";
+        if (Objects.nonNull(subtask)){
+            List<KwtWaybillOrderAddress> kwtWaybillOrderAddresses = kwtWaybillOrderAddressRepository.queryByWOrderId(subtask.getWOrderId());
+            if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddresses)){
+                for (KwtWaybillOrderAddress e : kwtWaybillOrderAddresses) {
+                    if (Objects.equals(e.getAddressType(), AddressTypeEnum.SHIPMENT.getCode())) {
+                        startPoint = e.getDetailAddress();
+                    }
+                    if (Objects.equals(e.getAddressType(), AddressTypeEnum.TAKE.getCode())) {
+                        endPoint = e.getDetailAddress();
+                    }
+                }
+            }
+        }
+        return startPoint+"-" + endPoint;
     }
 
 
-    private TruckInfoVo getTruckInfoVoByZj(String truckNo, String wOrderNo) {
+    private TruckInfoVo getTruckInfoVoByZj(String truckNo, String wOrderNo,String truckId) {
         CollectZjxlResponse collectZjxlResponse = vehicleCollectService.transTimeManage(truckNo);
         TruckInfoVo instance = TruckInfoVo.getInstance();
         instance.setWOrderNo(wOrderNo);
@@ -261,23 +301,8 @@ public class kwfTruckTraceService {
         KwtWaybillOrderSubtask waybillOrderSubtask = kwtWaybillOrderSubtaskRepository.findOneByWOrderNo(oneByTruckNo.getWOrderNo());
         instance.setLOrderNo(Objects.nonNull(waybillOrderSubtask) && Objects.nonNull(waybillOrderSubtask.getLOrderId())
                 ? String.valueOf(waybillOrderSubtask.getLOrderId()) : "");
-        String startPoint = "";
-        String endPoint = "";
-        if (Objects.nonNull(waybillOrderSubtask)){
-            List<KwtWaybillOrderAddress> kwtWaybillOrderAddresses = kwtWaybillOrderAddressRepository.queryByWOrderId(waybillOrderSubtask.getWOrderId());
-            if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddresses)){
-                for (KwtWaybillOrderAddress e : kwtWaybillOrderAddresses) {
-                    if (Objects.equals(e.getAddressType(), AddressTypeEnum.SHIPMENT.getCode())) {
-                        startPoint = e.getDetailAddress();
-                    }
-                    if (Objects.equals(e.getAddressType(), AddressTypeEnum.TAKE.getCode())) {
-                        endPoint = e.getDetailAddress();
-                    }
-                }
-            }
-        }
-
-        instance.setTaskAddress(startPoint+"-"+endPoint);
+        String taskAddress = getTaskAddress(waybillOrderSubtask);
+        instance.setTaskAddress(taskAddress);
         return instance;
     }
 
@@ -439,18 +464,19 @@ public class kwfTruckTraceService {
      * @param req 请求参数
      * @return 响应参数
      */
-    public Void vehiclesTrajectory(@Valid VehiclesTrajectoryReq req) {
+    public Void vehiclesTrajectory( VehiclesTrajectoryReq req) {
         //通过手机号查询司机以及车辆信息
         //req.setTs(DateUtils.format(new Date(),DateUtils.DATE_TIME_PATTERN));
         RDriverVo rDriverVo = fleetService.findDriverByPhone(req.getMobile());
         if (Objects.isNull(rDriverVo)){
             throw new BusinessException("司机信息不存在");
         }
+        initReq(req);
         //查询认为中的运单信息
         KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByDriverId(rDriverVo.getId());
         //获取车队信息
         RFleetDriverVo fleetByDriveId = fleetService.findFleetByDriveId(rDriverVo.getId());
-
+        req.setLOrderNo(Optional.ofNullable(waybillOrder).map(KwtWaybillOrder::getWOrderNo).orElse(""));
 
         VehiclesTrajectoryReq.VehicleDataVO vehicleDataVO = new VehiclesTrajectoryReq.VehicleDataVO();
         //车牌id
@@ -464,7 +490,7 @@ public class kwfTruckTraceService {
                 .map(RFleetDriverVo::getFleetId)
                 .orElse(null)));
         req.setVehicleDataVO(vehicleDataVO);
-
+        req.setStatus("1");
         try {
             String url = urlConfigProperties.getApiBaseUrl();
             HttpUtil.postJson(url+ UrlConstants.VEHICLE_TRAJECTORY, JSON.toJSONString(req), null);
@@ -472,16 +498,30 @@ public class kwfTruckTraceService {
             log.error("app上报车辆轨迹异常",e);
             throw new BusinessException("app上报车辆轨迹异常");
         }
-
+        String key = CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE;
+        if (Objects.nonNull(waybillOrder)){
+            key = CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE+waybillOrder.getWOrderNo();
+        }
         //先删除缓存
-        RedissonUtils.delete(CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE+req.getWOrderNo());
+        RedissonUtils.delete(key);
         //组织缓存数据
         TruckDto truckDto = getTruckDto(req);
-        //放入缓存
-        RedissonUtils.add(CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE+req.getWOrderNo(),JSON.toJSONString(truckDto));
+        //放入缓存  存十天
+        RedissonUtils.putString(key,JSON.toJSONString(truckDto),10, TimeUnit.DAYS);
         return null;
     }
 
+    private void initReq(VehiclesTrajectoryReq req) {
+        req.setGpsStatus(req.getStatus());
+        req.setDirection(30.0f);
+        req.setFuelLevel(30.0f);
+        req.setMileage("1.0");
+        req.setEngineTemp(25.0f);
+        req.setBatteryVoltage(12.0f);
+        req.setStatus("1");
+        req.setAlarmCode("123");
+    }
+
     /**
      * 组织返回数据
      * @param req 请求参数