|
|
|
@ -1,23 +1,27 @@
|
|
|
|
|
package com.ssf.mysqloracletest.task;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.db.sql.Wrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.ssf.mysqloracletest.domain.*;
|
|
|
|
|
import com.ssf.mysqloracletest.service.*;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.ConfigParam;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.NumKit;
|
|
|
|
|
import com.ssf.mysqloracletest.utils.StringKit;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
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.concurrent.CountDownLatch;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
import java.util.TimeZone;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户数据接入
|
|
|
|
@ -27,23 +31,16 @@ import java.util.concurrent.Executors;
|
|
|
|
|
public class UserAndVehicleRecordTask {
|
|
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(UserAndVehicleRecordTask.class);
|
|
|
|
|
String pattern = "yyyyMMddHHmmss";
|
|
|
|
|
String pattern1 = "yyyy-MM-dd HH-mm-ss";
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
|
|
|
|
|
SimpleDateFormat dateFormat1 = new SimpleDateFormat(pattern1);
|
|
|
|
|
|
|
|
|
|
private final TransitUserRecordService transitUserRecordService;
|
|
|
|
|
private final TransitVehicleRecordService transitVehicleRecordService;
|
|
|
|
|
private final TStrhEntityInfoKsService tStrhEntityInfoKsService;
|
|
|
|
|
private final DevopsDeviceInfoService devopsDeviceInfoService;
|
|
|
|
|
private final TMotorvehicleService tMotorvehicleService;
|
|
|
|
|
private final TStrhInfoService tStrhInfoService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 连云港 对接海康平台获取人员基础数据
|
|
|
|
|
* //
|
|
|
|
|
*/
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
String maxTime = "2023-10-01 00:00:00";
|
|
|
|
|
|
|
|
|
|
@Scheduled(initialDelay = 100, fixedDelay = 3000)
|
|
|
|
|
public void transNjjxx() {
|
|
|
|
|
public void setTransitUserRecordService() {
|
|
|
|
|
|
|
|
|
|
if (!"true".equals(ConfigParam.UserAndVehicleSwitch)) {
|
|
|
|
|
return;
|
|
|
|
@ -51,73 +48,61 @@ public class UserAndVehicleRecordTask {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
List<DevopsDeviceInfo> list = devopsDeviceInfoService.list();
|
|
|
|
|
for (DevopsDeviceInfo one : list){
|
|
|
|
|
if (one.getDeviceType() == 1){
|
|
|
|
|
List<TStrhInfo> infoList = tStrhInfoService.lambdaQuery().eq(TStrhInfo::getCameraidx, one.getGbsChannelNo()).list();
|
|
|
|
|
for (TStrhInfo info : infoList){
|
|
|
|
|
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
|
|
LambdaQueryWrapper<TransitUserRecord> queryWrapper = Wrappers.lambdaQuery();
|
|
|
|
|
queryWrapper.orderByDesc(TransitUserRecord::getPartitionField);
|
|
|
|
|
queryWrapper.last("LIMIT 1");
|
|
|
|
|
TransitUserRecord one = transitUserRecordService.getOne(queryWrapper);
|
|
|
|
|
if (one != null) {
|
|
|
|
|
Date partitionField = one.getPartitionField();
|
|
|
|
|
maxTime = dateFormat.format(partitionField);
|
|
|
|
|
}
|
|
|
|
|
List<DevopsDeviceInfo> list = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getDeviceType, 1).list();
|
|
|
|
|
ArrayList<String> arrayList = new ArrayList<>();
|
|
|
|
|
for (DevopsDeviceInfo devopsDeviceInfo : list) {
|
|
|
|
|
arrayList.add(devopsDeviceInfo.getGbsChannelNo());
|
|
|
|
|
}
|
|
|
|
|
Integer count = tStrhEntityInfoKsService.lambdaQuery()
|
|
|
|
|
.in(TStrhEntityInfoKs::getCameraidx, arrayList)
|
|
|
|
|
.gt(TStrhEntityInfoKs::getCapturetime, maxTime).count();
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
int num = count / 1000;
|
|
|
|
|
for (int i = 0; i <= num; i++) {
|
|
|
|
|
Page<TStrhEntityInfoKs> page = new Page<>(i + 1, 1000);
|
|
|
|
|
QueryWrapper<TStrhEntityInfoKs> wrapper = new QueryWrapper<>();
|
|
|
|
|
wrapper.in("cameraidx", arrayList);
|
|
|
|
|
wrapper.gt("capturetime", maxTime);
|
|
|
|
|
List<TStrhEntityInfoKs> records = tStrhEntityInfoKsService.page(page, wrapper).getRecords();
|
|
|
|
|
for (TStrhEntityInfoKs tStrhEntityInfoKs : records) {
|
|
|
|
|
TransitUserRecord transitUserRecord = new TransitUserRecord();
|
|
|
|
|
transitUserRecord.setPlaceCode(one.getPlaceCode());
|
|
|
|
|
transitUserRecord.setPlaceName(one.getPlaceName());
|
|
|
|
|
transitUserRecord.setDeviceCode(one.getDeviceCode());
|
|
|
|
|
transitUserRecord.setDeviceName(one.getDeviceName());
|
|
|
|
|
transitUserRecord.setGbsChannelNo(one.getGbsChannelNo());
|
|
|
|
|
transitUserRecord.setDeviceAddress(one.getDeviceAddress());
|
|
|
|
|
transitUserRecord.setOrientation(one.getOrientation());
|
|
|
|
|
transitUserRecord.setDeviceIp(one.getDeviceIp());
|
|
|
|
|
transitUserRecord.setGlobalPic(info.getImage());
|
|
|
|
|
transitUserRecord.setPersonPic(info.getSmalimage());
|
|
|
|
|
transitUserRecord.setPassTime(dateFormat.parse(info.getCapturetime()).getTime()/1000);
|
|
|
|
|
transitUserRecord.setPartitionField(dateFormat1.parse(info.getCapturetime()));
|
|
|
|
|
TransitUserRecord one1 = transitUserRecordService.lambdaQuery().eq(TransitUserRecord::getGlobalPic, info.getImage()).one();
|
|
|
|
|
if (one1 == null){
|
|
|
|
|
boolean save = transitUserRecordService.save(transitUserRecord);
|
|
|
|
|
if (save){
|
|
|
|
|
logger.info("人脸-:插入成功");
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
UpdateWrapper<TransitUserRecord> wrapper = new UpdateWrapper<>();
|
|
|
|
|
wrapper.eq("global_pic", info.getImage());
|
|
|
|
|
boolean update = transitUserRecordService.update(transitUserRecord, wrapper);
|
|
|
|
|
if (update) {
|
|
|
|
|
logger.info("人脸-:更新成功");
|
|
|
|
|
}
|
|
|
|
|
DevopsDeviceInfo devopsDeviceInfo = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getGbsChannelNo, tStrhEntityInfoKs.getCameraidx()).one();
|
|
|
|
|
transitUserRecord.setPlaceCode(devopsDeviceInfo.getPlaceCode());
|
|
|
|
|
transitUserRecord.setPlaceName(devopsDeviceInfo.getPlaceName());
|
|
|
|
|
transitUserRecord.setDeviceCode(devopsDeviceInfo.getDeviceCode());
|
|
|
|
|
transitUserRecord.setDeviceName(devopsDeviceInfo.getDeviceName());
|
|
|
|
|
transitUserRecord.setGbsChannelNo(devopsDeviceInfo.getGbsChannelNo());
|
|
|
|
|
transitUserRecord.setDeviceAddress(devopsDeviceInfo.getDeviceAddress());
|
|
|
|
|
transitUserRecord.setGlobalPic(tStrhEntityInfoKs.getImage());
|
|
|
|
|
transitUserRecord.setPersonPic(tStrhEntityInfoKs.getSmalimage());
|
|
|
|
|
transitUserRecord.setUserStandardPic(tStrhEntityInfoKs.getStoragepath());
|
|
|
|
|
transitUserRecord.setUserName(tStrhEntityInfoKs.getName());
|
|
|
|
|
transitUserRecord.setIdCard(tStrhEntityInfoKs.getIdentityid());
|
|
|
|
|
if (tStrhEntityInfoKs.getCapturetime() != null) {
|
|
|
|
|
transitUserRecord.setPassTime(dateFormat.parse(tStrhEntityInfoKs.getCapturetime()).getTime() / 1000);
|
|
|
|
|
transitUserRecord.setPartitionField(dateFormat.parse(tStrhEntityInfoKs.getCapturetime()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (one.getDeviceType() == 2){
|
|
|
|
|
List<TMotorvehicle> tMotorvehicleList = tMotorvehicleService.lambdaQuery().eq(TMotorvehicle::getTollgateid, one.getGbsChannelNo()).list();
|
|
|
|
|
for (TMotorvehicle tMotorvehicle : tMotorvehicleList){
|
|
|
|
|
TransitVehicleRecord transitVehicleRecord = new TransitVehicleRecord();
|
|
|
|
|
transitVehicleRecord.setPlaceCode(one.getPlaceCode());
|
|
|
|
|
transitVehicleRecord.setPlaceName(one.getPlaceName());
|
|
|
|
|
transitVehicleRecord.setDeviceCode(one.getDeviceCode());
|
|
|
|
|
transitVehicleRecord.setDeviceName(one.getDeviceName());
|
|
|
|
|
transitVehicleRecord.setGbsChannelNo(one.getGbsChannelNo());
|
|
|
|
|
transitVehicleRecord.setDeviceAddress(one.getDeviceAddress());
|
|
|
|
|
transitVehicleRecord.setOrientation(one.getOrientation());
|
|
|
|
|
transitVehicleRecord.setDeviceIp(one.getDeviceIp());
|
|
|
|
|
transitVehicleRecord.setPlateNo(tMotorvehicle.getPlateno());
|
|
|
|
|
transitVehicleRecord.setGlobalPic(tMotorvehicle.getStorageurl1());
|
|
|
|
|
transitVehicleRecord.setPlatePic(tMotorvehicle.getStorageurl2());
|
|
|
|
|
transitVehicleRecord.setSourceId(tMotorvehicle.getSourceid());
|
|
|
|
|
transitVehicleRecord.setPassTime(dateFormat.parse(tMotorvehicle.getPasstime()).getTime()/1000);
|
|
|
|
|
transitVehicleRecord.setPartitionField(dateFormat.parse(tMotorvehicle.getPasstime()));
|
|
|
|
|
transitVehicleRecord.setPlateColor(tMotorvehicle.getPlatecolor());
|
|
|
|
|
transitVehicleRecord.setVehicleColor(tMotorvehicle.getVehiclecolor());
|
|
|
|
|
transitVehicleRecord.setVehicleBrand(tMotorvehicle.getVehiclebrand());
|
|
|
|
|
TransitVehicleRecord one1 = transitVehicleRecordService.lambdaQuery().eq(TransitVehicleRecord::getGlobalPic, tMotorvehicle.getStorageurl1()).one();
|
|
|
|
|
if (one1 == null){
|
|
|
|
|
boolean save = transitVehicleRecordService.save(transitVehicleRecord);
|
|
|
|
|
if (save){
|
|
|
|
|
logger.info("车辆-:插入成功");
|
|
|
|
|
TransitUserRecord one1 = transitUserRecordService.lambdaQuery().eq(TransitUserRecord::getPersonPic, tStrhEntityInfoKs.getSmalimage()).one();
|
|
|
|
|
if (one1 == null) {
|
|
|
|
|
boolean save = transitUserRecordService.save(transitUserRecord);
|
|
|
|
|
if (save) {
|
|
|
|
|
logger.info("UserRecord-" + transitUserRecord.getDeviceCode() + ":插入成功");
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
UpdateWrapper<TransitVehicleRecord> wrapper = new UpdateWrapper<>();
|
|
|
|
|
wrapper.eq("global_pic", tMotorvehicle.getStorageurl1());
|
|
|
|
|
boolean update = transitVehicleRecordService.update(transitVehicleRecord, wrapper);
|
|
|
|
|
} else {
|
|
|
|
|
QueryWrapper<TransitUserRecord> recordQueryWrapper = new QueryWrapper<>();
|
|
|
|
|
recordQueryWrapper.eq("", tStrhEntityInfoKs.getSmalimage());
|
|
|
|
|
boolean update = transitUserRecordService.update(transitUserRecord, recordQueryWrapper);
|
|
|
|
|
if (update) {
|
|
|
|
|
logger.info("车辆-:更新成功");
|
|
|
|
|
logger.info("UserRecord-" + transitUserRecord.getDeviceCode() + ":更新成功");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|