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);
|
}
|
}
|