的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 LIST = "list";
public static final String EVENT_PMS = "event_pms"; public static final String EVENT_PMS = "event_pms";
public static final String EVENT_VSS = "event_vss"; 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 final String FIXED_CAR_GROUP_NAME = "业主车辆";
private static Map<String, DustNoiseData> dustDevSnMap = new ConcurrentHashMap<String, DustNoiseData>(); private static Map<String, DustNoiseData> dustDevSnMap = new ConcurrentHashMap<String, DustNoiseData>();
public AsyncHikvision asyncHikvision; public AsyncHikvision asyncHikvision;
@ -402,26 +403,7 @@ public class HikvisionCall {
ability = eventDetail.getString("ability"); ability = eventDetail.getString("ability");
if (Objects.equals(ability, EVENT_VSS)) { if (Objects.equals(ability, EVENT_VSS)) {
log.info("AI识别告警=======" + paramsJo); log.info("AI识别告警=======" + paramsJo);
//摄像机名称 addAiAnalyseHardWareRecord(eventDetail, dataEvent.getString("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);
return null;
}
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, srcIndex, dev);
} else if (Objects.equals(ability, EVENT_IAS)) { } else if (Objects.equals(ability, EVENT_IAS)) {
log.info("临边防护告警=======" + paramsJo); log.info("临边防护告警=======" + paramsJo);
String srcName = eventDetail.getString("srcName"); String srcName = eventDetail.getString("srcName");
@ -505,10 +487,52 @@ public class HikvisionCall {
} }
} else if (Objects.equals(ability1, EVENT_IAS)) { } else if (Objects.equals(ability1, EVENT_IAS)) {
addFrontierProtectionNoNetData(jsonObject); 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(); 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数据 * 异步添加ai数据
* *
* @param dataEvent
* @param srcName * @param srcName
* @param eventType * @param eventType
* @param imageUrl * @param imageUrl
* @param deviceId * @param deviceId
* @param dev * @param dev
* @param happenTime
*/ */
@Async("saveEventCallbackAiAsync") @Async("saveEventCallbackAiAsync")
public void saveEventCallbackAiAsync(JSONObject dataEvent, String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev) { public void saveEventCallbackAiAsync(String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev, String happenTime) {
String happenTime = dataEvent.getString("happenTime");
String createTime = DateUtil.formatDateTime(DateUtil.parse(happenTime)); String createTime = DateUtil.formatDateTime(DateUtil.parse(happenTime));
Integer count = aiAnalyseHardWareAlarmRecordMapper.selectCount(new LambdaQueryWrapper<AiAnalyseHardWareAlarmRecord>() Integer count = aiAnalyseHardWareAlarmRecordMapper.selectCount(new LambdaQueryWrapper<AiAnalyseHardWareAlarmRecord>()
.eq(AiAnalyseHardWareAlarmRecord::getCreateTime, createTime) .eq(AiAnalyseHardWareAlarmRecord::getCreateTime, createTime)