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/ManagerToUserCard.java | 326 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 287 insertions(+), 39 deletions(-) diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/ManagerToUserCard.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/ManagerToUserCard.java index eba18b0..89a4ae5 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/ManagerToUserCard.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/ManagerToUserCard.java @@ -1,9 +1,13 @@ package com.dayu.qiheonlinelibrary.card; +import com.dayu.baselibrary.bean.BaseManagerToUserCard; 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.Calendar; +import java.util.List; /** * Created by Android Studio. @@ -12,19 +16,90 @@ * Time: 15:47 * 澶囨敞锛� */ -public class ManagerToUserCard extends BaseCard implements Serializable { +public class ManagerToUserCard extends BaseManagerToUserCard implements Serializable { public String cardType = CardCommon.USER_CARD_TYPE_1;//鍐欏崱鏍囧織 A1鍒峰崱寮�娉靛墠 A8鍒峰崱寮�娉靛悗 A2鍙犲姞鍏呭�� public int arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗) - public int deviceNumberl;//璁惧缂栧彿(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗) - public short rechargeTimes;//鍏呭�兼鏁� + public String oldCardNumber;//鏃у崱鍗″彿 - public int totalWater;//鐢ㄦ埛鎬荤敤姘撮噺 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚�2浣嶅皬鏁扮偣 鍚袱涓皬鏁扮偣鐨勬暣鏁� + public int cardWriteState;//绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐� - public int totalElectric;//鎬荤敤鐢甸噺浣� 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚� 1浣嶅皬鏁扮偣 鍚�1浣嶅皬鏁扮偣鐨勬暣鏁� + public int cardState;//鐜板満鍗$姸鎬� 00:鏃у崱 01:鏂板崱 + public int balance;//鍓╀綑閲戦 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣锛屽崟浣嶅垎 + + public int surplusElecticity;//鍓╀綑鐢甸噺 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫� (璺熶环鏍间竴鏍峰厛涔樹互100) + + public int totalMorny;//绱鍏呭�奸噾棰� + + public Calendar rechargeDate;// 璐按鏃堕棿 BCD + + public Float electricPrice;//鐢靛崟浠凤紝淇濈暀涓変綅灏忔暟 + + /** + * 閫氳繃byte杞琤ean + * + * @param data + */ + @Override + public ManagerToUserCard getBean(List<byte[]> data) { + try { + ManagerToUserCard userCard = new ManagerToUserCard(); + //绗�0鍧楄В鏋� + byte[] zero = data.get(0); + userCard.cardType = HexUtil.byteToHex(zero[0]); + + byte[] arerNumberByte = new byte[4]; + System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length); + userCard.arerNumber = HexUtil.get16To10LowHightByBytes(arerNumberByte); + + byte[] oldCardNumberByte = new byte[4]; + System.arraycopy(zero, 5, oldCardNumberByte, 0, oldCardNumberByte.length); + userCard.oldCardNumber = HexUtil.bytesToHex(oldCardNumberByte); + + byte[] cardWriteState = new byte[1]; + System.arraycopy(zero, 13, cardWriteState, 0, cardWriteState.length); + userCard.cardWriteState = HexUtil.get16To10LowHightByBytes(cardWriteState); + byte[] cardState = new byte[1]; + System.arraycopy(zero, 14, cardState, 0, cardState.length); + 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); + byte[] surplusWaterByte = new byte[4]; + System.arraycopy(one, 4, surplusWaterByte, 0, surplusWaterByte.length); + userCard.surplusElecticity = HexUtil.get16To10LowHightByBytes(surplusWaterByte); + + byte[] totalMorny = new byte[4]; + System.arraycopy(one, 8, totalMorny, 0, totalMorny.length); + userCard.totalMorny = HexUtil.get16To10LowHightByBytes(totalMorny); + + byte[] rechargeDateByte = new byte[3]; + System.arraycopy(one, 12, rechargeDateByte, 0, rechargeDateByte.length); + int year = HexUtil.getBcdToInt(one[12]); + int month = HexUtil.getBcdToInt(one[13]); + int day = HexUtil.getBcdToInt(one[14]); + Calendar calendar = Calendar.getInstance(); + calendar.set(2000 + year, month, day, 0, 0, 0); + userCard.rechargeDate = calendar; + + byte[] two = data.get(2); + byte[] electricPriceByte = new byte[4]; + System.arraycopy(two, 8, electricPriceByte, 0, electricPriceByte.length); + userCard.electricPrice = HexUtil.hexToFloatLowHigh(electricPriceByte); + + return userCard; + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + } /** @@ -36,37 +111,29 @@ byte[] data = new byte[16]; data[0] = HexUtil.hexToByte(cardType); //鍖哄煙鍙� - byte[] arerNumberBytes = new byte[2]; + byte[] arerNumberBytes = new byte[4]; byte[] arerNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(arerNumber)); System.arraycopy(arerNumberDatas, 0, arerNumberBytes, 0, arerNumberDatas.length); if (arerNumberBytes != null) { System.arraycopy(arerNumberBytes, 0, data, 1, arerNumberBytes.length); } - //璁惧缂栧彿 - byte[] deviceNumberlBytes = new byte[2]; - byte[] deviceNumberlDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(deviceNumberl)); - System.arraycopy(deviceNumberlDatas, 0, deviceNumberlBytes, 0, deviceNumberlDatas.length); - if (deviceNumberlBytes != null) { - System.arraycopy(deviceNumberlBytes, 0, data, 3, deviceNumberlBytes.length); + //绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐� + byte[] cardWriteStateBytes = new byte[1]; + byte[] cardWriteStateDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(cardWriteState)); + System.arraycopy(cardWriteStateDatas, 0, cardWriteStateBytes, 0, cardWriteStateDatas.length); + if (cardWriteStateBytes != null) { + System.arraycopy(cardWriteStateBytes, 0, data, 13, cardWriteStateBytes.length); } - //鍏呭�兼鏁� - byte rechargeTimesByte = HexUtil.hexToByte(HexUtil.get10to16(rechargeTimes)); - data[5] = rechargeTimesByte; - //鐢ㄦ埛鎬荤敤姘撮噺 - byte[] totalWaterBytes = new byte[4]; - byte[] totalWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalWater)); - System.arraycopy(totalWaterDatas, 0, totalWaterBytes, 0, totalWaterDatas.length); - if (totalWaterBytes != null) { - System.arraycopy(totalWaterBytes, 0, data, 6, totalWaterBytes.length); + //绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐� + byte[] cardStateBytes = new byte[1]; + byte[] cardStateDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(cardState)); + System.arraycopy(cardStateDatas, 0, cardStateBytes, 0, cardStateDatas.length); + if (cardStateBytes != null) { + System.arraycopy(cardStateBytes, 0, data, 14, cardStateBytes.length); } - //鎬荤敤鐢甸噺浣� - byte[] totalElectricBytes = new byte[4]; - byte[] totalElectricDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalElectric)); - System.arraycopy(totalElectricDatas, 0, totalElectricBytes, 0, totalElectricDatas.length); - if (totalElectricBytes != null) { - System.arraycopy(totalElectricBytes, 0, data, 10, totalElectricBytes.length); - } + + data[15] = getByteSum(data); return data; } catch (Exception e) { @@ -78,27 +145,208 @@ } + /** + * 鐢ㄦ埛鍗�1鍧� + */ + public class One extends BaseCard { + + public byte[] toBytes() { + byte[] data = new byte[16]; + + + try { + byte[] balanceBytes = new byte[4]; + byte[] balanceDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance)); + System.arraycopy(balanceDatas, 0, balanceBytes, 0, balanceDatas.length); + if (balanceBytes != null) { + System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length); + } + + byte[] surplusElecticityBytes = new byte[4]; + byte[] surplusElecticityDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusElecticity)); + System.arraycopy(surplusElecticityDatas, 0, surplusElecticityBytes, 0, surplusElecticityDatas.length); + if (surplusElecticityBytes != null) { + System.arraycopy(surplusElecticityBytes, 0, data, 4, surplusElecticityBytes.length); + } + byte[] totalMornyBytes = new byte[4]; + byte[] totalMornyDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalMorny)); + System.arraycopy(totalMornyDatas, 0, totalMornyBytes, 0, totalMornyDatas.length); + if (totalMornyBytes != null) { + System.arraycopy(totalMornyBytes, 0, data, 8, totalMornyBytes.length); + } + + if (rechargeDate != null) { + // 鑾峰彇骞淬�佹湀銆佹棩銆佹椂銆佸垎銆佺 + int year = (rechargeDate.get(Calendar.YEAR)) % 1000; + int month = rechargeDate.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1 + int day = rechargeDate.get(Calendar.DAY_OF_MONTH); + byte bcdYear = HexUtil.getIntToBCD(year)[0]; + byte bcdMonth = HexUtil.getIntToBCD(month)[0]; + byte bcdDay = HexUtil.getIntToBCD(day)[0]; + data[12] = bcdYear; + data[13] = bcdMonth; + data[14] = bcdDay; + } + + data[15] = getByteSum(data); + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + return data; + } + + + } + + /** + * 鐢ㄦ埛鍗�2鍧� + */ + public class Two extends BaseCard { + public byte[] toBytes() { + byte[] data = new byte[16]; + + + try { + byte[] balanceBytes = new byte[4]; + byte[] balanceDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance)); + System.arraycopy(balanceDatas, 0, balanceBytes, 0, balanceDatas.length); + if (balanceBytes != null) { + System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length); + } + + byte[] surplusElecticityBytes = new byte[4]; + byte[] surplusElecticityDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusElecticity)); + System.arraycopy(surplusElecticityDatas, 0, surplusElecticityBytes, 0, surplusElecticityDatas.length); + if (surplusElecticityBytes != null) { + System.arraycopy(surplusElecticityBytes, 0, data, 4, surplusElecticityBytes.length); + } + + byte[] electricPriceBytes = new byte[4]; + byte[] electricPriceDatas = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(electricPrice)); + System.arraycopy(electricPriceDatas, 0, electricPriceBytes, 0, electricPriceDatas.length); + if (electricPriceBytes != null) { + System.arraycopy(electricPriceBytes, 0, data, 8, electricPriceBytes.length); + } + + if (rechargeDate != null) { + // 鑾峰彇骞淬�佹湀銆佹棩銆佹椂銆佸垎銆佺 + int year = (rechargeDate.get(Calendar.YEAR)) % 1000; + int month = rechargeDate.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1 + int day = rechargeDate.get(Calendar.DAY_OF_MONTH); + byte bcdYear = HexUtil.getIntToBCD(year)[0]; + byte bcdMonth = HexUtil.getIntToBCD(month)[0]; + byte bcdDay = HexUtil.getIntToBCD(day)[0]; + data[12] = bcdYear; + data[13] = bcdMonth; + data[14] = bcdDay; + } + + + data[15] = getByteSum(data); + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + return data; + } + } + + public byte[] getZeroBytes() { + ManagerToUserCard.Zero zero = new ManagerToUserCard.Zero(); + return zero.toByte(); + } + + public byte[] getOneBytes() { + ManagerToUserCard.One zero = new ManagerToUserCard.One(); + return zero.toBytes(); + } + + public byte[] getTwoBytes() { + ManagerToUserCard.Two zero = new ManagerToUserCard.Two(); + return zero.toBytes(); + } + + + public String getCardType() { + return cardType; + } + + public void setCardType(String cardType) { + this.cardType = cardType; + } + + public int getArerNumber() { + return arerNumber; + } + public void setArerNumber(int arerNumber) { this.arerNumber = arerNumber; } - public void setDeviceNumberl(int deviceNumberl) { - this.deviceNumberl = deviceNumberl; + + + public int getCardWriteState() { + return cardWriteState; } - public void setRechargeTimes(short rechargeTimes) { - this.rechargeTimes = rechargeTimes; + public void setCardWriteState(int cardWriteState) { + this.cardWriteState = cardWriteState; } - public void setTotalWater(int totalWater) { - this.totalWater = totalWater; + public int getCardState() { + return cardState; } - public void setTotalElectric(int totalElectric) { - this.totalElectric = totalElectric; + public void setCardState(int cardState) { + this.cardState = cardState; } - public byte[] getZeroBytes() { - Zero zero = new Zero(); - return zero.toByte(); + + public int getBalance() { + return balance; + } + + public void setBalance(int balance) { + this.balance = balance; + } + + public int getSurplusElecticity() { + return surplusElecticity; + } + + public void setSurplusElecticity(int surplusElecticity) { + this.surplusElecticity = surplusElecticity; + } + + public int getTotalMorny() { + return totalMorny; + } + + public void setTotalMorny(int totalMorny) { + this.totalMorny = totalMorny; + } + + public Calendar getRechargeDate() { + return rechargeDate; + } + + public void setRechargeDate(Calendar rechargeDate) { + this.rechargeDate = rechargeDate; + } + + public Float getElectricPrice() { + return electricPrice; + } + + public void setElectricPrice(Float electricPrice) { + this.electricPrice = electricPrice; + } + + public String getOldCardNumber() { + return oldCardNumber; + } + + public void setOldCardNumber(String oldCardNumber) { + this.oldCardNumber = oldCardNumber; } } -- Gitblit v1.8.0