chenxiaofei 2 месяцев назад
Родитель
Сommit
cbfedcd0d3

+ 0 - 85
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsWeighbridgeController.java

@@ -98,89 +98,4 @@ public class KwsWeighbridgeController {
         return HttpResult.ok(kwsWeighbridgeManageService.checkUniqueCodeAvailable(uniqueCode, id));
     }
 
-
-    /**
-     * 地磅过磅数据上报
-     */
-    @Operation(summary = "地磅过磅数据上报", description = "接收地磅设备上报的过磅数据和图片")
-    @PostMapping("/weighBridgePush")
-    public LicensePlateValidateResponse weighBridgePush(
-            @Parameter(description = "车牌号") @RequestParam("licensePlate") String licensePlate,
-            @Parameter(description = "地磅编号") @RequestParam("weighbridgeCode") String weighbridgeCode,
-            @Parameter(description = "称重重量(吨)") @RequestParam("grossWeight") String grossWeight,
-            @Parameter(description = "时间戳(秒或毫秒)") @RequestParam("timestamp") String timestamp,
-            @Parameter(description = "处理标签") @RequestParam(value = "tag", required = false) String tag,
-            @Parameter(description = "车辆照片") @RequestParam(value = "images[]", required = false) MultipartFile[] images
-    ) {
-        String cleanedLicensePlate = sanitizeText(licensePlate);
-        if (!TruckNoUtils.isValidTruckNo(cleanedLicensePlate)) {
-            return buildPushErrorResponse("车牌号格式不正确");
-        }
-
-        WeighbridgePushRequest request = new WeighbridgePushRequest();
-        request.setLicensePlate(TruckNoUtils.formatTruckNo(cleanedLicensePlate));
-        request.setWeighbridgeCode(sanitizeText(weighbridgeCode));
-        request.setGrossWeight(parseBigDecimal(grossWeight));
-        request.setTimestamp(parseLong(timestamp));
-        request.setTag(sanitizeText(tag));
-        request.setImages(images);
-
-        // 调用业务层处理
-        return kwsWeighbridgeManageService.handleWeighbridgePush(request);
-    }
-
-    /**
-     * 车牌验证
-     */
-    @Operation(summary = "车牌验证", description = "用于验证车牌是否合法,允许上磅")
-    @PostMapping("/validateLicensePlate")
-    public LicensePlateValidateResponse validateLicensePlate(
-            @Parameter(description = "车牌号") @RequestParam("licensePlate") String licensePlate,
-            @Parameter(description = "厂商来源标识") @RequestParam("uuid") String uuid
-    ) {
-        LicensePlateValidateRequest request = new LicensePlateValidateRequest();
-        String replac2 = "";
-        if (StringUtils.isNotBlank(licensePlate)) {
-            String trim = licensePlate.trim();
-            String replace = trim.replace("\\r", "");
-            String replace1 = replace.replace("\\n", "");
-            replac2 = replace1.replace("\\r\\n", "");
-        }
-
-        request.setLicensePlate(replac2);
-        request.setUuid(uuid);
-        return kwsWeighbridgeManageService.handleValidateLicensePlate(request);
-    }
-
-    private String sanitizeText(String value) {
-        if (StringUtils.isBlank(value)) {
-            return "";
-        }
-        return value.trim()
-                .replace("\r", "")
-                .replace("\n", "");
-    }
-
-    private BigDecimal parseBigDecimal(String value) {
-        String cleanedValue = sanitizeText(value);
-        return StringUtils.isBlank(cleanedValue) ? null : new BigDecimal(cleanedValue);
-    }
-
-    private Long parseLong(String value) {
-        String cleanedValue = sanitizeText(value);
-        return StringUtils.isBlank(cleanedValue) ? null : Long.valueOf(cleanedValue);
-    }
-
-    private LicensePlateValidateResponse buildPushErrorResponse(String message) {
-        LicensePlateValidateResponse response = new LicensePlateValidateResponse();
-        response.setStatus(false);
-        response.setCode(400);
-        response.setMessage(message);
-        LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
-        data.setTimestamp(System.currentTimeMillis() / 1000);
-        data.setScreen_message(message);
-        data.setVoice_message(message);
-        response.setData(data);
-        return response;
-    }
 }

