diff --git a/src/main/java/com/ssf/mysqloracletest/domain/TStrhEntityInfoKs.java b/src/main/java/com/ssf/mysqloracletest/domain/TStrhEntityInfoKs.java new file mode 100644 index 0000000..2b9c834 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/TStrhEntityInfoKs.java @@ -0,0 +1,128 @@ +package com.ssf.mysqloracletest.domain; + +import lombok.Data; + +@Data +public class TStrhEntityInfoKs { + /** + * 对象ID + */ + private String objectid; + /** + * 设备camerIdx + */ + private String cameraidx; + /** + * 抓拍时间 + */ + private String capturetime; + /** + * 抓拍大图 + */ + private String image; + /** + * 图片格式,如IMAGE_JPEG + */ + private String image_format; + /** + * 人脸在大图中的位置 + */ + private String vertices; + /** + * 抓拍小图 + */ + private String smalimage; + /** + * 图片格式,如IMAGE_JPEG + */ + private String smalimage_format; + /** + * 算法厂商原始id + */ + private String objectid_old; + /** + * 最小年龄 + */ + private String age_lower_limit; + /** + * 最大年龄 + */ + private String age_up_limit; + private String black_type; + /** + *帽子样式 + */ + private String cap_style; + /** + * 性别 + */ + private String gender_code; + /** + * 眼镜 + */ + private String glass_style; + /** + * 胡型 + */ + private String mustache_style; + /** + * 口罩颜色 + */ + private String respirator_color; + /** + * 年龄标识 + */ + private String st_age; + /** + * 相似年龄 + */ + private String st_age_value; + /** + * 是否遮挡 + */ + private String st_expression; + /** + * 头盔样式 + */ + private String st_helmet_style; + /** + * 入库时间 + */ + private String rksj; + /** + * 更新时间 + */ + private String gxsj; + /** + * 档案唯一ID + */ + private String entityid; + /** + * 档案更新时间 + */ + private String entityupdatetime; + /** + * 性别代码 + */ + private String gender; + /** + * 身份证号 + */ + private String identityid; + /** + * 姓名 + */ + private String name; + /** + * 籍贯 + */ + private String natives; + private String remark; + private String yxx; + /** + *封面照 + */ + private String storagepath; + private String regionid; + +} diff --git a/src/main/java/com/ssf/mysqloracletest/domain/TransitUserRecord.java b/src/main/java/com/ssf/mysqloracletest/domain/TransitUserRecord.java new file mode 100644 index 0000000..2b65ae5 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/domain/TransitUserRecord.java @@ -0,0 +1,207 @@ +package com.ssf.mysqloracletest.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 人脸记录表 + * @TableName transit_user_record + */ +@TableName(value ="transit_user_record") +@Data +public class TransitUserRecord implements Serializable { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 抓拍时间(分区) + */ + @TableId + private Date partitionField; + + /** + * 场所编码 + */ + private String placeCode; + + /** + * 场所名称 + */ + private String placeName; + + /** + * 设备编码 + */ + private String deviceCode; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 通道国标编码 + */ + private String gbsChannelNo; + + /** + * 安装位置 + */ + private String deviceAddress; + + /** + * 方位 + */ + private Integer orientation; + + /** + * 设备ip + */ + private String deviceIp; + + /** + * 全景图 + */ + private String globalPic; + + /** + * 人脸图 + */ + private String personPic; + + /** + * 人体全景图 + */ + private String bodyGlobalPic; + + /** + * 人体小图 + */ + private String bodyPic; + + /** + * 常口库标准照片 + */ + private String userStandardPic; + + /** + * 人员姓名 + */ + private String userName; + + /** + * 档案编号 + */ + private String dossierCode; + + /** + * 证件号码 + */ + private String idCard; + + /** + * 联系电话 + */ + private String phone; + + /** + * 记录唯一标识 + */ + private String recordId; + + /** + * 人车同拍唯一记录 + */ + private String userVehicleRecordId; + + /** + * 人体关联ID + */ + private String userBodyRecordId; + + /** + * 商汤人脸记录 + */ + private String stUserRecordId; + + /** + * 数据来源唯一ID + */ + private String sourceId; + + /** + * 人脸小图唯一ID + */ + private String personImageId; + + /** + * 人脸大图唯一ID + */ + private String globalImageId; + + /** + * 相似度 + */ + private String similarity; + + /** + * 是否已比对人脸 + */ + private Integer isCompare; + + /** + * 进出方向 + */ + private Integer direction; + + /** + * 抓拍时间 + */ + private Long passTime; + + /** + * 轴系坐标 + */ + private String axis; + + /** + * 数据来源 + */ + private Integer dataSrc; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建者 + */ + private Integer createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新者 + */ + private Integer updateBy; + + /** + * 0:不活跃,1:活跃 + */ + private Integer isActive; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/TStrhEntityInfoKsMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/TStrhEntityInfoKsMapper.java new file mode 100644 index 0000000..1a6519a --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/TStrhEntityInfoKsMapper.java @@ -0,0 +1,13 @@ +package com.ssf.mysqloracletest.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs; + + +public interface TStrhEntityInfoKsMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/mapper/TransitUserRecordMapper.java b/src/main/java/com/ssf/mysqloracletest/mapper/TransitUserRecordMapper.java new file mode 100644 index 0000000..f3152f1 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/mapper/TransitUserRecordMapper.java @@ -0,0 +1,18 @@ +package com.ssf.mysqloracletest.mapper; + +import com.ssf.mysqloracletest.domain.TransitUserRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 10503 +* @description 针对表【transit_user_record(人脸记录表)】的数据库操作Mapper +* @createDate 2023-12-22 10:29:24 +* @Entity com.ssf.mysqloracletest.domain.TransitUserRecord +*/ +public interface TransitUserRecordMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/TStrhEntityInfoKsService.java b/src/main/java/com/ssf/mysqloracletest/service/TStrhEntityInfoKsService.java new file mode 100644 index 0000000..74ee2b6 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/TStrhEntityInfoKsService.java @@ -0,0 +1,9 @@ +package com.ssf.mysqloracletest.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs; + + +public interface TStrhEntityInfoKsService extends IService { + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/TransitUserRecordService.java b/src/main/java/com/ssf/mysqloracletest/service/TransitUserRecordService.java new file mode 100644 index 0000000..1509af7 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/TransitUserRecordService.java @@ -0,0 +1,13 @@ +package com.ssf.mysqloracletest.service; + +import com.ssf.mysqloracletest.domain.TransitUserRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 10503 +* @description 针对表【transit_user_record(人脸记录表)】的数据库操作Service +* @createDate 2023-12-22 10:29:24 +*/ +public interface TransitUserRecordService extends IService { + +} diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/TStrhEntityInfoKsServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/TStrhEntityInfoKsServiceImpl.java new file mode 100644 index 0000000..317bb4f --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/TStrhEntityInfoKsServiceImpl.java @@ -0,0 +1,21 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs; +import com.ssf.mysqloracletest.mapper.TStrhEntityInfoKsMapper; +import com.ssf.mysqloracletest.service.TStrhEntityInfoKsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@DS("postgre") +public class TStrhEntityInfoKsServiceImpl extends ServiceImpl + implements TStrhEntityInfoKsService { + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/service/impl/TransitUserRecordServiceImpl.java b/src/main/java/com/ssf/mysqloracletest/service/impl/TransitUserRecordServiceImpl.java new file mode 100644 index 0000000..61c66a9 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/service/impl/TransitUserRecordServiceImpl.java @@ -0,0 +1,22 @@ +package com.ssf.mysqloracletest.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ssf.mysqloracletest.domain.TransitUserRecord; +import com.ssf.mysqloracletest.service.TransitUserRecordService; +import com.ssf.mysqloracletest.mapper.TransitUserRecordMapper; +import org.springframework.stereotype.Service; + +/** +* @author 10503 +* @description 针对表【transit_user_record(人脸记录表)】的数据库操作Service实现 +* @createDate 2023-12-22 10:29:24 +*/ +@Service +public class TransitUserRecordServiceImpl extends ServiceImpl + implements TransitUserRecordService{ + +} + + + + diff --git a/src/main/java/com/ssf/mysqloracletest/task/TStrhEntityInfoKsTask.java b/src/main/java/com/ssf/mysqloracletest/task/TStrhEntityInfoKsTask.java new file mode 100644 index 0000000..54b5894 --- /dev/null +++ b/src/main/java/com/ssf/mysqloracletest/task/TStrhEntityInfoKsTask.java @@ -0,0 +1,108 @@ +package com.ssf.mysqloracletest.task; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ssf.mysqloracletest.domain.TStrhEntityInfoKs; +import com.ssf.mysqloracletest.domain.TransitUserRecord; +import com.ssf.mysqloracletest.service.TStrhEntityInfoKsService; +import com.ssf.mysqloracletest.service.TransitUserRecordService; +import com.ssf.mysqloracletest.utils.ConfigParam; +import com.ssf.mysqloracletest.utils.NumKit; +import com.ssf.mysqloracletest.utils.StringKit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + +/** + * 人员轨迹数据接入 + */ +@Component +public class TStrhEntityInfoKsTask { + private static final Logger logger = LoggerFactory.getLogger(TStrhEntityInfoKsTask.class); + + @Resource + private TStrhEntityInfoKsService tStrhEntityInfoKsService; + + @Resource + private TransitUserRecordService transitUserRecordService; + + final int oncesCounts = NumKit.checkInt(ConfigParam.oncesCounts) == 0 ? 1000 : NumKit.checkInt(ConfigParam.oncesCounts); + + String maxTime = "2023-10-01 00:00:00"; + + @Scheduled(initialDelay = 100, fixedDelay = 3000) + public void setTransitUserRecordService() { + if (!"true".equals(ConfigParam.TStrhEntityInfoSwitch)) { + return; + } + + try { + int countTStrh = tStrhEntityInfoKsService.count(); + + if (countTStrh > 0) { + + int count = countTStrh / oncesCounts; + CountDownLatch latch = new CountDownLatch(countTStrh); + + for (int i = 0; i <= count; i++) { + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("captureTime", maxTime); + Page page = new Page<>(i + 1, 1000); + List resultList = tStrhEntityInfoKsService.page(page, queryWrapper).getRecords(); + for (TStrhEntityInfoKs entityInfoKs : resultList) { + TransitUserRecord transitUserRecord = new TransitUserRecord(); + transitUserRecord.setDeviceCode(entityInfoKs.getCameraidx()); + transitUserRecord.setPassTime(Long.parseLong(entityInfoKs.getCapturetime())); + transitUserRecord.setBodyGlobalPic(entityInfoKs.getImage()); + transitUserRecord.setPersonPic(entityInfoKs.getSmalimage()); + transitUserRecord.setSourceId(entityInfoKs.getEntityid()); + transitUserRecord.setIdCard(entityInfoKs.getIdentityid()); + transitUserRecord.setUserName(entityInfoKs.getName()); + //确定一个数据是否唯一 + TransitUserRecord one = transitUserRecordService.lambdaQuery().eq(TransitUserRecord::getPersonPic, entityInfoKs.getSmalimage()).one(); + if (one == null) { + boolean save = transitUserRecordService.save(transitUserRecord); + if (save) { + logger.info("Face-" + entityInfoKs.getSmalimage() + ":插入成功"); + } + }else { + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("person_pic", entityInfoKs.getSmalimage()); + boolean update = transitUserRecordService.update(transitUserRecord,wrapper); + if (update){ + logger.info("Face-" + entityInfoKs.getSmalimage() + ":更新成功"); + + } + } + } + } catch (Exception e) { + logger.info("TSInfos:" + StringKit.getTrace(e)); + } + latch.countDown(); + } + + try { + // Wait for all threads to complete + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } 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 d7f1e1e..9e181f2 100644 --- a/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java +++ b/src/main/java/com/ssf/mysqloracletest/utils/ConfigParam.java @@ -53,10 +53,12 @@ public class ConfigParam { public static String SlryYjxxOracleSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("SlryYjxxOracleSwitch")); - public static String jwzUserInfoToActual = StringKit.toString(PropertiesUtil.queryPropertiesByKey("jwzUserInfoToActual")); + public static String jwzUserInfoToActual = StringKit.toString(PropertiesUtil.queryPropertiesByKey("jwzUserInfoToActual")); public static String wshttpurl = PropertiesUtil.queryPropertiesByKey("wshttpurl"); public static String wsDownloadPicPath = PropertiesUtil.queryPropertiesByKey("wsDownloadPicPath"); public static String wsDownloadPicAreaStart = PropertiesUtil.queryPropertiesByKey("wsDownloadPicAreaStart"); + public static String TStrhEntityInfoSwitch = StringKit.toString(PropertiesUtil.queryPropertiesByKey("TStrhEntityInfoSwitch")); + }