From 50f6dd3b617f769e7fc6094c2dd0752747541489 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 23 十一月 2023 18:04:05 +0800 Subject: [PATCH] 修复导出充值记录bug 优化充值记录加载逻辑和速度 优化导出记录逻辑 --- app/src/main/java/com/dayu/recharge/card/UserCard.java | 167 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 86 insertions(+), 81 deletions(-) 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 5233456..df69beb 100644 --- a/app/src/main/java/com/dayu/recharge/card/UserCard.java +++ b/app/src/main/java/com/dayu/recharge/card/UserCard.java @@ -56,89 +56,94 @@ * @param data */ public static UserCard getBean(List<byte[]> data) { - 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.get16to10(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; + 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; } - 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; } -- Gitblit v1.8.0