| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import com.sandu.ximon.admin.config.RedisConfig; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3CommonReportInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3ErrorCodeReportInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | |
| | | if (codeRequestFrame.isValidate()) { |
| | | if (deviceName != null) { |
| | | C3mCharging c3mCharging = SpringContextHolder.getBean(C3ChargingService.class). |
| | | getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, codeRequestFrame.getDestinationAddress()).last("limit 1")); |
| | | if(c3mCharging == null){ |
| | | SpringContextHolder.getBean(C3ChargingService.class).saveReporEquipment(deviceName, codeRequestFrame.getMcuUdid(), codeRequestFrame.getDestinationAddress()); |
| | | } |
| | | |
| | | //设置二维码 |
| | | Pole pole = SpringContextHolder.getBean(PoleService.class).getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, deviceName)); |
| | | if (pole != null) { |
| | |
| | | LogUtils.error("{ 充电桩(" + completeRequestFrame.getDestinationAddress() + ")充电结束上报读取心跳包失败,请检查充电桩是否出现故障! }"); |
| | | return; |
| | | } |
| | | refund(aPackage); |
| | | // refund(aPackage); |
| | | orderProcess(aPackage.getC3Mac()); |
| | | |
| | | } else if (C3ChargingEnum.CHARGE_STOP.getCode().equals(functionCode)) { |
| | | A5C3CommonReportInnerFrame stopRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); |
| | |
| | | LogUtils.error("{ 充电桩(" + stopRequestFrame.getDestinationAddress() + ")充电结束上报读取心跳包失败,请检查充电桩是否出现故障! }"); |
| | | return; |
| | | } |
| | | refund(aPackage); |
| | | // refund(aPackage); |
| | | |
| | | } else if (C3ChargingEnum.ERROR_CODE.getCode().equals(functionCode)) { |
| | | A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload()); |
| | | log.info("C3充电桩上报处理_errorCodeRequestFrame"); |
| | | log.info(errorCodeRequestFrame.toString()); |
| | | A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage = c3ChargingService.ReadTheHeartbeatPackage(errorCodeRequestFrame.getDestinationAddress()); |
| | | if (aPackage == null) { |
| | | LogUtils.error("{ 充电桩(" + errorCodeRequestFrame.getDestinationAddress() + ")充电结束上报读取心跳包失败,请检查充电桩是否出现故障! }"); |
| | | return; |
| | | } |
| | | refund(aPackage); |
| | | //充电结束 更新订单状态 |
| | | |
| | | // refund(aPackage); |
| | | } 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()); |
| | | // } |
| | | } |
| | | } |
| | | |
| | | private void refund(A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage aPackage) { |
| | | // private void refund(A5C3CommonReportInnerFrame completeRequestFrame,String code){ |
| | | /** |
| | | * 读取心跳包,判断剩余金额和已充电量,统计到缓存中正在进行的订单。 |
| | | */ |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 订单处理 |
| | | * |
| | | * @param c3Mac |
| | | */ |
| | | private void orderProcess(String c3Mac) { |
| | | |
| | | //结束充电 更改订单状态 |
| | | C3mOrder lastOrderByC3Mac = SpringContextHolder.getBean(C3mOrderService.class).getLastOrderByC3Mac(c3Mac); |
| | | if (lastOrderByC3Mac != null) { |
| | | //设置订单状态为已完成 |
| | | lastOrderByC3Mac.setOrderStatus(OrderStatus.COMPLETE.getStatus()); |
| | | |
| | | BigDecimal actualChargingCapacity = BigDecimal.valueOf(lastOrderByC3Mac.getActualChargingCapacity()); |
| | | BigDecimal actualChargingCapacityHide = BigDecimal.valueOf(lastOrderByC3Mac.getActualChargingCapacityHide()); |
| | | //设置实际充电电量 |
| | | lastOrderByC3Mac.setActualChargingCapacity(actualChargingCapacity.add(actualChargingCapacityHide).doubleValue()); |
| | | //设置订单结束时间 |
| | | lastOrderByC3Mac.setStopChargingTimestamp(System.currentTimeMillis()); |
| | | lastOrderByC3Mac.setActualChargingCapacity(0.00); |
| | | //设置订单状态为充电结束 |
| | | lastOrderByC3Mac.setChargingStates(1); |
| | | SpringContextHolder.getBean(C3mOrderService.class).updateById(lastOrderByC3Mac); |
| | | } |
| | | } |
| | | |
| | | } |