package com.fzzy.gateway.hx2023.service;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.fzzy.api.data.GatewayDeviceProtocol;
|
import com.fzzy.gateway.GatewayUtils;
|
import com.fzzy.gateway.api.GatewayRemoteManager;
|
import com.fzzy.gateway.data.BaseReqData;
|
import com.fzzy.gateway.data.BaseResp;
|
import com.fzzy.gateway.entity.GatewayDevice;
|
import com.fzzy.gateway.hx2023.ScConstant;
|
import com.fzzy.gateway.hx2023.data.CloudSendData;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
|
/**
|
* 根据接受到的MQTT信息执行
|
*/
|
@Slf4j
|
@Component
|
public class OnReceiveMqttService {
|
|
@Resource
|
private GatewayRemoteManager gatewayRemoteManager;
|
|
|
/**
|
* 当前接收到云端发送信息
|
*
|
* @param message
|
*/
|
public void onReceiveMessage(String topic, 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) {
|
log.error("--------执行异常-----{}", e);
|
}
|
|
}
|
|
private void getTAndRHInfo(CloudSendData cloudSendData) {
|
|
String deviceId = cloudSendData.getDeviceId();
|
|
GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
|
|
BaseReqData syncReqData = new BaseReqData();
|
syncReqData.setDeviceId(deviceId);
|
syncReqData.setProductId(device.getProductId());
|
syncReqData.setDeviceName(device.getDeviceName());
|
syncReqData.setMessageId(cloudSendData.getMessageId());
|
syncReqData.setMessageType(cloudSendData.getMessageType());
|
syncReqData.setFunctionId(cloudSendData.getFunctionId());
|
syncReqData.setAutoReplay(true);
|
syncReqData.setDevice(device);
|
|
|
BaseResp resp;
|
if (GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())) {
|
resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(syncReqData);
|
} else {
|
resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain(syncReqData);
|
}
|
|
//自动推送
|
if (200 == resp.getCode() && syncReqData.isAutoReplay()) {
|
syncReqData.setData(resp.getData());
|
gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(syncReqData);
|
}
|
}
|
}
|