+ 96 - 4
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsWeighbridgeRecordController.java

@@ -1,21 +1,26 @@
 package com.sckw.system.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.utils.TruckNoUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.system.model.report.WeighbridgeRecordExcel;
+import com.sckw.system.model.vo.req.LicensePlateValidateRequest;
+import com.sckw.system.model.vo.req.WeighbridgePushRequest;
 import com.sckw.system.model.vo.req.WeighbridgeRecordPageReqVo;
+import com.sckw.system.model.vo.res.LicensePlateValidateResponse;
 import com.sckw.system.service.KwsWeighbridgeRecordManageService;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -47,4 +52,91 @@ public class KwsWeighbridgeRecordController {
         }
         ExcelUtil.download(response, WeighbridgeRecordExcel.class, data);
     }
+
+
+
+    /**
+     * 地磅过磅数据上报
+     */
+    @Operation(summary = "地磅过磅数据上报", description = "接收地磅设备上报的过磅数据和图片")
+    @PostMapping("/weighBridgePush")
+    public LicensePlateValidateResponse weighBridgePush(
+            @Parameter(description = "车牌号") @RequestParam("licensePlate") String licensePlate,
+            @Parameter(description = "地磅编号") @RequestParam("weighbridgeCode") String weighbridgeCode,
+            @Parameter(description = "称重重量(吨)") @RequestParam("grossWeight") String grossWeight,
+            @Parameter(description = "时间戳(秒或毫秒)") @RequestParam("timestamp") String timestamp,
+            @Parameter(description = "处理标签") @RequestParam(value = "tag", required = false) String tag,
+            @Parameter(description = "车辆照片") @RequestParam(value = "images[]", required = false) MultipartFile[] images
+    ) {
+        String cleanedLicensePlate = sanitizeText(licensePlate);
+        if (!TruckNoUtils.isValidTruckNo(cleanedLicensePlate)) {
+            return buildPushErrorResponse("车牌号格式不正确");
+        }
+
+        WeighbridgePushRequest request = new WeighbridgePushRequest();
+        request.setLicensePlate(TruckNoUtils.formatTruckNo(cleanedLicensePlate));
+        request.setWeighbridgeCode(sanitizeText(weighbridgeCode));
+        request.setGrossWeight(parseBigDecimal(grossWeight));
+        request.setTimestamp(parseLong(timestamp));
+        request.setTag(sanitizeText(tag));
+        request.setImages(images);
+
+        // 调用业务层处理
+        return kwsWeighbridgeRecordManageService.handleWeighbridgePush(request);
+    }
+
+    /**
+     * 车牌验证
+     */
+    @Operation(summary = "车牌验证", description = "用于验证车牌是否合法,允许上磅")
+    @PostMapping("/validateLicensePlate")
+    public LicensePlateValidateResponse validateLicensePlate(
+            @Parameter(description = "车牌号") @RequestParam("licensePlate") String licensePlate,
+            @Parameter(description = "厂商来源标识") @RequestParam("uuid") String uuid
+    ) {
+        LicensePlateValidateRequest request = new LicensePlateValidateRequest();
+        String replac2 = "";
+        if (StringUtils.isNotBlank(licensePlate)) {
+            String trim = licensePlate.trim();
+            String replace = trim.replace("\\r", "");
+            String replace1 = replace.replace("\\n", "");
+            replac2 = replace1.replace("\\r\\n", "");
+        }
+
+        request.setLicensePlate(replac2);
+        request.setUuid(uuid);
+        return kwsWeighbridgeRecordManageService.handleValidateLicensePlate(request);
+    }
+
+    private String sanitizeText(String value) {
+        if (StringUtils.isBlank(value)) {
+            return "";
+        }
+        return value.trim()
+                .replace("\r", "")
+                .replace("\n", "");
+    }
+
+    private BigDecimal parseBigDecimal(String value) {
+        String cleanedValue = sanitizeText(value);
+        return StringUtils.isBlank(cleanedValue) ? null : new BigDecimal(cleanedValue);
+    }
+
+    private Long parseLong(String value) {
+        String cleanedValue = sanitizeText(value);
+        return StringUtils.isBlank(cleanedValue) ? null : Long.valueOf(cleanedValue);
+    }
+
+    private LicensePlateValidateResponse buildPushErrorResponse(String message) {
+        LicensePlateValidateResponse response = new LicensePlateValidateResponse();
+        response.setStatus(false);
+        response.setCode(400);
+        response.setMessage(message);
+        LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
+        data.setTimestamp(System.currentTimeMillis() / 1000);
+        data.setScreen_message(message);
+        data.setVoice_message(message);
+        response.setData(data);
+        return response;
+    }
 }

