人脸抓拍数据清洗

develop
hanrenchun 9 months ago
parent 6ec1250ef4
commit 3db2658159

@ -1,128 +1,164 @@
package com.ssf.mysqloracletest.domain; package com.ssf.mysqloracletest.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@Data @Data
@TableName(value ="t_strh_entity_info_ks")
public class TStrhEntityInfoKs { public class TStrhEntityInfoKs {
/** /**
* ID * ID
*/ */
@TableField(value = "objectid")
private String objectid; private String objectid;
/** /**
* camerIdx * camerIdx
*/ */
@TableField(value = "cameraidx")
private String cameraidx; private String cameraidx;
/** /**
* *
*/ */
@TableField(value = "capturetime")
private String capturetime; private String capturetime;
/** /**
* *
*/ */
@TableField(value = "image")
private String image; private String image;
/** /**
* IMAGE_JPEG * IMAGE_JPEG
*/ */
@TableField(value = "image_format")
private String image_format; private String image_format;
/** /**
* *
*/ */
@TableField(value = "vertices")
private String vertices; private String vertices;
/** /**
* *
*/ */
@TableField(value = "smalimage")
private String smalimage; private String smalimage;
/** /**
* IMAGE_JPEG * IMAGE_JPEG
*/ */
@TableField(value = "smalimage_format")
private String smalimage_format; private String smalimage_format;
/** /**
* id * id
*/ */
@TableField(value = "objectid_old")
private String objectid_old; private String objectid_old;
/** /**
* *
*/ */
@TableField(value = "age_lower_limit")
private String age_lower_limit; private String age_lower_limit;
/** /**
* *
*/ */
@TableField(value = "age_up_limit")
private String age_up_limit; private String age_up_limit;
@TableField(value = "black_type")
private String black_type; private String black_type;
/** /**
* *
*/ */
@TableField(value = "cap_style")
private String cap_style; private String cap_style;
/** /**
* *
*/ */
@TableField(value = "gender_code")
private String gender_code; private String gender_code;
/** /**
* *
*/ */
@TableField(value = "glass_style")
private String glass_style; private String glass_style;
/** /**
* *
*/ */
@TableField(value = "mustache_style")
private String mustache_style; private String mustache_style;
/** /**
* *
*/ */
@TableField(value = "respirator_color")
private String respirator_color; private String respirator_color;
/** /**
* *
*/ */
@TableField(value = "st_age")
private String st_age; private String st_age;
/** /**
* *
*/ */
@TableField(value = "st_age_value")
private String st_age_value; private String st_age_value;
/** /**
* *
*/ */
@TableField(value = "st_expression")
private String st_expression; private String st_expression;
/** /**
* *
*/ */
@TableField(value = "st_helmet_style")
private String st_helmet_style; private String st_helmet_style;
/** /**
* *
*/ */
@TableField(value = "rksj")
private String rksj; private String rksj;
/** /**
* *
*/ */
@TableField(value = "gxsj")
private String gxsj; private String gxsj;
/** /**
* ID * ID
*/ */
@TableField(value = "entityid")
private String entityid; private String entityid;
/** /**
* *
*/ */
@TableField(value = "entityupdatetime")
private String entityupdatetime; private String entityupdatetime;
/** /**
* *
*/ */
@TableField(value = "gender")
private String gender; private String gender;
/** /**
* *
*/ */
@TableField(value = "identityid")
private String identityid; private String identityid;
/** /**
* *
*/ */
@TableField(value = "name")
private String name; private String name;
/** /**
* *
*/ */
@TableField(value = "natives")
private String natives; private String natives;
@TableField(value = "remark")
private String remark; private String remark;
@TableField(value = "yxx")
private String yxx; private String yxx;
/** /**
* *
*/ */
@TableField(value = "storagepath")
private String storagepath; private String storagepath;
@TableField(value = "regionid")
private String regionid; private String regionid;
} }

@ -1,9 +1,12 @@
package com.ssf.mysqloracletest.mapper; package com.ssf.mysqloracletest.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs; import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs;
import org.apache.ibatis.annotations.Mapper;
@Mapper
@DS("postgreUser")
public interface TStrhEntityInfoKsMapper extends BaseMapper<TStrhEntityInfoKs> { public interface TStrhEntityInfoKsMapper extends BaseMapper<TStrhEntityInfoKs> {
} }

