| | |
| | | package com.dayu.recharge.activity; |
| | | |
| | | import android.annotation.SuppressLint; |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.os.Handler; |
| | | import android.os.Message; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | import android.view.LayoutInflater; |
| | | import android.widget.Toast; |
| | | |
| | | import com.dayu.recharge.MyApplication; |
| | | |
| | | import com.dayu.recharge.R; |
| | | import com.dayu.recharge.card.CleanCard; |
| | | import com.dayu.recharge.card.CleanUserCard; |
| | |
| | | import com.dayu.recharge.card.UserCard; |
| | | import com.dayu.recharge.databinding.ActivityWriteTextBinding; |
| | | import com.dayu.recharge.dbBean.AdminDataBean; |
| | | import com.dayu.recharge.dbBean.DeviceNumber; |
| | | import com.dayu.recharge.dbBean.ElectricPriceBean; |
| | | import com.dayu.recharge.dbBean.RechargeBean; |
| | | import com.dayu.recharge.dbBean.UserCardBean; |
| | |
| | | import com.dayu.recharge.socketBean.BalanceSelecteRequestBean; |
| | | import com.dayu.recharge.socketBean.RechargeRequestBean; |
| | | import com.dayu.recharge.tools.BcdUtil; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.tools.NFCWriteHelper; |
| | | import com.dayu.recharge.tools.NfcReadHelper; |
| | | import com.dayu.recharge.tools.WriteCardUtils; |
| | | import com.dayu.recharge.utils.AidlUtil; |
| | | import com.dayu.recharge.utils.CRC8; |
| | | import com.dayu.recharge.utils.DateUtil; |
| | | import com.dayu.recharge.utils.DeviceNumberUtils; |
| | | import com.dayu.recharge.utils.MornyUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | import com.dayu.recharge.utils.SocketUtil; |
| | | import com.dayu.recharge.utils.ToastUtil; |
| | | import com.dayu.recharge.utils.WSHelper; |
| | | import com.dayu.recharge.utils.TipUtil; |
| | | import com.tencent.bugly.crashreport.CrashReport; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Calendar; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Copyright (C), 2023, |
| | |
| | | */ |
| | | public class NFCWreatActivity extends BaseNfcActivity { |
| | | |
| | | |
| | | /** |
| | | * 该卡已写入用户信息 |
| | | */ |
| | | public final static int HAS_USER = 1; |
| | | /** |
| | | * 该卡未写入用户信息 |
| | | */ |
| | | public final static int NO_USER = 2; |
| | | /** |
| | | * 充值 |
| | | */ |
| | | public final static int RECHARGE = 3; |
| | | |
| | | public final static int ERROR = -1; |
| | | |
| | | boolean cleanFlag = false; |
| | | boolean userFlag = false; |
| | |
| | | |
| | | UserCardBean userCardBean; |
| | | |
| | | |
| | | String morny; |
| | | String userName; |
| | | AdminDataBean adminData; |
| | | RechargeBean rechargeBean; |
| | | Intent intent; |
| | |
| | | |
| | | RegisteredCard registeredCard; |
| | | CleanUserCard cleanUserCard; |
| | | volatile UserCard userCard; |
| | | ManageCard manageCard; |
| | | DomainCard domainCard; |
| | | |
| | |
| | | * 是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡 |
| | | */ |
| | | boolean isUser = false;// |
| | | |
| | | //是否是充值过程 |
| | | boolean isRecharge = false; |
| | | //充值通信是否完成 |
| | | boolean rechargeIsOk = false; |
| | | ActivityWriteTextBinding binding; |
| | | |
| | | @Override |
| | |
| | | try { |
| | | binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this)); |
| | | setContentView(binding.getRoot()); |
| | | |
| | | nfcWreatActivity = this; |
| | | getData(); |
| | | baseApp = (MyApplication) getApplication(); |
| | |
| | | } |
| | | |
| | | |
| | | @SuppressLint("SetTextI18n") |
| | | private void getData() { |
| | | try { |
| | | if (this.getIntent().hasExtra("userCard")) { |
| | | userCard = (UserCard) this.getIntent().getSerializableExtra("userCard"); |
| | | isUser = true; |
| | | } |
| | | if (this.getIntent().hasExtra("cleanCard")) { |
| | | cleanCard = (CleanCard) this.getIntent().getSerializableExtra("cleanCard"); |
| | |
| | | } |
| | | 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("morny")) { |
| | | startAnim(); |
| | | isRecharge = true; |
| | | morny = this.getIntent().getStringExtra("morny"); |
| | | userName = this.getIntent().getStringExtra("userName"); |
| | | binding.cardData.setText("充值金额:" + morny + "元"); |
| | | // 充值逻辑 |
| | | recharge(userCard.getInitPeasantCode(), userName); |
| | | } |
| | | |
| | | try { |
| | |
| | | * 检测是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡假如是用户卡需要 |
| | | */ |
| | | private void checkHasUser() { |
| | | try { |
| | | NfcReadHelper.getInstence(intent) |
| | | .getData(1, 0, new NfcReadHelper.NFCCallByteback() { |
| | | @Override |
| | | public void callBack(byte[] data) { |
| | | Message message = new Message(); |
| | | String type = HexUtil.byteToHex(data[0]).toUpperCase(); |
| | | switch (type) { |
| | | case "A1": |
| | | case "A8": |
| | | case "A2": |
| | | message.what = HAS_USER; |
| | | break; |
| | | default: |
| | | message.what = NO_USER; |
| | | break; |
| | | } |
| | | handler.sendMessage(message); |
| | | } |
| | | |
| | | @Override |
| | | public void error(int code) { |
| | | Message message = new Message(); |
| | | message.what = code; |
| | | handler.sendMessage(message); |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | CrashReport.postCatchedException(e); |
| | | String cardType = NfcReadHelper.getInstence(intent, this).getCradType(); |
| | | Log.i("NFCWreatActivity", "cardType=" + cardType); |
| | | if (cardType.equals(MyCommon.USER_CARD_TYPE_1) || |
| | | cardType.equals(MyCommon.USER_CARD_TYPE_2) || |
| | | cardType.equals(MyCommon.USER_CARD_TYPE_3) |
| | | ) { |
| | | binding.textView.setText("该卡已经写入用户信息,请更换卡片"); |
| | | binding.textView.setTextColor(getResources().getColor(R.color.red)); |
| | | } else if (cardType.equals("-1")) { |
| | | TipUtil.show(NFCWreatActivity.this, "请勿移动卡片,读卡失败请重试!!"); |
| | | } else { |
| | | Log.i("NFCWreatActivity", "olduserCard!=null saveData"); |
| | | saveData(); |
| | | } |
| | | |
| | | stopAnim(); |
| | | } |
| | | |
| | | |
| | |
| | | || domainCard != null || testCard != null |
| | | || configureDeviceRegistrationCrad != null |
| | | || configurationPowerCard != null) { |
| | | if (userCard != null) { |
| | | setUser(intent, userCard); |
| | | if (userCard != null && TextUtils.isEmpty(morny)) { |
| | | |
| | | userFlag = WriteCardUtils.setUser(intent, userCard, this); |
| | | } |
| | | if (cleanCard != null) { |
| | | setClean(intent, cleanCard); |
| | |
| | | if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) { |
| | | try { |
| | | if (userFlag && userCardBean != null) { |
| | | |
| | | ToastUtil.show(this, "注册成功"); |
| | | NFCWreatActivity.this.finish(); |
| | | if (NewCardActivity.newCardActivity != null) { |
| | | NewCardActivity.newCardActivity.finish(); |
| | | } |
| | | |
| | | //用户卡 |
| | | startDetailActivity(userCardBean.getUserName(), "启用"); |
| | | } else if (!TextUtils.isEmpty(morny)) { |
| | | NFCWreatActivity.this.finish(); |
| | | ToastUtil.show(this, "充值成功"); |
| | | TipUtil.show(NFCWreatActivity.this, "充值成功", NFCWreatActivity.this::finish); |
| | | } else { |
| | | NFCWreatActivity.this.finish(); |
| | | ToastUtil.show(this, "写卡成功"); |
| | | TipUtil.show(NFCWreatActivity.this, "写卡成功", NFCWreatActivity.this::finish); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | } else { |
| | | ToastUtil.show(this, "写卡失败"); |
| | | TipUtil.show(NFCWreatActivity.this, "写卡失败"); |
| | | } |
| | | stopAnim(); |
| | | } else if (!TextUtils.isEmpty(morny)) { |
| | | readAllData(intent); |
| | | } else if (userCard == null && userCardBean != null) { |
| | | //补卡逻辑 |
| | | selectBalance(userCardBean.getInitPeasantCode()); |
| | | } else { |
| | | stopAnim(); |
| | | ToastUtil.show(this, "参数错误"); |
| | | TipUtil.show(this, "参数错误"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | |
| | | @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(); |
| | | } |
| | |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 读取全部数据 |
| | | */ |
| | | private void readAllData(Intent intent) { |
| | | try { |
| | | NfcReadHelper.getInstence(intent) |
| | | .getAllData(new NfcReadHelper.NFCCallListback() { |
| | | @Override |
| | | public void callBack(Map<String, List<byte[]>> data) { |
| | | Message message = new Message(); |
| | | // 获取1扇区数据 |
| | | List<byte[]> oneSector = data.get("1"); |
| | | if (oneSector != null && oneSector.size() > 0) { |
| | | userCard = UserCard.getBean(oneSector); |
| | | message.what = RECHARGE; |
| | | } else { |
| | | message.what = ERROR; |
| | | } |
| | | handler.sendMessage(message); |
| | | } |
| | | |
| | | @Override |
| | | public void error(int code) { |
| | | Message message = new Message(); |
| | | message.what = ERROR; |
| | | handler.sendMessage(message); |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | } |
| | | |
| | | Handler handler = new Handler(new Handler.Callback() { |
| | | @Override |
| | | public boolean handleMessage(Message msg) { |
| | | switch (msg.what) { |
| | | |
| | | case HAS_USER://判断已写入用户 |
| | | ToastUtil.show(NFCWreatActivity.this, "该卡已经写入用户信息,请更换卡片"); |
| | | break; |
| | | case NO_USER://没有写过用户继续保存 |
| | | saveData(); |
| | | break; |
| | | case RECHARGE://充值流程 |
| | | selectBalance(userCard.getInitPeasantCode()); |
| | | break; |
| | | default: |
| | | stopAnim(); |
| | | ToastUtil.show(NFCWreatActivity.this, "卡片读取失败"); |
| | | break; |
| | | |
| | | } |
| | | return false; |
| | | } |
| | | }); |
| | | |
| | | |
| | | /** |
| | |
| | | StringBuffer data = new StringBuffer(); |
| | | if (rechargeBean != null) { |
| | | data.append("*****************************" + "\n"); |
| | | data.append(getResources().getString(R.string.login_title) + "\n"); |
| | | data.append("设备序列号:" + rechargeBean.getSerial() + "\n"); |
| | | data.append("用户名:" + rechargeBean.getUserName() + "\n"); |
| | | data.append(getResources().getString(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("充值金额:" + rechargeBean.getMorny() + "元" + "\n"); |
| | | data.append("卡内余额:" + rechargeBean.getBalance() + "元" + "\n"); |
| | | data.append("日 期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\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("*****************************"); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | //充值上传(Socket) |
| | | private void recharge(String initPeasantCode) { |
| | | private void recharge(String initPeasantCode, String name) { |
| | | try { |
| | | RechargeRequestBean rechargeRequestBean = new RechargeRequestBean(); |
| | | rechargeRequestBean.setControl("01"); |
| | |
| | | rechargeRequestBean.setAFN("95"); |
| | | rechargeRequestBean.setInitPeasantCode(initPeasantCode); |
| | | rechargeRequestBean.setBalance(morny); |
| | | |
| | | rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this)); |
| | | SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), 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("充值通信完成,请帖卡充值"); |
| | | 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); |
| | | setUser(intent, userCard); |
| | | // 打印相关 |
| | | setPrinterData(rechargeBean); |
| | | ToastUtil.show(NFCWreatActivity.this, "写卡成功"); |
| | | RechargeActivity.rechargeActivity.finish(); |
| | | NFCWreatActivity.nfcWreatActivity.finish(); |
| | | } else if ("01".equalsIgnoreCase(state)) { |
| | | userCard.setState("01"); |
| | | userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); |
| | | NFCWreatActivity.this.finish(); |
| | | ToastUtil.show(NFCWreatActivity.this, "充值报文错误-禁用"); |
| | | TipUtil.show("充值报文错误-禁用"); |
| | | } else if ("02".equalsIgnoreCase(state)) { |
| | | ToastUtil.show(NFCWreatActivity.this, "充值报文错误-隶属信息不符"); |
| | | TipUtil.show("充值报文错误-隶属信息不符"); |
| | | NFCWreatActivity.this.finish(); |
| | | } else if ("03".equalsIgnoreCase(state)) { |
| | | ToastUtil.show(NFCWreatActivity.this, "充值报文错误-无此卡信息"); |
| | | TipUtil.show("充值报文错误-无此卡信息"); |
| | | NFCWreatActivity.this.finish(); |
| | | } else { |
| | | ToastUtil.show(NFCWreatActivity.this, "充值报文错误-其它"); |
| | | TipUtil.show("充值报文错误-其它"); |
| | | NFCWreatActivity.this.finish(); |
| | | } |
| | | |
| | | |
| | | } else { |
| | | //校验CRC错误 |
| | | ToastUtil.show(NFCWreatActivity.this, "充值报文错误校验CRC错误"); |
| | | TipUtil.show(NFCWreatActivity.this, "充值报文错误校验CRC错误"); |
| | | NFCWreatActivity.this.finish(); |
| | | } |
| | | stopAnim(); |
| | |
| | | @Override |
| | | public void onSocketError(int code, String msg) { |
| | | stopAnim(); |
| | | ToastUtil.show(NFCWreatActivity.this, msg); |
| | | TipUtil.show(NFCWreatActivity.this, msg); |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | |
| | | |
| | | } |
| | | |
| | | private void setmanageCard(Intent intent, final ManageCard manageCard) { |
| | | NFCWriteHelper.getInstence(intent).writeData(manageCard.toZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | manageCardFlag = flag; |
| | | //往卡内写充值后的数据 |
| | | private void rechargeWrratCard() { |
| | | UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData(); |
| | | if (userCardold != null) { |
| | | //判断是否充值的是一个卡 |
| | | if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) { |
| | | userCard.setState("00"); |
| | | userFlag = WriteCardUtils.setUser(intent, userCard, this); |
| | | // 打印相关 |
| | | if (userFlag) { |
| | | setPrinterData(rechargeBean); |
| | | startDetailActivity(userName, "启用"); |
| | | } else { |
| | | TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新再试"); |
| | | } |
| | | } else { |
| | | TipUtil.show(NFCWreatActivity.this, "读取的卡和充值的卡不一致"); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | private void setmanageCard(Intent intent, final ManageCard manageCard) { |
| | | manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param clearOrInitCard |
| | | */ |
| | | private void setClean(Intent intent, final CleanCard clearOrInitCard) { |
| | | NFCWriteHelper.getInstence(intent).writeData(clearOrInitCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | cleanFlag = flag; |
| | | } |
| | | }); |
| | | cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | //向卡写入用户信息 |
| | | private void setUser(Intent intent, UserCard userCard) { |
| | | NFCWriteHelper.getInstence(intent).writeData(userCard.getZeroBytes(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | userFlag = flag; |
| | | } |
| | | }); |
| | | if (!userFlag) { |
| | | return; |
| | | } |
| | | NFCWriteHelper.getInstence(intent).writeData(userCard.getOneBytes(), 1, 1, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | userFlag = flag; |
| | | } |
| | | }); |
| | | if (!userFlag) { |
| | | return; |
| | | } |
| | | NFCWriteHelper.getInstence(intent).writeData(userCard.getTwoBytes(), 1, 2, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | userFlag = flag; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 重新注册设备卡 |
| | |
| | | * @param registeredCard |
| | | */ |
| | | private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { |
| | | NFCWriteHelper.getInstence(intent).writeData(registeredCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | registeredFlag = flag; |
| | | } |
| | | }); |
| | | registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param cleanUserCard |
| | | */ |
| | | private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { |
| | | NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | cleanUserCardFlag = flag; |
| | | } |
| | | }); |
| | | cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | private void setDomainCard(Intent intent, DomainCard domainCard) { |
| | | try { |
| | | NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | domainCrdFlag = flag; |
| | | } |
| | | }); |
| | | domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0); |
| | | if (!domainCrdFlag) { |
| | | return; |
| | | } |
| | | NFCWriteHelper.getInstence(intent).writeData(domainCard.getOneByte(), 1, 1, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | domainCrdFlag = flag; |
| | | } |
| | | }); |
| | | domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1); |
| | | if (!domainCrdFlag) { |
| | | return; |
| | | } |
| | | NFCWriteHelper.getInstence(intent).writeData(domainCard.getTwoByte(), 1, 2, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | domainCrdFlag = flag; |
| | | } |
| | | }); |
| | | 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) { |
| | | NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | testCardFlag = flag; |
| | | } |
| | | }); |
| | | testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | |
| | | private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { |
| | | NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | configDeviceRegiestFlag = flag; |
| | | } |
| | | }); |
| | | configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) { |
| | | try { |
| | | NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { |
| | | @Override |
| | | public void isSusses(boolean flag) { |
| | | configPowerFlag = flag; |
| | | } |
| | | }); |
| | | 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); |
| | | if (NewCardActivity.newCardActivity != null) { |
| | | NewCardActivity.newCardActivity.finish(); |
| | | } |
| | | if (RechargeActivity.rechargeActivity != null) { |
| | | RechargeActivity.rechargeActivity.finish(); |
| | | } |
| | | NFCWreatActivity.nfcWreatActivity.finish(); |
| | | } |
| | | |
| | | /** |
| | | * 查询余额 |
| | |
| | | @Override |
| | | public void onSocketResponse(SocketData readData) { |
| | | if (CRC8.isCRC8(readData.getOriginDataBytes())) { |
| | | |
| | | StringBuffer stateText = null; |
| | | |
| | | try { |
| | | stateText = new StringBuffer(); |
| | | stateText.append("状 态:"); |
| | | 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()); |
| | |
| | | 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)) { |
| | | //只有启动状态才能充值 |
| | | //金额 |
| | | 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)); |
| | | userCard.setBalance(balance); |
| | | //与socket服务器通信后进行后续操作 |
| | | |
| | | if (!TextUtils.isEmpty(morny)) { |
| | | //充值 |
| | | rechargeBean = new RechargeBean(); |
| | | rechargeBean.setDate(System.currentTimeMillis()); |
| | | rechargeBean.setMorny(morny); |
| | | if (userCardBean != null) { |
| | | rechargeBean.setUserName(userCardBean.getUserName()); |
| | | } else { |
| | | rechargeBean.setUserName(name); |
| | | } |
| | | List<UserCardBean> userCardBeans = baseDao.userCardDao().findAll(); |
| | | String userId = ""; |
| | | if (userCardBeans != null) { |
| | | for (int i = 0; i < userCardBeans.size(); i++) { |
| | | if (initPeasantCode.equalsIgnoreCase(userCardBeans.get(i).getInitPeasantCode())) { |
| | | userId = userCardBeans.get(i).getUserID(); |
| | | } |
| | | } |
| | | } |
| | | rechargeBean.setSerial(adminData.getSerial()); |
| | | userCard.setRechargeDate(Calendar.getInstance()); |
| | | rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + ""); |
| | | rechargeBean.setUserId(userId); |
| | | recharge(initPeasantCode); |
| | | } else { |
| | | //补卡逻辑 |
| | | setUser(intent, userCard); |
| | | if (userFlag) { |
| | | NFCWreatActivity.this.finish(); |
| | | ToastUtil.show(NFCWreatActivity.this, "补卡成功"); |
| | | } |
| | | } |
| | | |
| | | stateText.append("启用"); |
| | | userCard.setBalance(balance); |
| | | userCard.setState("00"); |
| | | //补卡逻辑 |
| | | userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); |
| | | if (userFlag) { |
| | | TipUtil.show(NFCWreatActivity.this, "补卡成功", new TipUtil.TipListener() { |
| | | @Override |
| | | public void onCancle() { |
| | | NFCWreatActivity.this.finish(); |
| | | } |
| | | }); |
| | | } |
| | | return; |
| | | } else if ("01".equals(state)) { |
| | | stateText.append("禁用"); |
| | | userCard.setState("01"); |
| | | setUser(intent, userCard); |
| | | 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)) { |
| | |
| | | } else if ("04".equals(state)) { |
| | | stateText.append("其它"); |
| | | } |
| | | ToastUtil.show(NFCWreatActivity.this, stateText.toString()); |
| | | stopAnim(); |
| | | binding.cardData.setText(stateText); |
| | | TipUtil.show(NFCWreatActivity.this, stateText.toString()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | stopAnim(); |
| | | } |
| | | } else { |
| | | //校验CRC错误 |
| | | ToastUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误"); |
| | | TipUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onSocketError(int code, String msg) { |
| | | stopAnim(); |
| | | ToastUtil.show(NFCWreatActivity.this, msg); |
| | | TipUtil.show(NFCWreatActivity.this, msg); |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | |
| | | |
| | | } |
| | | |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | nfcWreatActivity = null; |
| | | } |
| | | } |