package com.ruoyi.quartz.task;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import com.ruoyi.system.domain.GpsDevice;
|
import com.ruoyi.system.domain.GpsDeviceListResponse;
|
import com.ruoyi.system.domain.GpsGroup;
|
import com.ruoyi.system.domain.VehicleInfo;
|
import com.ruoyi.system.service.IGpsCollectService;
|
import com.ruoyi.system.service.IVehicleInfoService;
|
|
/**
|
* 车辆同步定时任务
|
*/
|
@Component("vehicleSyncTask")
|
public class VehicleSyncTask {
|
|
private static final Logger log = LoggerFactory.getLogger(VehicleSyncTask.class);
|
|
@Autowired
|
private IGpsCollectService gpsCollectService;
|
|
@Autowired
|
private IVehicleInfoService vehicleInfoService;
|
|
/**
|
* 同步车辆信息
|
*/
|
public void syncVehicleInfo() {
|
try {
|
log.info("开始同步车辆信息...");
|
|
// 获取设备列表,这会自动更新车辆信息中的设备ID
|
GpsDeviceListResponse response = gpsCollectService.getDeviceList();
|
// 更新车辆设备ID
|
updateVehicleDeviceIds(response);
|
|
log.info("车辆信息同步完成");
|
} catch (Exception e) {
|
log.error("车辆信息同步失败: {}", e.getMessage());
|
}
|
}
|
|
/**
|
* 更新车辆设备ID
|
*/
|
private void updateVehicleDeviceIds(GpsDeviceListResponse response) {
|
if (response.getStatus() != 0 || response.getGroups() == null) {
|
return;
|
}
|
|
for (GpsGroup group : response.getGroups()) {
|
for (GpsDevice device : group.getDevices()) {
|
String deviceName = device.getDevicename();
|
String remark = device.getRemark();
|
String deviceId = device.getDeviceid();
|
|
if (StringUtils.isNotEmpty(deviceName) || StringUtils.isNotEmpty(remark)) {
|
String plateNumber = extractPlateNumber(deviceName, remark);
|
if (StringUtils.isNotEmpty(plateNumber)) {
|
VehicleInfo vehicleInfo = vehicleInfoService.selectVehicleInfoByPlateNumber(plateNumber);
|
if (vehicleInfo != null) {
|
vehicleInfo.setDeviceId(deviceId);
|
vehicleInfo.setPlatformCode("GPS51");
|
vehicleInfoService.updateVehicleInfo(vehicleInfo);
|
} else {
|
VehicleInfo newVehicle = new VehicleInfo();
|
newVehicle.setVehicleNo(plateNumber);
|
newVehicle.setDeviceId(deviceId);
|
newVehicle.setStatus("0");
|
newVehicle.setPlatformCode("GPS51");
|
vehicleInfoService.insertVehicleInfo(newVehicle);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* 从设备名称和备注中提取车牌号
|
*/
|
private String extractPlateNumber(String deviceName, String remark) {
|
if (StringUtils.isNotEmpty(deviceName)) {
|
return deviceName;
|
}
|
if (StringUtils.isNotEmpty(remark)) {
|
return remark;
|
}
|
return null;
|
}
|
}
|