版本迭代

This commit is contained in:
fengchunyu 2024-11-21 17:09:18 +08:00
parent 3dc584ead8
commit 59ee7a2509
30 changed files with 1432 additions and 29 deletions

View File

@ -1,5 +0,0 @@
##对接汇聚中心
#global mode
SENDTYPE=HJPT

View File

@ -50,7 +50,7 @@ public class DeviceCache {
}
public static void put(DevopsDeviceInfo bean) {
cache.put(bean.getGbsChannelNo(), JSON.toJSONString(bean));
cache.put(bean.getDeviceIp(), JSON.toJSONString(bean));
}
/**

View File

@ -0,0 +1,75 @@
package com.bootdo.datasend.dianxin.cache;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bootdo.datasend.dianxin.domain.SysDictData;
import com.bootdo.datasend.dianxin.service.SysDictDataService;
import com.bootdo.util.StringKit;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 区域缓存
*
* @since 2023-09-16 11:04
*/
@Component
public class DirectionCache {
private static final Logger logger = LoggerFactory.getLogger(DirectionCache.class);
/**
*
*/
private static final Cache<String, String> cache = Caffeine.newBuilder().build();
private static SysDictDataService sysDictDataService;
@Autowired
DirectionCache(SysDictDataService sysDictDataService) {
DirectionCache.sysDictDataService = sysDictDataService;
//初始化
load();
}
public static String get(String key) {
return cache.get(key, s -> {
try {
return "";
} catch (Exception e) {
return "";
}
});
}
public static void put(SysDictData bean) {
cache.put(bean.getDictValue(), JSON.toJSONString(bean));
}
/**
* 缓存刷新
*/
@Scheduled(cron = "0 */30 * * * ?")
public static void refresh() {
load();
}
private static void load() {
logger.info("设备表缓存重新加载");
List<SysDictData> list = sysDictDataService.list(new QueryWrapper<SysDictData>()
.eq("dict_type", "direction")
);
Map<String, String> dictMapCode = list.stream().collect(Collectors.toMap(
e -> "".equals(StringKit.toString(e.getDictValue())) ? "err" : e.getDictValue(),
e -> StringKit.toString(e.getDictLabel()), (v1, v2) -> v2));
cache.putAll(dictMapCode);
}
}

View File

@ -0,0 +1,75 @@
package com.bootdo.datasend.dianxin.cache;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bootdo.datasend.dianxin.domain.SysDictData;
import com.bootdo.datasend.dianxin.service.SysDictDataService;
import com.bootdo.util.StringKit;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 区域缓存
*
* @since 2023-09-16 11:04
*/
@Component
public class OrientationCache {
private static final Logger logger = LoggerFactory.getLogger(OrientationCache.class);
/**
*
*/
private static final Cache<String, String> cache = Caffeine.newBuilder().build();
private static SysDictDataService sysDictDataService;
@Autowired
OrientationCache(SysDictDataService sysDictDataService) {
OrientationCache.sysDictDataService = sysDictDataService;
//初始化
load();
}
public static String get(String key) {
return cache.get(key, s -> {
try {
return "";
} catch (Exception e) {
return "";
}
});
}
public static void put(SysDictData bean) {
cache.put(bean.getDictValue(), JSON.toJSONString(bean));
}
/**
* 缓存刷新
*/
@Scheduled(cron = "0 */30 * * * ?")
public static void refresh() {
load();
}
private static void load() {
logger.info("设备表缓存重新加载");
List<SysDictData> list = sysDictDataService.list(new QueryWrapper<SysDictData>()
.eq("dict_type", "orientation")
);
Map<String, String> dictMapCode = list.stream().collect(Collectors.toMap(
e -> "".equals(StringKit.toString(e.getDictValue())) ? "err" : e.getDictValue(),
e -> StringKit.toString(e.getDictLabel()), (v1, v2) -> v2));
cache.putAll(dictMapCode);
}
}

View File

