2021与蓝度共同重构项目,服务端
liuhaonan
2022-06-30 ae2e17d478f444a5c9c054dc13b83a0dbdd750bd
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
@@ -3,7 +3,6 @@
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;
@@ -27,6 +26,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -81,6 +81,12 @@
            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) {
@@ -121,6 +127,7 @@
                return;
            }
//            refund(aPackage);
            orderProcess(aPackage.getC3Mac());
        } else if (C3ChargingEnum.CHARGE_STOP.getCode().equals(functionCode)) {
            A5C3CommonReportInnerFrame stopRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload());
@@ -137,11 +144,8 @@
            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);
        } else if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) {
            log.info("心跳响应——C3充电桩开始充电");
@@ -219,4 +223,30 @@
    }
    /**
     * 订单处理
     *
     * @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);
        }
    }
}