From ef270bd1855b5ce3f398c5df024840a498e33a8f Mon Sep 17 00:00:00 2001
From: MercuryZ <zdmisif@126.com>
Date: 星期四, 31 三月 2022 14:09:17 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3QueryReportInnerFrame.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3QueryReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3QueryReportInnerFrame.java
new file mode 100644
index 0000000..84b75c3
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3QueryReportInnerFrame.java
@@ -0,0 +1,115 @@
+package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import lombok.Data;
+import lombok.ToString;
+
+import java.text.DecimalFormat;
+
+/**
+ * @author ZZQ
+ * @date 2022/3/18 9:51
+ * C3鍏呯數妗╂煡璇㈡寚浠ゅ搷搴斿抚
+ */
+@Data
+@ToString(callSuper = true)
+public class A5C3QueryReportInnerFrame extends BaseResponseInnerFrame<A5C3QueryReportInnerFrame> {
+ //MAC鍦板潃
+ private String mac;
+ //鐗堟湰鍙�
+ private String version;
+ //蹇冭烦鍖呴棿闅旀椂闂�
+ private String IntervalTime;
+ //鏌ヨ鐢靛帇/鐢垫祦甯告暟
+ private String constant;
+ //鏌ヨ鍦板潃(鏆傛椂涓嶇敤鍒帮級
+ private String address;
+ //鏁呴殰鐮�
+ private String faultCode;
+
+ @Override
+ public A5C3QueryReportInnerFrame transformFrame(String hex) {
+ if (StrUtil.isBlank(hex)) {
+ return null;
+ }
+ // MQTT閫氫俊鏂瑰紡(1)
+ setConnectType(hex.substring(0, 2));
+ // 鍔熻兘鐮�(1)
+ setFunctionCode(hex.substring(2, 4));
+ // 璐熻嵎闀垮害(2)
+ setPayloadLength(hex.substring(4, 8));
+ //MAC鍦板潃
+ setMac(hex.substring(8, 16));
+
+ retuenInfomation(functionCode, hex.substring(16, hex.length() - 8));
+
+ setCrc32(hex.substring(hex.length() - 8));
+ // 鏍¢獙CRC32
+ String frame = hex.substring(2, hex.length() - 8);
+ this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
+ return this;
+ }
+
+ public void retuenInfomation(String functionCode, String hex) {
+
+ /**
+ * 鏌ヨ鐗堟湰鍙�
+ */
+ if (functionCode.equals(C3ChargingEnum.QueryVersion.getCode())) {
+ if (hex.length() != 8) {
+ throw new BusinessException("鏁版嵁閿欒锛岃閲嶆柊璇锋眰锛�");
+ }
+ DecimalFormat df = new DecimalFormat("00");
+ setVersion("纭欢鐗堟湰鍙凤細" + df.format(parseVal(hex, 0, 2)) + df.format(parseVal(hex, 2, 4))
+ + "; " + "杞欢鐗堟湰鍙凤細" + df.format(parseVal(hex, 4, 6)) + df.format(parseVal(hex, 6, 8)));
+ }
+
+ /**
+ * 鏌ヨ蹇冭烦鍖呴棿闅旀椂闂�
+ */
+ if (functionCode.equals(C3ChargingEnum.QueryIntervalTime.getCode())) {
+ if (hex.length() != 4) {
+ throw new BusinessException("鏁版嵁閿欒锛岃閲嶆柊璇锋眰锛�");
+ }
+ setIntervalTime("蹇冭烦鍖呴棿闅旀椂闂�(s)锛�" + parseVal(hex, 0, 4));
+ }
+
+ /**
+ * 鏌ヨ鐢靛帇/鐢垫祦甯告暟
+ */
+ if (functionCode.equals(C3ChargingEnum.QueryConstant.getCode())) {
+ if (hex.length() != 4) {
+ throw new BusinessException("鏁版嵁閿欒锛岃閲嶆柊璇锋眰锛�");
+ }
+ setConstant("鐢靛帇甯告暟锛�" + parseVal(hex, 0, 2) + " ;鐢垫祦甯告暟锛�" + parseVal(hex, 2, 4));
+ }
+
+ /**
+ * 鏌ヨ鍦板潃(鏆傛椂涓嶇敤鍒帮級
+ */
+ if (functionCode.equals(C3ChargingEnum.QueryAddress.getCode())) {
+ if (hex.length() != 4) {
+ throw new BusinessException("鏁版嵁閿欒锛岃閲嶆柊璇锋眰锛�");
+ }
+ setAddress(hex);
+ }
+
+ /**
+ * 鏌ヨ鍦板潃(鏆傛椂涓嶇敤鍒帮級
+ */
+ if (functionCode.equals(C3ChargingEnum.QueryFaultCode.getCode())) {
+ if (hex.length() != 4) {
+ throw new BusinessException("鏁版嵁閿欒锛岃閲嶆柊璇锋眰锛�");
+ }
+ setFaultCode(hex);
+ }
+ }
+
+ private Integer parseVal(String frame, int start, int end) {
+ return Integer.parseInt(frame.substring(start, end), 16);
+ }
+}
--
Gitblit v1.9.3