From 1c549ae7af5f8d7bdeecb4ad38ab181af4831821 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 29 二月 2024 18:07:41 +0800
Subject: [PATCH] 添加齐河项目的卡结构
---
app/src/main/java/com/dayu/recharge/card/BlackCard.java | 21 +
app/src/main/java/com/dayu/recharge/card/RegionCard.java | 65 ++++
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java | 12
app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java | 8
app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java | 18 +
app/src/main/java/com/dayu/recharge/card/UserCard.java | 474 ++++++++++++++++-----------------
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java | 100 +++---
app/src/main/java/com/dayu/recharge/activity/RechargeDetail.java | 8
app/src/main/java/com/dayu/recharge/tools/HexUtil.java | 63 ++++
app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java | 6
app/src/main/java/com/dayu/recharge/utils/MyCommon.java | 37 ++
11 files changed, 484 insertions(+), 328 deletions(-)
diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index 7c5a5f4..bfd8072 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -168,7 +168,7 @@
userName = this.getIntent().getStringExtra("userName");
binding.cardData.setText("鍏呭�奸噾棰濓細" + morny + "鍏�");
// 鍏呭�奸�昏緫
- recharge(userCard.getInitPeasantCode(), userName, "鍚敤");
+// recharge(userCard.getInitPeasantCode(), userName, "鍚敤");
}
try {
@@ -373,26 +373,26 @@
String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);
//00鍚敤01绂佺敤02闅跺睘淇℃伅涓嶇03鏃犳鍗′俊鎭�04鍏跺畠
if ("00".equalsIgnoreCase(state)) {
- rechargeIsOk = true;
- binding.cardData.setText("鍏呭�奸�氫俊瀹屾垚锛岃甯栧崱鍏呭��");
- rechargeBean = new RechargeBean();
- rechargeBean.setDate(System.currentTimeMillis());
- rechargeBean.setMorny(morny);
- rechargeBean.setUserName(name);
-
- rechargeBean.setSerial(adminData.getSerial());
- userCard.setRechargeDate(Calendar.getInstance());
- rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
- rechargeBean.setInitPeasantCode(initPeasantCode);
- rechargeBean.setOrderID(orderId);
- try {
- baseDao.rechargeDao().insert(rechargeBean);
- } catch (Exception e) {
- e.printStackTrace();
- }
- userCard.setRechargeTimes(userCard.getRechargeTimes() + 1);
+// rechargeIsOk = true;
+// binding.cardData.setText("鍏呭�奸�氫俊瀹屾垚锛岃甯栧崱鍏呭��");
+// rechargeBean = new RechargeBean();
+// rechargeBean.setDate(System.currentTimeMillis());
+// rechargeBean.setMorny(morny);
+// rechargeBean.setUserName(name);
+//
+// rechargeBean.setSerial(adminData.getSerial());
+// userCard.setRechargeDate(Calendar.getInstance());
+// rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
+// rechargeBean.setInitPeasantCode(initPeasantCode);
+// rechargeBean.setOrderID(orderId);
+// try {
+// baseDao.rechargeDao().insert(rechargeBean);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// userCard.setRechargeTimes(userCard.getRechargeTimes() + 1);
} else if ("01".equalsIgnoreCase(state)) {
- userCard.setState("01");
+// userCard.setState("01");
userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
NFCWreatActivity.this.finish();
TipUtil.show("鍏呭�兼姤鏂囬敊璇�-绂佺敤");
@@ -432,19 +432,19 @@
UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
if (userCardold != null) {
//鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱
- if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
- userCard.setState("00");
- userFlag = WriteCardUtils.setUser(intent, userCard, this);
- // 鎵撳嵃鐩稿叧
- if (userFlag) {
- setPrinterData(rechargeBean);
- startDetailActivity(userName, "鍚敤");
- } else {
- TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊鍐嶈瘯");
- }
- } else {
- TipUtil.show(NFCWreatActivity.this, "璇诲彇鐨勫崱鍜屽厖鍊肩殑鍗′笉涓�鑷�");
- }
+// if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
+// userCard.setState("00");
+// userFlag = WriteCardUtils.setUser(intent, userCard, this);
+// // 鎵撳嵃鐩稿叧
+// if (userFlag) {
+// setPrinterData(rechargeBean);
+// startDetailActivity(userName, "鍚敤");
+// } else {
+// TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊鍐嶈瘯");
+// }
+// } else {
+// TipUtil.show(NFCWreatActivity.this, "璇诲彇鐨勫崱鍜屽厖鍊肩殑鍗′笉涓�鑷�");
+// }
} else {
}
@@ -570,19 +570,19 @@
String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s
if (userCard == null) {
userCard = new UserCard();
- userCard.setRechargeTimes(0);
- ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
- if (electricPriceBean != null) {
- userCard.setElectricityPrice(electricPriceBean.getPrice());
- } else {
- //榛樿鏄�1鍏�
- userCard.setElectricityPrice(1.000f);
- }
- userCard.setSwipeNumber((short) 0);
- userCard.setState("00");
- userCard.setBalance(0);
- userCard.setAddressCode(adminData.getAddressCode());
- userCard.setInitPeasantCode(initPeasantCode);
+// userCard.setRechargeTimes(0);
+// ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
+// if (electricPriceBean != null) {
+// userCard.setElectricityPrice(electricPriceBean.getPrice());
+// } else {
+// //榛樿鏄�1鍏�
+// userCard.setElectricityPrice(1.000f);
+// }
+// userCard.setSwipeNumber((short) 0);
+// userCard.setState("00");
+// userCard.setBalance(0);
+// userCard.setAddressCode(adminData.getAddressCode());
+// userCard.setInitPeasantCode(initPeasantCode);
}
//鍙湁鍚姩鐘舵�佹墠鑳藉厖鍊�
//閲戦
@@ -593,8 +593,8 @@
String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte));
if ("00".equals(state)) {
stateText.append("鍚敤");
- userCard.setBalance(balance);
- userCard.setState("00");
+// userCard.setBalance(balance);
+// userCard.setState("00");
//琛ュ崱閫昏緫
userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
if (userFlag) {
@@ -608,8 +608,8 @@
return;
} else if ("01".equals(state)) {
stateText.append("绂佺敤");
- userCard.setState("01");
- userCard.setBalance(balance);
+// userCard.setState("01");
+// userCard.setBalance(balance);
userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
startDetailActivity(name, stateText.toString());
diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
index 1c3029e..401cccf 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -283,19 +283,7 @@
String serial = baseDao.adminDao().findFirst().getSerial();
UserCard userCard = new UserCard();
- userCard.setRechargeTimes(0);
- ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
- if (electricPriceBean != null) {
- userCard.setElectricityPrice(electricPriceBean.getPrice());
- } else {
- //榛樿鏄�1鍏�
- userCard.setElectricityPrice(1.000f);
- }
- userCard.setState("00");
- userCard.setBalance(0);
- userCard.setAddressCode(adminData.getAddressCode());
- userCard.setInitPeasantCode(initPeasantCode);
userCardBean.setSerial(serial);
userCardBean.setInitPeasantCode(initPeasantCode);
diff --git a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
index b537a4d..8d55630 100644
--- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
+++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
@@ -72,7 +72,7 @@
redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(blance) + "鍏�");
redCardBinding.redStatu.setText("鍗$姸鎬侊細" + statu);
if (userCard != null) {
- redCardBinding.redInitCode.setText(userCard.getInitPeasantCode());
+
Calendar calendar = userCard.getRechargeDate();
if (calendar != null) {
int year = calendar.get(Calendar.YEAR);
@@ -119,7 +119,7 @@
case MyCommon.USER_CARD_TYPE_2:
case MyCommon.USER_CARD_TYPE_3:
userCard = UserCard.getBean(data);
- selectBalance(userCard.getInitPeasantCode());
+// selectBalance(userCard.getInitPeasantCode());
break;
case MyCommon.MANAGE_CRAD:
viweGone(false);
@@ -253,13 +253,13 @@
String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s
if ("00".equals(state)) {
userCard.setBalance(balance);
- userCard.setState("00");
+// userCard.setState("00");
WriteCardUtils.setUser(intent, userCard, ReadCardAcitivy.this);
stateText.append("鍚敤");
} else if ("01".equals(state)) {
userCard.setBalance(balance);
- userCard.setState("01");
+// userCard.setState("01");
WriteCardUtils.setUser(intent, userCard, ReadCardAcitivy.this);
stateText.append("绂佺敤");
} else if ("02".equals(state)) {
diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
index 3c77359..8647a08 100644
--- a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
@@ -68,7 +68,7 @@
userCard = NfcReadHelper.getInstence(intent, this).getUserCardData();
if (userCard != null) {
ProgressDialog.show(this);
- selectBalance(userCard.getInitPeasantCode());
+// selectBalance(userCard.getInitPeasantCode());
} else {
TipUtil.show(RechargeActivity.this, "鍗$墖璇诲彇澶辫触");
}
@@ -201,13 +201,13 @@
if ("00".equals(state)) {
binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
stateText.append("鍚敤");
- userCard.setState("00");
+// userCard.setState("00");
userCard.setBalance(balance);
binding.redStatu.setText(stateText.toString());
return;
} else if ("01".equals(state)) {
stateText.append("璇ュ崱宸茶绂佺敤");
- userCard.setState("01");
+// userCard.setState("01");
userCard.setBalance(balance);
userFlag = WriteCardUtils.setUser(intent, userCard, RechargeActivity.this);
} else if ("02".equals(state)) {
diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeDetail.java b/app/src/main/java/com/dayu/recharge/activity/RechargeDetail.java
index 118d523..8bfa413 100644
--- a/app/src/main/java/com/dayu/recharge/activity/RechargeDetail.java
+++ b/app/src/main/java/com/dayu/recharge/activity/RechargeDetail.java
@@ -63,16 +63,14 @@
binding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(balance) + " 鍏�");
binding.redStatu.setText("鍗$姸鎬侊細" + statu);
if (userCard != null) {
- binding.redInitCode.setText("鐢ㄦ埛娉ㄥ唽缂栧彿锛�" + userCard.getInitPeasantCode());
+// binding.redInitCode.setText("鐢ㄦ埛娉ㄥ唽缂栧彿锛�" + userCard.getInitPeasantCode());
Calendar calendar = userCard.getRechargeDate();
if (calendar != null) {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
int day = calendar.get(Calendar.DAY_OF_MONTH);
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + month + day + " " + hour + ":" + minute + ":" + second);
+
+ binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + month + day );
} else {
binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細鏃�");
}
diff --git a/app/src/main/java/com/dayu/recharge/card/BlackCard.java b/app/src/main/java/com/dayu/recharge/card/BlackCard.java
new file mode 100644
index 0000000..f72a5ac
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/card/BlackCard.java
@@ -0,0 +1,21 @@
+package com.dayu.recharge.card;
+
+import com.dayu.recharge.utils.MyCommon;
+
+import java.io.Serializable;
+
+/**
+ * author: zuo
+ * Date: 2024-02-29
+ * Time: 17:17
+ * 澶囨敞锛氶厤缃粦鍗� 褰撶敤鎴蜂涪澶卞崱鏃讹紝闇�瑕佸湪瀵瑰簲鐨勬帶鍒跺櫒鎶婃鐢ㄦ埛閰嶇疆涓洪粦鎴凤紝闃叉闈炴硶鐢ㄦ按
+ */
+public class BlackCard implements Serializable {
+
+ public String cardType = MyCommon.BLACK;
+
+
+
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
new file mode 100644
index 0000000..f25ac50
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
@@ -0,0 +1,18 @@
+package com.dayu.recharge.card;
+
+import com.dayu.recharge.utils.MyCommon;
+
+import java.io.Serializable;
+
+/**
+ * author: zuo
+ * Date: 2024-02-29
+ * Time: 16:59
+ * 澶囨敞锛氱數閲忓崟浠峰崱
+ */
+public class ElectricPriceCard implements Serializable {
+ public String cardType = MyCommon.ELECTRIC_PRICE;
+
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/card/RegionCard.java b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
new file mode 100644
index 0000000..0db3780
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
@@ -0,0 +1,65 @@
+package com.dayu.recharge.card;
+
+import com.dayu.recharge.tools.HexUtil;
+import com.dayu.recharge.utils.MyCommon;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-02-29
+ * Time: 16:29
+ * 澶囨敞锛氬尯鍩熸爣鍙峰崱
+ */
+public class RegionCard implements Serializable {
+
+ public String cardType = MyCommon.REGION;//鍗″懡浠�
+
+ public short region;//鍖哄煙鍦板潃(浣庡墠楂樺悗) 鍙互璇嗗埆鏌愬幙闀囨潙
+
+ public short controllerCodel;// 鎺у埗鍣ㄧ紪鍙�(浣庡墠楂樺悗) 鏈尯鍩熷唴鎺у埗鍣ㄧ紪鍙�
+
+
+
+ public byte[] toByte() {
+ RegionCard.Zero zero = new RegionCard.Zero();
+ return zero.toByte();
+ }
+
+
+
+ public static RegionCard getBean(List<byte[]> data){
+ RegionCard regionCard=new RegionCard();
+ byte[] zero=data.get(0);
+ regionCard.cardType=HexUtil.byteToHex(zero[0]);
+
+ return regionCard;
+ }
+
+
+
+ public class Zero extends BaseCard {
+ public byte[] toByte() {
+ byte[] data = new byte[16];
+ data[0] = HexUtil.hexToByte(cardType);
+
+ byte[] regionBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(region));
+ if (regionBytes != null) {
+ System.arraycopy(regionBytes, 0, data, 1, regionBytes.length);
+ }
+
+ byte[] controllerCodelBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(controllerCodel));
+ if (controllerCodelBytes != null) {
+ System.arraycopy(controllerCodelBytes, 0, data, 3, controllerCodelBytes.length);
+ }
+
+
+ data[15] = getByteSum(data);
+ return data;
+ }
+
+ }
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/card/UserCard.java b/app/src/main/java/com/dayu/recharge/card/UserCard.java
index df69beb..90cb38a 100644
--- a/app/src/main/java/com/dayu/recharge/card/UserCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/UserCard.java
@@ -4,36 +4,222 @@
import com.dayu.recharge.tools.HexUtil;
import com.dayu.recharge.utils.MornyUtil;
import com.dayu.recharge.utils.MyCommon;
+import com.tencent.bugly.crashreport.CrashReport;
import java.io.Serializable;
import java.util.Calendar;
+import java.util.Date;
import java.util.List;
/**
* Copyright (C), 2023,
* Author: zuo
* Date: 2023-11-07 9:37
- * Description: 鐢ㄦ埛鍗$粨鏋�
+ * Description: 榻愭渤椤圭洰鐢ㄦ埛鍗$粨鏋�
*/
public class UserCard implements Serializable {
public String cardType = MyCommon.USER_CARD_TYPE_1;//鍐欏崱鏍囧織 A1鍒峰崱寮�娉靛墠 A8鍒峰崱寮�娉靛悗 A2鍙犲姞鍏呭��
- public int rechargeTimes;//鍏呭�兼鏁�
+ public short arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
- public short swipeNumber;//鍒峰崱娆℃暟 涓�鑸笉鐢ㄧ簿缁嗙鎺ф墠鐢�
+ public short deviceNumberl;//璁惧缂栧彿(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
+ public byte rechargeTimes;//鍏呭�兼鏁�
- public float electricityPrice;//鐢甸噺鍗曚环 绠$悊鍏冨彲浠ヤ慨鏀�
+ public int totalWater;//鐢ㄦ埛鎬荤敤姘撮噺 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚�2浣嶅皬鏁扮偣 鍚袱涓皬鏁扮偣鐨勬暣鏁�
- public String state = "00";//鍗$姸鎬� 杩斿啓鏌ヨ鍏呭�兼椂鍗$姸鎬佷綅
+ public int totalElectric;//鎬荤敤鐢甸噺浣� 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚� 1浣嶅皬鏁扮偣 鍚�1浣嶅皬鏁扮偣鐨勬暣鏁�
- public int balance;//浣欓(鍗曚綅涓哄垎)
+ public int balance;//鍓╀綑閲戦 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣锛屽崟浣嶅厓
- public String addressCode;//琛屾斂鍖哄煙
+ public int surplusWater;//鍓╀綑姘撮噺 搴曚綅鍦ㄥ墠 2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫�
- public Calendar rechargeDate;//璐按鏃堕棿
+ public Calendar rechargeDate;// 璐按鏃堕棿 BCD
- public String initPeasantCode;//鐢ㄦ埛娉ㄥ唽缂栧彿
+ /**
+ * 閫氳繃byte杞琤ean
+ *
+ * @param data
+ */
+ public static UserCard getBean(List<byte[]> data) {
+ try {
+ UserCard userCard = new UserCard();
+ //绗�0鍧楄В鏋�
+ byte[] zero = data.get(0);
+
+ userCard.cardType = HexUtil.byteToHex(zero[0]);
+
+ byte[] arerNumberByte = new byte[2];
+ System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length);
+ userCard.arerNumber = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(arerNumberByte));
+
+ byte[] deviceNumberlByte = new byte[2];
+ System.arraycopy(zero, 3, deviceNumberlByte, 0, deviceNumberlByte.length);
+ userCard.deviceNumberl = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(deviceNumberlByte));
+
+ userCard.rechargeTimes = HexUtil.hexToByte(HexUtil.byteToHex(zero[5]));
+
+ byte[] totalWaterByte = new byte[4];
+ System.arraycopy(zero, 3, totalWaterByte, 0, totalWaterByte.length);
+ userCard.totalWater = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(totalWaterByte));
+
+ byte[] totalElectricByte = new byte[4];
+ System.arraycopy(zero, 3, totalElectricByte, 0, totalElectricByte.length);
+ userCard.totalElectric = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(totalElectricByte));
+
+ //绗�1鍧楄В鏋�
+ byte[] one = data.get(1);
+
+ byte[] balanceByte = new byte[4];
+ System.arraycopy(one, 0, balanceByte, 0, balanceByte.length);
+ userCard.balance = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(balanceByte));
+
+ byte[] surplusWaterByte = new byte[4];
+ System.arraycopy(one, 4, surplusWaterByte, 0, surplusWaterByte.length);
+ userCard.surplusWater = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(surplusWaterByte));
+
+ 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;
+
+ return userCard;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ }
+
+
+ /**
+ * 鐢ㄦ埛鍗�0鍧�
+ */
+ public class Zero extends BaseCard {
+ public byte[] toByte() {
+ try {
+ byte[] data = new byte[16];
+ data[0] = HexUtil.hexToByte(cardType);
+ byte[] arerNumberBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(arerNumber));
+ if (arerNumberBytes != null) {
+ System.arraycopy(arerNumberBytes, 0, data, 1, arerNumberBytes.length);
+ }
+ byte[] deviceNumberlBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(deviceNumberl));
+ if (deviceNumberlBytes != null) {
+ System.arraycopy(deviceNumberlBytes, 0, data, 3, deviceNumberlBytes.length);
+ }
+ byte rechargeTimesByte = HexUtil.hexToByte(HexUtil.get10to16(rechargeTimes));
+ data[5] = rechargeTimesByte;
+ byte[] totalWaterBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalWater));
+ if (totalWaterBytes != null) {
+ System.arraycopy(totalWaterBytes, 0, data, 6, totalWaterBytes.length);
+ }
+ byte[] totalElectricBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalElectric));
+ if (totalElectricBytes != null) {
+ System.arraycopy(totalElectricBytes, 0, data, 10, totalElectricBytes.length);
+ }
+ data[15] = getByteSum(data);
+ return data;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ }
+
+ /**
+ * 鐢ㄦ埛鍗�1鍧�
+ */
+ public class One extends BaseCard {
+
+ public byte[] toBytes() {
+ byte[] data = new byte[16];
+
+
+ try {
+ byte[] balanceBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance));
+ if (balanceBytes != null) {
+ System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length);
+ }
+
+ byte[] surplusWaterBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater));
+ if (surplusWaterBytes != null) {
+ System.arraycopy(surplusWaterBytes, 0, data, 0, surplusWaterBytes.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 = (byte) ((year / 10) << 4 | ((year % 10) / 100));
+ byte bcdMonth = (byte) ((month / 10) << 4 | (month % 10));
+ byte bcdDay = (byte) ((day / 10) << 4 | (day % 10));
+ 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 = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance));
+ if (balanceBytes != null) {
+ System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length);
+ }
+
+ byte[] surplusWaterBytes = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater));
+ if (surplusWaterBytes != null) {
+ System.arraycopy(surplusWaterBytes, 0, data, 0, surplusWaterBytes.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 = (byte) ((year / 10) << 4 | ((year % 10) / 100));
+ byte bcdMonth = (byte) ((month / 10) << 4 | (month % 10));
+ byte bcdDay = (byte) ((day / 10) << 4 | (day % 10));
+ 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() {
Zero zero = new Zero();
@@ -50,215 +236,6 @@
return zero.toBytes();
}
- /**
- * 閫氳繃byte杞琤ean
- *
- * @param data
- */
- public static UserCard getBean(List<byte[]> data) {
- try {
- UserCard userCard = new UserCard();
- if (data != null) {
- byte[] zero = data.get(0);
- byte[] one = data.get(1);
- byte[] two = data.get(2);
- userCard.cardType = HexUtil.byteToHex(zero[0]);
- userCard.rechargeTimes = HexUtil.get16to10(HexUtil.byteToHex(zero[1]));
- byte[] swipeNumberBytes = new byte[2];
- swipeNumberBytes[0] = zero[2];
- swipeNumberBytes[1] = zero[3];
- String swipeNumberHex = HexUtil.bytesToHex(swipeNumberBytes);
- userCard.swipeNumber = (short) HexUtil.get16to10(swipeNumberHex);
- byte[] electricityPriceBytes = new byte[4];
- for (int i = 0; i < 4; i++) {
- electricityPriceBytes[i] = zero[i + 4];
- }
- userCard.electricityPrice = HexUtil.hexToFloat(HexUtil.bytesToHex(electricityPriceBytes));
- userCard.state = BcdUtil.bcdToStr(zero[8]);
- byte[] balanceBytes = new byte[4];
- for (int i = 0; i < 4; i++) {
- balanceBytes[i] = zero[i + 9];
- }
- userCard.balance = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(balanceBytes));
-
- byte[] addressCodeBytes = new byte[6];
- addressCodeBytes[0] = zero[13];
- addressCodeBytes[1] = zero[14];
- addressCodeBytes[2] = two[11];
- addressCodeBytes[3] = two[12];
- addressCodeBytes[4] = two[13];
- addressCodeBytes[5] = two[14];
- userCard.addressCode = BcdUtil.bcdToStr(addressCodeBytes);
-
- int year = 0;
- int month = 0;
- int day = 0;
- int hour = 0;
- int minute = 0;
- int second = 0;
- for (int i = 0; i < 6; i++) {
- byte byteData = one[i + 4];
- switch (i) {
- case 0:
- year = getBcdToInt(byteData);
- break;
- case 1:
- month = getBcdToInt(byteData);
- break;
- case 2:
- day = getBcdToInt(byteData);
- break;
- case 3:
- hour = getBcdToInt(byteData);
- break;
- case 4:
- minute = getBcdToInt(byteData);
- break;
- case 5:
- second = getBcdToInt(byteData);
- break;
- }
- }
- Calendar calendar = Calendar.getInstance();
- calendar.set(2000 + year, month, day, hour, minute, second);
- byte[] initPeasantCodeBytes = new byte[16];
- initPeasantCodeBytes[0] = one[10];
- initPeasantCodeBytes[1] = one[11];
- initPeasantCodeBytes[2] = one[12];
- initPeasantCodeBytes[3] = one[13];
- initPeasantCodeBytes[4] = one[14];
- initPeasantCodeBytes[5] = two[0];
- initPeasantCodeBytes[6] = two[1];
- initPeasantCodeBytes[7] = two[2];
- initPeasantCodeBytes[8] = two[3];
- initPeasantCodeBytes[9] = two[4];
- initPeasantCodeBytes[10] = two[5];
- initPeasantCodeBytes[11] = two[6];
- initPeasantCodeBytes[12] = two[7];
- initPeasantCodeBytes[13] = two[8];
- initPeasantCodeBytes[14] = two[9];
- initPeasantCodeBytes[15] = two[10];
- userCard.initPeasantCode = HexUtil.bytesToHex(initPeasantCodeBytes);
- return userCard;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- return null;
- }
-
-
- private static int getBcdToInt(byte data) {
- return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F));
- }
-
-
- /**
- * 鐢ㄦ埛鍗�0鍧�
- */
- public class Zero extends BaseCard {
- public byte[] toByte() {
- byte[] data = new byte[16];
- data[0] = HexUtil.hexToByte(cardType);
- try {
- data[1] = HexUtil.hexToByte(HexUtil.get10to16(rechargeTimes));
- } catch (Exception e) {
- e.printStackTrace();
- }
- byte[] swipeNumbers = HexUtil.hexToByteArray(HexUtil.get10to16(swipeNumber));
- for (int i = 0; i < swipeNumbers.length; i++) {
- data[i + 2] = swipeNumbers[i];
- }
- byte[] electricityPrices = HexUtil.hexToByteArray(HexUtil.folatToHexString(electricityPrice));
- for (int i = 0; i < electricityPrices.length; i++) {
- data[i + 4] = electricityPrices[i];
- }
- try {
- data[8] = BcdUtil.strToBcd(state)[0];
- } catch (Exception e) {
- e.printStackTrace();
- }
- byte[] balances = HexUtil.hexToByteArray(HexUtil.get10to16LowHigh(balance, 8));
- for (int i = 0; i < balances.length; i++) {
- data[i + 9] = balances[i];
- }
- byte[] addresscodes = BcdUtil.strToBcd(addressCode);
- data[13] = addresscodes[0];
- data[14] = addresscodes[1];
- data[15] = getByteSum(data);
- return data;
- }
-
- }
-
- /**
- * 鐢ㄦ埛鍗�1鍧�
- */
- public class One extends BaseCard {
-
- public byte[] toBytes() {
- byte[] data = new byte[16];
- byte[] balances = HexUtil.hexToByteArray(HexUtil.get10to16LowHigh(balance, 8));
- for (int i = 0; i < balances.length; i++) {
- data[i] = balances[i];
- }
- if (rechargeDate != null) {
- // 鑾峰彇骞淬�佹湀銆佹棩銆佹椂銆佸垎銆佺
-
-// bcdBytes[0] = (byte) ((year / 1000) << 4) | (byte) (year % 1000 / 100); // 骞翠唤鐨勫崄浣嶅拰涓綅锛堥珮瀛楄妭锛�
-// bcdBytes[1] = (byte) ((year / 10 % 10) << 4) | (byte) (year % 10); // 骞翠唤鐨勫崄浣嶅拰涓綅锛堜綆瀛楄妭锛�
- int year = (rechargeDate.get(Calendar.YEAR)) % 1000;
- int month = rechargeDate.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
- int day = rechargeDate.get(Calendar.DAY_OF_MONTH);
- int hour = rechargeDate.get(Calendar.HOUR_OF_DAY);
- int minute = rechargeDate.get(Calendar.MINUTE);
- int second = rechargeDate.get(Calendar.SECOND);
-
- byte bcdYear = (byte) ((year / 10) << 4 | ((year % 10) / 100));
- byte bcdMonth = (byte) ((month / 10) << 4 | (month % 10));
- byte bcdDay = (byte) ((day / 10) << 4 | (day % 10));
- byte bcdHour = (byte) ((hour / 10) << 4 | (hour % 10));
- byte bcdMinute = (byte) ((minute / 10) << 4 | (minute % 10));
- byte bcdSecond = (byte) ((second / 10) << 4 | (second % 10));
- data[4] = bcdYear;
- data[5] = bcdMonth;
- data[6] = bcdDay;
- data[7] = bcdHour;
- data[8] = bcdMinute;
- data[9] = bcdSecond;
- }
- byte[] initPeasantCodes = HexUtil.hexToByteArray(initPeasantCode);
- for (int i = 0; i < 5; i++) {
- data[i + 10] = initPeasantCodes[i];
- }
- data[15] = getByteSum(data);
- return data;
- }
-
-
- }
-
- /**
- * 鐢ㄦ埛鍗�2鍧�
- */
- public class Two extends BaseCard {
- public byte[] toBytes() {
- byte[] data = new byte[16];
- byte[] initPeasantCodes = HexUtil.hexToByteArray(initPeasantCode);
- for (int i = 5; i < 16; i++) {
- data[i - 5] = initPeasantCodes[i];
- }
- byte[] addresscodes = BcdUtil.strToBcd(addressCode);
- data[11] = addresscodes[2];
- data[12] = addresscodes[3];
- data[13] = addresscodes[4];
- data[14] = addresscodes[5];
- data[15] = getByteSum(data);
- return data;
- }
- }
-
public String getCardType() {
return cardType;
@@ -268,37 +245,44 @@
this.cardType = cardType;
}
- public int getRechargeTimes() {
+ public short getArerNumber() {
+ return arerNumber;
+ }
+
+ public void setArerNumber(short arerNumber) {
+ this.arerNumber = arerNumber;
+ }
+
+ public short getDeviceNumberl() {
+ return deviceNumberl;
+ }
+
+ public void setDeviceNumberl(short deviceNumberl) {
+ this.deviceNumberl = deviceNumberl;
+ }
+
+ public byte getRechargeTimes() {
return rechargeTimes;
}
- public void setRechargeTimes(int rechargeTimes) {
+ public void setRechargeTimes(byte rechargeTimes) {
this.rechargeTimes = rechargeTimes;
}
-
- public short getSwipeNumber() {
- return swipeNumber;
+ public int getTotalWater() {
+ return totalWater;
}
- public void setSwipeNumber(short swipeNumber) {
- this.swipeNumber = swipeNumber;
+ public void setTotalWater(int totalWater) {
+ this.totalWater = totalWater;
}
- public float getElectricityPrice() {
- return electricityPrice;
+ public int getTotalElectric() {
+ return totalElectric;
}
- public void setElectricityPrice(float electricityPrice) {
- this.electricityPrice = electricityPrice;
- }
-
- public String getState() {
- return state;
- }
-
- public void setState(String state) {
- this.state = state;
+ public void setTotalElectric(int totalElectric) {
+ this.totalElectric = totalElectric;
}
public int getBalance() {
@@ -309,12 +293,12 @@
this.balance = balance;
}
- public String getAddressCode() {
- return addressCode;
+ public int getSurplusWater() {
+ return surplusWater;
}
- public void setAddressCode(String addressCode) {
- this.addressCode = addressCode;
+ public void setSurplusWater(int surplusWater) {
+ this.surplusWater = surplusWater;
}
public Calendar getRechargeDate() {
@@ -323,14 +307,6 @@
public void setRechargeDate(Calendar rechargeDate) {
this.rechargeDate = rechargeDate;
- }
-
- public String getInitPeasantCode() {
- return initPeasantCode;
- }
-
- public void setInitPeasantCode(String initPeasantCode) {
- this.initPeasantCode = initPeasantCode;
}
diff --git a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
index 9e86a6c..a00b073 100644
--- a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
+++ b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
@@ -9,7 +9,7 @@
* Copyright (C), 2022,
* Author: zuo
* Date: 2022/3/9 14:55
- * Description:
+ * Description: 杩涘埗杞崲
*/
public class HexUtil {
@@ -40,6 +40,9 @@
return result;
}
+ public static int getBcdToInt(byte data) {
+ return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F));
+ }
/**
* Hex瀛楃涓茶浆byte
@@ -161,6 +164,63 @@
}
}
+
+ /**
+ * short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ * @param number
+ * @return
+ */
+ public static String get10To16LowHigh(short number) {
+ // 浣跨敤 Integer.toHexString 灏� short 杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ int intValue = Short.toUnsignedInt(number);
+ // 浣跨敤 Integer.toHexString 灏� int 杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ String hexString = Integer.toHexString(intValue);
+ // 琛�0锛岀‘淇濆瓧绗︿覆闀垮害涓�4
+ while (hexString.length() < 4) {
+ hexString = "0" + hexString;
+ }
+
+ hexString = spaceHex(hexString);
+ hexString = HighLowHex(hexString);
+ return hexString;
+ }
+
+
+
+ /**
+ * short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ * @param number
+ * @return
+ */
+ public static String get10To16LowHigh(int number) {
+ // 浣跨敤 Integer.toHexString 灏� int 杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ String hexString = Integer.toHexString(number);
+
+ hexString = spaceHex(hexString);
+ hexString = HighLowHex(hexString);
+ return hexString;
+ }
+
+
+
+ /**
+ * short16杩涘埗杞�10杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ * @param hex
+ * @return
+ */
+ public static short getShort10To16LowHigh(String hex){
+ try {
+ String str = "";
+ str = spaceHex(hex);
+ str = HighLowHex(str);
+ return (short) Integer.parseInt(str, 16);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+
+
/**
* 鍗佽繘鍒惰浆16杩涘埗浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
*
@@ -184,6 +244,7 @@
/**
* 16杩涘埗杞�10杩涘埗楂樹綆浣嶈浆鎹�
+ *
* @param hex
* @return
*/
diff --git a/app/src/main/java/com/dayu/recharge/utils/MyCommon.java b/app/src/main/java/com/dayu/recharge/utils/MyCommon.java
index 70aadb6..132a508 100644
--- a/app/src/main/java/com/dayu/recharge/utils/MyCommon.java
+++ b/app/src/main/java/com/dayu/recharge/utils/MyCommon.java
@@ -25,15 +25,48 @@
*/
public static final String USER_CARD_TYPE_3 = "A2";
+
+ /**
+ * 璁剧疆鍖哄煙琛ㄥ彿鍗�
+ */
+ public static final String REGION = "B0";
+
+
+ /**
+ * 璁剧疆鐢ㄦ埛鐢甸噺鍗曚环鍗�
+ */
+ public static final String ELECTRIC_PRICE = "B1";
+
+
/**
* 绠$悊鍗�
*/
public static final String MANAGE_CRAD = "B2";
+
/**
* 娓呴浂鍗�
*/
public static final String CLEAN_CARD_TYPE = "C8";
+
+
+ /**
+ * 瀵嗙爜鍗�
+ */
+ public static final String PASS_WORD_CRAD_TYPE = "B3";
+
+
+ /**
+ * 閰嶇疆榛戝崱 褰撶敤鎴蜂涪澶卞崱鏃讹紝闇�瑕佸湪瀵瑰簲鐨勬帶鍒跺櫒鎶婃鐢ㄦ埛閰嶇疆涓洪粦鎴凤紝闃叉闈炴硶鐢ㄦ按
+ */
+ public static final String BLACK = "B4";
+
+
+ /**
+ * 浠ヤ笅鏈敤鍒�
+ * *****************************************************************************************************************************************
+ */
+
/**
* 閲嶆柊娉ㄥ唽璁惧鍗�
@@ -64,9 +97,5 @@
*/
public static final String CONFIGURATION_POWER_CARD_TYPE = "BD";
- /**
- * 瀵嗙爜鍗�
- */
- public static final String PASS_WORD_CRAD_TYPE = "B3";
}
--
Gitblit v1.8.0