From 15a3fc02c120ff630a9721a2f48a82f76675213f Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期一, 07 四月 2025 09:04:20 +0800
Subject: [PATCH] feat(generallibrary): 添加新卡开卡界面并更新扫描图标

---
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 46 insertions(+), 11 deletions(-)

diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
index e25d34a..310e0e5 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
@@ -1,12 +1,13 @@
 package com.dayu.qiheonlinelibrary.card;
 
+import com.dayu.baselibrary.bean.BaseUserCardCard;
 import com.dayu.baselibrary.tools.BcdUtil;
 import com.dayu.baselibrary.tools.HexUtil;
-
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
 
@@ -16,7 +17,7 @@
  * Date: 2023-11-07 9:37
  * Description: 榻愭渤椤圭洰鐢ㄦ埛鍗$粨鏋�
  */
-public class UserCard implements Serializable {
+public class UserCard extends BaseUserCardCard implements Serializable {
     public String cardType = CardCommon.USER_CARD_TYPE_1;//鍐欏崱鏍囧織 A1鍒峰崱寮�娉靛墠 A8鍒峰崱寮�娉靛悗  A2鍙犲姞鍏呭��
 
     public int arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
@@ -39,13 +40,45 @@
 
     public Float electricPrice;//鐢靛崟浠凤紝淇濈暀涓変綅灏忔暟
 
+    /**
+     * 鍐欏崱瀹屾垚鍚庢牎楠屾槸鍚﹀啓鍗℃垚鍔�
+     *
+     * @param data
+     * @return
+     */
+    public boolean equlsUserCard(List<byte[]> data) {
+        // 鍙傛暟楠岃瘉
+        if (data == null || data.size() < 3) {
+            return false;
+        }
+        // 瀹氫箟瑕佹瘮杈冪殑瀛楄妭鏁扮粍
+        byte[][] expectedBytes = {getZeroBytes(), getOneBytes(), getTwoBytes()};
+        // 閫愪釜姣旇緝瀛楄妭鏁扮粍
+        for (int i = 0; i < 3; i++) {
+            if (!Arrays.equals(data.get(i), expectedBytes[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 杩斿洖瀹屾暣鐨勭敤鎴风紪鍙�
+     *
+     * @return
+     */
+    public String getMyUserCode() {
+        return userCode + String.format("%04d", userCodeNumber);
+//        return "";
+    }
 
     /**
      * 閫氳繃byte杞琤ean
      *
      * @param data
      */
-    public static UserCard getBean(List<byte[]> data) {
+    @Override
+    public UserCard getBean(List<byte[]> data) {
         try {
             UserCard userCard = new UserCard();
             //绗�0鍧楄В鏋�
@@ -55,24 +88,24 @@
 
             byte[] arerNumberByte = new byte[4];
             System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length);
-            userCard.arerNumber =  HexUtil.get16To10LowHightByBytes(arerNumberByte);
+            userCard.arerNumber = HexUtil.get16To10LowHightByBytes(arerNumberByte);
             byte[] userCodeByte = new byte[6];
             System.arraycopy(zero, 5, userCodeByte, 0, userCodeByte.length);
-            userCard.userCode= BcdUtil.bcdToStr(userCodeByte);
+            userCard.userCode = BcdUtil.bcdToStr(userCodeByte);
             byte[] userCodeNumber = new byte[2];
-            System.arraycopy(zero, 10, userCodeNumber, 0, userCodeNumber.length);
-            userCard.userCodeNumber=HexUtil.get16To10LowHightByBytes(userCodeNumber);
+            System.arraycopy(zero, 11, userCodeNumber, 0, userCodeNumber.length);
+            userCard.userCodeNumber = HexUtil.get16To10LowHightByBytes(userCodeNumber);
             byte[] cardWriteState = new byte[1];
             System.arraycopy(zero, 13, cardWriteState, 0, cardWriteState.length);
-            userCard.cardWriteState=HexUtil.get16To10LowHightByBytes(cardWriteState);
+            userCard.cardWriteState = HexUtil.get16To10LowHightByBytes(cardWriteState);
             byte[] cardState = new byte[1];
             System.arraycopy(zero, 14, cardState, 0, cardState.length);
-            userCard.cardState=HexUtil.get16To10LowHightByBytes(cardState);
+            userCard.cardState = HexUtil.get16To10LowHightByBytes(cardState);
             //绗�1鍧楄В鏋�
             byte[] one = data.get(1);
             byte[] balanceByte = new byte[4];
             System.arraycopy(one, 0, balanceByte, 0, balanceByte.length);
-            userCard.balance =HexUtil.get16To10LowHightByBytes(balanceByte);
+            userCard.balance = HexUtil.get16To10LowHightByBytes(balanceByte);
 
             byte[] surplusWaterByte = new byte[4];
             System.arraycopy(one, 4, surplusWaterByte, 0, surplusWaterByte.length);
@@ -150,7 +183,7 @@
                 byte[] cardStateDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(cardState));
                 System.arraycopy(cardStateDatas, 0, cardStateBytes, 0, cardStateDatas.length);
                 if (cardStateBytes != null) {
-                    System.arraycopy(cardStateBytes, 0, data, 13, cardStateBytes.length);
+                    System.arraycopy(cardStateBytes, 0, data, 14, cardStateBytes.length);
                 }
 
 
@@ -375,4 +408,6 @@
     public void setElectricPrice(Float electricPrice) {
         this.electricPrice = electricPrice;
     }
+
+
 }

--
Gitblit v1.8.0