From 423b61bfb18ceab430303bada28f93631f0e8392 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 12 八月 2022 16:05:17 +0800
Subject: [PATCH] 充电桩

---
 dao/src/main/resources/mapper/C3mReportErrorMapper.xml                                                            |    1 
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java                           |   42 +++++++-------
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/ErrorMsgService.java                                      |    1 
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java                              |   28 ++++----
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java |   52 ++++++++++++++++-
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java               |    4 +
 dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java                                                  |    5 -
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java                                |   12 ---
 8 files changed, 87 insertions(+), 58 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java b/dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java
index 9529bdc..c59e178 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/C3mReportError.java
@@ -28,11 +28,6 @@
     private String c3Mac;
 
     /**
-     * 鏁呴殰鐮�
-     */
-    private Integer errorCode;
-
-    /**
      * 鍒涘缓鏃堕棿
      */
     private LocalDateTime createTime;
diff --git a/dao/src/main/resources/mapper/C3mReportErrorMapper.xml b/dao/src/main/resources/mapper/C3mReportErrorMapper.xml
index 67b9abe..f0cdd84 100644
--- a/dao/src/main/resources/mapper/C3mReportErrorMapper.xml
+++ b/dao/src/main/resources/mapper/C3mReportErrorMapper.xml
@@ -7,7 +7,6 @@
     <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.C3mReportError">
         <id property="c3mErrorId" column="c3m_error_id" jdbcType="BIGINT"/>
         <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"/>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
index 998335c..9c4754f 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
@@ -42,20 +42,20 @@
         return ResponseUtil.success(c3ChargingService.getChargingInfo(poleId));
     }
 
-//    /**
-//     * 鍏呯數寮�鍚�
-//     */
-//    @AnonymousAccess
-//    @PostMapping("/startCharging")
-//    public ResponseVO<Object> startCharging(@RequestBody C3ChargingParam c3ChargingParam) {
-//        String result = c3ChargingService.startCharging(c3ChargingParam.getC3Mac(), c3ChargingParam.getChargingCapacity(), c3ChargingParam.getChargeAmount());
-//        if ("鎿嶄綔鎴愬姛".equals(result)) {
-//            return ResponseUtil.success(result);
-//        } else {
-//            return ResponseUtil.fail(result);
-//        }
-//
-//    }
+    /**
+     * 鍏呯數寮�鍚�
+     */
+    @AnonymousAccess
+    @PostMapping("/startCharging")
+    public ResponseVO<Object> startCharging(@RequestBody C3ChargingParam c3ChargingParam) {
+        String result = c3ChargingService.startCharging(c3ChargingParam.getC3Mac(), c3ChargingParam.getChargingCapacity(), c3ChargingParam.getChargeAmount());
+        if ("鎿嶄綔鎴愬姛".equals(result)) {
+            return ResponseUtil.success(result);
+        } else {
+            return ResponseUtil.fail(result);
+        }
+
+    }
 
     /**
      * 鍏呯數缁撴潫鈥斺�斿皬绋嬪簭鐢ㄦ埛缁撴潫锛屼笉闇�瑕乼oken锛岄渶瑕乷penId
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
index 403cd41..3d6c011 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/c3ChargingProcessor.java
@@ -134,8 +134,10 @@
             /**
              * 淇濆瓨C3鍏呯數妗╂晠闅滄暟鎹�
              */
