From 5950b5316f43653cdf9b70917747cadd773e7088 Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Tue, 5 Mar 2024 11:18:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E8=84=B8=E6=8A=93=E6=8B=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B8=85=E6=B4=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/TMotorvehicleMapper.java | 5 + .../task/UserAndVehicleRecordTask.java | 5 +- .../task/VehicleRecordTask.java | 111 ++++++++++++++++++ .../mysqloracletest/utils/ConfigParam.java | 1 + 4 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/ssf/mysqloracletest/task/VehicleRecordTask.java diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/TMotorvehicleMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/TMotorvehicleMapper.java index 0a353ed..b790f1a 100644 --- a/src/main/java/com/ssf/mysqloracletest/mapper/TMotorvehicleMapper.java +++ b/src/main/java/com/ssf/mysqloracletest/mapper/TMotorvehicleMapper.java @@ -1,7 +1,9 @@ package com.ssf.mysqloracletest.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.ssf.mysqloracletest.domain.TMotorvehicle; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author 28758 @@ -9,6 +11,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2023-12-14 19:17:07 * @Entity com.ssf.mysqloracletest.domain.TMotorvehicle */ + +@Mapper +@DS("postgreUser") public interface TMotorvehicleMapper extends BaseMapper { } diff --git a/src/main/java/com/ssf/mysqloracletest/task/UserAndVehicleRecordTask.java b/src/main/java/com/ssf/mysqloracletest/task/UserAndVehicleRecordTask.java index 64268b9..f9e55e1 100644 --- a/src/main/java/com/ssf/mysqloracletest/task/UserAndVehicleRecordTask.java +++ b/src/main/java/com/ssf/mysqloracletest/task/UserAndVehicleRecordTask.java @@ -67,8 +67,9 @@ public class UserAndVehicleRecordTask { .gt(TStrhEntityInfoKs::getCapturetime, maxTime).count(); if (count > 0) { int num = count / 1000; + Page page = new Page<>( 1, 1000); for (int i = 0; i <= num; i++) { - Page page = new Page<>(i + 1, 1000); + page.setCurrent(i + 1); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.in("cameraidx", arrayList); wrapper.gt("capturetime", maxTime); @@ -99,7 +100,7 @@ public class UserAndVehicleRecordTask { } } else { QueryWrapper recordQueryWrapper = new QueryWrapper<>(); - recordQueryWrapper.eq("", tStrhEntityInfoKs.getSmalimage()); + recordQueryWrapper.eq("person_pic", tStrhEntityInfoKs.getSmalimage()); boolean update = transitUserRecordService.update(transitUserRecord, recordQueryWrapper); if (update) { logger.info("UserRecord-" + transitUserRecord.getDeviceCode() + ":更新成功"); diff --git a/src/main/java/com/ssf/mysqloracletest/task/VehicleRecordTask.java b/src/main/java/com/ssf/mysqloracletest/task/VehicleRecordTask.java new file mode 100644 index 0000000..4226ed8 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/VehicleRecordTask.java @@ -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 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 list = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getDeviceType, 2).list(); + ArrayList 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 page = new Page<>(1,1000); + for (int i = 0; i <= num ; i++){ + page.setCurrent(i + 1); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("tollgateid",arrayList); + wrapper.gt("passtime",maxTime); + List 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 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)); + } + } +} diff --git a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java index 20c9adf..9e7ec32 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -55,5 +55,6 @@ public class ConfigParam { public static String wsDownloadPicPath = PropertiesUtil.queryPropertiesByKey("wsDownloadPicPath"); public static String wsDownloadPicAreaStart = PropertiesUtil.queryPropertiesByKey("wsDownloadPicAreaStart"); public static String UserAndVehicleSwitch = PropertiesUtil.queryPropertiesByKey("UserAndVehicleSwitch"); + public static String VehicleSwitch = PropertiesUtil.queryPropertiesByKey("VehicleSwitch"); }