|  |  | 
 |  |  | package com.dayu.qihealonelibrary.card; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.bean.BaseUserCardCard; | 
 |  |  | import com.dayu.baselibrary.tools.HexUtil; | 
 |  |  | import com.dayu.qihealonelibrary.utils.CardCommon; | 
 |  |  | import com.tencent.bugly.crashreport.CrashReport; | 
 |  |  | 
 |  |  |  * Date: 2023-11-07 9:37 | 
 |  |  |  * Description: 齐河项目用户卡结构 | 
 |  |  |  */ | 
 |  |  | public class UserCard implements Serializable { | 
 |  |  | public class UserCard extends BaseUserCardCard implements Serializable { | 
 |  |  |     public String cardType = CardCommon.USER_CARD_TYPE_1;//写卡标志 A1刷卡开泵前 A8刷卡开泵后  A2叠加充值 | 
 |  |  |  | 
 |  |  |     public int arerNumber;//区域号(底位在前高位在后) | 
 |  |  | 
 |  |  |  | 
 |  |  |     public int balance;//剩余金额 底位在前  2位小数点,单位分 | 
 |  |  |  | 
 |  |  |     public int surplusWater;//剩余水量 底位在前  2位小数点 单位立方米 | 
 |  |  |     public int surplusWater;//剩余水量 底位在前  2位小数点 单位立方米 (跟价格一样先乘以100) | 
 |  |  |  | 
 |  |  |     public Calendar rechargeDate;// 购水时间 BCD | 
 |  |  |  | 
 |  |  | 
 |  |  |      * | 
 |  |  |      * @param data | 
 |  |  |      */ | 
 |  |  |     public static UserCard getBean(List<byte[]> data) { | 
 |  |  |     @Override | 
 |  |  |     public  UserCard getBean(List<byte[]> data) { | 
 |  |  |         try { | 
 |  |  |             UserCard userCard = new UserCard(); | 
 |  |  |             //第0块解析 | 
 |  |  | 
 |  |  |                     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)); | 
 |  |  |                     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; | 
 |  |  | 
 |  |  |                     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)); | 
 |  |  |                     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; |