package com.fzzy.gateway.hx2023.service; import com.alibaba.fastjson2.JSONObject; import com.fzzy.api.data.GatewayProtocol; import com.fzzy.api.data.PushProtocol; import com.fzzy.gateway.api.DeviceReportService; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.KafaGrainData; import com.fzzy.gateway.hx2023.data.WebSocketPacket; import com.fzzy.gateway.hx2023.data.WebSocketPacketHeader; import com.fzzy.gateway.hx2023.data.WeightInfo; import com.fzzy.gateway.hx2023.kafka.KafkaDeviceReport; import com.fzzy.gateway.hx2023.websocket.WebSocketDeviceReport; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Slf4j @Component public class DeviceReportServiceImpl implements DeviceReportService { @Resource private WebSocketDeviceReport webSocketDeviceReport; @Resource private KafkaDeviceReport kafkaDeviceReport; @Override public String getProvinceProtocol() { return PushProtocol.GATEWAY_SC_2023.getCode(); } @Override public String report2GatewayBySn(double weigh, GatewayDevice device) { if (null == device) { log.error("-----------没有获取到设备配置信息-----"); return "ERROR:没有获取到设备配置信息"; } //使用WEBSOCKET返回 if (GatewayProtocol.GATE_WEBSOCKET.equals(device.getPushProtocol())) { WebSocketPacket packet = new WebSocketPacket(); //productId的值在webSocket执行发送方法中补充 WebSocketPacketHeader header = new WebSocketPacketHeader(); header.setDeviceName(device.getDeviceName()); packet.setHeaders(header); packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); packet.setDeviceId(device.getDeviceId()); //设置信息主体 WeightInfo weightInfo = new WeightInfo(); weightInfo.setGrossWeight(weigh); weightInfo.setNetWeight(weigh); weightInfo.setNetWeight(weigh); JSONObject jsonObject = new JSONObject(); jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); packet.setProperties(jsonObject); packet.setTimestamp(System.currentTimeMillis()); webSocketDeviceReport.sendByPacket(packet); } if (GatewayProtocol.GATE_MQTT.equals(device.getPushProtocol())) { //TODO ---->>>后期添加支持 } return null; } @Override public String pushGrainData2Cloud(KafaGrainData data) { return kafkaDeviceReport.sendGrainData2Cloud(data); } }