package com.dayu.henanlibrary.activity; 
 | 
  
 | 
import android.annotation.SuppressLint; 
 | 
import android.content.Intent; 
 | 
import android.os.Bundle; 
 | 
import android.text.TextUtils; 
 | 
import android.util.Log; 
 | 
import android.view.KeyEvent; 
 | 
import android.view.LayoutInflater; 
 | 
import android.view.View; 
 | 
import android.widget.Toast; 
 | 
  
 | 
import com.dayu.baselibrary.tools.BcdUtil; 
 | 
import com.dayu.baselibrary.utils.AidlUtil; 
 | 
import com.dayu.baselibrary.utils.BaseCommon; 
 | 
import com.dayu.baselibrary.utils.CRC8; 
 | 
import com.dayu.baselibrary.utils.DateUtil; 
 | 
import com.dayu.baselibrary.utils.MornyUtil; 
 | 
import com.dayu.baselibrary.utils.TipUtil; 
 | 
import com.dayu.baselibrary.view.ConfirmDialog; 
 | 
import com.dayu.baselibrary.view.TitleBar; 
 | 
import com.dayu.henanlibrary.card.CleanCard; 
 | 
import com.dayu.henanlibrary.card.CleanUserCard; 
 | 
import com.dayu.henanlibrary.card.ConfigurationPowerCard; 
 | 
import com.dayu.henanlibrary.card.ConfigureDeviceRegistrationCrad; 
 | 
import com.dayu.henanlibrary.card.DomainCard; 
 | 
import com.dayu.henanlibrary.card.ManageCard; 
 | 
import com.dayu.henanlibrary.card.RegisteredCard; 
 | 
import com.dayu.henanlibrary.card.TestCard; 
 | 
import com.dayu.henanlibrary.card.UserCard; 
 | 
import com.dayu.henanlibrary.databinding.ActivityWriteTextHnBinding; 
 | 
import com.dayu.henanlibrary.dbBean.AdminDataBean; 
 | 
import com.dayu.henanlibrary.dbBean.ElectricPriceBean; 
 | 
import com.dayu.henanlibrary.dbBean.RechargeBean; 
 | 
import com.dayu.henanlibrary.dbBean.UserCardBean; 
 | 
import com.dayu.henanlibrary.net.SocketCallBack; 
 | 
import com.dayu.henanlibrary.net.SocketData; 
 | 
import com.dayu.henanlibrary.net.SocketNet; 
 | 
import com.dayu.henanlibrary.socketBean.BalanceSelecteRequestBean; 
 | 
import com.dayu.henanlibrary.socketBean.RechargeRequestBean; 
 | 
import com.dayu.henanlibrary.tools.NFCWriteHelper; 
 | 
import com.dayu.henanlibrary.tools.NfcReadHelper; 
 | 
import com.dayu.henanlibrary.tools.WriteCardUtils; 
 | 
import com.dayu.henanlibrary.utils.CardCommon; 
 | 
import com.dayu.henanlibrary.utils.DeviceNumberUtils; 
 | 
import com.dayu.henanlibrary.utils.SocketUtil; 
 | 
import com.dayu.henanlibrary.view.ProgressDialog; 
 | 
import com.tencent.bugly.crashreport.CrashReport; 
 | 
  
 | 
import java.util.Arrays; 
 | 
import java.util.Calendar; 
 | 
  
 | 
/** 
 | 
 * Copyright (C), 2023, 
 | 
 * Author: zuo 
 | 
 * Date: 2023-11-08 21:19 
 | 
 * Description: nfc写卡界面 
 | 
 */ 
 | 
public class NFCWreatActivity extends BaseNfcActivity { 
 | 
    public static String TAG = "NFCWreatActivity"; 
 | 
  
 | 
    boolean cleanFlag = false; 
 | 
    boolean userFlag = false; 
 | 
    boolean manageCardFlag = false; 
 | 
    boolean registeredFlag = false; 
 | 
    boolean administrativeCardFlag = false; 
 | 
    boolean cleanUserCardFlag = false; 
 | 
  
