Jelajahi Sumber

提交全图监控

chenxiaofei 6 bulan lalu
induk
melakukan
35c866f5bf

+ 72 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/VehicleExceptionService.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.service;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -50,7 +51,15 @@ public class VehicleExceptionService {
      * @param req 查询请求
      * @return 分页结果
      */
+
+    /**
+     * 分页查询车辆异常图片信息
+     *
+     * @param req 查询请求参数
+     * @return 车辆异常图片分页结果
+     */
     public PageDataResult<VehicleExceptionVo> queryExceptionList(VehicleExceptionQueryReq req) {
+        log.info("分页查询车辆异常信息,参数:{}", JSON.toJSONString( req));
         // 分页查询异常图片数据
         IPage<KwtVehicleException> page = exceptionImageRepository.queryExceptionImagePage(
                 req.getEntId(),
@@ -60,65 +69,85 @@ public class VehicleExceptionService {
                 req.getPageSize()
         );
         
+        // 获取查询结果记录列表
         List<KwtVehicleException> records = page.getRecords();
+        // 如果记录为空,返回空的分页结果
         if (CollectionUtils.isEmpty(records)) {
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
         
-        // 如果有定位状态筛选,需要查询车辆实时定位
+        // 如果有定位状态筛选条件,需要查询车辆实时定位状态
         Map<String, Integer> truckLocationStatusMap = new HashMap<>();
         if (req.getLocationStatus() != null) {
+            // 提取所有不重复的车牌号
             List<String> truckNos = records.stream()
                     .map(KwtVehicleException::getTruckNo)
                     .distinct()
                     .collect(Collectors.toList());
             
+            // 批量查询车辆定位状态
             truckLocationStatusMap = queryVehicleLocationStatus(truckNos);
         }
+        
+        // 提取所有不重复的运单ID
         List<Long> waybillOrderNos = records.stream()
                 .map(KwtVehicleException::getWOrderId)
                 .distinct()
                 .collect(Collectors.toList());
+        
+        // 初始化地址和运单信息Map
         Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap = Maps.newHashMap();
         Map<Long, KwtWaybillOrderSubtask> waybillOrderSubtaskMap = Maps.newHashMap();
+        
+        // 如果存在运单ID,则查询相关运单和地址信息
         if (CollectionUtils.isNotEmpty(waybillOrderNos)){
-            //查询运单
+            // 查询运单信息
             List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskRepository.queryByWOrderIds(waybillOrderNos);
             List<Long> logisticOrderIds = Lists.newArrayList();
+            
+            // 如果查询到运单信息,则提取物流订单ID
             if (CollectionUtils.isNotEmpty(subtasks)){
                 logisticOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId)
                         .distinct()
                         .collect(Collectors.toList());
+                // 构建运单ID到运单信息的映射关系
                 waybillOrderSubtaskMap = subtasks.stream()
                         .collect(Collectors.toMap(KwtWaybillOrderSubtask::getWOrderId, Function.identity(), (k1, k2) -> k1));
             }
+            
+            // 如果存在物流订单ID,则查询相关地址信息
             if (CollectionUtils.isNotEmpty(logisticOrderIds)){
-                //查询地址
+                // 查询地址信息
                 List<KwtLogisticsOrderAddress> logisticOrderAddresses = logisticsOrderAddressRepository.queryByLogOrderIds(logisticOrderIds);
+                // 构建物流订单ID+地址类型到地址信息的映射关系
                 logisticsOrderAddressMap = Optional.ofNullable(logisticOrderAddresses)
                         .orElse(List.of())
                         .stream().collect(Collectors.toMap(x -> x.getLOrderId() + "_" + x.getAddressType(), Function.identity(), (k1, k2) -> k1));
             }
         }
-        // 转换为VO
+        
+        // 将查询结果转换为VO对象
         final Map<String, Integer> finalLocationStatusMap = truckLocationStatusMap;
         Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderAddressMap = logisticsOrderAddressMap;
         Map<Long, KwtWaybillOrderSubtask> finalWaybillOrderSubtaskMap = waybillOrderSubtaskMap;
+        
+        // 遍历异常图片记录,构建VO对象列表
         List<VehicleExceptionVo> voList = records.stream()
                 .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap,finalWaybillOrderSubtaskMap, finalLogisticsOrderAddressMap))
+                // 过滤掉空值
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
         
-        // 如果有定位状态筛选,过滤结果
+        // 如果有定位状态筛选条件再次过滤结果
         if (req.getLocationStatus() != null) {
             voList = voList.stream()
                     .filter(vo -> req.getLocationStatus().equals(vo.getLocationStatus()))
                     .collect(Collectors.toList());
         }
         
+        // 返回分页结果
         return PageDataResult.of(page, voList);
     }
