| 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(); | 
|             titleBack(); | 
|             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_xinxiang")) { | 
|                 domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_xinxiang"); | 
|                 binding.cardData.setText("制作设置新乡域名卡"); | 
|             } | 
|             if (this.getIntent().hasExtra("domainCard_luyi")) { | 
|                 domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_luyi"); | 
|                 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("设备序列号:").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) { | 
|         try { | 
|             manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 制作清零卡 | 
|      * | 
|      * @param intent | 
|      * @param clearOrInitCard | 
|      */ | 
|     private void setClean(Intent intent, final CleanCard clearOrInitCard) { | 
|         try { | 
|             cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 重新注册设备卡 | 
|      * | 
|      * @param intent | 
|      * @param registeredCard | 
|      */ | 
|     private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { | 
|         try { | 
|             registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 删除全部用户卡 | 
|      * | 
|      * @param intent | 
|      * @param cleanUserCard | 
|      */ | 
|     private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { | 
|         try { | 
|             cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 设置域名卡 | 
|      * | 
|      * @param intent | 
|      * @param domainXinXiangCard | 
|      */ | 
|     private void setDomainCard(Intent intent, DomainCard domainXinXiangCard) { | 
|         try { | 
|             domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getZeroByte(), 1, 0); | 
|             if (!domainCrdFlag) { | 
|                 return; | 
|             } | 
|             domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getOneByte(), 1, 1); | 
|             if (!domainCrdFlag) { | 
|                 return; | 
|             } | 
|             domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getTwoByte(), 1, 2); | 
|         } catch (Exception e) { | 
|             domainCrdFlag = false; | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     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; | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|   | 
|     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; | 
|     } | 
|   | 
|     private void titleBack() { | 
|         titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, new View.OnClickListener() { | 
|             @Override | 
|             public void onClick(View v) { | 
|                 back(); | 
|             } | 
|         }); | 
|     } | 
| } |