-            if (errorCodeRequestFrame.isValidate() && (errorCodeRequestFrame.getErrorCode() != 0)) {
+            if (errorCodeRequestFrame.isValidate() && errorCodeRequestFrame.getErrorMessage() != null) {
                 SpringContextHolder.getBean(C3mReportErrorService.class).saveReportError(errorCodeRequestFrame);
+            } else {
+                System.out.println("鏁版嵁鏍¢獙寮傚父锛�");
             }
 
         } else if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) {
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
index 0ed6a5d..1b26226 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
@@ -3,7 +3,9 @@
 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.enums.C3ErrorEnum;
 import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import com.sandu.ximon.admin.utils.StringUtil;
 import lombok.Data;
 import lombok.ToString;
 
@@ -21,10 +23,11 @@
     /**
      * 鏁呴殰鐮�
      */
-    private int errorCode;
+    private String errorMessage;
 
     @Override
     public A5C3ErrorCodeReportInnerFrame transformFrame(String hex) {
+        //F04500080000048E0000001CA2D92F64
         if (StrUtil.isBlank(hex)) {
             return null;
         }
@@ -37,14 +40,55 @@
 
         setDestinationAddress(hex.substring(8, 16));
 
-        //鏁呴殰鐮�
+        //鏁呴殰淇℃伅
         String errorCodeHex = hex.substring(16, hex.length() - 8);
-        errorCode = HexUtil.hexToInt(errorCodeHex);
+        String errorInfo = errorInfo(errorCodeHex);
+        if (!StringUtil.strIsNullOrEmpty(errorInfo)) {
+            setErrorMessage(errorInfo);
+        }
 
         setCrc32(hex.substring(hex.length() - 8));
         //  鏍¢獙CRC32
-        String frame = getFunctionCode() + getPayloadLength() + getDestinationAddress() + errorCodeHex;
+        String frame = hex.substring(2,hex.length()-8);
         this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
         return this;
     }
+
+    /**
+     * 鏀堕泦鏁呴殰淇℃伅
+     *
+     * @param hexStr
+     * @return
+     */
+    public String errorInfo(String hexStr) {
+        String errorMsg = "";
+        String str = hexStr2BinStr(hexStr);
+
+        int index = str.indexOf("1");
+        while ((index = str.indexOf("1", index)) > 0) {
+            C3ErrorEnum[] values = C3ErrorEnum.values();
+            for (C3ErrorEnum value : values) {
+                if (value.getCode() == index) {
+                    errorMsg = errorMsg + value.getMessage() + ";";
+                }
+            }
+            index = index + 1;
+        }
+        return errorMsg;
+    }
+
+    /**
+     * 16杩涘埗瀛楃涓茶浆涓轰簩杩涘埗
+     */
+    public String hexStr2BinStr(String hexStr) {
+        if (hexStr == null || hexStr.length() % 2 != 0) {
+            return null;
+        }
+        String bString = "", tmp;
+        for (int i = 0; i < hexStr.length(); i++) {
+            tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexStr.substring(i, i + 1), 16));
+            bString += tmp.substring(tmp.length() - 4);
+        }
+        return bString;
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java
index 5b5f95b..33b7755 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ErrorEnum.java
@@ -13,87 +13,87 @@
     /**
      * 閫氫俊娴佺▼瓒呮椂
      */
-    IO_OVER_TIME(1, "閫氫俊娴佺▼瓒呮椂"),
+    IO_OVER_TIME(31, "閫氫俊娴佺▼瓒呮椂"),
     /**
      * 鏃犵數鍘�
      */
-    NO_VOL(2, "鏃犵數鍘�"),
+    NO_VOL(30, "鏃犵數鍘�"),
     /**
      * 鏃犵數娴�
      */
-    NO_CUR(4, "鏃犵數娴�"),
+    NO_CUR(29, "鏃犵數娴�"),
     /**
      * 鏃犲姛鐜�
      */
-    NO_POWER(8, "鏃犲姛鐜�"),
+    NO_POWER(28, "鏃犲姛鐜�"),
     /**
      * 鍏呯數鍔熺巼杩囧皬
      */
-    LOWER_POWER(16, "鍏呯數鍔熺巼杩囧皬"),
+    LOWER_POWER(27, "鍏呯數鍔熺巼杩囧皬"),
     /**
      * 婕忕數
      */
-    OUTPUT_ELE_LEAKAGE(32, "婕忕數"),
+    OUTPUT_ELE_LEAKAGE(26, "婕忕數"),
     /**
      * 璁惧娓╁害杩囬珮
      */
-    DEVICE_TEMPERATURE_HIGHER(64, "璁惧娓╁害杩囬珮"),
+    DEVICE_TEMPERATURE_HIGHER(25, "璁惧娓╁害杩囬珮"),
     /**
      * 璁惧娓╁害杩囦綆
      */
-    DEVICE_TEMPERATURE_LOW(128, "璁惧娓╁害杩囦綆"),
+    DEVICE_TEMPERATURE_LOW(24, "璁惧娓╁害杩囦綆"),
     /**
      * 鍏呯數瓒呮椂
      */
-    CHARING_OVER_TIME(256, "鍏呯數瓒呮椂"),
+    CHARING_OVER_TIME(23, "鍏呯數瓒呮椂"),
     /**
      * 鏃犵綉缁�
      */