-    
     /**
      * 构建车辆异常图片VO
      *
@@ -213,7 +242,15 @@ public class VehicleExceptionService {
         return locationStatusMap;
     }
 
+
+    /**
+     * 分页查询车辆异常监控列表
+     *
+     * @param req 查询请求参数
+     * @return 车辆异常监控分页结果
+     */
     public PageDataResult<VehicleExceptionVo> exceptionJkList(VehicleExceptionQueryReq req) {
+        log.info("分页查询车辆异常监控列表, req: {}", JSON.toJSONString( req));
         // 分页查询异常图片数据
         IPage<KwtVehicleException> page = exceptionImageRepository.queryExceptionImagePage1(
                 req.getEntId(),
@@ -223,62 +260,83 @@ public class VehicleExceptionService {
                 req.getPageSize()
         );
 
+        // 获取查询结果记录列表
         List<KwtVehicleException> records = page.getRecords();
+        // 如果记录为空,返回空的分页结果
         if (CollectionUtils.isEmpty(records)) {
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
 
-        // 如果有定位状态筛选,需要查询车辆实时定位
+        // 如果有定位状态筛选条件,需要查询车辆实时定位状态
         Map<String, Integer> truckLocationStatusMap = new HashMap<>();
         if (req.getLocationStatus() != null) {
+            // 提取所有不重复的车牌号
             List<String> truckNos = records.stream()
                     .map(KwtVehicleException::getTruckNo)
                     .distinct()
                     .collect(Collectors.toList());
 
+            // 批量查询车辆定位状态
             truckLocationStatusMap = queryVehicleLocationStatus(truckNos);
         }
+        
+        // 提取所有不重复的运单ID
         List<Long> waybillOrderNos = records.stream()
                 .map(KwtVehicleException::getWOrderId)
                 .distinct()
                 .collect(Collectors.toList());
+        
+        // 初始化地址和运单信息Map
         Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap = Maps.newHashMap();
         Map<Long, KwtWaybillOrderSubtask> waybillOrderSubtaskMap = Maps.newHashMap();
+        
+        // 如果存在运单ID,则查询相关运单和地址信息
         if (CollectionUtils.isNotEmpty(waybillOrderNos)){
-            //查询运单
+            // 查询运单信息
             List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskRepository.queryByWOrderIds(waybillOrderNos);
             List<Long> logisticOrderIds = Lists.newArrayList();
+            
+            // 如果查询到运单信息,则提取物流订单ID
             if (CollectionUtils.isNotEmpty(subtasks)){
-               logisticOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId)
-                       .distinct()
-                       .collect(Collectors.toList());
+                logisticOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId)
+                        .distinct()
+                        .collect(Collectors.toList());
+                // 构建运单ID到运单信息的映射关系
                 waybillOrderSubtaskMap = subtasks.stream()
                         .collect(Collectors.toMap(KwtWaybillOrderSubtask::getWOrderId, Function.identity(), (k1, k2) -> k1));
             }
+            
+            // 如果存在物流订单ID,则查询相关地址信息
             if (CollectionUtils.isNotEmpty(logisticOrderIds)){
-                //查询地址
+                // 查询地址信息
                 List<KwtLogisticsOrderAddress> logisticOrderAddresses = logisticsOrderAddressRepository.queryByLogOrderIds(logisticOrderIds);
+                // 构建物流订单ID+地址类型到地址信息的映射关系
                 logisticsOrderAddressMap = Optional.ofNullable(logisticOrderAddresses)
                         .orElse(List.of())
                         .stream().collect(Collectors.toMap(x -> x.getLOrderId() + "_" + x.getAddressType(), Function.identity(), (k1, k2) -> k1));
             }
         }
-        // 转换为VO
+        
+        // 将查询结果转换为VO对象
         final Map<String, Integer> finalLocationStatusMap = truckLocationStatusMap;
         Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderAddressMap = logisticsOrderAddressMap;
         Map<Long, KwtWaybillOrderSubtask> finalWaybillOrderSubtaskMap = waybillOrderSubtaskMap;
+        
+        // 遍历异常图片记录,构建VO对象列表
         List<VehicleExceptionVo> voList = records.stream()
                 .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap, finalWaybillOrderSubtaskMap, finalLogisticsOrderAddressMap))
