@ -2,7 +2,10 @@ package cn.iocoder.yudao.module.mqtt.processor;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils ;
import cn.iocoder.yudao.module.hand.service.HandDetectorService ;
import cn.iocoder.yudao.module.hand.service.TdengineService ;
import cn.iocoder.yudao.module.hand.vo.AlarmDispatchEvent ;
import cn.iocoder.yudao.module.hand.vo.AlarmMessageLog ;
import cn.iocoder.yudao.module.mqtt.config.TdengineBatchConfig ;
import cn.iocoder.yudao.module.mqtt.mqtt.Client ;
import com.fasterxml.jackson.core.JsonProcessingException ;
import com.google.common.util.concurrent.RateLimiter ;
@ -11,18 +14,22 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.stereotype.Component ;
import java.util.ArrayList ;
import java.util.Date ;
import java.util.List ;
import java.util.Map ;
@Slf4j
@Component
public class HandAlarmMessageProcess {
private final RateLimiter mqttRateLimiter = RateLimiter . create ( 3000 . 0 ) ;
@Resource
private Client mqttClient ;
@Resource
private HandDetectorService handDetectorService ;
private final RateLimiter mqttRateLimiter = RateLimiter . create ( 3000 . 0 ) ;
@Resource
private TdengineService tdengineService ;
public void processSingle ( String jsonValue ) {
// 1. 解析 Kafka 消息
@ -47,6 +54,21 @@ public class HandAlarmMessageProcess {
// 3. 执行推送逻辑
this . publishAlarmToMqtt ( targetSns , event . getMsgContent ( ) ) ;
// 记录报警消息日志
AlarmMessageLog alarmMessageLog = new AlarmMessageLog ( ) ;
alarmMessageLog . setDetectorId ( event . getId ( ) ) ;
alarmMessageLog . setHolderName ( event . getUserName ( ) ) ;
alarmMessageLog . setSn ( event . getSourceSn ( ) ) ;
alarmMessageLog . setDeptId ( event . getDeptId ( ) ) ;
alarmMessageLog . setTenantId ( event . getTenantId ( ) ) ;
alarmMessageLog . setMessage ( event . getMsgContent ( ) ) ;
alarmMessageLog . setRemark ( "系统自动触发报警推送" ) ;
alarmMessageLog . setPushSnList ( StringUtils . join ( targetSns , "," ) ) ;
ArrayList < AlarmMessageLog > objects = new ArrayList < > ( ) ;
objects . add ( alarmMessageLog ) ;
tdengineService . createAlarmRecord ( objects ) ;
} catch ( Exception e ) {
log . error ( "[报警推送] 处理异常 SourceSN: {}" , event . getSourceSn ( ) , e ) ;
}
@ -58,7 +80,7 @@ public class HandAlarmMessageProcess {
private void publishAlarmToMqtt ( List < String > targetSns , String message ) {
if ( message = = null ) {
return ;
}
}
// 构造 MQTT 消息体
Map < String , String > payload = Map . of ( "message" , message ) ;
String jsonPayload = JsonUtils . toJsonString ( payload ) ;