feat(trajectory): 新增轨迹检测与 Beacon 注册表
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package com.viewsh.module.iot.core.integration.constants;
|
||||
|
||||
/**
|
||||
* 轨迹事件 Topic 常量
|
||||
* <p>
|
||||
* 定义 IoT → Ops 的轨迹事件 Topic
|
||||
*
|
||||
* @author lzh
|
||||
*/
|
||||
public interface TrajectoryTopics {
|
||||
|
||||
/**
|
||||
* 进入区域事件
|
||||
*/
|
||||
String TRAJECTORY_ENTER = "trajectory-enter";
|
||||
|
||||
/**
|
||||
* 离开区域事件
|
||||
*/
|
||||
String TRAJECTORY_LEAVE = "trajectory-leave";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.viewsh.module.iot.core.integration.event.trajectory;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 轨迹进入区域事件
|
||||
* <p>
|
||||
* 当工牌蓝牙信号满足强进条件确认进入某区域时发布
|
||||
* Topic: trajectory-enter
|
||||
*
|
||||
* @author lzh
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TrajectoryEnterEvent {
|
||||
|
||||
/**
|
||||
* 事件ID(唯一标识,用于幂等性处理)
|
||||
*/
|
||||
@Builder.Default
|
||||
private String eventId = UUID.randomUUID().toString();
|
||||
|
||||
/**
|
||||
* 设备ID(工牌)
|
||||
*/
|
||||
private Long deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 设备备注名称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 区域ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 匹配的 Beacon MAC 地址
|
||||
*/
|
||||
private String beaconMac;
|
||||
|
||||
/**
|
||||
* 进入时的 RSSI 值
|
||||
*/
|
||||
private Integer enterRssi;
|
||||
|
||||
/**
|
||||
* 事件时间(ISO-8601 字符串,跨模块序列化安全)
|
||||
*/
|
||||
@Builder.Default
|
||||
private String eventTime = LocalDateTime.now().toString();
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
private Long tenantId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.viewsh.module.iot.core.integration.event.trajectory;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 轨迹离开区域事件
|
||||
* <p>
|
||||
* 当工牌蓝牙信号满足弱出条件确认离开某区域时发布
|
||||
* Topic: trajectory-leave
|
||||
*
|
||||
* @author lzh
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TrajectoryLeaveEvent {
|
||||
|
||||
/**
|
||||
* 事件ID(唯一标识,用于幂等性处理)
|
||||
*/
|
||||
@Builder.Default
|
||||
private String eventId = UUID.randomUUID().toString();
|
||||
|
||||
/**
|
||||
* 设备ID(工牌)
|
||||
*/
|
||||
private Long deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 设备备注名称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 区域ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 匹配的 Beacon MAC 地址
|
||||
*/
|
||||
private String beaconMac;
|
||||
|
||||
/**
|
||||
* 离开原因
|
||||
* <p>
|
||||
* SIGNAL_LOSS - 信号丢失(弱出条件满足)
|
||||
* AREA_SWITCH - 切换到其他区域
|
||||
* DEVICE_OFFLINE - 设备离线
|
||||
*/
|
||||
private String leaveReason;
|
||||
|
||||
/**
|
||||
* 进入时间戳(毫秒),用于 Ops 端匹配记录
|
||||
*/
|
||||
private Long enterTimestamp;
|
||||
|
||||
/**
|
||||
* 事件时间(ISO-8601 字符串,跨模块序列化安全)
|
||||
*/
|
||||
@Builder.Default
|
||||
private String eventTime = LocalDateTime.now().toString();
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
private Long tenantId;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user