2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-07-27 8dcbf0608171abce431df0356f11efbbc6c2de40
充电桩故障存储
已修改6个文件
已添加1个文件
177 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/C3mReportErrorMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/C3mReportErrorMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java
@@ -24,7 +24,7 @@
    /**
     * è®¾å¤‡ç 
     */
    private String deviceCode;
    private String c3Mac;
    /**
     * æ•…障码
dao/src/main/java/com/sandu/ximon/dao/mapper/C3mReportErrorMapper.java
@@ -2,6 +2,7 @@
import com.sandu.ximon.dao.domain.C3mReportError;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Administrator
@@ -9,6 +10,7 @@
* @createDate 2022-07-27 14:27:33
* @Entity com.sandu.ximon.dao.domain.C3mReportError
*/
@Mapper
public interface C3mReportErrorMapper extends BaseMapper<C3mReportError> {
}
dao/src/main/resources/mapper/C3mReportErrorMapper.xml
@@ -6,15 +6,11 @@
    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.C3mReportError">
            <id property="c3mErrorId" column="c3m_error_id" jdbcType="BIGINT"/>
            <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
            <result property="c3Mac" column="c3_mac" jdbcType="VARCHAR"/>
            <result property="errorCode" column="error_code" jdbcType="INTEGER"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
            <result property="errorMsg" column="error_msg" jdbcType="VARCHAR"/>
    </resultMap>
    <sql id="Base_Column_List">
        c3m_error_id,device_code,error_code,
        create_time,update_time,error_msg
    </sql>
