package com.dayu.qiheonlinelibrary.card;
|
|
import com.dayu.baselibrary.tools.HexUtil;
|
import com.dayu.qiheonlinelibrary.dao.QHOnLineAppDatabase;
|
import com.dayu.qiheonlinelibrary.utils.CardCommon;
|
|
|
import java.io.Serializable;
|
import java.util.List;
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Date: 2023-11-08 10:19
|
* Description: 管理卡 第1扇区 0块
|
*/
|
public class ManageCard extends BaseCard implements Serializable {
|
public String cardType = CardCommon.MANAGE_CRAD;//卡类型
|
|
public String getCardData() {
|
return cardData;
|
}
|
|
/**
|
* M1卡的0扇区0块通常用于存储一些基本的卡片信息
|
* 0-4字节是卡号
|
*/
|
public String userCard; //用户卡号
|
|
public byte type;//当前状态 00:充值管理机写 01:控制器反写的 当01时将1扇区0块原管理卡信息改成用户卡内容
|
|
public int totalElectric;//总用电量位 底位在前,高位在后 1位小数点 含1位小数点的整数
|
|
public int getTotalElectric() {
|
return totalElectric;
|
}
|
|
public byte getType() {
|
return type;
|
}
|
|
public void setType(byte type) {
|
this.type = type;
|
}
|
|
public String getUserCard() {
|
return userCard;
|
}
|
|
public void setUserCard(String userCard) {
|
this.userCard = userCard;
|
}
|
|
|
public static ManageCard getBean(List<byte[]> data) {
|
|
if (data != null) {
|
ManageCard manageCard = new ManageCard();
|
|
byte[] zero = data.get(0);
|
byte[] passWordByte = new byte[4];
|
System.arraycopy(zero, 5, passWordByte, 0, passWordByte.length);
|
manageCard.setUserCard(HexUtil.bytesToHex(passWordByte));
|
manageCard.setType(zero[9]);
|
byte[] totalElectricByte = new byte[4];
|
System.arraycopy(zero, 10, totalElectricByte, 0, totalElectricByte.length);
|
manageCard.totalElectric = HexUtil.get16To10LowHightByBytes(totalElectricByte);
|
return manageCard;
|
}
|
return null;
|
}
|
|
|
public byte[] toByte(QHOnLineAppDatabase QHOnLineAppDatabase) {
|
setCardData(QHOnLineAppDatabase, cardType);
|
Zero zero = new Zero();
|
return zero.toByte();
|
}
|
|
public class Zero {
|
public byte[] toByte() {
|
byte[] data = new byte[16];
|
data[0] = HexUtil.hexToByte(cardType);
|
|
byte[] cardDataByte = HexUtil.hexToByteArray(cardData);
|
System.arraycopy(cardDataByte, 0, data, 1, cardDataByte.length);
|
|
byte[] userCardByts = HexUtil.hexToByteArray(userCard);
|
if (userCard != null) {
|
System.arraycopy(userCardByts, 0, data, 5, userCardByts.length);
|
}
|
|
data[15] = getByteSum(data);
|
return data;
|
}
|
|
}
|
|
}
|