@ -11,17 +11,39 @@ import org.springframework.context.annotation.Configuration;
public class RabbitConfig {
@Bean
public Queue myQueue() {
public Queue warnQueue() {
// 创建队列 myQueue
return new Queue("warnrecord", true);
}
@Bean
public Queue userQueue() {
return new Queue("userrecord", true);
}
@Bean
public Queue vehicleQueue() {
return new Queue("vehiclerecord", true);
}
@Bean
public TopicExchange exchange() {
return new TopicExchange("warnrecord");
}
@Bean
public Binding binding(Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("routing.key.#");
public Binding bindingWarnQueue(Queue warnQueue, TopicExchange exchange) {
return BindingBuilder.bind(warnQueue).to(exchange).with("routing.key.warnrecord");
}
@Bean
public Binding bindingUserQueue(Queue userQueue, TopicExchange exchange) {
return BindingBuilder.bind(userQueue).to(exchange).with("routing.key.userrecord");
}
@Bean
public Binding bindingVehicleQueue(Queue vehicleQueue, TopicExchange exchange) {
return BindingBuilder.bind(vehicleQueue).to(exchange).with("routing.key.vehiclerecord");
}
}

View File

@ -0,0 +1,187 @@
package com.bootdo.datasend.dianxin.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 人脸门禁记录表(BaseDoorRecord)Domain
*
* @author makejava
* @since 2024-11-21 16:15:21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "base_door_record")
public class BaseDoorRecord {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 小区编码
*/
private String placeCode;
/**
* 小区名称
*/
private String placeName;
/**
* 设备编码
*/
private String deviceCode;
/**
* 设备名称
*/
private String deviceName;
/**
* 关联视频监控编码
*/
private String gbsChannelNo;
/**
* 设备安装位置
*/
private String deviceAddress;
/**
* 方位
*/
private Integer orientation;
/**
* 摄像头ip
*/
private String cameraIp;
/**
* 姓名
*/
private String userName;
/**
* 证件类型
*/
private Integer identityType;
/**
* 联系电话
*/
private String phone;
/**
* 证件号码
*/
private String idcard;
/**
* 进出方向
*/
private Integer direction;
/**
* 人脸图
*/
private String personPic;
/**
* 记录唯一标识
*/
private String recordId;
/**
* 数据来源唯一ID
*/
private String sourceId;
/**
* 人脸小图唯一ID
*/
private String personImageId;
/**
* 卡号/人脸编码
*/
private String cardno;
/**
* 门禁类型
*/
private Integer cardType;
/**
* 开门结果
*/
private String openResult;
/**
* 健康码类型
*/
private Integer healthCodeType;
/**
* 行程码类型
*/
private Integer travelCodeType;
/**
* 行程码记录
*/
private String travelCodeRecord;
/**
* 核酸检测结果
*/
private Integer nucleicResultType;
/**
* 开门时间
*/
private Long passTime;
/**
* 开门时间分区
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date partitionField;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createtimeV;
/**
* 创建者
*/
private Integer createbyV;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatetimeV;
/**
* 更新者
*/
private Integer updatebyV;
/**
* 是否发送
*/
private Integer isSend;
}

View File

@ -0,0 +1,217 @@
package com.bootdo.datasend.dianxin.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 人脸记录表(BaseUserRecord)Domain
*
* @author makejava
* @since 2024-11-21 09:18:51
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "base_user_record")
public class BaseUserRecord {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 场所编码
*/
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;
/**
* 抓拍时间分区
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date partitionField;
/**
* 轴系坐标
*/
private String axis;
/**
* 数据来源
*/
private Integer dataSrc;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeV;
/**
* 创建者
*/
private Integer createByV;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTimeV;
/**
* 更新者
*/
private Integer updateByV;
/**
* 多维设备SN
*/
private String geminiSn;
/**
* 是否发送
*/
private Integer isSend;
}

View File

