This commit is contained in:
parent
59ee7a2509
commit
4572ff144c
|
@ -0,0 +1,17 @@
|
|||
package com.bootdo.datasend.dianxin.domain.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Description DoorRecordDTO
|
||||
* @Author lijingtong
|
||||
* @Date 2025-06-17
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DoorRecordDTO {
|
||||
@JSONField(name = "requestData")
|
||||
private DoorRequestDataDTO requestData;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.bootdo.datasend.dianxin.domain.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description DoorRequestDataDTO
|
||||
* @Author lijingtong
|
||||
* @Date 2025-06-17
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DoorRequestDataDTO {
|
||||
@JSONField(name = "requestFlag")
|
||||
private String requestFlag;
|
||||
@JSONField(name = "requestDataList")
|
||||
private List<DoorRequestDataListDTO> requestDataList;
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package com.bootdo.datasend.dianxin.domain.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Description DoorRequestDataListDTO
|
||||
* @Author lijingtong
|
||||
* @Date 2025-06-17
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DoorRequestDataListDTO {
|
||||
// 多维网关设备SN
|
||||
@JSONField(name = "gatewaySN")
|
||||
private String gatewaySN;
|
||||
// 设备(国标)编码
|
||||
@JSONField(name = "deviceSN")
|
||||
private String deviceSN;
|
||||
// 门禁验证方式
|
||||
@JSONField(name = "validType")
|
||||
private Integer validType;
|
||||
// 卡号/人脸编码(证件号码MD5)
|
||||
@JSONField(name = "cardNo")
|
||||
private String cardNo;
|
||||
// 验证结果
|
||||
@JSONField(name = "validResult")
|
||||
private Integer validResult;
|
||||
// 通行时间
|
||||
@JSONField(name = "passTime")
|
||||
private String passTime;
|
||||
// 通行方向
|
||||
@JSONField(name = "passDirection")
|
||||
private Integer passDirection;
|
||||
// 人脸图base64编码
|
||||
@JSONField(name = "personPicBase64")
|
||||
private String personPicBase64;
|
||||
// 全景图base64编码
|
||||
@JSONField(name = "globalPicBase64")
|
||||
private String globalPicBase64;
|
||||
// 人员姓名
|
||||
@JSONField(name = "userName")
|
||||
private String userName;
|
||||
}
|
|
@ -2,10 +2,9 @@ package com.bootdo.datasend.dianxin.task;
|
|||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.parser.Feature;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.bootdo.datasend.dianxin.cache.DeviceCache;
|
||||
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.*;
|
||||
|
@ -17,6 +16,7 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -33,6 +33,8 @@ public class StandardTask {
|
|||
private final BaseVehicleRecordService vehicleRecordService;
|
||||
private final BaseDoorRecordService doorRecordService;
|
||||
|
||||
private final RestTemplate restTemplate;
|
||||
|
||||
/**
|
||||
* 功能描述: 高抛发送
|
||||
*/
|
||||
|
@ -184,7 +186,28 @@ public class StandardTask {
|
|||
list.add(requestDataListDTO);
|
||||
dataDTO.setRequestDataList(list);
|
||||
dto.setRequestData(dataDTO);
|
||||
String requestBody = JSON.toJSONString(dto);
|
||||
|
||||
// 比如队列名称是 instruction||{gatewaySN} ,需替换成实际的 gatewaySN 值
|
||||
String gatewaySN = deviceInfo != null ? deviceInfo.getGeminiSn() : "";
|
||||
String queueName = "instruction||" + gatewaySN;
|
||||
String url = "http://180.101.177.39:10010/api/zdyq-equipment/dwBoxRecord/accept";
|
||||
|
||||
try {
|
||||
// 发送 POST 请求,这里假设接口返回类型为 String ,可根据实际调整
|
||||
// 消息队列发送
|
||||
// rabbitTemplate.convertAndSend(queueName, JSON.toJSONString(dto));
|
||||
// 调接口
|
||||
String result = restTemplate.postForObject(url, requestBody, String.class);
|
||||
logger.info("调用接口返回结果:{}", result);
|
||||
|
||||
// 若返回码符合成功逻辑(需看接口文档定义),更新发送状态
|
||||
h.setIsSend(1);
|
||||
userRecordService.saveOrUpdate(h);
|
||||
logger.info("人脸抓拍记录发送成功:" + h.getId());
|
||||
} catch (Exception e) {
|
||||
logger.error("调用接口发送数据失败,记录 ID:{},异常:{}", h.getId(), e.getMessage());
|
||||
}
|
||||
//循环发送mq
|
||||
boolean b = sendUserMq(dto);
|
||||
if (b) {
|
||||
|
@ -235,19 +258,110 @@ public class StandardTask {
|
|||
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);
|
||||
// String requestBody = JSON.toJSONString(dto);
|
||||
String requestBody = JSON.toJSONString(dto, SerializerFeature.BrowserCompatible);
|
||||
// 比如队列名称是 instruction||{gatewaySN} ,需替换成实际的 gatewaySN 值
|
||||
String gatewaySN = deviceInfo != null ? deviceInfo.getGeminiSn() : "";
|
||||
String queueName = "instruction||" + gatewaySN;
|
||||
String url = "http://180.101.177.39:10010/api/zdyq-equipment/dwBoxRecord/acceptDwCarRecord";
|
||||
|
||||
//循环发送mq
|
||||
boolean b = sendVehicleMq(dto);
|
||||
if (b) {
|
||||
try {
|
||||
// 发送 POST 请求,这里假设接口返回类型为 String ,可根据实际调整
|
||||
// 消息队列发送
|
||||
// rabbitTemplate.convertAndSend(queueName, JSON.toJSONString(dto));
|
||||
// 调接口
|
||||
String result = restTemplate.postForObject(url, requestBody, String.class);
|
||||
logger.info("调用接口返回结果:{}", result);
|
||||
|
||||
// 若返回码符合成功逻辑(需看接口文档定义),更新发送状态
|
||||
h.setIsSend(1);
|
||||
vehicleRecordService.saveOrUpdate(h);
|
||||
logger.info("车辆抓拍记录发送成功:" + h.getId());
|
||||
logger.info("人脸抓拍记录发送成功:" + h.getId());
|
||||
} catch (Exception e) {
|
||||
logger.error("调用接口发送数据失败,记录 ID:{},异常:{}", h.getId(), e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 人脸门禁
|
||||
*/
|
||||
@Scheduled(cron = "0/5 * * * * ? ")
|
||||
public void doorRecord() {
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
DoorRecordDTO dto = new DoorRecordDTO();
|
||||
|
||||
DoorRequestDataDTO dataDTO = new DoorRequestDataDTO();
|
||||
dataDTO.setRequestFlag("1");
|
||||
|
||||
DoorRequestDataListDTO requestDataListDTO = new DoorRequestDataListDTO();
|
||||
if (deviceInfo != null) {
|
||||
requestDataListDTO.setGatewaySN(deviceInfo.getGeminiSn());
|
||||
}
|
||||
requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
|
||||
requestDataListDTO.setValidType(Integer.valueOf(h.getDirection()));
|
||||
requestDataListDTO.setPassTime(StringKit.toString(h.getPassTime()));
|
||||
requestDataListDTO.setGlobalPicBase64(Base64Util.getBase64ByUrl(h.getPersonPic()));
|
||||
requestDataListDTO.setCardNo(h.getIdcard());
|
||||
requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
|
||||
requestDataListDTO.setUserName(h.getUserName());
|
||||
requestDataListDTO.setValidResult(Integer.valueOf(h.getOpenResult()));
|
||||
requestDataListDTO.setPassDirection(deviceInfo.getDirection());
|
||||
List<DoorRequestDataListDTO> list = new ArrayList<>();
|
||||
list.add(requestDataListDTO);
|
||||
dataDTO.setRequestDataList(list);
|
||||
dto.setRequestData(dataDTO);
|
||||
// String requestBody = JSON.toJSONString(dto);
|
||||
String requestBody = JSON.toJSONString(dto, SerializerFeature.BrowserCompatible);
|
||||
// 比如队列名称是 instruction||{gatewaySN} ,需替换成实际的 gatewaySN 值
|
||||
String gatewaySN = deviceInfo != null ? deviceInfo.getGeminiSn() : "";
|
||||
String queueName = "instruction||" + gatewaySN;
|
||||
String url = "http://180.101.177.39:10010/api/zdyq-equipment/dwBoxRecord/acceptDwUserRecord";
|
||||
|
||||
try {
|
||||
// 发送 POST 请求,这里假设接口返回类型为 String ,可根据实际调整
|
||||
// 消息队列发送
|
||||
// rabbitTemplate.convertAndSend(queueName, JSON.toJSONString(dto));
|
||||
// 调接口
|
||||
String result = restTemplate.postForObject(url, requestBody, String.class);
|
||||
logger.info("调用接口返回结果:{}", result);
|
||||
|
||||
// 若返回码符合成功逻辑(需看接口文档定义),更新发送状态
|
||||
h.setIsSend(1);
|
||||
doorRecordService.saveOrUpdate(h);
|
||||
logger.info("人脸抓拍记录发送成功:" + h.getId());
|
||||
} catch (Exception e) {
|
||||
logger.error("调用接口发送数据失败,记录 ID:{},异常:{}", h.getId(), e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.bootdo.util;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Configuration
|
||||
public class AppConfig {
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
return new RestTemplate();
|
||||
}
|
||||
}
|
|
@ -2,8 +2,8 @@ spring:
|
|||
datasource: #数据库
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
username: root
|
||||
password: '1qaz!QAZ'
|
||||
url: jdbc:mysql://221.229.107.118:30523/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
|
||||
password: '!QAZ1qaz'
|
||||
url: jdbc:mysql://221.229.107.118:30557/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 # 配置初始化大小、最小、最大
|
||||
|
|
Loading…
Reference in New Issue