 | 
    boolean domainCrdFlag = false; 
 | 
  
 | 
    boolean testCardFlag = false; 
 | 
  
 | 
    boolean configDeviceRegiestFlag = false; 
 | 
  
 | 
    boolean configPowerFlag = false; 
 | 
  
 | 
    /** 
 | 
     * 是否不再验证用户直接写卡 
 | 
     */ 
 | 
    boolean isAgainWrite = false; 
 | 
  
 | 
    UserCardBean userCardBean; 
 | 
  
 | 
    String morny; 
 | 
    String userName; 
 | 
    AdminDataBean adminData; 
 | 
    RechargeBean rechargeBean; 
 | 
    Intent intent; 
 | 
  
 | 
  
 | 
    RegisteredCard registeredCard; 
 | 
    CleanUserCard cleanUserCard; 
 | 
    ManageCard manageCard; 
 | 
    DomainCard domainCard; 
 | 
  
 | 
    CleanCard cleanCard; 
 | 
    ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad; 
 | 
    TestCard testCard; 
 | 
  
 | 
    ConfigurationPowerCard configurationPowerCard; 
 | 
    //打印 
 | 
  
 | 
    public static NFCWreatActivity nfcWreatActivity; 
 | 
    /** 
 | 
     * 是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡 
 | 
     */ 
 | 
    boolean isUser = false;// 
 | 
  
 | 
    //是否是充值过程 
 | 
    boolean isRecharge = false; 
 | 
    //充值通信是否完成 
 | 
    boolean rechargeIsOk = false; 
 | 
    ActivityWriteTextHnBinding binding; 
 | 
    ConfirmDialog confirmDialog; 
 | 
  
