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.A5C3CommonReportInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3OperationReportInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5C3ReportEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingReportEnum; import com.sandu.ximon.admin.service.C3ChargingService; import lombok.extern.slf4j.Slf4j; /** * @author ZZQ * @date 2022/3/11 16:24 */ @Slf4j public class c3ChargingProcessor implements IMessageProcessor { public c3ChargingProcessor() { } public static c3ChargingProcessor c3ChargingProcessorgetInstance() { return c3ChargingProcessor.C3ChargingProcessorHolder.INSTANCE; } private static class C3ChargingProcessorHolder { private static final c3ChargingProcessor INSTANCE = new c3ChargingProcessor(); } @Override public void process(String productKey, String deviceName, CommonFrame frame) { String functionCode = frame.getPayload().substring(2, 4); if (C3ChargingReportEnum.HeartBeat_Data.getCode().equals(functionCode)) { log.info("心跳相应——C3充电桩数据" + productKey + " ------- " + deviceName); A5C3HeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5C3HeartbeatReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3充电桩上报处理_heartbeatReportInnerFrame"); log.info(heartbeatReportInnerFrame.toString()); if (heartbeatReportInnerFrame.isValidate()) { SpringContextHolder.getBean(C3ChargingService.class).updateReportState(deviceName , heartbeatReportInnerFrame.getHeartBeatDataPackage().getC3Mac() , heartbeatReportInnerFrame.getHeartBeatDataPackage().getStatusBit() , heartbeatReportInnerFrame.getHeartBeatDataPackage().getDeviceTemperature()); } } else if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) { log.info("心跳响应——C3充电桩开始充电"); A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3充电桩上报处理_heartbeatReportInnerFrame"); log.info(operationReportInnerFrame.toString()); // if (operationReportInnerFrame.isValidate()) { // SpringContextHolder.getBean(C3ChargingService.class).saveReportData(deviceName, operationReportInnerFrame.getHeartBeatDataPackage()); // } } else if (A5C3ReportEnum.NETWORK_REQUEST.getCode().equals(functionCode)) { A5C3CommonReportInnerFrame netRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3充电桩上报处理_netRequestFrame"); log.info(netRequestFrame.toString()); if (netRequestFrame.isValidate()) { SpringContextHolder.getBean(C3ChargingService.class).saveReporEquipment(deviceName, netRequestFrame.getMcuUdid(), netRequestFrame.getDestinationAddress()); } } } }