2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-06-29 23fd3f969d2e35c40742b6cd69a24ddf0195732a
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
@@ -6,7 +6,9 @@
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.config.C3mRedisConfig;
import com.sandu.ximon.admin.dto.ChargingDto;
import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3OperationReportInnerFrame;
@@ -26,18 +28,19 @@
import com.sandu.ximon.dao.bo.C3ChargingBo;
import com.sandu.ximon.dao.domain.C3mCharging;
import com.sandu.ximon.dao.domain.C3mChargingCharge;
import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.domain.C3mOrder;
import com.sandu.ximon.dao.domain.PoleBinding;
import com.sandu.ximon.dao.enums.OrderStatus;
import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.mapper.C3mChargingMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.*;
/**
 * @author ZZQ
@@ -209,24 +212,46 @@
    }
    /**
     * 查询充电桩
     * 获取充电桩详情
     *
     * @return
     */
    public C3mCharging getByC3Mac(String udid) {
        C3mCharging one = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, udid));
        String s = RedisUtils.getBean().get(C3mRedisConstant.C3_STATUS.getCode() + one.getC3Mac());
        if (s != null) {
            try {
                A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = JSON.parseObject(s, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage.class);
                one.setStatusBit((Integer.valueOf(beatDataPackage.getStatusBit())));
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            one.setStatusBit(0);
    public ChargingDto getChargingInfo(String poleId) {
        if (poleId == null) {
            throw new BusinessException("灯杆ID不能为空!");
        }
        return one;
        Pole pole = SpringContextHolder.getBean(PoleService.class).
                getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, poleId));
        if (pole == null) {
            throw new BusinessException("充电桩绑定的灯杆不存在!");
        }
        C3mCharging one = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getPoleDevicesCode, pole.getDeviceCode()));
        ChargingDto chargingDto = new ChargingDto();
        if (one == null) {
            throw new BusinessException("充电桩信息不存在!");
        }
        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = ReadTheHeartbeatPackage(one.getC3Mac());
        if (beatDataPackage != null) {
            //充电桩ID
            chargingDto.setC3Id(one.getC3Id());
            //C3Mac
            chargingDto.setC3Mac(one.getC3Mac());
            //在线状态
            chargingDto.setStatusBit(Integer.valueOf(beatDataPackage.getStatusBit()));
            //电压
            chargingDto.setGridVoltage(beatDataPackage.getGridVoltage());
            //电流
            chargingDto.setGridCurrent(beatDataPackage.getGridCurrent());
            //温度
            chargingDto.setDeviceTemperature(beatDataPackage.getDeviceTemperature());
            //灯杆ID
            chargingDto.setPoleId(pole.getId());
        }
        return chargingDto;
    }
    /**
@@ -323,7 +348,9 @@
     *
     * @param c3Mac
     */
    @Transactional(rollbackFor = Exception.class)
    public String finishCharging(String c3Mac) {
        C3FinishChargingReqInnerFrame c3FinishChargingReqInnerFrame =
                new C3FinishChargingReqInnerFrame(c3Mac);
@@ -340,6 +367,23 @@
        A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
        //结束充电 更改订单状态
        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);
        }
        if (operationReportInnerFrame.isValidate()) {
            return operationReportInnerFrame.getState();
        } else {