@ -0,0 +1,242 @@
package com.bootdo.datasend.dianxin.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 车辆记录表(BaseVehicleRecord)Domain
*
* @author makejava
* @since 2024-11-21 09:18:52
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "base_vehicle_record")
public class BaseVehicleRecord {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 场所编码
*/
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 plateNo;
/**
* 全景图
*/
private String globalPic;
/**
* 车牌图
*/
private String platePic;
/**
* 记录唯一ID
*/
private String recordId;
/**
* 数据来源唯一ID
*/
private String sourceId;
/**
* 车牌号小图唯一ID
*/
private String plateImageId;
/**
* 车辆全景图唯一ID
*/
private String globalImageId;
/**
* 人车同拍唯一记录
*/
private String userVehicleRecordId;
/**
* 车主人脸图
*/
private String ownerPersonPic;
/**
* 车主全景图
*/
private String ownerGlobalPic;
/**
* 车主姓名
*/
private String ownerName;
/**
* 证件号码
*/
private String idCard;
/**
* 联系电话
*/
private String phone;
/**
* 副驾驶人脸图
*/
private String copilotPersonPic;
/**
* 副驾驶全景图
*/
private String copilotGlobalPic;
/**
* 副驾驶姓名
*/
private String copilotOwnerName;
/**
* 副驾驶证件号码
*/
private String copilotIdcard;
/**
* 副驾驶联系电话
*/
private String copilotPhone;
/**
* 进出方向
*/
private Integer direction;
/**
* 卡口编码
*/
private String doorwayCode;
/**
* 车道编码
*/
private String roadCode;
/**
* 过车时间
*/
private Long passTime;
/**
* 过车时间分区
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date partitionField;
/**
* 车牌颜色
*/
private String plateColor;
/**
* 车身颜色
*/
private String vehicleColor;
/**
* 车辆类型
*/
private String vehicleType;
/**
* 车辆品牌
*/
private String vehicleBrand;
/**
* 数据来源
*/
private Integer dataSrc;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeV;
/**
* 创建者
*/
private Integer createByV;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTimeV;
/**
* 更新者
*/
private Integer updateByV;
/**
* 多维设备SN
*/
private String geminiSn;
/**
* 是否发送
*/
private Integer isSend;
}

View File

