| | |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.ruoyi.gps.domain.CmsVehicleDeviceListResponse; |
| | | import com.ruoyi.gps.domain.CmsVehicleLocationResponse; |
| | | import com.ruoyi.gps.domain.VehicleGps; |
| | | import com.ruoyi.gps.domain.VehicleInfo; |
| | | import com.ruoyi.gps.service.ICmsGpsCollectService; |
| | | import com.ruoyi.gps.service.IVehicleGpsService; |
| | | import com.ruoyi.gps.service.IVehicleInfoService; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.system.domain.CmsVehicleDeviceResponse; |
| | | import com.ruoyi.system.domain.CmsVehicleLocationResponse; |
| | | import com.ruoyi.system.domain.VehicleGps; |
| | | import com.ruoyi.system.domain.VehicleInfo; |
| | | import com.ruoyi.system.service.ICmsGpsCollectService; |
| | | import com.ruoyi.system.service.IVehicleGpsService; |
| | | import com.ruoyi.system.service.IVehicleInfoService; |
| | | |
| | | /** |
| | | * CMS车辆同步定时任务 |
| | |
| | | log.info("开始同步CMS车辆信息"); |
| | | try { |
| | | // 获取CMS所有车辆信息 |
| | | CmsVehicleDeviceResponse response = cmsGpsCollectService.queryVehicleDevices(); |
| | | CmsVehicleDeviceListResponse response = cmsGpsCollectService.getDeviceByVehicle(null); |
| | | if (response.getResult() != 0) { |
| | | log.error("获取CMS车辆信息失败"); |
| | | return; |
| | |
| | | |
| | | // 获取所有CMS车辆的车牌号 |
| | | List<String> cmsPlateNos = new ArrayList<>(); |
| | | response.getVehicles().forEach(vehicle -> { |
| | | if (StringUtils.isNotEmpty(vehicle.getNm())) { |
| | | response.getDevices().forEach(vehicle -> { |
| | | if (StringUtils.isNotEmpty(vehicle.getVid())) { |
| | | // 从车辆名称中提取车牌号(假设格式为"★车牌号(地区)") |
| | | String plateNo =this.getPlateNo(vehicle.getNm()); |
| | | String plateNo =this.getPlateNo(vehicle.getVid()); |
| | | cmsPlateNos.add(plateNo); |
| | | } |
| | | }); |
| | |
| | | List<String> onlyCms=cmsPlateNos.stream().filter(e->!notCmsVehicles.contains(e)).collect((Collectors.toList())); |
| | | |
| | | Integer syncCarCount=0; |
| | | for(String e:onlyCms){ |
| | | VehicleInfo vehicleInfo = new VehicleInfo(); |
| | | vehicleInfo.setVehicleNo(e); |
| | | vehicleInfo.setPlatformCode("CMS"); |
| | | vehicleInfo.setStatus("0"); |
| | | //如果车辆不存在,则插入 |
| | | if (vehicleInfoService.selectVehicleInfoList(vehicleInfo).size()==0) { |
| | | response.getDevices().stream().filter(e->onlyCms.contains(this.getPlateNo(e.getVid()))).forEach(vehicle->{ |
| | | String plateNo =this.getPlateNo(vehicle.getVid()); |
| | | |
| | | VehicleInfo vehicleInfo= vehicleInfoService.selectVehicleInfoByPlateNumber(plateNo); |
| | | if (vehicleInfo==null) { |
| | | vehicleInfo = new VehicleInfo(); |
| | | vehicleInfo.setVehicleNo(plateNo); |
| | | vehicleInfo.setDeviceId(vehicle.getDid()); |
| | | vehicleInfo.setPlatformCode("CMS"); |
| | | vehicleInfo.setStatus("0"); |
| | | vehicleInfoService.insertVehicleInfo(vehicleInfo); |
| | | syncCarCount++; |
| | | } |
| | | } |
| | | else{ |
| | | vehicleInfo.setVehicleNo(plateNo); |
| | | vehicleInfo.setDeviceId(vehicle.getDid()); |
| | | vehicleInfo.setPlatformCode("CMS"); |
| | | vehicleInfo.setStatus("0"); |
| | | vehicleInfoService.updateVehicleInfo(vehicleInfo); |
| | | } |
| | | |
| | | }); |
| | | |
| | | |
| | | |
| | | |
| | | log.info("成功同步{}个CMS车辆信息", syncCarCount); |
| | |
| | | if(f==null){ |
| | | continue; |
| | | } |
| | | |
| | | if(vehicle.getJd()==null||vehicle.getWd()==null){ |
| | | continue; |
| | | } |
| | | // 创建GPS记录 |
| | | VehicleGps gps = new VehicleGps(); |
| | | gps.setVehicleId(f.getVehicleId()); |
| | | gps.setDeviceId(null); |
| | | |
| | | gps.setLongitude(vehicle.getJd()/1000000); |
| | | |
| | | gps.setLatitude(vehicle.getWd()/1000000); |
| | | gps.setSpeed(defaultZero); |
| | | gps.setVehicleNo(plateNo); |