Procházet zdrojové kódy

全图监控迭代车辆弹窗信息修改

chenxiaofei před 1 týdnem
rodič
revize
926a862d41

+ 18 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/TruckInfoVo.java

@@ -28,27 +28,34 @@ public class TruckInfoVo implements Serializable {
     /**
      * 车辆id
      */
+    @Schema(description = "车辆id")
     private String truckId;
     /**
      * 司机id
      */
+    @Schema(description = "司机id")
     private String driveId;
     /**
      * 司机名称
      */
+    @Schema(description = "司机名称")
     private String driveName;
     /**
      * 承运单位
      */
+    @Schema(description = "承运单位")
     private String  carrier ;
 
     /**
      * 司机手机号
      */
+    @Schema(description = "司机手机号")
     private String drivePhone;
     /**
      * 运单状态
      */
+    @Schema(description = "运单状态")
+
     private String taskStatus;
 
     /**
@@ -83,6 +90,17 @@ public class TruckInfoVo implements Serializable {
      */
     @Schema(description = "任务地点")
     private String taskAddress;
+    /**
+     * 商品名称
+     */
+    @Schema(description = "商品名称")
+    private String goodsName;
+
+    /**
+     * 轴数
+     */
+    @Schema(description = "轴数")
+    private String axleNum;
 
     public static TruckInfoVo getInstance() {
         return new TruckInfoVo();

+ 28 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

@@ -31,6 +31,7 @@ import com.sckw.order.api.dubbo.RemoteTradeOrderAmountService;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.payment.api.dubbo.PaymentDubboService;
 import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
@@ -368,20 +369,28 @@ public class kwfTruckTraceService {
 
     private TruckInfoVo getTruckInfo(String truckId, String wOrderNo,String truckNo) {
         //先查询缓存 如果缓存没有就查数据中台 数据中台没有就查中交
-        String location = RedissonUtils.getString(CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE+wOrderNo);
+
+        KwtWaybillOrder order = kwtWaybillOrderRepository.findOneByTruckId(truckId);
+        if (Objects.isNull(order)){
+            throw new BusinessException("该车辆运单信息不存在");
+        }
+        String location = RedissonUtils.getString(CommonConstants.TRUCK_LOCATION + truckId+CommonConstants.UNDERSCORE+order.getWOrderNo());
         if (StringUtils.isNotBlank(location)){
-            TruckDto truckDto = JSON.parseObject(location, TruckDto.class);
+            TruckInfoVo truckDto = JSON.parseObject(location, TruckInfoVo.class);
             //如果运单号为空那么返回redis的数据 这个数据是app最后一次上报的数据
             if (Objects.nonNull(truckDto)){
-                return getTruckInfoVo(truckId, truckDto);
+                return truckDto;
+               // return getTruckInfoVo(truckId, truckDto);
             }
         }
 
         //缓存没有则查询数据中台
         VehicleReturnData vehicleReturnData = getVehicleReturnData(truckId);
         if (Objects.nonNull(vehicleReturnData)){
-            saveRedisCache(truckId, wOrderNo, truckNo, vehicleReturnData);
-            return buildTruckInfo(truckId, vehicleReturnData, truckNo);
+           // saveRedisCache(truckId, wOrderNo, truckNo, vehicleReturnData);
+            TruckInfoVo truckInfoVo = buildTruckInfo(truckId, vehicleReturnData, truckNo,order);
+            RedissonUtils.putString(CommonConstants.TRUCK_LOCATION + truckId +CommonConstants.UNDERSCORE+ truckInfoVo.getOrderNo(), JSON.toJSONString(truckInfoVo),10,TimeUnit.DAYS);
+            return truckInfoVo;
         }
         //todo 查询中交 如果数据中台没有数据则查询中交
        // return getTruckInfoVoByZj(truckNo, wOrderNo,truckId);
@@ -494,7 +503,7 @@ public class kwfTruckTraceService {
      * @param vehicleReturn 中台数据
      * @return 组织的数据
      */
-    private TruckInfoVo buildTruckInfo(String truckId, VehicleReturnData vehicleReturn, String truckNo) {
+    private TruckInfoVo buildTruckInfo(String truckId, VehicleReturnData vehicleReturn, String truckNo,KwtWaybillOrder order) {
         TruckInfoVo truckInfoVo = TruckInfoVo.getInstance();
 
         truckInfoVo.setTruckNo(truckNo);
@@ -502,7 +511,6 @@ public class kwfTruckTraceService {
         truckInfoVo.setLongitude(vehicleReturn.getLongitude());
         truckInfoVo.setLatitude(vehicleReturn.getLatitude());
         truckInfoVo.setLocationTime(Objects.isNull(vehicleReturn.getTs())? "" : DateUtils.format(vehicleReturn.getTs().toLocalDateTime(),DateUtils.DATE_TIME_PATTERN));
-        KwtWaybillOrder order = kwtWaybillOrderRepository.findOneByTruckId(truckId);
         if (Objects.nonNull(order)){
             truckInfoVo.setTruckNo(order.getTruckNo());
             truckInfoVo.setOrderNo(order.getWOrderNo());
@@ -542,6 +550,19 @@ public class kwfTruckTraceService {
             }
         }
         truckInfoVo.setTaskAddress(startPoint+"-"+endPoint);
+        //查询物流商品
+        KwtLogisticsOrderGoods kwtLogisticsOrderGoods = kwtLogisticsOrderGoodsRepository.queryByLogOrderId(subtask.getLOrderId());
+        Long goodsId = Optional.ofNullable(kwtLogisticsOrderGoods)
+                .map(KwtLogisticsOrderGoods::getGoodsId)
+                .orElse(null);
+        //查询商品
+        KwpGoods goodsById = goodsInfoService.getGoodsById(goodsId);
+        //查询字典
+        Map<String, Map<String, String>> dictByTypeMap = remoteSystemService.queryDictByType(Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
+        truckInfoVo.setGoodsName(goodsById.getName() + "/" + dictByTypeMap.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType()).get(goodsById.getGoodsType()) + "/" + dictByTypeMap.get(DictTypeEnum.GOODS_SPEC.getType()).get(goodsById.getSpec()));
+        Long truck = com.sckw.core.utils.StringUtils.isNotBlank(truckId) ? Long.parseLong(truckId) : null;
+        Optional.ofNullable(fleetService.findTruck(truck))
+                .ifPresent(f->truckInfoVo.setAxleNum(f.getCarAxis()));
         return truckInfoVo;
     }