-    NO_NETWORK(512, "鏃犵綉缁�"),
+    NO_NETWORK(22, "鏃犵綉缁�"),
     /**
      * 杩炴帴涓绘満瓒呮椂
      */
-    CONNECT_HOST_OVER_TIMED(1024, "杩炴帴涓绘満瓒呮椂"),
+    CONNECT_HOST_OVER_TIMED(21, "杩炴帴涓绘満瓒呮椂"),
     /**
      * 杩炴帴鏈嶅姟鍣ㄨ秴鏃�
      */
-    CONNECT_SERVICE_OVER_TIMED(2048, "杩炴帴鏈嶅姟鍣ㄨ秴鏃�"),
+    CONNECT_SERVICE_OVER_TIMED(20, "杩炴帴鏈嶅姟鍣ㄨ秴鏃�"),
     /**
      * 瑙︽懜灞忔棤鍝嶅簲
      */
-    LED_ERROR(4096, "瑙︽懜灞忔棤鍝嶅簲"),
+    LED_ERROR(19, "瑙︽懜灞忔棤鍝嶅簲"),
     /**
      * 鍐欏叆Flash澶辫触
      */
-    INPUT_FLASH_ERROR(8192, "鍐欏叆Flash澶辫触"),
+    INPUT_FLASH_ERROR(18, "鍐欏叆Flash澶辫触"),
     /**
      * 鍐欏叆EEProm澶辫触
      */
-    INPUT_EEPROM_ERROR(16384, "鍐欏叆EEProm澶辫触"),
+    INPUT_EEPROM_ERROR(17, "鍐欏叆EEProm澶辫触"),
     /**
      * 鐢靛帇杩囦綆
      */
-    LOWER_VOL(32768, "鐢靛帇杩囦綆"),
+    LOWER_VOL(16, "鐢靛帇杩囦綆"),
     /**
      * 鐢靛帇杩囬珮
      */
-    OVER_VOL(65536, "鐢靛帇杩囬珮"),
+    OVER_VOL(15, "鐢靛帇杩囬珮"),
     /**
      * 鍦伴攣鏁呴殰锛堜笉鑳介攣涓婏級
      */
-    LOCK_ERROR(131072, "鍦伴攣鏁呴殰锛堜笉鑳介攣涓婏級"),
+    LOCK_ERROR(14, "鍦伴攣鏁呴殰锛堜笉鑳介攣涓婏級"),
     /**
      * 鍦伴攣鏁呴殰锛堜笉鑳借В閿侊級
      */
-    UNLOCK_ERROR(262144, "鍦伴攣鏁呴殰锛堜笉鑳借В閿侊級"),
+    UNLOCK_ERROR(13, "鍦伴攣鏁呴殰锛堜笉鑳借В閿侊級"),
     /**
      * 鍏呯數鍙�1鏁呴殰
      */
-    Charging_port_error(524288, "鍏呯數鍙�1鏁呴殰"),
+    Charging_port_error(12, "鍏呯數鍙�1鏁呴殰"),
     /**
      * 鍏呯數鍙�1涓嶈兘杩炴帴杞︽満
      */
-    CONNECT_DEVICE_ERROR(2097152, "鍏呯數鍙�1涓嶈兘杩炴帴杞︽満"),
+    CONNECT_DEVICE_ERROR(10, "鍏呯數鍙�1涓嶈兘杩炴帴杞︽満"),
 
     ;
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java
index 6004160..6fe18c8 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mReportErrorService.java
@@ -32,17 +32,7 @@
     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());
+        c3MReportError.setErrorMsg(codeRespInnerFrame.getErrorMessage());
         save(c3MReportError);
     }
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ErrorMsgService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ErrorMsgService.java
index e784c19..d088869 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ErrorMsgService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ErrorMsgService.java
@@ -56,7 +56,6 @@
             c3ReportErrorBos.forEach(c3ReportError -> {
                 ErrorMsgDto errorMsgDto = new ErrorMsgDto();
                 errorMsgDto.setMac(c3ReportError.getC3Mac());
-                errorMsgDto.setErrorCode(c3ReportError.getErrorCode());
                 errorMsgDto.setErrorDesc(c3ReportError.getErrorMsg());
                 errorMsgDto.setErrorTime(c3ReportError.getCreateTime());
                 errorMsgDto.setDeviceType(3);

--
Gitblit v1.9.3