parent
3db2658159
commit
5950b5316f
@ -0,0 +1,111 @@
|
||||
package com.ssf.mysqloracletest.task;
|
||||
|
||||
import cn.hutool.db.sql.Query;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ssf.mysqloracletest.domain.DevopsDeviceInfo;
|
||||
import com.ssf.mysqloracletest.domain.TMotorvehicle;
|
||||
import com.ssf.mysqloracletest.domain.TransitUserRecord;
|
||||
import com.ssf.mysqloracletest.domain.TransitVehicleRecord;
|
||||
import com.ssf.mysqloracletest.service.DevopsDeviceInfoService;
|
||||
import com.ssf.mysqloracletest.service.TMotorvehicleService;
|
||||
import com.ssf.mysqloracletest.service.TransitVehicleRecordService;
|
||||
import com.ssf.mysqloracletest.utils.ConfigParam;
|
||||
import com.ssf.mysqloracletest.utils.StringKit;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import oracle.sql.TRANSDUMP;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class VehicleRecordTask {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(VehicleRecordTask.class);
|
||||
|
||||
private final TMotorvehicleService tMotorvehicleService;
|
||||
private final TransitVehicleRecordService transitVehicleRecordService;
|
||||
private final DevopsDeviceInfoService devopsDeviceInfoService;
|
||||
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
String maxTime = "20231200000000";
|
||||
|
||||
@Scheduled(initialDelay = 100, fixedDelay = 3000)
|
||||
public void setVehicleRecordTask() {
|
||||
|
||||
if (!"true".equals(ConfigParam.VehicleSwitch)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
||||
LambdaQueryWrapper<TransitVehicleRecord> transitVehicleRecordQueryWrapper = Wrappers.lambdaQuery();
|
||||
transitVehicleRecordQueryWrapper.orderByDesc(TransitVehicleRecord::getPartitionField);
|
||||
transitVehicleRecordQueryWrapper.last("LIMIT 1");
|
||||
TransitVehicleRecord one = transitVehicleRecordService.getOne(transitVehicleRecordQueryWrapper);
|
||||
if (one != null){
|
||||
Date partitionField = one.getPartitionField();
|
||||
maxTime = dateFormat.format(partitionField);
|
||||
}
|
||||
List<DevopsDeviceInfo> list = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getDeviceType, 2).list();
|
||||
ArrayList<String> arrayList = new ArrayList<>();
|
||||
for (DevopsDeviceInfo devopsDeviceInfo : list){
|
||||
arrayList.add(devopsDeviceInfo.getGbsChannelNo());
|
||||
}
|
||||
Integer count = tMotorvehicleService.lambdaQuery()
|
||||
.in(TMotorvehicle::getTollgateid, arrayList)
|
||||
.gt(TMotorvehicle::getPasstime, maxTime).count();
|
||||
if (count > 0){
|
||||
int num = count/1000;
|
||||
Page<TMotorvehicle> page = new Page<>(1,1000);
|
||||
for (int i = 0; i <= num ; i++){
|
||||
page.setCurrent(i + 1);
|
||||
QueryWrapper<TMotorvehicle> wrapper = new QueryWrapper<>();
|
||||
wrapper.in("tollgateid",arrayList);
|
||||
wrapper.gt("passtime",maxTime);
|
||||
List<TMotorvehicle> records = tMotorvehicleService.page(page,wrapper).getRecords();
|
||||
for (TMotorvehicle tMotorvehicle : records){
|
||||
TransitVehicleRecord transitVehicleRecord = new TransitVehicleRecord();
|
||||
DevopsDeviceInfo devopsDeviceInfo = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getGbsChannelNo, tMotorvehicle.getTollgateid()).one();
|
||||
transitVehicleRecord.setPlaceCode(devopsDeviceInfo.getPlaceCode());
|
||||
transitVehicleRecord.setPlaceName(devopsDeviceInfo.getDeviceName());
|
||||
transitVehicleRecord.setDeviceCode(devopsDeviceInfo.getDeviceCode());
|
||||
transitVehicleRecord.setDeviceName(devopsDeviceInfo.getDeviceName());
|
||||
transitVehicleRecord.setGbsChannelNo(tMotorvehicle.getDeviceid());
|
||||
transitVehicleRecord.setPlateNo(tMotorvehicle.getPlateno());
|
||||
transitVehicleRecord.setGlobalPic(tMotorvehicle.getStorageurl1());
|
||||
transitVehicleRecord.setPlatePic(tMotorvehicle.getStorageurl2());
|
||||
transitVehicleRecord.setDoorwayCode(tMotorvehicle.getTollgateid());
|
||||
transitVehicleRecord.setPassTime(dateFormat.parse(tMotorvehicle.getPasstime()).getTime()/1000);
|
||||
transitVehicleRecord.setPartitionField(dateFormat.parse(tMotorvehicle.getPasstime()));
|
||||
TransitVehicleRecord vehicleRecord = transitVehicleRecordService.lambdaQuery().eq(TransitVehicleRecord::getGlobalPic, tMotorvehicle.getStorageurl1()).one();
|
||||
if (vehicleRecord == null){
|
||||
boolean save = transitVehicleRecordService.save(transitVehicleRecord);
|
||||
if (save){
|
||||
logger.info("VehicleRecord-" + devopsDeviceInfo.getDeviceCode() + ":插入成功");
|
||||
}
|
||||
}else {
|
||||
QueryWrapper<TransitVehicleRecord> recordQueryWrapper = new QueryWrapper<>();
|
||||
recordQueryWrapper.eq("global_pic", tMotorvehicle.getStorageurl1());
|
||||
boolean update = transitVehicleRecordService.update(transitVehicleRecord, recordQueryWrapper);
|
||||
if (update) {
|
||||
logger.info("VehicleRecord-" + devopsDeviceInfo.getDeviceCode() + ":更新成功");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.info(StringKit.getTrace(e));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue