From 2b11b80884fbdbc05bd8f8a76515616306a03a0a Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 12 八月 2024 09:56:36 +0800 Subject: [PATCH] 齐河联网版程序除补卡相关逻辑 --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java | 201 +++++++++++++++++++++++++++++++------------------- 1 files changed, 124 insertions(+), 77 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 b26f931..e25d34a 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java @@ -1,5 +1,6 @@ package com.dayu.qiheonlinelibrary.card; +import com.dayu.baselibrary.tools.BcdUtil; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.qiheonlinelibrary.utils.CardCommon; @@ -20,18 +21,23 @@ public int arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗) - public int deviceNumberl;//璁惧缂栧彿(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗) - public short rechargeTimes;//鍏呭�兼鏁� + public String userCode;//鐢ㄦ埛缂栧彿BCD鐪佸競鍘夸埂鏉� - public int totalWater;//鐢ㄦ埛鎬荤敤姘撮噺 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚�2浣嶅皬鏁扮偣 鍚袱涓皬鏁扮偣鐨勬暣鏁� + public int userCodeNumber;//鐢ㄦ埛缂栧彿(楂樹綅鍦ㄥ墠浣庝綅鍦ㄥ悗锛� - public int totalElectric;//鎬荤敤鐢甸噺浣� 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚� 1浣嶅皬鏁扮偣 鍚�1浣嶅皬鏁扮偣鐨勬暣鏁� + public int cardWriteState;//绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐� + + public int cardState;//鐜板満鍗$姸鎬� 00:鏃у崱 01:鏂板崱 public int balance;//鍓╀綑閲戦 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣锛屽崟浣嶅垎 - public int surplusWater;//鍓╀綑姘撮噺 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫� (璺熶环鏍间竴鏍峰厛涔樹互100) + public int surplusElecticity;//鍓╀綑鐢甸噺 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫� (璺熶环鏍间竴鏍峰厛涔樹互100) + + public int totalMorny;//绱鍏呭�奸噾棰� public Calendar rechargeDate;// 璐按鏃堕棿 BCD + + public Float electricPrice;//鐢靛崟浠凤紝淇濈暀涓変綅灏忔暟 /** @@ -47,24 +53,21 @@ userCard.cardType = HexUtil.byteToHex(zero[0]); - byte[] arerNumberByte = new byte[2]; + byte[] arerNumberByte = new byte[4]; System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length); userCard.arerNumber = HexUtil.get16To10LowHightByBytes(arerNumberByte); - - byte[] deviceNumberlByte = new byte[2]; - System.arraycopy(zero, 3, deviceNumberlByte, 0, deviceNumberlByte.length); - userCard.deviceNumberl = HexUtil.get16To10LowHightByBytes(deviceNumberlByte); - - userCard.rechargeTimes = HexUtil.hexToByte(HexUtil.byteToHex(zero[5])); - - byte[] totalWaterByte = new byte[4]; - System.arraycopy(zero, 6, totalWaterByte, 0, totalWaterByte.length); - userCard.totalWater = HexUtil.get16To10LowHightByBytes(totalWaterByte); - - byte[] totalElectricByte = new byte[4]; - System.arraycopy(zero, 10, totalElectricByte, 0, totalElectricByte.length); - userCard.totalElectric = HexUtil.get16To10LowHightByBytes(totalElectricByte); - + byte[] userCodeByte = new byte[6]; + System.arraycopy(zero, 5, userCodeByte, 0, userCodeByte.length); + userCard.userCode= BcdUtil.bcdToStr(userCodeByte); + byte[] userCodeNumber = new byte[2]; + System.arraycopy(zero, 10, 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); + 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]; @@ -73,18 +76,25 @@ byte[] surplusWaterByte = new byte[4]; System.arraycopy(one, 4, surplusWaterByte, 0, surplusWaterByte.length); - userCard.surplusWater = HexUtil.get16To10LowHightByBytes(surplusWaterByte); + 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; @@ -105,37 +115,45 @@ 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); - } - //鍏呭�兼鏁� - 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); + + //鐢ㄦ埛缂栧彿(鍦板潃) + byte[] userCodeBytes = new byte[6]; + byte[] userCodeDatas = BcdUtil.strToBcd(userCode); + System.arraycopy(userCodeDatas, 0, userCodeBytes, 0, userCodeDatas.length); + if (userCodeBytes != null) { + System.arraycopy(userCodeBytes, 0, data, 5, userCodeBytes.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); + //鐢ㄦ埛缂栧彿(鑷) + byte[] userCodeNumberBytes = new byte[2]; + byte[] userCodeNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(userCodeNumber)); + System.arraycopy(userCodeNumberDatas, 0, userCodeNumberBytes, 0, userCodeNumberDatas.length); + if (userCodeNumberBytes != null) { + System.arraycopy(userCodeNumberBytes, 0, data, 11, userCodeNumberBytes.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); + } + + //绠$悊鍗¤繑鍐欐満鍒� 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, 13, cardStateBytes.length); + } + + data[15] = getByteSum(data); return data; } catch (Exception e) { @@ -164,11 +182,17 @@ System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length); } - byte[] surplusWaterBytes = new byte[4]; - byte[] surplusWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater)); - System.arraycopy(surplusWaterDatas, 0, surplusWaterBytes, 0, surplusWaterDatas.length); - if (surplusWaterBytes != null) { - System.arraycopy(surplusWaterBytes, 0, data, 4, surplusWaterBytes.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) { @@ -202,6 +226,7 @@ public byte[] toBytes() { byte[] data = new byte[16]; + try { byte[] balanceBytes = new byte[4]; byte[] balanceDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance)); @@ -210,11 +235,18 @@ System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length); } - byte[] surplusWaterBytes = new byte[4]; - byte[] surplusWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater)); - System.arraycopy(surplusWaterDatas, 0, surplusWaterBytes, 0, surplusWaterDatas.length); - if (surplusWaterBytes != null) { - System.arraycopy(surplusWaterBytes, 0, data, 4, surplusWaterBytes.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) { @@ -229,6 +261,7 @@ data[13] = bcdMonth; data[14] = bcdDay; } + data[15] = getByteSum(data); } catch (Exception e) { @@ -271,36 +304,36 @@ this.arerNumber = arerNumber; } - public int getDeviceNumberl() { - return deviceNumberl; + public String getUserCode() { + return userCode; } - public void setDeviceNumberl(int deviceNumberl) { - this.deviceNumberl = deviceNumberl; + public void setUserCode(String userCode) { + this.userCode = userCode; } - public short getRechargeTimes() { - return rechargeTimes; + public int getUserCodeNumber() { + return userCodeNumber; } - public void setRechargeTimes(short rechargeTimes) { - this.rechargeTimes = rechargeTimes; + public void setUserCodeNumber(int userCodeNumber) { + this.userCodeNumber = userCodeNumber; } - public int getTotalWater() { - return totalWater; + public int getCardWriteState() { + return cardWriteState; } - public void setTotalWater(int totalWater) { - this.totalWater = totalWater; + public void setCardWriteState(int cardWriteState) { + this.cardWriteState = cardWriteState; } - public int getTotalElectric() { - return totalElectric; + public int getCardState() { + return cardState; } - public void setTotalElectric(int totalElectric) { - this.totalElectric = totalElectric; + public void setCardState(int cardState) { + this.cardState = cardState; } public int getBalance() { @@ -311,12 +344,20 @@ this.balance = balance; } - public int getSurplusWater() { - return surplusWater; + public int getSurplusElecticity() { + return surplusElecticity; } - public void setSurplusWater(int surplusWater) { - this.surplusWater = surplusWater; + public void setSurplusElecticity(int surplusElecticity) { + this.surplusElecticity = surplusElecticity; + } + + public int getTotalMorny() { + return totalMorny; + } + + public void setTotalMorny(int totalMorny) { + this.totalMorny = totalMorny; } public Calendar getRechargeDate() { @@ -327,5 +368,11 @@ this.rechargeDate = rechargeDate; } + public Float getElectricPrice() { + return electricPrice; + } + public void setElectricPrice(Float electricPrice) { + this.electricPrice = electricPrice; + } } -- Gitblit v1.8.0