package com.fzzy.gateway.hx2023.service;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.fzzy.gateway.GatewayUtils;
|
import com.fzzy.gateway.api.GatewayRemoteManager;
|
import com.fzzy.gateway.hx2023.data.CloudSendData;
|
import com.fzzy.gateway.entity.GatewayDevice;
|
import com.fzzy.gateway.hx2023.ScConstant;
|
import com.fzzy.gateway.data.BaseResp;
|
import com.fzzy.gateway.hx2023.data.SyncReqData;
|
import com.fzzy.mqtt.MqttProviderConfig;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
|
/**
|
* 根据接受到的MQTT信息执行
|
*/
|
@Slf4j
|
@Component
|
public class OnReceiveMqttService {
|
|
@Resource
|
private GatewayRemoteManager gatewayRemoteManager;
|
@Resource
|
private MqttProviderConfig providerClient;
|
|
|
/**
|
* 当前接收到云端发送信息
|
*
|
* @param message
|
*/
|
public void onReceiveMessage(String message) {
|
|
try {
|
CloudSendData cloudSendData = JSONObject.parseObject(message, CloudSendData.class);
|
|
|
String functionId = cloudSendData.getFunctionId();
|
|
//粮情采集
|
if (ScConstant.FUNCTION_getTAndRHInfo.equals(functionId)) {
|
getTAndRHInfo(cloudSendData);
|
}
|
|
} catch (Exception e) {
|
|
}
|
|
}
|
|
private void getTAndRHInfo(CloudSendData cloudSendData) {
|
|
String deviceId = cloudSendData.getDeviceId();
|
|
GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
|
|
SyncReqData syncReqData = new SyncReqData();
|
syncReqData.setDeviceId(deviceId);
|
syncReqData.setMessageId(cloudSendData.getMessageId());
|
syncReqData.setMessageType(cloudSendData.getMessageType());
|
syncReqData.setFunctionId(cloudSendData.getFunctionId());
|
syncReqData.setAutoReplay(true);
|
syncReqData.setDevice(device);
|
|
BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain2(syncReqData);
|
|
//自动推送
|
if (200 == resp.getCode() && syncReqData.isAutoReplay()) {
|
String topic = "/${productId}/${deviceId}/properties/report";
|
|
topic = topic.replace("${productId}", device.getProductId()).replace("${deviceId}", device.getDeviceId());
|
|
providerClient.publish(topic, resp.getData());
|
|
log.info("=======粮情推送==========={}", resp.getData());
|
}
|
}
|
}
|