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();