donglang hace 2 meses
padre
commit
699fc9ff62

+ 2 - 1
iot-platform-manager/src/main/java/com/platform/api/controller/TransferController.java

@@ -6,6 +6,7 @@ import com.platform.api.request.VehicleDataRequest;
 import com.platform.api.request.VehicleDataSaveRequest;
 import com.platform.api.response.VehicleDataResp;
 import com.platform.exception.BaseResult;
+import jakarta.validation.constraints.NotBlank;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -48,7 +49,7 @@ public class TransferController {
      * 通过车牌查询实时经纬度
      */
     @PostMapping("/queryRealTimeLocation")
-    public BaseResult<VehicleDataResp> queryRealTimeLocation(String carNo) {
+    public BaseResult<VehicleDataResp> queryRealTimeLocation(@NotBlank(message = "车牌carNo不能为空")  @Validated String carNo) {
         return BaseResult.success(transferVehicleManage.queryRealTimeLocation(carNo));
     }
 

+ 21 - 13
iot-platform-manager/src/main/java/com/platform/api/manager/TransferVehicleManage.java

@@ -12,10 +12,12 @@ import com.platform.entity.VehicleData;
 import com.platform.entity.VehicleTimeSeriesData;
 import com.platform.enums.ErrorCodeEnum;
 import com.platform.exception.IotException;
-import com.platform.exception.PageResult;
 import com.platform.mapper.TaosMapper;
+import com.platform.service.TaosService;
 import com.platform.service.VehicleDataService;
+import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
@@ -35,18 +37,22 @@ import java.util.stream.Collectors;
  */
 
 @Service
-@RequiredArgsConstructor
+@Slf4j
 public class TransferVehicleManage implements ApplicationContextAware {
 
-    private final TaosMapper taosMapper;
+    @Resource
+    private TaosService taosService;
 
-    private final VehicleDataService vehicleDataService;
+    @Resource
+    private VehicleDataService vehicleDataService;
 
     /**
      * 队列
      */
-    private final VehicleDataQueue vehicleDataQueue;
+    @Resource
+    private VehicleDataQueue vehicleDataQueue;
 
+    @Resource
     private ApplicationContext applicationContext;
 
     @Override
@@ -84,7 +90,7 @@ public class TransferVehicleManage implements ApplicationContextAware {
             }
 
             // 批量保存到时序数据库
-            taosMapper.batchInsertVehicleData(vehicleDataList);
+            taosService.batchInsertVehicleData(vehicleDataList);
         } catch (Exception e) {
             throw new IotException(ErrorCodeEnum.TD_SAVE_FAIL, "批量保存车辆数据到时序数据库失败", e);
         }
@@ -106,6 +112,8 @@ public class TransferVehicleManage implements ApplicationContextAware {
                 .stream()
                 .map(VehicleData::getCarNo)
                 .collect(Collectors.toList());
+        log.info("查询关系数据库中已存在的车牌,结果:{}",existCarNos);
+
 
         // 3. 筛选出需要新增的车辆
         return vehicleDataList.stream()
@@ -138,11 +146,15 @@ public class TransferVehicleManage implements ApplicationContextAware {
         List<VehicleTimeSeriesData> timeSeriesData;
         //通过运单号查询车辆信息
         if (StringUtils.isNotEmpty(request.getWOrderNo())) {
-            timeSeriesData = taosMapper.selectByWOrderNo(request.getWOrderNo(), request.getStartTime(), request.getEndTime());
+            timeSeriesData = taosService.selectByWOrderNo(request);
+            log.info("按运单号查询, 运单号:{}, 时间范围:{}~{}, 结果条数:{}", request.getWOrderNo(), request.getStartTime(),
+                    request.getEndTime(), timeSeriesData.size());
         } else {
             //通过车牌查询车辆信息
             String subTableName = "vehicle_data_" + request.getCarNo().trim();
-            timeSeriesData = taosMapper.selectByCarNo(subTableName, request.getCarNo(), request.getStartTime(), request.getEndTime());
+            timeSeriesData = taosService.selectByCarNo(subTableName, request);
+            log.info("按车牌查询, 运单号:{}, 时间范围:{}~{}, 结果条数:{}", request.getCarNo(), request.getStartTime(),
+                    request.getEndTime(), timeSeriesData.size());
         }
 
         //参数转换
@@ -156,12 +168,8 @@ public class TransferVehicleManage implements ApplicationContextAware {
      * 通过车牌查询实时经纬度
      */
     public VehicleDataResp queryRealTimeLocation(String carNo) {
-        if (StringUtils.isEmpty(carNo)) {
-            throw new IotException(ErrorCodeEnum.ILLEGAL_PARAM, "接口参数为null!");
-        }
-
         String subTableName = "vehicle_data_" + carNo.trim();
-        VehicleTimeSeriesData realTimeLocation = taosMapper.selectRealTimeLocation(subTableName, carNo);
+        VehicleTimeSeriesData realTimeLocation = taosService.selectRealTimeLocation(subTableName, carNo);
 
         //参数转换
         return VehicleDataResp.toIotPageResp(realTimeLocation);

+ 1 - 1
iot-platform-manager/src/main/java/com/platform/mapper/TaosMapper.java

@@ -55,7 +55,7 @@ public interface TaosMapper {
      * @return 返回的车辆数据
      */
     VehicleTimeSeriesData selectRealTimeLocation(@Param("subTableName") String subTableName,
-                                                   @Param("carNo") String carNo);
+                                                 @Param("carNo") String carNo);
 
 
     /**

+ 41 - 0
iot-platform-manager/src/main/java/com/platform/service/TaosService.java

@@ -1,5 +1,12 @@
 package com.platform.service;
 
+import com.platform.api.request.VehicleDataRequest;
+import com.platform.api.request.VehicleDataSaveRequest;
+import com.platform.entity.VehicleTimeSeriesData;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
 /**
  * @Author: donglang
  * @CreateTime: 2025-10-09
@@ -9,6 +16,40 @@ package com.platform.service;
 
 public interface TaosService {
 
+    /**
+     * 插入车辆数据到时序子表
+     * @param vehicleDataList
+     * @return
+     */
+    int batchInsertVehicleData(List<VehicleDataSaveRequest> vehicleDataList);
+
+    /**
+     * 通过运单号查询时序数据
+     * @param request
+     * @return
+     */
+    List<VehicleTimeSeriesData> selectByWOrderNo(VehicleDataRequest request);
+
+
+    /**
+     * 通过车牌查询时序数据
+     * @param request
+     * @return
+     */
+    List<VehicleTimeSeriesData> selectByCarNo(String subTableName, VehicleDataRequest request);
+
+    /**
+     * 通过车牌查询时序数据
+
+     * @param carNo 车辆数据实体
+     * @return 返回的车辆数据
+     */
+    VehicleTimeSeriesData selectRealTimeLocation(String subTableName, String carNo);
+
+
+
+
+
     /**
      * 创建水表子表
      * @param code

+ 40 - 0
iot-platform-manager/src/main/java/com/platform/service/impl/TaosServiceImpl.java

@@ -1,11 +1,16 @@
 package com.platform.service.impl;
 
 
+import com.platform.api.request.VehicleDataRequest;
+import com.platform.api.request.VehicleDataSaveRequest;
+import com.platform.entity.VehicleTimeSeriesData;
 import com.platform.mapper.TaosMapper;
 import com.platform.service.TaosService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Author: donglang
  * @CreateTime: 2025-10-09
@@ -20,6 +25,41 @@ public class TaosServiceImpl implements TaosService {
     private TaosMapper taosMapper;
 
 
+    /**
+     * 插入车辆数据到时序子表
+     * @param vehicleDataList
+     * @return
+     */
+    @Override
+    public int batchInsertVehicleData(List<VehicleDataSaveRequest> vehicleDataList) {
+        return taosMapper.batchInsertVehicleData(vehicleDataList);
+    }
+
+    /**
+     * 通过运单号查询时序数据
+     */
+    @Override
+    public List<VehicleTimeSeriesData> selectByWOrderNo(VehicleDataRequest request) {
+        return taosMapper.selectByWOrderNo(request.getWOrderNo(), request.getStartTime(), request.getEndTime());
+    }
+
+    /**
+     * 通过车牌查询时序数据
+     */
+    @Override
+    public List<VehicleTimeSeriesData> selectByCarNo(String subTableName, VehicleDataRequest request) {
+        return taosMapper.selectByCarNo(subTableName, request.getCarNo(), request.getStartTime(), request.getEndTime());
+    }
+
+    /**
+     * 通过车牌查询时序数据
+     */
+    @Override
+    public VehicleTimeSeriesData selectRealTimeLocation(String subTableName, String carNo) {
+        return taosMapper.selectRealTimeLocation(subTableName, carNo);
+    }
+
+
     @Override
     public void createWaterMeterSubTable(String code, String deviceId) {
         taosMapper.createWaterMeterSubTable(code, deviceId);