 | 
    @Override 
 | 
    protected void onCreate(Bundle savedInstanceState) { 
 | 
        super.onCreate(savedInstanceState); 
 | 
        try { 
 | 
            binding = ActivityWriteTextHnBinding.inflate(LayoutInflater.from(this)); 
 | 
            setContentView(binding.getRoot()); 
 | 
            nfcWreatActivity = this; 
 | 
            setData(); 
 | 
            getData(); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    private void setData() { 
 | 
        titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> { 
 | 
            //处理因用户误操作返回导致不能写卡的问题,添加二次确认 
 | 
            back(); 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    private void back() { 
 | 
        if (isUser) { 
 | 
            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> { 
 | 
                confirmDialog.dismiss(); 
 | 
                myFinish(); 
 | 
            }); 
 | 
            confirmDialog.show(); 
 | 
        } else if (!TextUtils.isEmpty(morny)) { 
 | 
            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> { 
 | 
                confirmDialog.dismiss(); 
 | 
                myFinish(); 
 | 
            }); 
 | 
            confirmDialog.show(); 
 | 
        } else { 
 | 
            finish(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    private void myFinish() { 
 | 
        if (NewCardActivity.newCardActivity != null) { 
 | 
            NewCardActivity.newCardActivity.finish(); 
 | 
        } 
 | 
        if (RechargeActivity.rechargeActivity != null) { 
 | 
            RechargeActivity.rechargeActivity.finish(); 
 | 
        } 
 | 
        NFCWreatActivity.nfcWreatActivity.finish(); 
 | 
    } 
 | 
  
 | 
  
 | 
    //点击两次退出程序 有时间间隔 间隔内点击则退出程序 否则 则提示 
 | 
    @Override 
 | 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
 | 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
 | 
            back(); 
 | 
            return true; 
 | 
        } 
 | 
        return super.onKeyDown(keyCode, event); 
 | 
    } 
 | 
  
 | 
  
 | 
    @SuppressLint("SetTextI18n") 
 | 
    private void getData() { 
 | 
        try { 
 | 
            if (this.getIntent().hasExtra("userCard")) { 
 | 
                userCard = (UserCard) this.getIntent().getSerializableExtra("userCard"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("cleanCard")) { 
 | 
                cleanCard = (CleanCard) this.getIntent().getSerializableExtra("cleanCard"); 
 | 
                binding.cardData.setText("制作清零卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("manageCard")) { 
 | 
                manageCard = (ManageCard) this.getIntent().getSerializableExtra("manageCard"); 
 | 
                binding.cardData.setText("制作管理卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("registeredCard")) { 
 | 
                registeredCard = (RegisteredCard) this.getIntent().getSerializableExtra("registeredCard"); 
 | 
                binding.cardData.setText("制作重新注册设备卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("dbUserCard")) { 
 | 
                userCardBean = (UserCardBean) this.getIntent().getSerializableExtra("dbUserCard"); 
 | 
                isUser = true; 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("cleanUserCard")) { 
 | 
                cleanUserCard = (CleanUserCard) this.getIntent().getSerializableExtra("cleanUserCard"); 
 | 
                binding.cardData.setText("制作删除全部用户卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("domainCard")) { 
 | 
                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard"); 
 | 
                binding.cardData.setText("制作设置域名卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("testCard")) { 
 | 
                testCard = (TestCard) this.getIntent().getSerializableExtra("testCard"); 
 | 
                binding.cardData.setText("制作测试卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("configureDeviceRegistrationCrad")) { 
 | 
                configureDeviceRegistrationCrad = (ConfigureDeviceRegistrationCrad) this.getIntent().getSerializableExtra("configureDeviceRegistrationCrad"); 
 | 
                binding.cardData.setText("制作配置设备注册信息卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("configurationPowerCard")) { 
 | 
                configurationPowerCard = (ConfigurationPowerCard) this.getIntent().getSerializableExtra("configurationPowerCard"); 
 | 
                binding.cardData.setText("制作配置水泵功率卡"); 
 | 
            } 
 | 
            if (this.getIntent().hasExtra("morny")) { 
 | 
                startAnim(); 
 | 
                isRecharge = true; 
 | 
                morny = this.getIntent().getStringExtra("morny"); 
 | 
                userName = this.getIntent().getStringExtra("userName"); 
 | 
                binding.cardData.setText("充值金额:" + morny + "元"); 
 | 
                // 充值逻辑 
 | 
                recharge(userCard.getInitPeasantCode(), userName); 
 | 
            } 
 | 
  
 | 
            try { 
 | 
                adminData = baseDao.adminDao().findFirst(); 
 | 
            } catch (Exception e) { 
 | 
                e.printStackTrace(); 
 | 
                CrashReport.postCatchedException(e); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 检测是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡假如是用户卡需要 
 | 
     */ 
 | 
    private void checkHasUser() { 
 | 
  
 | 
        String cardType = NfcReadHelper.getInstence(intent, this).getCradType(); 
 | 
        Log.i("NFCWreatActivity", "cardType=" + cardType); 
 | 
        if (cardType.equals(CardCommon.USER_CARD_TYPE_1) || 
 | 
                cardType.equals(CardCommon.USER_CARD_TYPE_2) || 
 | 
                cardType.equals(CardCommon.USER_CARD_TYPE_3) 
 | 
        ) { 
 | 
            binding.textView.setText("该卡已经写入用户信息,请更换卡片"); 
 | 
            binding.textView.setTextColor(getResources().getColor(com.dayu.baselibrary.R.color.red)); 
 | 
        } else if (cardType.equals(BaseCommon.CARD_TYPE_ERROR1)) { 
 | 
            TipUtil.show(NFCWreatActivity.this, "请勿移动卡片,读卡失败请重试!!"); 
 | 
        } else if (cardType.equals(BaseCommon.CARD_TYPE_ERROR2)) { 
 | 
            TipUtil.show(NFCWreatActivity.this, ",卡片未能识别,请检查卡片是否是本公司卡片"); 
 | 
        }  else { 
 | 
            Log.i("NFCWreatActivity", "olduserCard!=null  saveData"); 
 | 
            saveData(); 
 | 
        } 
 | 
  
 | 
        stopAnim(); 
 | 
    } 
 | 
  
 | 
  
 | 
    private void saveData() { 
 | 
        try { 
 | 
            startAnim(); 
 | 
            if (userCard != null || cleanCard != null || manageCard != null 
 | 
                    || registeredCard != null || cleanUserCard != null 
 | 
                    || domainCard != null || testCard != null 
 | 
                    || configureDeviceRegistrationCrad != null 
 | 
                    || configurationPowerCard != null) { 
 | 
                if (userCard != null && TextUtils.isEmpty(morny)) { 
 | 
                    userFlag = WriteCardUtils.setUser(intent, userCard, this); 
 | 
                } 
 | 
                if (cleanCard != null) { 
 | 
                    setClean(intent, cleanCard); 
 | 
                } 
 | 
                if (manageCard != null) { 
 | 
                    setmanageCard(intent, manageCard); 
 | 
                } 
 | 
                if (registeredCard != null) { 
 | 
                    setRegisteredCard(intent, registeredCard); 
 | 
                } 
 | 
                if (cleanUserCard != null) { 
 | 
                    setCleanUserCard(intent, cleanUserCard); 
 | 
                } 
 | 
                if (domainCard != null) { 
 | 
                    setDomainCard(intent, domainCard); 
 | 
                } 
 | 
                if (testCard != null) { 
 | 
                    setTestCard(intent, testCard); 
 | 
                } 
 | 
                if (configureDeviceRegistrationCrad != null) { 
 | 
                    setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad); 
 | 
                } 
 | 
                if (configurationPowerCard != null) { 
 | 
                    setConfigurationPower(intent, configurationPowerCard); 
 | 
                } 
 | 
                if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) { 
 | 
                    try { 
 | 
                        if (userFlag && userCardBean != null) { 
 | 
                            //用户卡 
 | 
                            startDetailActivity(userCardBean.getUserName(), "启用"); 
 | 
                        } else if (!TextUtils.isEmpty(morny)) { 
 | 
                            TipUtil.show(NFCWreatActivity.this, "充值成功", NFCWreatActivity.this::finish); 
 | 
                        } else { 
 | 
                            TipUtil.show(NFCWreatActivity.this, "写卡成功", NFCWreatActivity.this::finish); 
 | 
                        } 
 | 
  
 | 
                    } catch (Exception e) { 
 | 
                        e.printStackTrace(); 
 | 
                        CrashReport.postCatchedException(e); 
 | 
                    } 
 | 
                } else { 
 | 
                    TipUtil.show(NFCWreatActivity.this, "写卡失败"); 
 | 
                } 
 | 
                stopAnim(); 
 | 
            } else if (userCard == null && userCardBean != null) { 
 | 
                //补卡逻辑 
 | 
                selectBalance(userCardBean.getInitPeasantCode()); 
 | 
            } else { 
 | 
                stopAnim(); 
 | 
                TipUtil.show(this, "参数错误"); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onNewIntent(Intent intent) { 
 | 
        super.onNewIntent(intent); 
 | 
        try { 
 | 
            this.intent = intent; 
 | 
            startAnim(); 
 | 
            Log.i("NFCWreatActivity", "isUser:" + isUser); 
 | 
            if (isUser) { 
 | 
                checkHasUser(); 
 | 
            } else if (isRecharge) { 
 | 
                if (rechargeIsOk) { 
 | 
                    rechargeWrratCard(); 
 | 
                } else { 
 | 
                    Toast.makeText(this, "正在通信请稍后", Toast.LENGTH_SHORT).show(); 
 | 
                } 
 | 
  
 | 
            } else { 
 | 
                saveData(); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 打印机相关信息 
 | 
     * 
 | 
     * @param rechargeBean 
 | 
     */ 
 | 
    private void setPrinterData(RechargeBean rechargeBean) { 
 | 
        try { 
 | 
            StringBuffer data = new StringBuffer(); 
 | 
            if (rechargeBean != null) { 
 | 
                data.append("*****************************" + "\n"); 
 | 
                data.append(getResources().getString(com.dayu.baselibrary.R.string.login_title)).append("\n"); 
 | 
                data.append("设备序列号:").append(rechargeBean.getSerial()).append("\n"); 
 | 
                data.append("用户名:").append(rechargeBean.getUserName()).append("\n"); 
 | 
                //            data.append("户  号:" + rechargeBean.getUserNum() + "\n"); 
 | 
                data.append("充值金额:").append(rechargeBean.getMorny()).append("元").append("\n"); 
 | 
                data.append("卡内余额:").append(rechargeBean.getBalance()).append("元").append("\n"); 
 | 
                data.append("日  期:").append(DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)).append("\n\n"); 
 | 
                data.append("*****************************"); 
 | 
            } 
 | 
  
 | 
            float size = 26; 
 | 
  
 | 
            try { 
 | 
                AidlUtil.getInstance().printText(data.toString(), size, true, false); 
 | 
                AidlUtil.getInstance().print3Line(); 
 | 
            } catch (Exception e) { 
 | 
                e.printStackTrace(); 
 | 
            } 
 | 
  
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    void startAnim() { 
 | 
        binding.avi.setVisibility(View.VISIBLE); 
 | 
        binding.avi.show(); 
 | 
        // or avi.smoothToShow(); 
 | 
    } 
 | 
  
 | 
    void stopAnim() { 
 | 
        binding.avi.hide(); 
 | 
        // or avi.smoothToHide(); 
 | 
    } 
 | 
  
 | 
  
 | 
    //充值上传(Socket) 
 | 
    private void recharge(String initPeasantCode, String name) { 
 | 
        try { 
 | 
            RechargeRequestBean rechargeRequestBean = new RechargeRequestBean(); 
 | 
            rechargeRequestBean.setControl("01"); 
 | 
            String initCode = DeviceNumberUtils.getDeviceNumber(); 
 | 
            rechargeRequestBean.setInitCode(initCode); 
 | 
            rechargeRequestBean.setXuLie(SocketUtil.getXuLie(this)); 
 | 
            rechargeRequestBean.setAFN("95"); 
 | 
            rechargeRequestBean.setInitPeasantCode(initPeasantCode); 
 | 
            rechargeRequestBean.setBalance(morny); 
 | 
  
 | 
            rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this)); 
 | 
            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), "95", new SocketCallBack() { 
 | 
  
 | 
                @Override 
 | 
                public void onSocketResponse(SocketData readData) { 
 | 
                    //金额 
 | 
                    byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); 
 | 
                    int balance = SocketUtil.get16to10LowHigh(blanceByte); 
 | 
                    //姓名 
 | 
                    byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); 
 | 
                    userName = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); 
 | 
  
 | 
                    byte[] orderByte = Arrays.copyOfRange(readData.getBodyBytes(), 19, 27); 
 | 
                    String orderId = BcdUtil.bcdToStr(orderByte); 
 | 
                    if (CRC8.isCRC8(readData.getOriginDataBytes())) { 
 | 
                        String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); 
 | 
                        //00启用01禁用02隶属信息不符03无此卡信息04其它 
 | 
                        if ("00".equalsIgnoreCase(state)) { 
 | 
                            rechargeIsOk = true; 
 | 
                            binding.cardData.setText("充值" + morny + "元通信完成,请帖卡写卡"); 
 | 
                            rechargeBean = new RechargeBean(); 
 | 
                            rechargeBean.setDate(System.currentTimeMillis()); 
 | 
                            rechargeBean.setMorny(morny); 
 | 
                            rechargeBean.setUserName(name); 
 | 
  
 | 
                            rechargeBean.setSerial(adminData.getSerial()); 
 | 
                            userCard.setRechargeDate(Calendar.getInstance()); 
 | 
                            userCard.setBalance(balance); 
 | 
                            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"); 
 | 
                            userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); 
 | 
                            NFCWreatActivity.this.finish(); 
 | 
                            TipUtil.show("充值报文错误-禁用"); 
 | 
                        } else if ("02".equalsIgnoreCase(state)) { 
 | 
                            TipUtil.show("充值报文错误-隶属信息不符"); 
 | 
                            NFCWreatActivity.this.finish(); 
 | 
                        } else if ("03".equalsIgnoreCase(state)) { 
 | 
                            TipUtil.show("充值报文错误-无此卡信息"); 
 | 
                            NFCWreatActivity.this.finish(); 
 | 
                        } else { 
 | 
                            TipUtil.show("充值报文错误-其它"); 
 | 
                            NFCWreatActivity.this.finish(); 
 | 
                        } 
 | 
                    } else { 
 | 
                        //校验CRC错误 
 | 
                        TipUtil.show(NFCWreatActivity.this, "充值报文错误校验CRC错误"); 
 | 
                        NFCWreatActivity.this.finish(); 
 | 
                    } 
 | 
                    stopAnim(); 
 | 
                } 
 | 
  
 | 
                @Override 
 | 
                public void onSocketError(int code, String msg) { 
 | 
                    runOnUiThread(() -> { 
 | 
                        stopAnim(); 
 | 
                        TipUtil.show(NFCWreatActivity.this, msg); 
 | 
                    }); 
 | 
  
 | 
                } 
 | 
            }); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    //往卡内写充值后的数据 
 | 
    private void rechargeWrratCard() { 
 | 
        UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData(); 
 | 
        if (userCardold != null) { 
 | 
            //判断是否充值的是一个卡 
 | 
            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) { 
 | 
                userCard.setState("00"); 
 | 
                userFlag = WriteCardUtils.setUser(intent, userCard, this); 
 | 
                //   打印相关 
 | 
                if (userFlag) { 
 | 
                    setPrinterData(rechargeBean); 
 | 
                    startDetailActivity(userName, "启用"); 
 | 
                } else { 
 | 
                    isAgainWrite = true; 
 | 
                    TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新贴卡"); 
 | 
                } 
 | 
            } else { 
 | 
                TipUtil.show(NFCWreatActivity.this, "读取的卡和充值的卡不一致"); 
 | 
            } 
 | 
        } 
 | 
        stopAnim(); 
 | 
    } 
 | 
  
 | 
    private void setmanageCard(Intent intent, final ManageCard manageCard) { 
 | 
        manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 制作清零卡 
 | 
     * 
 | 
     * @param intent 
 | 
     * @param clearOrInitCard 
 | 
     */ 
 | 
    private void setClean(Intent intent, final CleanCard clearOrInitCard) { 
 | 
        cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 重新注册设备卡 
 | 
     * 
 | 
     * @param intent 
 | 
     * @param registeredCard 
 | 
     */ 
 | 
    private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { 
 | 
        registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除全部用户卡 
 | 
     * 
 | 
     * @param intent 
 | 
     * @param cleanUserCard 
 | 
     */ 
 | 
    private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { 
 | 
        cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 设置域名卡 
 | 
     * 
 | 
     * @param intent 
 | 
     * @param domainCard 
 | 
     */ 
 | 
    private void setDomainCard(Intent intent, DomainCard domainCard) { 
 | 
        try { 
 | 
            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0); 
 | 
            if (!domainCrdFlag) { 
 | 
                return; 
 | 
            } 
 | 
            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1); 
 | 
            if (!domainCrdFlag) { 
 | 
                return; 
 | 
            } 
 | 
            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getTwoByte(), 1, 2); 
 | 
        } catch (Exception e) { 
 | 
            domainCrdFlag = false; 
 | 
            throw new RuntimeException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void setTestCard(Intent intent, TestCard testCard) { 
 | 
        testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
  
 | 
    private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { 
 | 
        configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0); 
 | 
    } 
 | 
  
 | 
    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) { 
 | 
        try { 
 | 
            configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0); 
 | 
        } catch (Exception e) { 
 | 
            configPowerFlag = false; 
 | 
            throw new RuntimeException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    private void startDetailActivity(String userName, String statu) { 
 | 
        Intent detail = new Intent(this, RechargeDetail.class); 
 | 
        detail.putExtra("userName", userName); 
 | 
        detail.putExtra("statu", statu); 
 | 
        detail.putExtra("userCard", userCard); 
 | 
        if (!TextUtils.isEmpty(morny)) { 
 | 
            detail.putExtra("morny", morny); 
 | 
        } 
 | 
        startActivity(detail); 
 | 
        myFinish(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询余额 
 | 
     * 
 | 
     * @param initPeasantCode 农户注册编号 
 | 
     */ 
 | 
    private void selectBalance(String initPeasantCode) { 
 | 
        Log.i(TAG, "补卡查询余额:农户注册编号 " + initPeasantCode); 
 | 
        try { 
 | 
            startAnim(); 
 | 
            BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean(); 
 | 
            requestBean.setAFN("94"); 
 | 
            requestBean.setControl("01"); 
 | 
            String initCode = DeviceNumberUtils.getDeviceNumber(); 
 | 
            requestBean.setInitCode(initCode); 
 | 
            requestBean.setInitPeasantCode(initPeasantCode); 
 | 
            requestBean.setXuLie(SocketUtil.getXuLie(this)); 
 | 
            SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94", new SocketCallBack() { 
 | 
                @Override 
 | 
                public void onSocketResponse(SocketData readData) { 
 | 
                    if (CRC8.isCRC8(readData.getOriginDataBytes())) { 
 | 
                        StringBuffer stateText = null; 
 | 
                        try { 
 | 
                            stateText = new StringBuffer(); 
 | 
                            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( 0); 
 | 
                                userCard.setState("00"); 
 | 
                                userCard.setBalance(0); 
 | 
                                userCard.setAddressCode(adminData.getAddressCode()); 
 | 
                                userCard.setInitPeasantCode(initPeasantCode); 
 | 
                            } 
 | 
                            //只有启动状态才能充值 
 | 
                            //金额 
 | 
                            byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); 
 | 
                            int balance = SocketUtil.get16to10LowHigh(blanceByte); 
 | 
                            //姓名 
 | 
                            byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); 
 | 
                            String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); 
 | 
                            if ("00".equals(state)) { 
 | 
                                stateText.append("启用"); 
 | 
                                userCard.setBalance(balance); 
 | 
                                userCard.setState("00"); 
 | 
                                //补卡逻辑 
 | 
                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); 
 | 
                                if (userFlag) { 
 | 
                                    TipUtil.show(NFCWreatActivity.this, "补卡成功", () -> NFCWreatActivity.this.finish()); 
 | 
                                } 
 | 
                                return; 
 | 
                            } else if ("01".equals(state)) { 
 | 
                                stateText.append("禁用"); 
 | 
                                userCard.setState("01"); 
 | 
                                userCard.setBalance(balance); 
 | 
                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); 
 | 
                                startDetailActivity(name, stateText.toString()); 
 | 
  
 | 
                            } else if ("02".equals(state)) { 
 | 
                                stateText.append("隶属信息不符"); 
 | 
                            } else if ("03".equals(state)) { 
 | 
                                stateText.append("无此卡信息"); 
 | 
                            } else if ("04".equals(state)) { 
 | 
                                stateText.append("其它"); 
 | 
                            } 
 | 
                            stopAnim(); 
 | 
                            binding.cardData.setText(stateText); 
 | 
                            TipUtil.show(NFCWreatActivity.this, stateText.toString()); 
 | 
                        } catch (Exception e) { 
 | 
                            e.printStackTrace(); 
 | 
                            stopAnim(); 
 | 
                        } 
 | 
                    } else { 
 | 
                        //校验CRC错误 
 | 
                        TipUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误"); 
 | 
                    } 
 | 
                    stopAnim(); 
 | 
  
 | 
                } 
 | 
  
 | 
                @Override 
 | 
                public void onSocketError(int code, String msg) { 
 | 
                    runOnUiThread(() -> { 
 | 
                        stopAnim(); 
 | 
                        TipUtil.show(NFCWreatActivity.this, msg); 
 | 
                    }); 
 | 
  
 | 
                } 
 | 
            }); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
            CrashReport.postCatchedException(e); 
 | 
            stopAnim(); 
 | 
            ProgressDialog.dismiss(); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    protected void onDestroy() { 
 | 
        super.onDestroy(); 
 | 
        ProgressDialog.dismiss(); 
 | 
        nfcWreatActivity = null; 
 | 
    } 
 | 
} 
 |