左晓为主开发手持机充值管理机
zuoxiao
2024-09-11 5b9a5a629f8c31a8c05a918dcefc557b46651dfe
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
@@ -2,11 +2,11 @@
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;
@@ -39,6 +39,37 @@
    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转bean
@@ -55,24 +86,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, 11, userCodeNumber, 0, userCodeNumber.length);
            userCard.userCodeNumber=HexUtil.get16To10LowHightByBytes(userCodeNumber);
            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);
@@ -375,4 +406,6 @@
    public void setElectricPrice(Float electricPrice) {
        this.electricPrice = electricPrice;
    }
}