</mapper>
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
@@ -9,10 +9,7 @@
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3mRedisConstant;
import com.sandu.ximon.admin.service.C3ChargingService;
import com.sandu.ximon.admin.service.C3mOrderService;
import com.sandu.ximon.admin.service.PoleBindingService;
import com.sandu.ximon.admin.service.PoleService;
import com.sandu.ximon.admin.service.*;
import com.sandu.ximon.admin.utils.LogUtils;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.dao.domain.C3mCharging;
@@ -133,6 +130,14 @@
            A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
            log.info("C3充电桩上报处理_errorCodeRequestFrame");
            log.info(errorCodeRequestFrame.toString());
            /**
             * ä¿å­˜C3充电桩故障数据
             */
            if (errorCodeRequestFrame.isValidate() && (errorCodeRequestFrame.getErrorCode() != 0)) {
                SpringContextHolder.getBean(C3mReportErrorService.class).saveReportError(errorCodeRequestFrame);
            }
        } else if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) {
            log.info("心跳响应——C3充电桩开始充电");
            A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(frame.getPayload());
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
@@ -1,5 +1,6 @@
package com.sandu.ximon.admin.manager.iot.frame.inner.report;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
@@ -7,10 +8,7 @@
import lombok.ToString;
/**
 * @author chenjiantian
 * @date 2021/12/6 14:46
 * A5-81-42
 * å•灯上报ampq æ•…障码
 * C3充电桩故障上报帧
 */
@Data
@ToString(callSuper = true)
@@ -23,7 +21,7 @@
    /**
     * æ•…障码
     */
    private String errorCode;
    private int errorCode;
    @Override
    public A5C3ErrorCodeReportInnerFrame transformFrame(String hex) {
@@ -39,10 +37,13 @@
        setDestinationAddress(hex.substring(8, 16));
        setErrorCode(hex.substring(16, hex.length() - 8));
        //故障码
        String errorCodeHex = hex.substring(16, hex.length() - 8);
        errorCode = HexUtil.hexToInt(errorCodeHex);
        setCrc32(hex.substring(hex.length() - 8));
        //  æ ¡éªŒCRC32
        String frame = getFunctionCode() + getPayloadLength() + getDestinationAddress() + getErrorCode();
        String frame = getFunctionCode() + getPayloadLength() + getDestinationAddress() + errorCodeHex;
        this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
        return this;
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package com.sandu.ximon.admin.manager.iot.rrpc.enums;
/**
 * @author ZZQ
 * å……电桩错误上报码
 * "故障码:(用二进制表示)
 * 0x00000000,二进制即为[bit31:bit0]
 * å¯¹åº”æ•…éšœbit位置1,正常置0"
 * bit31    bit30    bit29    bit28    bit27    bit26    bit25    bit24    bit23    bit22    bit21    bit20    bit19    bit18    bit17    bit16    bit15    bit14    bit13    bit12    bit11    bit10    bit9    bit8    bit7    bit6    bit5    bit4    bit3    bit2    bit1    bit0
 * ï¼ˆå…·ä½“错误内容参考通讯协议文档)
 */
public enum C3ErrorEnum {
    /**
     * é€šä¿¡æµç¨‹è¶…æ—¶
     */
    IO_OVER_TIME(1, "通信流程超时"),
    /**
     * æ— ç”µåŽ‹
     */
    NO_VOL(2, "无电压"),
    /**
     * æ— ç”µæµ
     */
    NO_CUR(4, "无电流"),
    /**
     * æ— åŠŸçŽ‡
     */
    NO_POWER(8, "无功率"),
    /**
     * å……电功率过小
     */
    LOWER_POWER(16, "充电功率过小"),
    /**
     * æ¼ç”µ
     */
    OUTPUT_ELE_LEAKAGE(32, "漏电"),
    /**
     * è®¾å¤‡æ¸©åº¦è¿‡é«˜
     */
    DEVICE_TEMPERATURE_HIGHER(64, "设备温度过高"),
    /**
     * è®¾å¤‡æ¸©åº¦è¿‡ä½Ž
     */
    DEVICE_TEMPERATURE_LOW(128, "设备温度过低"),
    /**
     * å……电超时
     */
    CHARING_OVER_TIME(256, "充电超时"),
    /**
     * æ— ç½‘络
     */
    NO_NETWORK(512, "无网络"),
    /**
     * è¿žæŽ¥ä¸»æœºè¶…æ—¶
     */
    CONNECT_HOST_OVER_TIMED(1024, "连接主机超时"),
    /**
     * è¿žæŽ¥æœåŠ¡å™¨è¶…æ—¶
     */
    CONNECT_SERVICE_OVER_TIMED(2048, "连接服务器超时"),
    /**
     * è§¦æ‘¸å±æ— å“åº”
     */
    LED_ERROR(4096, "触摸屏无响应"),
    /**
     * å†™å…¥Flash失败
     */
    INPUT_FLASH_ERROR(8192, "写入Flash失败"),
    /**
     * å†™å…¥EEProm失败
     */
    INPUT_EEPROM_ERROR(16384, "写入EEProm失败"),
    /**
     * ç”µåŽ‹è¿‡ä½Ž
     */
    LOWER_VOL(32768, "电压过低"),
    /**
     * ç”µåŽ‹è¿‡é«˜
     */
    OVER_VOL(65536, "电压过高"),
    /**
     * åœ°é”æ•…障(不能锁上)
     */
    LOCK_ERROR(131072, "地锁故障(不能锁上)"),
    /**
     * åœ°é”æ•…障(不能解锁)
     */
    UNLOCK_ERROR(262144, "地锁故障(不能解锁)"),
    /**
     * å……电口1故障
     */
    Charging_port_error(524288, "充电口1故障"),
    /**
     * å……电口1不能连接车机
     */
    CONNECT_DEVICE_ERROR(2097152, "充电口1不能连接车机"),
    ;
    private final Integer code;
    private final String message;
    C3ErrorEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
    public Integer getCode() {
        return code;
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java
@@ -1,8 +1,11 @@
package com.sandu.ximon.admin.service;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3ErrorCodeReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ErrorEnum;
import com.sandu.ximon.dao.domain.C3mReportError;
import com.sandu.ximon.dao.mapper.C3mReportErrorMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
@@ -10,7 +13,28 @@
 * @date 2022/7/27
 */
@Service
@AllArgsConstructor
public class C3mReportErrorService extends BaseServiceImpl<C3mReportErrorMapper, C3mReportError> {
    /**
     * ä¿å­˜å……电桩故障信息
     *
     * @param codeRespInnerFrame
     */
    public void saveReportError(A5C3ErrorCodeReportInnerFrame codeRespInnerFrame) {
        C3mReportError c3MReportError = new C3mReportError();
        c3MReportError.setC3Mac(codeRespInnerFrame.getDestinationAddress());
        c3MReportError.setErrorCode(codeRespInnerFrame.getErrorCode());
        StringBuilder sb = new StringBuilder();
        Integer errorCode = codeRespInnerFrame.getErrorCode();
        C3ErrorEnum[] values = C3ErrorEnum.values();
        for (C3ErrorEnum value : values) {
            if ((value.getCode() & errorCode) > 0) {
                sb.append(value.getMessage());
            }
        }
        c3MReportError.setErrorMsg(sb.toString());
        save(c3MReportError);
    }
}