| | |
| | | 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 com.fzzy.gateway.hx2023.data.SyncReqData; |
| | | import com.fzzy.mqtt.MqttProviderConfig; |
| | | import com.fzzy.mqtt.MqttPublishService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | |
| | | @Resource |
| | | private GatewayRemoteManager gatewayRemoteManager; |
| | | @Resource |
| | | private MqttPublishService publishService; |
| | | |
| | | |
| | | /** |
| | |
| | | * |
| | | * @param message |
| | | */ |
| | | public void onReceiveMessage(String message) { |
| | | public void onReceiveMessage(String topic, String message) { |
| | | |
| | | // 这里可以处理接收的数据 |
| | | log.info("----------------------------收到订阅内容---------------------------"); |
| | | log.info("-----TOPIC-----{}", topic); |
| | | log.info("-----Message-----{}", 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); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); |
| | | |
| | | SyncReqData syncReqData = new SyncReqData(); |
| | | 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 = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain2(syncReqData); |
| | | BaseResp resp; |
| | | if (GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())) { |
| | | resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(syncReqData); |
| | | } else { |
| | | syncReqData.setAutoReplay(false); |
| | | resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain(syncReqData); |
| | | } |
| | | |
| | | //自动推送 |
| | | if (200 == resp.getCode() && syncReqData.isAutoReplay()) { |
| | | String topic = ScConstant.TOPIC_REPORT; |
| | | |
| | | topic = topic.replace("${productId}", device.getProductId()).replace("${deviceId}", device.getDeviceId()); |
| | | |
| | | publishService.publishMsg(topic, resp.getData()); |
| | | |
| | | log.info("=======粮情推送==========={}", resp.getData()); |
| | | syncReqData.setData(resp.getData()); |
| | | gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(syncReqData); |
| | | } |
| | | } |
| | | } |