| | |
| | | package com.sandu.ximon.admin.manager.iot.amqp; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonReportMessage; |
| | | import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor; |
| | | import com.sandu.ximon.admin.manager.iot.amqp.processor.LightDataProcessor; |
| | | import com.sandu.ximon.admin.manager.iot.amqp.processor.PoleMonitorDataProcessor; |
| | | import com.sandu.ximon.admin.manager.iot.amqp.processor.c3ChargingProcessor; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.report.*; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonReportMessage; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5C3ReportEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5LightReportEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | |
| | | String topic = message.getStringProperty("topic"); |
| | | String messageId = message.getStringProperty("messageId"); |
| | | |
| | | // log.info("收到订阅" + topic + "," + messageId); |
| | | // log.info(content); |
| | | log.info("收到订阅" + topic + "," + messageId); |
| | | log.info(content); |
| | | |
| | | if (null != map.get("status")) { |
| | | // 上下线上报处理 |
| | |
| | | /** |
| | | * 处理任务 |
| | | * |
| | | * @param productKey 产品码 |
| | | * @param deviceName 产品名称 |
| | | * @param connectFrame 上报帧 |
| | | * @param productKey 产品码 |
| | | * @param deviceName 产品名称 |
| | | * @param frame 上报帧 |
| | | */ |
| | | private void processTask(String productKey, String deviceName, CommonFrame connectFrame) { |
| | | private void processTask(String productKey, String deviceName, CommonFrame frame) { |
| | | if (frame == null) { |
| | | return; |
| | | } |
| | | log.info("处理订阅"); |
| | | log.info(frame.toString()); |
| | | if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_LIGHT_DATA.getCode())) { |
| | | // 单灯数据上报处理 |
| | | LightDataProcessor.getInstance().process(productKey, deviceName, frame); |
| | | } else if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_C3_DATA.getCode())) { |
| | | // C3充电桩上报处理 |
| | | c3ChargingReportAnalysis(productKey, deviceName, frame); |
| | | } else if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_ATMOSPHERE_DATA.getCode())) { |
| | | // //测试用的 |
| | | // String s = "{\"connectType\":\"FE\",\"crc32\":\"8685DF1B\",\"functionCode\":\"A5\",\"orderType\":\"84\",\"payload\":\"F0010022FFFF0101010907640000000000000000419D000000360089000000000002019300008CA14C69\",\"payloadLength\":\"002A\",\"validate\":true}"; |
| | | // CommonFrame commonFrame1 = JSON.parseObject(s, CommonFrame.class); |
| | | // 大气数据指令上报 |
| | | AirDataProcessor.getInstance().process(productKey, deviceName, frame); |
| | | // atmosphereAnalysis(productKey, deviceName, frame); |
| | | } else if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_POLE_MONITOR_DATA.getCode())) { |
| | | PoleMonitorDataProcessor.getInstance().process(productKey, deviceName, frame); |
| | | } |
| | | } |
| | | |
| | | private void c3ChargingReportAnalysis(String productKey, String deviceName, CommonFrame frame) { |
| | | String functionCode = frame.getPayload().substring(2, 4); |
| | | if (A5C3ReportEnum.NETWORK_REQUEST.getCode().equals(functionCode)) { |
| | | // A5C3CommonReportInnerFrame netRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); |
| | | // log.info("C3充电桩上报处理_netRequestFrame"); |
| | | // log.info(netRequestFrame.toString()); |
| | | //网络请求 |
| | | c3ChargingProcessor.c3ChargingProcessorgetInstance().process(productKey, deviceName, frame); |
| | | |
| | | } else if (A5C3ReportEnum.QR_CODE_REQUEST.getCode().equals(functionCode)) { |
| | | A5C3CommonReportInnerFrame codeRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("C3充电桩上报处理_codeRequestFrame"); |
| | | log.info(codeRequestFrame.toString()); |
| | | } else if (A5C3ReportEnum.HEART_BEAT.getCode().equals(functionCode)) { |
| | | //心跳包 |
| | | c3ChargingProcessor.c3ChargingProcessorgetInstance().process(productKey, deviceName, frame); |
| | | } else if (A5C3ReportEnum.CHARGE_COMPLETE.getCode().equals(functionCode)) { |
| | | A5C3CommonReportInnerFrame completeRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("C3充电桩上报处理_completeRequestFrame"); |
| | | log.info(completeRequestFrame.toString()); |
| | | } else if (A5C3ReportEnum.CHARGE_STOP.getCode().equals(functionCode)) { |
| | | A5C3CommonReportInnerFrame stopRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("C3充电桩上报处理_stopRequestFrame"); |
| | | log.info(stopRequestFrame.toString()); |
| | | } else if (A5C3ReportEnum.ERROR_CODE.getCode().equals(functionCode)) { |
| | | A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("C3充电桩上报处理_errorCodeRequestFrame"); |
| | | log.info(errorCodeRequestFrame.toString()); |
| | | |
| | | } |
| | | } |
| | | |
| | | private void atmosphereAnalysis(String productKey, String deviceName, CommonFrame frame) { |
| | | A5AtmosphereHeartbeatReportInnerFrame transformFrame = new A5AtmosphereHeartbeatReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("大气心跳上报"); |
| | | log.info(transformFrame.toString()); |
| | | } |
| | | } |