mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
feat(smartcam): 增加心跳检测功能
- 在处理 operator 为 "heartbeat" 的情况下,返回心跳应答数据 - 实现 getHeartbeatAck 方法生成心跳应答的 JSON 数据 - 设置心跳间隔为 300 秒 - 更新时间戳和事件 ID 以匹配请求数据
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user