From a1834ae92b92a7da87e2a4d160969e8515affd19 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 17 Feb 2025 22:50:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(smartcam):=20=E5=A2=9E=E5=8A=A0=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E6=A3=80=E6=B5=8B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在处理 operator 为 "heartbeat" 的情况下,返回心跳应答数据 - 实现 getHeartbeatAck 方法生成心跳应答的 JSON 数据 - 设置心跳间隔为 300 秒 - 更新时间戳和事件 ID 以匹配请求数据 --- ...SmartCamCarLicenseSnapshotDataService.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/main/java/cn/lihongjie/coal/smartCamCarLicenseSnapshotData/service/SmartCamCarLicenseSnapshotDataService.java b/src/main/java/cn/lihongjie/coal/smartCamCarLicenseSnapshotData/service/SmartCamCarLicenseSnapshotDataService.java index acad3458..2bd61c68 100644 --- a/src/main/java/cn/lihongjie/coal/smartCamCarLicenseSnapshotData/service/SmartCamCarLicenseSnapshotDataService.java +++ b/src/main/java/cn/lihongjie/coal/smartCamCarLicenseSnapshotData/service/SmartCamCarLicenseSnapshotDataService.java @@ -112,6 +112,15 @@ public class SmartCamCarLicenseSnapshotDataService // Operator entity.setOperator(rootNode.path("operator").asText()); + + if (StringUtils.equalsIgnoreCase(entity.getOperator(), "heartbeat")){ + + + + + return getHeartbeatAck(rootNode); + } + // Device Info JsonNode deviceInfoNode = rootNode.path("deviceInfo"); entity.setSerialNumber(deviceInfoNode.path("serialNumber").asText()); @@ -262,6 +271,72 @@ public class SmartCamCarLicenseSnapshotDataService return objectNode; } + @SneakyThrows + private ObjectNode getHeartbeatAck(JsonNode rootNode) { + + /** + * { "operator": "heartbeat-Ack", "info": { "eventId":1, "time":"20200331T101002+08", + * "heartbeatInterval":1, "eventSendMode":"realTime", "strategy": { + * "passengerStaticsInterval": 2, "heartBeatInterval": 30, "isEnableElectronicDefence": + * true, "isCrossBorderDetectEnable": true, "isOffDutyDetectEnable": true, + * "isPassengerFlowStaticsEnable": true, "isCryScreamDetectEnable": true, + * "isPetDetectEnable": true, "isFallDetectEnable": true, "isSnapshotEnable": true, + * "isPersonInfoEnable": true, "isPersonDetectEnable": true, "isCarLicenseSnapshotEnable": + * true, "isCarDetectEnable": true, "isMotionDetectEnable": true } }, "result": { "errorNo": + * 0, "description": "ok" } } + */ + ObjectNode jsonNode = (ObjectNode) objectMapper.readTree( + """ + { + "operator": "heartbeat-Ack", + "info": { + "eventId":1, + "time":"20200331T101002+08", + "heartbeatInterval":1, + "eventSendMode":"realTime", + "strategy": + { + "passengerStaticsInterval": 2, + "heartBeatInterval": 300, + "isEnableElectronicDefence": false, + "isCrossBorderDetectEnable": false, + "isOffDutyDetectEnable": false, + "isPassengerFlowStaticsEnable": false, + "isCryScreamDetectEnable": false, + "isPetDetectEnable": false, + "isFallDetectEnable": false, + "isSnapshotEnable": false, + "isPersonInfoEnable": false, + "isPersonDetectEnable": false, + "isCarLicenseSnapshotEnable": true, + "isCarDetectEnable": true, + "isMotionDetectEnable": false + } + }, + "result": { + "errorNo": 0, + "description": "ok" + } + } + """); + + ((ObjectNode) jsonNode.get("info")) + .put("eventId", rootNode.get("info").get("eventId").asInt()); + + ((ObjectNode) jsonNode.get("info")) + .put("time", rootNode.get("info").get("time").asInt()); + + ((ObjectNode) jsonNode.get("info")) + .put("heartbeatInterval", 300); + + + + + jsonNode.put("operator", "heartbeat-Ack"); + + return jsonNode; + } + private @NotNull ObjectNode getAck(int infoEventId) { ObjectNode objectNode = objectMapper.createObjectNode();