package com.sandu.ximon.admin.manager.iot.amqp.processor;
|
|
import com.sandu.common.util.SpringContextHolder;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereNewHeartbeatReportInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5AtmosphereReportEnum;
|
import com.sandu.ximon.admin.service.AirDataNongGengService;
|
import com.sandu.ximon.admin.service.AirDataService;
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* @author ZZQ
|
* @date 2021/12/14
|
* 大气数据上报处理
|
*/
|
@Slf4j
|
public class AirDataProcessor implements IMessageProcessor {
|
|
private AirDataProcessor() {
|
}
|
|
public static AirDataProcessor getInstance() {
|
return AirDataProcessorHolder.INSTANCE;
|
}
|
|
private static class AirDataProcessorHolder {
|
|
private static final AirDataProcessor INSTANCE = new AirDataProcessor();
|
}
|
|
@Override
|
public void process(String productKey, String deviceName, CommonFrame frame) {
|
String functionCode = frame.getPayload().substring(2, 4);
|
if (A5AtmosphereReportEnum.HeartBeat_Data.getCode().equals(functionCode)) {
|
log.info("心跳相应——大气数据");
|
A5AtmosphereHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5AtmosphereHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
|
if(heartbeatReportInnerFrame != null){
|
log.info(heartbeatReportInnerFrame.toString());
|
SpringContextHolder.getBean(AirDataService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
|
}
|
} else if (A5AtmosphereReportEnum.HeartBeat_Data_Nong_Geng.getCode().equals(functionCode)) {
|
log.info("心跳相应——大气数据(农耕)");
|
A5AtmosphereNewHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5AtmosphereNewHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
|
if (heartbeatReportInnerFrame != null && heartbeatReportInnerFrame.isValidate()) {
|
log.info(heartbeatReportInnerFrame.toString());
|
SpringContextHolder.getBean(AirDataNongGengService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
|
}else{
|
System.out.println("数据校验异常!");
|
}
|
|
|
}
|
}
|
}
|