@ -1,9 +1,11 @@
package com.ssf.mysqloracletest.service.impl; package com.ssf.mysqloracletest.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ssf.mysqloracletest.domain.TMotorvehicle; import com.ssf.mysqloracletest.domain.TMotorvehicle;
import com.ssf.mysqloracletest.service.TMotorvehicleService; import com.ssf.mysqloracletest.service.TMotorvehicleService;
import com.ssf.mysqloracletest.mapper.TMotorvehicleMapper; import com.ssf.mysqloracletest.mapper.TMotorvehicleMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -11,7 +13,10 @@ import org.springframework.stereotype.Service;
* @description t_motorvehicleService * @description t_motorvehicleService
* @createDate 2023-12-14 19:17:07 * @createDate 2023-12-14 19:17:07
*/ */
@Service @Service
@RequiredArgsConstructor
@DS("postgreUser")
public class TMotorvehicleServiceImpl extends ServiceImpl<TMotorvehicleMapper, TMotorvehicle> public class TMotorvehicleServiceImpl extends ServiceImpl<TMotorvehicleMapper, TMotorvehicle>
implements TMotorvehicleService{ implements TMotorvehicleService{

@ -13,7 +13,7 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@DS("postgre") @DS("postgreUser")
public class TStrhEntityInfoKsServiceImpl extends ServiceImpl<TStrhEntityInfoKsMapper, TStrhEntityInfoKs> public class TStrhEntityInfoKsServiceImpl extends ServiceImpl<TStrhEntityInfoKsMapper, TStrhEntityInfoKs>
implements TStrhEntityInfoKsService { implements TStrhEntityInfoKsService {

@ -1,9 +1,11 @@
package com.ssf.mysqloracletest.service.impl; package com.ssf.mysqloracletest.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ssf.mysqloracletest.domain.TStrhInfo; import com.ssf.mysqloracletest.domain.TStrhInfo;
import com.ssf.mysqloracletest.service.TStrhInfoService; import com.ssf.mysqloracletest.service.TStrhInfoService;
import com.ssf.mysqloracletest.mapper.TStrhInfoMapper; import com.ssf.mysqloracletest.mapper.TStrhInfoMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -11,7 +13,10 @@ import org.springframework.stereotype.Service;
* @description t_strh_infoService * @description t_strh_infoService
* @createDate 2023-12-14 20:14:20 * @createDate 2023-12-14 20:14:20
*/ */
@Service @Service
@RequiredArgsConstructor
@DS("postgreUser")
public class TStrhInfoServiceImpl extends ServiceImpl<TStrhInfoMapper, TStrhInfo> public class TStrhInfoServiceImpl extends ServiceImpl<TStrhInfoMapper, TStrhInfo>
implements TStrhInfoService{ implements TStrhInfoService{

@ -1,23 +1,27 @@
package com.ssf.mysqloracletest.task; 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.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.domain.*;
import com.ssf.mysqloracletest.service.*; import com.ssf.mysqloracletest.service.*;
import com.ssf.mysqloracletest.utils.ConfigParam; import com.ssf.mysqloracletest.utils.ConfigParam;
import com.ssf.mysqloracletest.utils.NumKit;
import com.ssf.mysqloracletest.utils.StringKit; import com.ssf.mysqloracletest.utils.StringKit;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch; import java.util.TimeZone;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* *
@ -27,23 +31,16 @@ import java.util.concurrent.Executors;
public class UserAndVehicleRecordTask { public class UserAndVehicleRecordTask {
private static final Logger logger = LoggerFactory.getLogger(UserAndVehicleRecordTask.class); 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 TransitUserRecordService transitUserRecordService;
private final TransitVehicleRecordService transitVehicleRecordService; private final TStrhEntityInfoKsService tStrhEntityInfoKsService;
private final DevopsDeviceInfoService devopsDeviceInfoService; 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) @Scheduled(initialDelay = 100, fixedDelay = 3000)
public void transNjjxx() { public void setTransitUserRecordService() {
if (!"true".equals(ConfigParam.UserAndVehicleSwitch)) { if (!"true".equals(ConfigParam.UserAndVehicleSwitch)) {
return; return;
@ -51,73 +48,61 @@ public class UserAndVehicleRecordTask {
try { try {
List<DevopsDeviceInfo> list = devopsDeviceInfoService.list(); dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
for (DevopsDeviceInfo one : list){ LambdaQueryWrapper<TransitUserRecord> queryWrapper = Wrappers.lambdaQuery();
if (one.getDeviceType() == 1){ queryWrapper.orderByDesc(TransitUserRecord::getPartitionField);
List<TStrhInfo> infoList = tStrhInfoService.lambdaQuery().eq(TStrhInfo::getCameraidx, one.getGbsChannelNo()).list(); queryWrapper.last("LIMIT 1");
for (TStrhInfo info : infoList){ 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 transitUserRecord = new TransitUserRecord();
transitUserRecord.setPlaceCode(one.getPlaceCode()); DevopsDeviceInfo devopsDeviceInfo = devopsDeviceInfoService.lambdaQuery().eq(DevopsDeviceInfo::getGbsChannelNo, tStrhEntityInfoKs.getCameraidx()).one();
transitUserRecord.setPlaceName(one.getPlaceName()); transitUserRecord.setPlaceCode(devopsDeviceInfo.getPlaceCode());
transitUserRecord.setDeviceCode(one.getDeviceCode()); transitUserRecord.setPlaceName(devopsDeviceInfo.getPlaceName());
transitUserRecord.setDeviceName(one.getDeviceName()); transitUserRecord.setDeviceCode(devopsDeviceInfo.getDeviceCode());
transitUserRecord.setGbsChannelNo(one.getGbsChannelNo()); transitUserRecord.setDeviceName(devopsDeviceInfo.getDeviceName());
transitUserRecord.setDeviceAddress(one.getDeviceAddress()); transitUserRecord.setGbsChannelNo(devopsDeviceInfo.getGbsChannelNo());
transitUserRecord.setOrientation(one.getOrientation()); transitUserRecord.setDeviceAddress(devopsDeviceInfo.getDeviceAddress());
transitUserRecord.setDeviceIp(one.getDeviceIp()); transitUserRecord.setGlobalPic(tStrhEntityInfoKs.getImage());
transitUserRecord.setGlobalPic(info.getImage()); transitUserRecord.setPersonPic(tStrhEntityInfoKs.getSmalimage());
transitUserRecord.setPersonPic(info.getSmalimage()); transitUserRecord.setUserStandardPic(tStrhEntityInfoKs.getStoragepath());
transitUserRecord.setPassTime(dateFormat.parse(info.getCapturetime()).getTime()/1000); transitUserRecord.setUserName(tStrhEntityInfoKs.getName());
transitUserRecord.setPartitionField(dateFormat1.parse(info.getCapturetime())); transitUserRecord.setIdCard(tStrhEntityInfoKs.getIdentityid());
TransitUserRecord one1 = transitUserRecordService.lambdaQuery().eq(TransitUserRecord::getGlobalPic, info.getImage()).one(); if (tStrhEntityInfoKs.getCapturetime() != null) {
if (one1 == null){ transitUserRecord.setPassTime(dateFormat.parse(tStrhEntityInfoKs.getCapturetime()).getTime() / 1000);
boolean save = transitUserRecordService.save(transitUserRecord); transitUserRecord.setPartitionField(dateFormat.parse(tStrhEntityInfoKs.getCapturetime()));
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("人脸-:更新成功");
}
} }
} TransitUserRecord one1 = transitUserRecordService.lambdaQuery().eq(TransitUserRecord::getPersonPic, tStrhEntityInfoKs.getSmalimage()).one();
} if (one1 == null) {
if (one.getDeviceType() == 2){ boolean save = transitUserRecordService.save(transitUserRecord);
List<TMotorvehicle> tMotorvehicleList = tMotorvehicleService.lambdaQuery().eq(TMotorvehicle::getTollgateid, one.getGbsChannelNo()).list(); if (save) {
for (TMotorvehicle tMotorvehicle : tMotorvehicleList){ logger.info("UserRecord-" + transitUserRecord.getDeviceCode() + ":插入成功");
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("车辆-:插入成功");
} }
}else { } else {
UpdateWrapper<TransitVehicleRecord> wrapper = new UpdateWrapper<>(); QueryWrapper<TransitUserRecord> recordQueryWrapper = new QueryWrapper<>();
wrapper.eq("global_pic", tMotorvehicle.getStorageurl1()); recordQueryWrapper.eq("", tStrhEntityInfoKs.getSmalimage());
boolean update = transitVehicleRecordService.update(transitVehicleRecord, wrapper); boolean update = transitUserRecordService.update(transitUserRecord, recordQueryWrapper);
if (update) { if (update) {
logger.info("车辆-:更新成功"); logger.info("UserRecord-" + transitUserRecord.getDeviceCode() + ":更新成功");
} }
} }
} }

Loading…
Cancel
Save