From 047f7834af741cc192e4d6d38807a7a4fc357aad Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Mon, 13 Oct 2025 17:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9A=84isc=E7=9A=84=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84ai=E9=A2=84=E8=AD=A6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=EF=BC=88event=5Faimms=E7=B1=BB=E5=9E=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 69 ++++++++++++------- 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index d67b84173..fefc255d4 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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 dustDevSnMap = new ConcurrentHashMap(); 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() - .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() + .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() .eq(AiAnalyseHardWareAlarmRecord::getCreateTime, createTime)