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.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.CloudSendData; import com.fzzy.gateway.hx2023.data.SyncReqData; import com.fzzy.mqtt.MqttProviderConfig; import lombok.extern.slf4j.Slf4j; 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()); } } }