+ 0 - 162
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsWeighbridgeManageService.java

@@ -641,166 +641,4 @@ public class KwsWeighbridgeManageService {
     }
 
 
-    /**
-     * 车牌验证
-     * @param request 地磅上报请求参数
-     * @return 是否保存成功
-     */
-    public LicensePlateValidateResponse handleValidateLicensePlate(LicensePlateValidateRequest request) {
-        log.info("车牌验证, 车牌:{}", request.getLicensePlate());
-        LicensePlateValidateResponse response = new LicensePlateValidateResponse();
-        ValidateLicensePlate validateLicensePlate;
-        //查询车牌是不存在
-        try {
-            validateLicensePlate = validateLicensePlateService.queryByLicensePlate(request.getLicensePlate(), request.getUuid());
-        } catch (Exception e) {
-            log.error("车牌验证失败,请重新识别或联系管理员", e);
-            return getValidateLicensePlateError(response);
-        }
-
-        if (validateLicensePlate != null) {
-            log.info("车牌验证成功");
-            response.setStatus(Boolean.TRUE);
-            response.setCode(200);
-            response.setMessage("车牌验证成功");
-
-            response.setData(new LicensePlateValidateResponse.Data());
-            response.getData().setTimestamp(System.currentTimeMillis() / 1000);
-            response.getData().setScreen_message("车牌验证成功");
-            response.getData().setVoice_message("车牌验证成功");
-            response.getData().setWarning(null);
-            return response;
-        } else {
-            return getValidateLicensePlateError(response);
-        }
-    }
-    private LicensePlateValidateResponse getValidateLicensePlateError(LicensePlateValidateResponse response) {
-        log.info("车牌验证失败");
-        response.setStatus(Boolean.FALSE);
-        response.setCode(400);
-        response.setMessage("车牌验证异常");
-
-        response.setData(new LicensePlateValidateResponse.Data());
-        response.getData().setTimestamp(System.currentTimeMillis()/1000);
-        response.getData().setScreen_message("车牌验证失败");
-        response.getData().setVoice_message("车牌验证失败");
-        response.getData().setWarning(null);
-        return response;
-    }
-
-    /**
-     * 处理地磅过磅数据上报
-     * @param request 地磅上报请求参数
-     * @return 是否保存成功
-     */
-    public LicensePlateValidateResponse handleWeighbridgePush(WeighbridgePushRequest request) {
-        log.info("处理地磅数据上报 - 车牌:{}, 地磅编号:{}, 重量:{}, 时间戳:{}",
-                request.getLicensePlate(),
-                request.getWeighbridgeCode(),
-                request.getGrossWeight(),
-                request.getTimestamp());
-        LicensePlateValidateResponse licensePlateValidateResponse = new LicensePlateValidateResponse();
-        if (StringUtils.isAnyBlank(request.getLicensePlate(), request.getWeighbridgeCode()) || Objects.isNull(request.getGrossWeight()) || Objects.isNull(request.getTimestamp())) {
-            return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
-        }
-        try {
-            KwsWeighbridge weighbridge = kwsWeighbridgeRepository.findByUniqueCode(request.getWeighbridgeCode().trim());
-            if (weighbridge == null || Objects.equals(weighbridge.getDelFlag(), 1)) {
-                log.error("地磅数据保存失败 - 地磅不存在, 地磅编号: {}", request.getWeighbridgeCode());
-                return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
-            }
-
-            KwsWeighbridgeRecord record = buildWeighbridgeRecord(request, weighbridge.getId());
-            boolean saved = kwsWeighbridgeRecordRepository.save(record);
-            if (saved) {
-                // 异步处理图片上传
-                updateImageUrls(request, record);
-                licensePlateValidateResponse.setStatus(true);
-                licensePlateValidateResponse.setCode(200);
-                licensePlateValidateResponse.setMessage("数据上报成功");
-                LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
-                data.setTimestamp(resolveSecondTimestamp(request.getTimestamp()));
-                data.setScreen_message("数据上报成功");
-                data.setVoice_message("数据上报成功");
-                licensePlateValidateResponse.setData(data);
-                log.info("地磅数据保存成功 - ID: {}, 车牌: {}", record.getId(), record.getTruckNo());
-                return licensePlateValidateResponse;
-            } else {
-                log.error("地磅数据保存失败 - 车牌: {}", request.getLicensePlate());
-                return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
-            }
-
-        } catch (Exception e) {
-            log.error("地磅数据上报处理异常", e);
-            return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
-        }
-    }
-    private void updateImageUrls(WeighbridgePushRequest request, KwsWeighbridgeRecord record) {
-        MultipartFile[] images = request.getImages();
-        if (images == null || images.length == 0) {
-            return;
-        }
-
-        int validImageCount = (int) java.util.Arrays.stream(images)
-                .filter(Objects::nonNull)
-                .count();
-        if (validImageCount == 0) {
-            return;
-        }
-
-        // kws_weighbridge_record 当前没有图片URL字段,先只记录上传事实,避免保留无效的旧依赖代码。
-        log.info("地磅记录收到图片但当前未落库, recordId: {}, truckNo: {}, imageCount: {}",
-                record.getId(), request.getLicensePlate(), validImageCount);
-    }
-    private static LicensePlateValidateResponse getLicensePlateValidateResponse(WeighbridgePushRequest request, LicensePlateValidateResponse licensePlateValidateResponse) {
-
-        licensePlateValidateResponse.setStatus(false);
-        licensePlateValidateResponse.setCode(400);
-        licensePlateValidateResponse.setMessage("数据上报失败");
-        LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
-        String timestampStr = request.getTimestamp().toString();
-        if (timestampStr.length() == 10) {
-            // 秒级时间戳
-            data.setTimestamp(request.getTimestamp());
-        } else if (timestampStr.length() == 13) {
-            // 毫秒级时间戳
-            long l = request.getTimestamp() / 1000;
-        data.setTimestamp(l);
-        }
-
-        data.setVoice_message("数据上报失败");
-        licensePlateValidateResponse.setData(data);
-        return licensePlateValidateResponse;
-    }
-
-    private KwsWeighbridgeRecord buildWeighbridgeRecord(WeighbridgePushRequest request, Long weighbridgeId) {
-        Date now = new Date();
-        return new KwsWeighbridgeRecord()
-                .setWeighbridgeId(weighbridgeId)
-                .setTruckNo(request.getLicensePlate().trim())
-                .setWeight(request.getGrossWeight())
-                .setReceiveTime(resolveReceiveTime(request.getTimestamp()))
-                .setCreateBy(0L)
-                .setCreateTime(now)
-                .setUpdateBy(0L)
-                .setUpdateTime(now)
-                .setDelFlag(0);
-    }
-
-    private Date resolveReceiveTime(Long timestamp) {
-        long secondTimestamp = resolveSecondTimestamp(timestamp);
-        return new Date(secondTimestamp * 1000);
-    }
-
-    private long resolveSecondTimestamp(Long timestamp) {
-        if (timestamp == null) {
-            return System.currentTimeMillis() / 1000;
-        }
-        String timestampStr = timestamp.toString();
-        if (timestampStr.length() == 13) {
-            return timestamp / 1000;
-        }
-        return timestamp;
-    }
-
 }

