的isc的回调接口的ai预警上传(event_aimms类型)

This commit is contained in:
guoshengxiong 2025-10-13 17:38:14 +08:00
parent d3438c520e
commit 047f7834af

View File

@ -122,6 +122,7 @@ public class HikvisionCall {
public static final String LIST = "list";
public static final String EVENT_PMS = "event_pms";
public static final String EVENT_VSS = "event_vss";
public static final String EVENT_AIMMS = "event_aimms";
private static final String FIXED_CAR_GROUP_NAME = "业主车辆";
private static Map<String, DustNoiseData> dustDevSnMap = new ConcurrentHashMap<String, DustNoiseData>();
public AsyncHikvision asyncHikvision;
@ -402,26 +403,7 @@ public class HikvisionCall {
ability = eventDetail.getString("ability");
if (Objects.equals(ability, EVENT_VSS)) {
log.info("AI识别告警=======" + paramsJo);
//摄像机名称
String srcName = eventDetail.getString("srcName");
//422000003
String eventType = eventDetail.getString("eventType");
JSONObject data = eventDetail.getJSONObject(DATA);
//海康AI图片地址
String imageUrl = data.getString("url");
if (StrUtil.isBlank(imageUrl)) {
//区域入侵图片
imageUrl = Optional.ofNullable(data.getJSONArray("fielddetection")).map(m -> m.getJSONObject(0).getString("imageUrl")).orElse(null);
}
//海康AI图片地址
String srcIndex = eventDetail.getString("srcIndex");
AiAnalyseHardWareRecord dev = aiAnalyseHardWareRecordMapper.selectOne(new LambdaQueryWrapper<AiAnalyseHardWareRecord>()
.eq(AiAnalyseHardWareRecord::getHardwareId, srcIndex));
if (dev == null) {
log.error("未查到AI识别告警设备设备id{}", srcIndex);
return null;
}
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, srcIndex, dev);
addAiAnalyseHardWareRecord(eventDetail, dataEvent.getString("happenTime"));
} else if (Objects.equals(ability, EVENT_IAS)) {
log.info("临边防护告警=======" + paramsJo);
String srcName = eventDetail.getString("srcName");
@ -505,10 +487,52 @@ public class HikvisionCall {
}
} else if (Objects.equals(ability1, EVENT_IAS)) {
addFrontierProtectionNoNetData(jsonObject);
} else if (Objects.equals(ability1, "")) {
JSONArray eventsArray = jsonObject.getJSONArray("events");
if (eventsArray.size() > 0) {
JSONObject dataEvent = eventsArray.getJSONObject(0);
JSONArray eventDetails = dataEvent.getJSONArray("eventDetails");
JSONObject eventDetail = eventDetails.getJSONObject(0);
String ability = eventDetail.getString("ability");
JSONObject paramsJo = jsonObject.getJSONObject("params");
if (Objects.equals(ability, EVENT_AIMMS)) {
log.info("AI识别告警=======" + paramsJo);
addAiAnalyseHardWareRecord(eventDetail, dataEvent.getString("happenTime"));
}
}
}
return Result.ok();
}
/**
* 添加AI识别告警记录
* @param eventDetail
* @param happenTime
*/
private void addAiAnalyseHardWareRecord(JSONObject eventDetail, String happenTime) {
//摄像机名称
String srcName = eventDetail.getString("srcName");
//422000003
String eventType = eventDetail.getString("eventType");
JSONObject data = eventDetail.getJSONObject(DATA);
//海康AI图片地址
String imageUrl = data.getString("url");
if (StrUtil.isBlank(imageUrl)) {
//区域入侵图片
imageUrl = Optional.ofNullable(data.getJSONArray("fielddetection")).map(m -> m.getJSONObject(0).getString("imageUrl")).orElse(null);
}
//海康AI图片地址
String srcIndex = eventDetail.getString("srcIndex");
AiAnalyseHardWareRecord dev = aiAnalyseHardWareRecordMapper.selectOne(new LambdaQueryWrapper<AiAnalyseHardWareRecord>()
.eq(AiAnalyseHardWareRecord::getHardwareId, srcIndex));
if (dev == null) {
log.error("未查到AI识别告警设备设备id{}", srcIndex);
} else {
hikvisionCall.saveEventCallbackAiAsync(srcName, eventType, imageUrl, srcIndex, dev, happenTime);
}
}
/**
* 延迟组装好扬尘数据再新增
*
@ -603,16 +627,15 @@ public class HikvisionCall {
/**
* 异步添加ai数据
*
* @param dataEvent
* @param srcName
* @param eventType
* @param imageUrl
* @param deviceId
* @param dev
* @param happenTime
*/
@Async("saveEventCallbackAiAsync")
public void saveEventCallbackAiAsync(JSONObject dataEvent, String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev) {
String happenTime = dataEvent.getString("happenTime");
public void saveEventCallbackAiAsync(String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev, String happenTime) {
String createTime = DateUtil.formatDateTime(DateUtil.parse(happenTime));
Integer count = aiAnalyseHardWareAlarmRecordMapper.selectCount(new LambdaQueryWrapper<AiAnalyseHardWareAlarmRecord>()
.eq(AiAnalyseHardWareAlarmRecord::getCreateTime, createTime)