wlzboy
6 天以前 7de1396e315896dbc72a9d54e44f77434ea90f18
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.utils.PlateNumberExtractor;
import com.ruoyi.system.domain.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +37,7 @@
    private IVehicleGpsService vehicleGpsService;
    public void syncVehicleInfo() {
        log.info("开始同步CMS车辆信息");
//        log.info("开始同步CMS车辆信息");
        try {
            // 获取CMS所有车辆信息
            CmsVehicleDeviceListResponse response = cmsGpsCollectService.getDeviceByVehicle(null);
@@ -93,7 +94,7 @@
                                vehicleInfo.setStatus("0");
                                vehicleInfoService.insertVehicleInfo(vehicleInfo);
                                syncCarCount++;
                                log.info("新增CMS车辆: {}", plateNo);
//                                log.info("新增CMS车辆: {}", plateNo);
                            } else {
                                // 更新车辆 - 仅更新必要字段,避免触发关联表操作
                                vehicleInfo.setDeviceId(vehicle.getDid());
@@ -102,7 +103,7 @@
                                vehicleInfo.setDeptIds(null); // 不更新部门关联,避免死锁
                                vehicleInfoService.updateVehicleInfo(vehicleInfo);
                                syncCarCount++;
                                log.debug("更新CMS车辆: {}", plateNo);
//                                log.debug("更新CMS车辆: {}", plateNo);
                            }
                            success = true;
                        } catch (org.springframework.dao.DeadlockLoserDataAccessException e) {
@@ -126,8 +127,8 @@
            log.info("成功同步{}个CMS车辆信息", syncCarCount);
            log.info("CMS车辆信息同步完成");
//            log.info("成功同步{}个CMS车辆信息", syncCarCount);
//            log.info("CMS车辆信息同步完成");
        } catch (Exception e) {
            log.error("同步CMS车辆信息异常", e);
        }
@@ -135,6 +136,7 @@
    //对车牌处理的通用方法
    private String getPlateNo(String plateNo){
        if (StringUtils.isNotEmpty(plateNo)) {
                // 从车辆名称中提取车牌号(假设格式为"★车牌号(地区)")
            if(plateNo.contains("(")) {
@@ -143,14 +145,16 @@
                plateNo = plateNo.replace("★", "").replace("☆", "").split("(")[0];
            }
            }
            return plateNo;
        //xxx粤VSX120
        plateNo = plateNo.replaceAll("[^a-zA-Z0-9]", "");
        return PlateNumberExtractor.extractPlateNumber(plateNo);
    }
    /**
     * 同步CMS车辆位置信息
     */
    public void syncVehicleLocation() {
        log.info("开始同步CMS车辆位置信息");
//        log.info("开始同步CMS车辆位置信息");
        try {
                //先获得本地CMS上的所有CMS车辆
                VehicleInfo query = new VehicleInfo();