+ 175 - 8
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsWeighbridgeRecordManageService.java

@@ -6,23 +6,23 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.system.model.KwsEnterprise;
 import com.sckw.system.model.KwsWeighbridge;
 import com.sckw.system.model.KwsWeighbridgeRecord;
+import com.sckw.system.model.ValidateLicensePlate;
 import com.sckw.system.model.report.WeighbridgeRecordExcel;
+import com.sckw.system.model.vo.req.LicensePlateValidateRequest;
+import com.sckw.system.model.vo.req.WeighbridgePushRequest;
 import com.sckw.system.model.vo.req.WeighbridgeRecordPageReqVo;
+import com.sckw.system.model.vo.res.LicensePlateValidateResponse;
 import com.sckw.system.model.vo.res.WeighbridgeRecordResVo;
 import com.sckw.system.repository.KwsEnterpriseRepository;
 import com.sckw.system.repository.KwsWeighbridgeRecordRepository;
 import com.sckw.system.repository.KwsWeighbridgeRepository;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -30,11 +30,13 @@ import java.util.stream.Collectors;
  */
 @Service
 @RequiredArgsConstructor
+@Slf4j
 public class KwsWeighbridgeRecordManageService {
 
     private final KwsWeighbridgeRecordRepository kwsWeighbridgeRecordRepository;
     private final KwsWeighbridgeRepository kwsWeighbridgeRepository;
     private final KwsEnterpriseRepository kwsEnterpriseRepository;
+    private final ValidateLicensePlateService validateLicensePlateService;
 
     public PageResult page(WeighbridgeRecordPageReqVo reqVo) {
         Set<Long> weighbridgeIds = resolveWeighbridgeIds(reqVo);
@@ -157,4 +159,169 @@ public class KwsWeighbridgeRecordManageService {
         return kwsEnterpriseRepository.listByIds(entIds).stream()
                 .collect(Collectors.toMap(KwsEnterprise::getId, KwsEnterprise::getFirmName, (a, b) -> a));
     }
+
+
+
+    /**
+     * 车牌验证
+     * @param request 地磅上报请求参数
+     * @return 是否保存成功
+     */
+    public LicensePlateValidateResponse handleValidateLicensePlate(LicensePlateValidateRequest request) {
+        log.info("车牌验证, 车牌:{}", request.getLicensePlate());
+        LicensePlateValidateResponse response = new LicensePlateValidateResponse();
+        ValidateLicensePlate validateLicensePlate;
+        //查询车牌是不存在
+        try {
+            validateLicensePlate = validateLicensePlateService.queryByLicensePlate(request.getLicensePlate(), request.getUuid());
+        } catch (Exception e) {
+            log.error("车牌验证失败,请重新识别或联系管理员", e);
+            return getValidateLicensePlateError(response);
+        }
+
+        if (validateLicensePlate != null) {
+            log.info("车牌验证成功");
+            response.setStatus(Boolean.TRUE);
+            response.setCode(200);
+            response.setMessage("车牌验证成功");
+
+            response.setData(new LicensePlateValidateResponse.Data());
+            response.getData().setTimestamp(System.currentTimeMillis() / 1000);
+            response.getData().setScreen_message("车牌验证成功");
+            response.getData().setVoice_message("车牌验证成功");
+            response.getData().setWarning(null);
+            return response;
+        } else {
+            return getValidateLicensePlateError(response);
+        }
+    }
+    private LicensePlateValidateResponse getValidateLicensePlateError(LicensePlateValidateResponse response) {
+        log.info("车牌验证失败");
+        response.setStatus(Boolean.FALSE);
+        response.setCode(400);
+        response.setMessage("车牌验证异常");
+
+        response.setData(new LicensePlateValidateResponse.Data());
+        response.getData().setTimestamp(System.currentTimeMillis()/1000);
+        response.getData().setScreen_message("车牌验证失败");
+        response.getData().setVoice_message("车牌验证失败");
+        response.getData().setWarning(null);
+        return response;
+    }
+
+    /**
+     * 处理地磅过磅数据上报
+     * @param request 地磅上报请求参数
+     * @return 是否保存成功
+     */
+    public LicensePlateValidateResponse handleWeighbridgePush(WeighbridgePushRequest request) {
+        log.info("处理地磅数据上报 - 车牌:{}, 地磅编号:{}, 重量:{}, 时间戳:{}",
+                request.getLicensePlate(),
+                request.getWeighbridgeCode(),
+                request.getGrossWeight(),
+                request.getTimestamp());
+        LicensePlateValidateResponse licensePlateValidateResponse = new LicensePlateValidateResponse();
+        if (StringUtils.isAnyBlank(request.getLicensePlate(), request.getWeighbridgeCode()) || Objects.isNull(request.getGrossWeight()) || Objects.isNull(request.getTimestamp())) {
+            return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
+        }
+        try {
+            KwsWeighbridge weighbridge = kwsWeighbridgeRepository.findByUniqueCode(request.getWeighbridgeCode().trim());
+            if (weighbridge == null || Objects.equals(weighbridge.getDelFlag(), 1)) {
+                log.error("地磅数据保存失败 - 地磅不存在, 地磅编号: {}", request.getWeighbridgeCode());
+                return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
+            }
+
+            KwsWeighbridgeRecord record = buildWeighbridgeRecord(request, weighbridge.getId());
+            boolean saved = kwsWeighbridgeRecordRepository.save(record);
+            if (saved) {
+                // 异步处理图片上传
+                updateImageUrls(request, record);
+                licensePlateValidateResponse.setStatus(true);
+                licensePlateValidateResponse.setCode(200);
+                licensePlateValidateResponse.setMessage("数据上报成功");
+                LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
+                data.setTimestamp(resolveSecondTimestamp(request.getTimestamp()));
+                data.setScreen_message("数据上报成功");
+                data.setVoice_message("数据上报成功");
+                licensePlateValidateResponse.setData(data);
+                log.info("地磅数据保存成功 - ID: {}, 车牌: {}", record.getId(), record.getTruckNo());
+                return licensePlateValidateResponse;
+            } else {
+                log.error("地磅数据保存失败 - 车牌: {}", request.getLicensePlate());
+                return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
+            }
+
+        } catch (Exception e) {
+            log.error("地磅数据上报处理异常", e);
+            return getLicensePlateValidateResponse(request, licensePlateValidateResponse);
+        }
+    }
+    private void updateImageUrls(WeighbridgePushRequest request, KwsWeighbridgeRecord record) {
+        MultipartFile[] images = request.getImages();
+        if (images == null || images.length == 0) {
+            return;
+        }
+
+        int validImageCount = (int) java.util.Arrays.stream(images)
+                .filter(Objects::nonNull)
+                .count();
+        if (validImageCount == 0) {
+            return;
+        }
+
+        // kws_weighbridge_record 当前没有图片URL字段,先只记录上传事实,避免保留无效的旧依赖代码。
+        log.info("地磅记录收到图片但当前未落库, recordId: {}, truckNo: {}, imageCount: {}",
+                record.getId(), request.getLicensePlate(), validImageCount);
+    }
+    private static LicensePlateValidateResponse getLicensePlateValidateResponse(WeighbridgePushRequest request, LicensePlateValidateResponse licensePlateValidateResponse) {
+
+        licensePlateValidateResponse.setStatus(false);
+        licensePlateValidateResponse.setCode(400);
+        licensePlateValidateResponse.setMessage("数据上报失败");
+        LicensePlateValidateResponse.Data data = new LicensePlateValidateResponse.Data();
+        String timestampStr = request.getTimestamp().toString();
+        if (timestampStr.length() == 10) {
+            // 秒级时间戳
+            data.setTimestamp(request.getTimestamp());
+        } else if (timestampStr.length() == 13) {
+            // 毫秒级时间戳
+            long l = request.getTimestamp() / 1000;
+            data.setTimestamp(l);
+        }
+
+        data.setVoice_message("数据上报失败");
+        licensePlateValidateResponse.setData(data);
+        return licensePlateValidateResponse;
+    }
+
+    private KwsWeighbridgeRecord buildWeighbridgeRecord(WeighbridgePushRequest request, Long weighbridgeId) {
+        Date now = new Date();
+        return new KwsWeighbridgeRecord()
+                .setWeighbridgeId(weighbridgeId)
+                .setTruckNo(request.getLicensePlate().trim())
+                .setWeight(request.getGrossWeight())
+                .setReceiveTime(resolveReceiveTime(request.getTimestamp()))
+                .setCreateBy(0L)
+                .setCreateTime(now)
+                .setUpdateBy(0L)
+                .setUpdateTime(now)
+                .setDelFlag(0);
+    }
+
+    private Date resolveReceiveTime(Long timestamp) {
+        long secondTimestamp = resolveSecondTimestamp(timestamp);
+        return new Date(secondTimestamp * 1000);
+    }
+
+    private long resolveSecondTimestamp(Long timestamp) {
+        if (timestamp == null) {
+            return System.currentTimeMillis() / 1000;
+        }
+        String timestampStr = timestamp.toString();
+        if (timestampStr.length() == 13) {
+            return timestamp / 1000;
+        }
+        return timestamp;
+    }
+
 }