@ -124,7 +124,7 @@ public class DevopsDeviceInfo {
/**
* 设备厂家
*/
private String manufactor;
private Integer manufactor;
/**
* 设备登陆帐号

View File

@ -0,0 +1,71 @@
package com.bootdo.datasend.dianxin.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 字典数据表(SysDictData)Domain
*
* @author makejava
* @since 2024-11-21 16:25:19
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "sys_dict_data")
public class SysDictData {
/**
* 主键
*/
@TableId(value = "dict_code", type = IdType.AUTO)
private Long dictCode;
/**
* 字典排序
*/
private Integer dictSort;
/**
* 字典标签
*/
private String dictLabel;
/**
* 字典键值
*/
private String dictValue;
/**
* 字典类型
*/
private String dictType;
/**
* 样式属性其他样式扩展
*/
private String cssClass;
/**
* 表格回显样式
*/
private String listClass;
/**
* 是否默认Y是 N否
*/
private String isDefault;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,19 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Auther: cyFeng
* @Date: 2024/11/18 14:23
* @Description:
*/
@NoArgsConstructor
@Data
public class UserRecordDto {
@JSONField(name = "requestData")
private UserRequestDataDTO requestData;
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class UserRequestDataDTO {
@JSONField(name = "requestFlag")
private String requestFlag;
@JSONField(name = "requestDataList")
private List<UserRequestDataListDTO> requestDataList;
}

View File

@ -0,0 +1,29 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class UserRequestDataListDTO {
@JSONField(name = "gatewaySN")
private String gatewaySN;
@JSONField(name = "deviceSN")
private String deviceSN;
@JSONField(name = "validType")
private String validType;
@JSONField(name = "cardNo")
private String cardNo;
@JSONField(name = "passDirection")
private String passDirection;
@JSONField(name = "passTime")
private String passTime;
@JSONField(name = "personPicBase64")
private String personPicBase64;
@JSONField(name = "globalPicBase64")
private String globalPicBase64;
}

View File

@ -0,0 +1,19 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Auther: cyFeng
* @Date: 2024/11/18 14:23
* @Description:
*/
@NoArgsConstructor
@Data
public class VehicleRecordDto {
@JSONField(name = "requestData")
private VehicleRequestDataDTO requestData;
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class VehicleRequestDataDTO {
@JSONField(name = "requestFlag")
private String requestFlag;
@JSONField(name = "requestDataList")
private List<VehicleRequestDataListDTO> requestDataList;
}

View File

@ -0,0 +1,30 @@
package com.bootdo.datasend.dianxin.domain.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class VehicleRequestDataListDTO {
@JSONField(name = "gatewaySN")
private String gatewaySN;
@JSONField(name = "deviceSN")
private String deviceSN;
@JSONField(name = "passTime")
private String passTime;
@JSONField(name = "plateNo")
private String plateNo;
@JSONField(name = "passDirection")
private String passDirection;
@JSONField(name = "platePicBase64")
private String platePicBase64;
@JSONField(name = "globalPicBase64")
private String globalPicBase64;
@JSONField(name = "userName")
private String userName;
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bootdo.datasend.dianxin.domain.BaseDoorRecord;
import org.apache.ibatis.annotations.Mapper;
/**
* 人脸门禁记录表(BaseDoorRecord)Mapper
*
* @author makejava
* @since 2024-11-21 16:15:21
*/
@Mapper
public interface BaseDoorRecordMapper extends BaseMapper<BaseDoorRecord> {
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bootdo.datasend.dianxin.domain.BaseUserRecord;
import org.apache.ibatis.annotations.Mapper;
/**
* 人脸记录表(BaseUserRecord)Mapper
*
* @author makejava
* @since 2024-11-21 09:18:52
*/
@Mapper
public interface BaseUserRecordMapper extends BaseMapper<BaseUserRecord> {
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bootdo.datasend.dianxin.domain.BaseVehicleRecord;
import org.apache.ibatis.annotations.Mapper;
/**
* 车辆记录表(BaseVehicleRecord)Mapper
*
* @author makejava
* @since 2024-11-21 09:18:53
*/
@Mapper
public interface BaseVehicleRecordMapper extends BaseMapper<BaseVehicleRecord> {
}

View File

@ -0,0 +1,16 @@
package com.bootdo.datasend.dianxin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bootdo.datasend.dianxin.domain.SysDictData;
import org.apache.ibatis.annotations.Mapper;
/**
* 字典数据表(SysDictData)Mapper
*
* @author makejava
* @since 2024-11-21 16:25:20
*/
@Mapper
public interface SysDictDataMapper extends BaseMapper<SysDictData> {
}

View File

@ -0,0 +1,17 @@
package com.bootdo.datasend.dianxin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bootdo.datasend.dianxin.domain.BaseDoorRecord;
import java.util.List;
/**
* 人脸门禁记录表(BaseDoorRecord)Service
*
* @author makejava
* @since 2024-11-21 16:15:21
*/
public interface BaseDoorRecordService extends IService<BaseDoorRecord> {
}

View File

@ -0,0 +1,17 @@
package com.bootdo.datasend.dianxin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bootdo.datasend.dianxin.domain.BaseUserRecord;
import java.util.List;
/**
* 人脸记录表(BaseUserRecord)Service
*
* @author makejava
* @since 2024-11-21 09:18:51
*/
public interface BaseUserRecordService extends IService<BaseUserRecord> {
}

View File

@ -0,0 +1,17 @@
package com.bootdo.datasend.dianxin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bootdo.datasend.dianxin.domain.BaseVehicleRecord;
import java.util.List;
/**
* 车辆记录表(BaseVehicleRecord)Service
*
* @author makejava
* @since 2024-11-21 09:18:52
*/
public interface BaseVehicleRecordService extends IService<BaseVehicleRecord> {
}

View File

@ -0,0 +1,17 @@
package com.bootdo.datasend.dianxin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bootdo.datasend.dianxin.domain.SysDictData;
import java.util.List;
/**
* 字典数据表(SysDictData)Service
*
* @author makejava
* @since 2024-11-21 16:25:19
*/
public interface SysDictDataService extends IService<SysDictData> {
}

View File

@ -0,0 +1,19 @@
package com.bootdo.datasend.dianxin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bootdo.datasend.dianxin.domain.BaseDoorRecord;
import com.bootdo.datasend.dianxin.mapper.BaseDoorRecordMapper;
import com.bootdo.datasend.dianxin.service.BaseDoorRecordService;
import org.springframework.stereotype.Service;
/**
* 人脸门禁记录表(BaseDoorRecord)ServiceImpl
*
* @author makejava
* @since 2024-11-21 16:15:21
*/
@Service
public class BaseDoorRecordServiceImpl extends ServiceImpl<BaseDoorRecordMapper, BaseDoorRecord> implements BaseDoorRecordService {
}

View File

@ -0,0 +1,18 @@
package com.bootdo.datasend.dianxin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bootdo.datasend.dianxin.domain.BaseUserRecord;
import com.bootdo.datasend.dianxin.mapper.BaseUserRecordMapper;
import com.bootdo.datasend.dianxin.service.BaseUserRecordService;
import org.springframework.stereotype.Service;
/**
* 人脸记录表(BaseUserRecord)ServiceImpl
*
* @author makejava
* @since 2024-11-21 09:18:51
*/
@Service
public class BaseUserRecordServiceImpl extends ServiceImpl<BaseUserRecordMapper, BaseUserRecord> implements BaseUserRecordService {
}

View File

@ -0,0 +1,18 @@
package com.bootdo.datasend.dianxin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bootdo.datasend.dianxin.domain.BaseVehicleRecord;
import com.bootdo.datasend.dianxin.mapper.BaseVehicleRecordMapper;
import com.bootdo.datasend.dianxin.service.BaseVehicleRecordService;
import org.springframework.stereotype.Service;
/**
* 车辆记录表(BaseVehicleRecord)ServiceImpl
*
* @author makejava
* @since 2024-11-21 09:18:52
*/
@Service
public class BaseVehicleRecordServiceImpl extends ServiceImpl<BaseVehicleRecordMapper, BaseVehicleRecord> implements BaseVehicleRecordService {
}

View File

@ -0,0 +1,19 @@
package com.bootdo.datasend.dianxin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bootdo.datasend.dianxin.domain.SysDictData;
import com.bootdo.datasend.dianxin.mapper.SysDictDataMapper;
import com.bootdo.datasend.dianxin.service.SysDictDataService;
import org.springframework.stereotype.Service;
/**
* 字典数据表(SysDictData)ServiceImpl
*
* @author makejava
* @since 2024-11-21 16:25:19
*/
@Service
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements SysDictDataService {
}

View File

@ -4,15 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bootdo.datasend.dianxin.cache.DeviceCache;
import com.bootdo.datasend.dianxin.domain.BaseElectricCarRecord;
import com.bootdo.datasend.dianxin.domain.BaseHighThrowRecord;
import com.bootdo.datasend.dianxin.domain.DevopsDeviceInfo;
import com.bootdo.datasend.dianxin.domain.dto.ElectricCarDto;
import com.bootdo.datasend.dianxin.domain.dto.HighThrowDto;
import com.bootdo.datasend.dianxin.domain.dto.RequestDataDTO;
import com.bootdo.datasend.dianxin.domain.dto.RequestDataListDTO;
import com.bootdo.datasend.dianxin.service.BaseElectricCarRecordService;
import com.bootdo.datasend.dianxin.service.BaseHighThrowRecordService;
import com.bootdo.datasend.dianxin.cache.DirectionCache;
import com.bootdo.datasend.dianxin.cache.OrientationCache;
import com.bootdo.datasend.dianxin.domain.*;
import com.bootdo.datasend.dianxin.domain.dto.*;
import com.bootdo.datasend.dianxin.service.*;
import com.bootdo.util.Base64Util;
import com.bootdo.util.StringKit;
import lombok.RequiredArgsConstructor;
@ -33,6 +29,9 @@ public class StandardTask {
private final RabbitTemplate rabbitTemplate;
private final BaseHighThrowRecordService highThrowRecordService;
private final BaseElectricCarRecordService electricCarRecordService;
private final BaseUserRecordService userRecordService;
private final BaseVehicleRecordService vehicleRecordService;
private final BaseDoorRecordService doorRecordService;
/**
* 功能描述: 高抛发送
@ -142,6 +141,173 @@ public class StandardTask {
}
}
/**
* 功能描述: 发送人脸记录
*/
@Scheduled(cron = "0/5 * * * * ? ")
public void sendUserRecord() {
List<BaseUserRecord> lists = userRecordService.list(new QueryWrapper<BaseUserRecord>()
.eq("is_send", "0")
.last("limit 100")
);
for (BaseUserRecord h : lists) {
String deviceId = h.getDeviceIp();
String deviceCacheStr = DeviceCache.get(deviceId);
DevopsDeviceInfo deviceInfo = null;
if ("".equals(StringKit.toString(deviceCacheStr))) {
logger.info("当前设备缓存中不存在:" + deviceId);
} else {
logger.info("当前设备获取到缓存:" + deviceId);
deviceInfo = JSON.parseObject(deviceCacheStr, DevopsDeviceInfo.class, Feature.IgnoreNotMatch);
}
UserRecordDto dto = new UserRecordDto();
UserRequestDataDTO dataDTO = new UserRequestDataDTO();
dataDTO.setRequestFlag("1");
UserRequestDataListDTO requestDataListDTO = new UserRequestDataListDTO();
if (deviceInfo != null) {
requestDataListDTO.setGatewaySN(deviceInfo.getGeminiSn());
}
requestDataListDTO.setPassTime(StringKit.toString(h.getPassTime()));
requestDataListDTO.setPersonPicBase64(Base64Util.getBase64ByUrl(h.getPersonPic()));
requestDataListDTO.setGlobalPicBase64(Base64Util.getBase64ByUrl(h.getGlobalPic()));
requestDataListDTO.setPassDirection(StringKit.toString(deviceInfo.getDirection()));
requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
List<UserRequestDataListDTO> list = new ArrayList<>();
list.add(requestDataListDTO);
dataDTO.setRequestDataList(list);
dto.setRequestData(dataDTO);
//循环发送mq
boolean b = sendUserMq(dto);
if (b) {
h.setIsSend(1);
userRecordService.saveOrUpdate(h);
logger.info("人脸抓拍记录发送成功:" + h.getId());
}
}
}
/**
* 功能描述: 发送车辆记录
*/
@Scheduled(cron = "0/5 * * * * ? ")
public void sendVehicleRecord() {
List<BaseVehicleRecord> lists = vehicleRecordService.list(new QueryWrapper<BaseVehicleRecord>()
.eq("is_send", "0")
.last("limit 100")
);
for (BaseVehicleRecord h : lists) {
String deviceId = h.getDeviceIp();
String deviceCacheStr = DeviceCache.get(deviceId);
String passDirection = "";
DevopsDeviceInfo deviceInfo = null;
if ("".equals(StringKit.toString(deviceCacheStr))) {
logger.info("当前设备缓存中不存在:" + deviceId);
} else {
logger.info("当前设备获取到缓存:" + deviceId);
deviceInfo = JSON.parseObject(deviceCacheStr, DevopsDeviceInfo.class, Feature.IgnoreNotMatch);
}
VehicleRecordDto dto = new VehicleRecordDto();
VehicleRequestDataDTO dataDTO = new VehicleRequestDataDTO();
dataDTO.setRequestFlag("1");
VehicleRequestDataListDTO requestDataListDTO = new VehicleRequestDataListDTO();
if (deviceInfo != null) {
requestDataListDTO.setGatewaySN(deviceInfo.getGeminiSn());
}
requestDataListDTO.setPassTime(StringKit.toString(h.getPassTime()));
requestDataListDTO.setPlatePicBase64(Base64Util.getBase64ByUrl(h.getPlatePic()));
requestDataListDTO.setGlobalPicBase64(Base64Util.getBase64ByUrl(h.getGlobalPic()));
requestDataListDTO.setPlateNo(h.getPlateNo());
requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
requestDataListDTO.setPassDirection(StringKit.toString(deviceInfo.getDirection()));
List<VehicleRequestDataListDTO> list = new ArrayList<>();
list.add(requestDataListDTO);
dataDTO.setRequestDataList(list);
dto.setRequestData(dataDTO);
//循环发送mq
boolean b = sendVehicleMq(dto);
if (b) {
h.setIsSend(1);
vehicleRecordService.saveOrUpdate(h);
logger.info("车辆抓拍记录发送成功:" + h.getId());
}
}
}
// @Scheduled(cron = "0/5 * * * * ? ")
// public void sendDoorRecord() {
//
// List<BaseDoorRecord> lists = doorRecordService.list(new QueryWrapper<BaseDoorRecord>()
// .eq("is_send", "0")
// .last("limit 100")
// );
//
// for (BaseDoorRecord h : lists) {
//
// String deviceId = h.getCameraIp();
// String deviceCacheStr = DeviceCache.get(deviceId);
// DevopsDeviceInfo deviceInfo = null;
// if ("".equals(StringKit.toString(deviceCacheStr))) {
// logger.info("当前设备缓存中不存在:" + deviceId);
// } else {
// logger.info("当前设备获取到缓存:" + deviceId);
// deviceInfo = JSON.parseObject(deviceCacheStr, DevopsDeviceInfo.class, Feature.IgnoreNotMatch);
// }
//
// UserRecordDto dto = new UserRecordDto();
//
// UserRequestDataDTO dataDTO = new UserRequestDataDTO();
// dataDTO.setRequestFlag("1");
//
// UserRequestDataListDTO requestDataListDTO = new UserRequestDataListDTO();
//
// if (deviceInfo != null) {
// requestDataListDTO.setGatewaySN(deviceInfo.getGeminiSn());
// }
// requestDataListDTO.setPassTime(StringKit.toString(h.getPassTime()));
// requestDataListDTO.setPersonPicBase64(Base64Util.getBase64ByUrl(h.getPersonPic()));
// requestDataListDTO.setPassDirection(StringKit.toString(deviceInfo.getDirection()));
//
// requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
// //门禁验证方式
// requestDataListDTO.setValidType(h.getGbsChannelNo());
// requestDataListDTO.setCardNo(h.getCardno());
//
// List<UserRequestDataListDTO> list = new ArrayList<>();
// list.add(requestDataListDTO);
// dataDTO.setRequestDataList(list);
// dto.setRequestData(dataDTO);
//
// //循环发送mq
// boolean b = sendUserMq(dto);
// if (b) {
// h.setIsSend(1);
// doorRecordService.saveOrUpdate(h);
// logger.info("门禁抓拍记录发送成功:" + h.getId());
// }
// }
// }
public boolean sendHighThrowMq(HighThrowDto bean) {
try {
rabbitTemplate.convertAndSend("warnrecord", "routing.key.warnrecord", JSON.toJSONString(bean));
@ -160,5 +326,23 @@ public class StandardTask {
return true;
}
public boolean sendUserMq(UserRecordDto bean) {
try {
rabbitTemplate.convertAndSend("warnrecord", "routing.key.userrecord", JSON.toJSONString(bean));
} catch (Exception e) {
return false;
}
return true;
}
public boolean sendVehicleMq(VehicleRecordDto bean) {
try {
rabbitTemplate.convertAndSend("warnrecord", "routing.key.vehiclerecord", JSON.toJSONString(bean));
} catch (Exception e) {
return false;
}
return true;
}
}

View File

@ -3,8 +3,8 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: '1qaz!QAZ'
# url: jdbc:mysql://221.229.107.118:30519/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
url: jdbc:mysql://127.0.0.1:55306/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
url: jdbc:mysql://221.229.107.118:30523/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
# url: jdbc:mysql://127.0.0.1:55306/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
initialSize: 5 # 配置初始化大小、最小、最大
minIdle: 5
@ -31,18 +31,18 @@ spring:
properties:
hibernate:
format_sql: true
# rabbitmq:
# host: 221.229.107.118
# port: 30529
# username: root
# password: 'sm@rtC@m!n23ty'
# dynamic: true
rabbitmq:
host: 110.1.200.11
port: 19000
host: 221.229.107.118
port: 30529
username: root
password: 'sm@rtC@m!n23ty'
dynamic: true
# rabbitmq:
# host: 110.1.200.11
# port: 19000
# username: root
# password: 'sm@rtC@m!n23ty'
# dynamic: true