+                // 过滤掉空值
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
 
-        // 如果有定位状态筛选,过滤结果
+        // 如果有定位状态筛选条件再次过滤结果
         if (req.getLocationStatus() != null) {
             voList = voList.stream()
                     .filter(vo -> req.getLocationStatus().equals(vo.getLocationStatus()))
                     .collect(Collectors.toList());
         }
 
+        // 返回分页结果
         return PageDataResult.of(page, voList);
     }
 }

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

@@ -1292,38 +1292,44 @@ public class kwfTruckTraceService {
         return allEnt;
     }
 
+
     /**
      * 生成车辆轨迹数据
-     * @param req 生成轨迹请求
+     * @param req 生成轨迹请求参数
      */
     @Transactional(rollbackFor = Exception.class)
     public void generateTrace(GenerateTraceReq req) {
         log.info("生成车辆轨迹参数:{}", JSON.toJSONString(req));
         
-        // 校验当前位置格式
+        // 校验当前位置格式,必须为经度,纬度格式
         String[] location = req.getCurrentLocation().split(",");
         if (location.length != 2) {
             throw new BusinessException("当前位置格式错误,应为:经度,纬度");
         }
         
+        // 提取经度和纬度
         String longitude = location[0];
         String latitude = location[1];
 
+        // 根据运单号查询运单信息
         KwtWaybillOrder order = kwtWaybillOrderRepository.queryByWayOrderNo(req.getWayOrderNo());
         if (Objects.isNull(order)){
             throw new BusinessException("运单不存在");
         }
-        //查询子运单
+        
+        // 查询子运单信息
         KwtWaybillOrderSubtask subOrders = kwtWaybillOrderSubtaskRepository.queryByBillOrderId(order.getId());
         if (Objects.isNull(subOrders)){
             throw new BusinessException("子运单不存在");
         }
-        // 通过车牌id查询车队
+        
+        // 通过车牌ID查询所属车队信息
         RFleetVo fleetByTruckId = fleetService.findFleetByTruckId(order.getTruckId(), order.getEntId());
-        //查询物流订单号
+        
+        // 查询物流订单信息
         KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderRepository.queryByLogisticsOrderId(subOrders.getLOrderId());
 
-        // 构造轨迹数据
+        // 构造要发送给数据中台的轨迹数据请求
         VehiclesTrajectoryReq vehiclesTrajectoryReq = getVehiclesTrajectoryReq(req, order, longitude, latitude, logisticsOrder, fleetByTruckId);
 
         try {
@@ -1335,7 +1341,7 @@ public class kwfTruckTraceService {
                 throw new BusinessException("生成轨迹失败:" + result.getMessage());
             }
             
-            // 如果有异常类型,同时保存到本地车辆异常表
+            // 如果请求中包含异常类型,则同时保存到本地车辆异常表
             saveException(req, order, longitude, latitude);
 
             log.info("生成车辆轨迹成功,运单号:{},车牌号:{}", req.getWayOrderNo(), req.getTruckNo());