2021与蓝度共同重构项目,服务端
C3
zhanzhiqin
2022-03-30 a688902be88d187bf6b8773be23780fca81d737d
C3
已修改8个文件
已删除2个文件
203 ■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/mapper/C3mChargingMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/C3mChargingMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/A5C3ReportEnum.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingEnum.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingReportEnum.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/C3ChargingParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/C3mChargingMapper.java
@@ -1,8 +1,11 @@
package com.sandu.ximon.dao.mapper;
import com.sandu.ximon.dao.bo.C3ChargingBo;
import com.sandu.ximon.dao.domain.C3mCharging;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @Entity com.sandu.ximon.dao.domain.C3mCharging
@@ -12,6 +15,10 @@
    C3mCharging  getAllByC3Mac(String c3Mac);
    List<C3ChargingBo> listC3mChargingDto(String keyword);
}
dao/src/main/resources/mapper/C3mChargingMapper.xml
@@ -26,4 +26,32 @@
        from c3m_charging
        where c3_mac = #{c3Mac}
    </select>
    <select id="listC3mChargingDto" resultType="com.sandu.ximon.dao.bo.C3ChargingBo">
        SELECT t1.*, t3.pole_code,
        t3.pole_name
        FROM c3m_charging t1
        LEFT JOIN pole_binding t2 ON t1.mcu_udid = t2.device_code
        AND t2.device_type = 8
        LEFT JOIN pole t3 ON t3.id = t2.pole_id
        <where>
            <if test="keyword != null and keyword != ''">
                AND (t1.c3_name LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR (t3.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')))
            </if>
        </where>
    </select>
</mapper>
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
@@ -24,8 +24,8 @@
    @GetMapping("/C3ChargingList")
    public ResponseVO<Object> C3ChargingList(BaseConditionVO baseConditionVO) {
        return ResponseUtil.successPage(c3ChargingService.getC3ChargingList(baseConditionVO));
    public ResponseVO<Object> C3ChargingList(BaseConditionVO baseConditionVO, @RequestBody(required = false) C3ChargingParam c3ChargingParam) {
        return ResponseUtil.successPage(c3ChargingService.getC3ChargingListByKeyword(baseConditionVO, c3ChargingParam));
    }
    /**
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
@@ -8,9 +8,8 @@
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.enums.C3ChargingEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils;
import lombok.extern.slf4j.Slf4j;
@@ -114,29 +113,29 @@
    private void c3ChargingReportAnalysis(String productKey, String deviceName, CommonFrame frame) {
        String functionCode = frame.getPayload().substring(2, 4);
        if (A5C3ReportEnum.NETWORK_REQUEST.getCode().equals(functionCode)) {
        if (C3ChargingEnum.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)) {
        } else if (C3ChargingEnum.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)) {
        } else if (C3ChargingEnum.HEART_BEAT.getCode().equals(functionCode)) {
            //心跳包
            c3ChargingProcessor.c3ChargingProcessorgetInstance().process(productKey, deviceName, frame);
        } else if (A5C3ReportEnum.CHARGE_COMPLETE.getCode().equals(functionCode)) {
        } else if (C3ChargingEnum.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)) {
        } else if (C3ChargingEnum.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)) {
        } else if (C3ChargingEnum.ERROR_CODE.getCode().equals(functionCode)) {
            A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
            log.info("C3充电桩上报处理_errorCodeRequestFrame");
            log.info(errorCodeRequestFrame.toString());
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
@@ -5,9 +5,7 @@
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;
@@ -32,7 +30,7 @@
    @Override
    public void process(String productKey, String deviceName, CommonFrame frame) {
        String functionCode = frame.getPayload().substring(2, 4);
        if (C3ChargingReportEnum.HeartBeat_Data.getCode().equals(functionCode)) {
        if (C3ChargingEnum.HEART_BEAT.getCode().equals(functionCode)) {
            log.info("心跳相应——C3充电桩数据" + productKey + "     -------       " + deviceName);
            A5C3HeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5C3HeartbeatReportInnerFrame().transformFrame(frame.getPayload());
            log.info("C3充电桩上报处理_heartbeatReportInnerFrame");
@@ -53,7 +51,7 @@
//            if (operationReportInnerFrame.isValidate()) {
//                SpringContextHolder.getBean(C3ChargingService.class).saveReportData(deviceName, operationReportInnerFrame.getHeartBeatDataPackage());
//            }
        } else if (A5C3ReportEnum.NETWORK_REQUEST.getCode().equals(functionCode)) {
        } else if (C3ChargingEnum.NETWORK_REQUEST.getCode().equals(functionCode)) {
            A5C3CommonReportInnerFrame netRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload());
            log.info("C3充电桩上报处理_netRequestFrame");
            log.info(netRequestFrame.toString());
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/A5C3ReportEnum.java
ÎļþÒÑɾ³ý
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingEnum.java
@@ -43,7 +43,33 @@
    //恢复出厂值
    RestoreFactoryValue("29"),
    //软重启
    RestartCharging("2B");
    RestartCharging("2B"),
    //以下为主动上报
    /**
     * ç½‘络请求
     */
    NETWORK_REQUEST("40"),
    /**
     * äºŒç»´ç è¯·æ±‚
     */
    QR_CODE_REQUEST("41"),
    /**
     * ä¸ŠæŠ¥å¿ƒè·³åŒ…
     */
    HEART_BEAT("42"),
    /**
     * ä¸ŠæŠ¥å……电结束
     */
    CHARGE_COMPLETE("43"),
    /**
     * ä¸ŠæŠ¥å……电中断
     */
    CHARGE_STOP("44"),
    /**
     * ä¸ŠæŠ¥æ•…障码
     */
    ERROR_CODE("45");
    private String code;
@@ -54,4 +80,4 @@
    C3ChargingEnum(String code) {
        this.code = code;
    }
}
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingReportEnum.java
ÎļþÒÑɾ³ý
ximon-admin/src/main/java/com/sandu/ximon/admin/param/C3ChargingParam.java
@@ -43,4 +43,7 @@
    private int min;
    //秒
    private int sec;
    //C3充电桩表查询关键字
    private String keyword;
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
@@ -5,6 +5,7 @@
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.dao.bo.C3ChargingBo;
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;
@@ -15,10 +16,7 @@
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.param.C3ChargingAddParam;
import com.sandu.ximon.admin.param.C3ChargingParam;
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.PoleBinding;
import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.mapper.C3mChargingMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +33,7 @@
@Slf4j
@AllArgsConstructor
public class C3ChargingService extends BaseServiceImpl<C3mChargingMapper, C3mCharging> {
    private C3mChargingMapper c3mChargingMapper;
    private final C3mChargingChargeService c3mChargingChargeService;
    private final PoleBindingService bindingService;
    private final PoleService poleService;
@@ -106,9 +104,20 @@
     *
     * @return
     */
    public List<C3mCharging> getC3ChargingList(BaseConditionVO baseConditionVO) {
    public List<C3ChargingBo> getC3ChargingListByKeyword(BaseConditionVO baseConditionVO, C3ChargingParam c3ChargingParam) {
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        return list();
        if(c3ChargingParam == null){
            c3ChargingParam = new C3ChargingParam();
        }
        //关键字去除空格
        if (c3ChargingParam.getKeyword() != null) {
            c3ChargingParam.setKeyword(c3ChargingParam.getKeyword().trim());
        }
        List<C3ChargingBo> c3ChargingBoList
                = c3mChargingMapper.listC3mChargingDto(c3ChargingParam.getKeyword());
        return c3ChargingBoList;
    }
    /**
@@ -454,22 +463,34 @@
            throw new BusinessException("地址信息错误!");
        }
        C3mCharging c3mCharging = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, c3Mac));
        if (c3mCharging == null) {
            throw new BusinessException("C3MAC地址不存在");
        }
        if (getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, address)) != null) {
            throw new BusinessException("新的地址信息已存在!");
        }
        C3SetAddressReqInnerFrame setAddressReqInnerFrame =
                new C3SetAddressReqInnerFrame(c3Mac, address);
        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), setAddressReqInnerFrame);
        System.out.println(a5Frame + "            -----a5Frame");
        C3mCharging c3mCharging = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, c3Mac));
        if (c3mCharging == null) {
            throw new BusinessException("C3充电桩硬件mcu_udid不存在");
        }
        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(c3mCharging.getPoleDevicesCode(), a5Frame);
        System.out.println(commonFrame + "            -----commonFrame");
        A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
        if (operationReportInnerFrame.isValidate()) {
            if ("操作成功".equals(operationReportInnerFrame.getState())) {
                //修改成功需要更改数据库数据
                C3mCharging one = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, c3Mac));
                one.setC3Mac(address);
                updateById(one);
            }
            return operationReportInnerFrame.getState();
        } else {
            throw new BusinessException("数据校验错误,请重新请求");