package com.dayu.qihealonelibrary.card; 
 | 
  
 | 
import com.dayu.baselibrary.tools.HexUtil; 
 | 
import com.dayu.qihealonelibrary.dao.QHAloneAppDatabase; 
 | 
import com.dayu.qihealonelibrary.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(QHAloneAppDatabase QHAloneAppDatabase) { 
 | 
        setCardData(QHAloneAppDatabase, 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; 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |